Your SlideShare is downloading. ×
  • Like
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken

  • 689 views
Published

Quantax ist eine Applikation für das Markt-Risiko-Management im professionellen Banking. …

Quantax ist eine Applikation für das Markt-Risiko-Management im professionellen Banking.

Der Vortrag wird Quantax kurz vorstellen und dann vor allem auf die Lektionen, die wir in den 10 Jahren der fortschreitenden Entwicklung gelernt haben, eingehen. Die von uns entwickelte Hybrid-Datenbank (Python-Objekte, partiell in SQL Server abgebildet) bildet dabei einen Schwerpunkt.

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • http://www.sendspace.com/file/8kn03w
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
689
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
1
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Seit 10 Jahren mit Python:Quantax, ein Risk-Management-Systemfür BankenMartin Gfeller6. Oktober 2011
  • 2. Finanz und Marktrisiko, Systeme 2 • Antwort auf die Fragen: – Wie stehe ich im Markt? Martin Gfeller, Quantax, PyCon DE 2011 – Was passiert, wenn sich der Markt bewegt? – Wie kann ich mich schützen (sog. Hedging)? • Professioneller Markt • Marktführende Systeme grosser Hersteller aus den 90-Jahren • Client/Server, RDBMS • Mehrschichtige, komplexe Infrastrukturen • C, C++
  • 3. Quantax 3 • 1999 aus Test-Suite für grosses System entstanden • Heute vollständiges System für professionelles post-trade Martin Gfeller, Quantax, PyCon DE 2011 Risikomanagement im Handel und Asset Management – 62 Asset-Typen (wie Aktie, Rente, Zinsswap, Credit Default Swap, u.v.a.) – N-dimensionale "Pivot" Reports, Echtzeit-Verarbeitung • Codezeilen: 2001 – 23.000, 2011 – 100.000 • Neu im Markt • Entwicklung nahe am Business – Fachentwickler (programmierende Domänen-Experten) • Flexible Infrastruktur – Programmierumgebung – "Single Layer"
  • 4. Technologien für Flexibilität und Marktnähe 4 Client • 100% HTML + CSS + JavaScript Martin Gfeller, Quantax, PyCon DE 2011 • JQuery • IE>7, Firefox, Chrome Server • Python • Komplexes fachliches Objekt-Modell • ZODB • ZOPE • NumPy, etwas SciPy • Windows
  • 5. Quantax GUI 5 • Menus, Links, Forms, Tabellen-Output Martin Gfeller, Quantax, PyCon DE 2011 • Einfach zu verstehen, entwickeln, integrieren • ZOPE DTML, External Methods • Forms sind nicht sexy…. • … Benutzer möchten lieber mit Drag und Drop etwas „zusammenklicken“…
  • 6. Quantax GUI: Drag & Drop mit JQuery 6Martin Gfeller, Quantax, PyCon DE 2011
  • 7. Datenbank: ZODB 7 • Quantax Objektmodell ist komplex (Referenzen, Subobjekte, Inheritance) Martin Gfeller, Quantax, PyCon DE 2011 • Entwickler sagen über ZODB: – API "grosser Dictionary" ist toll! – Pickles (serialisierte Objektbäume) sind toll! – Fremdschlüssel und schnelle Selektion nur über Add-Ins (Indices) – Objekt-Cache (i.W. Connection) per Thread – Quantax hat lang laufende Berechnungen (Monte-Carlo) – Extrem viele gemeinsame Objekte aller Threads – Wir liessen alle Threads mit einer Connection laufen – Missbrauch wird bestraft, aber Shared Cache ist ein Muss • Kunden-IT sagt: – „Was ist denn das für ‚ne Datenbank“? – „Wir wollen nur eine relationale DB (die wir kennen)“
  • 8. SwanDB, eine "hybride" Datenbank 8 • SwanDB – Pickles wie ZODB Martin Gfeller, Quantax, PyCon DE 2011 – Keys und ausgewählte Attribute in Tabellen – MS SQL Backend – Dictionary API kompatibel zu ZODB – Alle Ideen von ZODB, aber neu implementiert – SwanDB ist ein Python-Package – 4300 Zeilen Python, 500 Zeilen T-SQL – Ziel: Kein C-Code und trotzdem schneller als ZODB (für uns) – Aggressives Caching, Memory Management • Ich schlafe ruhig mit SwanDB („Sleep well at night“) – “Oracle lets me sleep at night”, Philip Greenspun, Web Tools Review, 1998
  • 9. Persistentes Objekt = Pickle und Kolonnen Deklaration: SqlTable.SqlTable( SqlTable.Column(name,str,primary=True), SqlTable.Column(ccy,str), ) Persistentes Objekt Pickle (BLOB) Kolonnen name GR name ccy rating CCC ccy EUR GR EURCOMIT | 9
  • 10. SwanDB Beispiel 10 • Bei allen griechischen Bonds die Währung wechseln: Martin Gfeller, Quantax, PyCon DE 2011 • Schaut wie ZODB aus (mit Absicht!) • Interaktiv ausführbar, Zeile für Zeile testbar • Komplexere Logik möglich, im Gegensatz zu SQL • Ich kann in einer uniformer Schicht denken … … und werde dafür nicht bestraft.
  • 11. SwanDB relational 11Martin Gfeller, Quantax, PyCon DE 2011
  • 12. SwanDB Lessons Learned 12 • Locks in Python, SQL Server – Deadlocks zwischen Python Prozessen, Threads, SQL Server Martin Gfeller, Quantax, PyCon DE 2011 – Pessimistisches Locking von SQL Server ist extern schwierig zu kontrollieren • Cache is King! – Anzahl "Roundtrips" zu DB minimieren • ZODB ist clever und smart! Jim Fulton wusste, was er tat! – z.B. optimistisches Locking • Hybride Datenbank war schwieriger als gedacht… • … aber schlussendlich performant und in Produktion bewährt • … Lösung ist auf Quantax zugeschnitten • Kunden sind glücklich mit SQL Server Tools (Backup, Restore, Replication, Monitoring)
  • 13. Reengineering: Copy / Paste / Improve Code beseitigen 13 • Fachentwickler denken nicht wie Informatiker • Code wird für neuen Zweck modifiziert und dort verbessert Martin Gfeller, Quantax, PyCon DE 2011 • Scheu vor Änderungen: "If it aint broke, dont fix it" • “If it aint broke, dont fix it" is the slogan of the complacent, the arrogant or the scared. Its an excuse for inaction, a call to non-arms [Colin Powell] • Re-Engineering – Finden von gemeinsamer Code-Basis – Häufig nicht neu schreiben, nur neu anordnen – Erkennen, wenn Konzepte nicht mehr erweiterbar sind – Grenzen des rein technischen Re-Engineerings • Fachentwickler sind während Re-Engineering Tester!
  • 14. Wachstum, verbesserte Modularität 14 4500 200 5.60 4000 180 5.50 3500 160 5.40 Martin Gfeller, Quantax, PyCon DE 2011 140 3000 5.30 120 2500 per Class 5.20 LOC 100 2000 5.10 80 1500 5.00 60 1000 4.90 40 500 20 4.80 0 Jan Jan Jan Jan Jan Jan Jan Jan Jan 0 4.70 2003 2004 2005 2006 2007 2008 2009 2010 2011 Jan Jan Jan Jan Jan Jan Jan Jan Jan Okt 2003 Jan 2005 Okt 2006 Aug 2007 Mrz 2011 200320042005200620072008200920102011 Modules 185 239 300 332 462 Okt 2003 Jan 2005 Okt 2006 Aug 2007 Mrz 2011 Classes 281 366 508 593 832 LOC / Method 37 35 27 26 24 Methods 1400 1976 2791 3215 4255 LOC / Class 186 190 150 139 121 Functions 481 1047 1416 1421 1662 Methods / Class 4.98 5.40 5.49 5.42 5.11
  • 15. Plugins 15 • Plugin-Punkte in einer Fachapplikation – Opportunität für Fachentwickler Martin Gfeller, Quantax, PyCon DE 2011 • Interface für Python, Web Service (REST), SQL Server • Richtige Punkte zu finden heisst, die Zukunft vorauszusagen… – oder Änderungsanforderungen zu analysieren • Der Fachbenutzer soll zum richtigen Gebrauch "verführt" werden – "natürliches" API steht zur Verfügung • Richtige Abstraktionsebene zu finden ist schwierig – Fehler sollten von vornherein vermieden werden können – Typisierung kann geprüft werden, ist aber nur ein kleiner Aspekt
  • 16. Lessons learned 16 • Fachentwickler sind toll! • Sie sind produktiv, da alle Entwicklung in einem Layer (Python) erfolgt Martin Gfeller, Quantax, PyCon DE 2011 • Bei langlebigen Applikationen müssen sie gezähmt werden • Plugins sind dazu ein möglicher Ansatzpunkt
  • 17. Ich wünsche mir von Python... 17 • Bessere Overall Performance (Benchmark ist Java, nicht C++) – PyPy Martin Gfeller, Quantax, PyCon DE 2011 – Windows 64-bit – NumPy, ODBC – GIL ist nicht schlimm, interpretativer Overhead jedoch schon • als Windows-Benutzer – wir kompilieren nicht – Setup ist uns daher fremd – copy package – Möglichst wenige C-Extensions – dafür aber pre-compiled für 32/64 bit • Als Zope Benutzer – Welches Framework erfüllt meine zukünftigen Anforderungen? – Modular, wir brauchen nur gewisse Komponenten – Performant – einfach aufzusetzen
  • 18. Contact information 18 Swisscom IT Services Finance AG Martin Gfeller Pflanzschulstrasse 7 Martin Gfeller, Quantax, PyCon DE 2011 CH-8004 Zürich Schweiz Phone +41 58 223 04 23 Mail martin.gfeller@swisscom.com www.swisscom.ch/finance
  • 19. Backup Slides 19Martin Gfeller, Quantax, PyCon DE 2011
  • 20. Serialisierung / Pickling 20 • Graph von Objekten persistieren – Serialisierung Blobs – Python „Pickles“ – Serialisierte Graphen von Objekten – Persistenz gemäss Erreichbarkeit – Marker-Klasse bestimmt „Records“ Martin Gfeller, Quantax, PyCon DE 2011 Persistent Root* 1 2 3 5 1 8 Pickling Persistent, reachable* 4 6 7 13 Persistent, unreachable* 2 3 9 8 13 Object, reachable 4 14 10 12 Object, unreachable 5 9 10 11 12 13 6 11 Unpickling 7 14* inherits from Persistent 15 16 17 Membership (Komposition) 18 Biotop des Executable