Rolle: Chef-Entwickler, Architekt, Business Analyst, Onsite Koordinator
Beschreibung
Das Projekt hatte keinen konkreten Namen. Es war ein übergreifendes Projekt und umfasste mehrere Handelsabteilungen und beinhaltete verschiedene Applikationen um Synergieeffekte zu erzeugen.
Die hauptsächlichen Interessensgruppen waren:
- Cash Equities: Eine Handelsabteilung für institutionelle und spezielle Kunden um hochvolumige Transaktionen von einzelnen Instrumenten oder Instrumentenlisten auszuführen. Die zentrale Handelsapplikation ist Bloomberg SSEOMS.
- Flow Trading: Eine Handelsabteilung für gewöhnliche und nicht-spezielle Kunden um klein- und mittelvolumige Transaktionen von einzelnen Instrumenten oder. Instrumentenlisten auszuführen. Die zentrale Handelsapplikation war Realtime Trading Desktop und DeltaAgent.
- ETF Borrowing & Lending: Eine Handelsabteilung für Leihgeschäfte mit Exchange Traded Funds (ETF). Die vorherige zentrale Handelsapplikation war Pirate.
„Pirate Ersetzen” war eines von drei COIN Projekten in der Bank das Investitionsbudget akquirieren konnte, während in der Bank aufgrund der Finanzkrise generell alle Investitionen gestoppt wurden. Einzig Projekte, die einen Gewinn oder eine Einsparung von mehreren Millionen Euros garantierten konnten wurden als COIN Projekte akzeptiert.
Während des Projekts wurden eine Vielzahl an existierenden Applikationen oder auch komplette Handelsplattformen in den einzelnen Handelsabteilung ausgetauscht.
Ich begleitete das Projekt in verschiedenen Rollen:
- Als Chef-Entwickler verteilte und verfolgte ich alle Entwicklungsaktivitäten der Abteilung und entwickelte selbst.
- Als Architekt entwarf ich Teile oder komplette Softwareinfrastrukturen für jede der Handelsabteilungen und definierte komplette Handelsdatenflüsse von der Eingabe über Routing und Ausführung bis hin zur und Abrechnung.
- Als Business Analyst arbeitete ich eng mit den Händlern zusammen um das Geschäftsmodell zu verstehen und optimale abteilungsübergreifende Lösungen zu finden.
- Als Onsite Koordinator war ich verantwortlich für Remote-Entwickler in Indien. Dies umfasste die Kommunikation, Koordination, den Wissenstransfer sowie die Zuweisung und Verfolgung von Aufgaben.
Verantwortlichkeiten:
- Analyse der Geschäftsanforderungen
- Unterbreiten von Lösungen an die Fachabteilung
- Architektur der Softwareinfrastruktur und -Kommunikation
- Architektur von Softwaregerüsten
- Design von Softwaremodulen
- Design von Datenbankschemata
- Implementierung von Prototypen
- Implementierung
- Koordination der Verantwortlichkeiten in der Abteilung
- Koordination der Aktivitäten in der Abteilung
- Hilfestellung für Administratoren
- Hilfestellung für die Fachabteilung
- Hilfestellung für Kunden
Abteilung:
Das Projekt umfasste 3 bis 8 Entwickler. Inklusive Fachabteilunskoordinatoren, Management, Administration und Referenzkunden umfasste das Projekt bis zu 30 Personen. Die Handelsabteilungen, das Management und die Entwickler waren über Frankfurt, London, New York und Indien verteilt.
Aktivitäten
Austausch der Handelsplattform der ETF Borrowing & Lending-Abteilung
Beratung, Leitung und mehrphasiges Architekturdesign über den Austausch der kompletten Handelsplattform der New York ETF Borrowing & Lending-Abteilung von Pirate und FlexTrade hin zu Bloomberg SSEOMS, BasketTrader, CGI und MUREX.
Die übergeordneten Ziele waren die komplette Handelsplattform auszutauschen um Lizenzkosten durch die Benutzung von Bloomberg SSEOMS zu sparen, einen transparenteren Fluss von Handelsdaten durch die Nutzung des hauseigenen FIX Message Backbones zu erreichen und die Commerzbank Richtlinie zu erfüllen die vorgibt, dass alle Positionen der Bank in MUREX gehalten werden müssen. Des Weiteren wurde erwartet dass die neue Plattform eine höhere Gesamtgeschwindigkeit aufweisen wird.
Da das Projekt das Sparen von mehreren Millionen Euros garantierte, wurde es als ein COIN Projekt akzeptiert.
In meiner Rolle als Business Analyst arbeitete ich eng mit der Fachabteilung zusammen um optimale Lösungen für konkrete Probleme zu finden und alle potentiellen Probleme und Schwachstellen aufzuzeigen.
In meiner Rolle als Softwareinfrastrukturarchitekt erarbeitete ich optimale Datenflüsse um sicherzustellen, dass alle existierenden Schnittstellen und regulatorischen Berichte weiterhin versorgt werden. Ich beriet die Fachabteilung welche Teile der Plattform durch welche Alternativen ausgetauscht werden können und welche zwingende Erweiterungen benötigen. Ich erstellte Aufwandsschätzungen für verschiedene Architekturvorschläge und mehrphasige Migrationen.
In meiner Rolle als Chef-Entwickler erweiterte oder entwarf ich Applikationen und Prototypen die existierende Teile von Pirate und FlexTrade ersetzten. Ebenso spezifizierte ich die Anforderungen für einen neuen Dienst „MUREX Position Service“ welcher auf Anfrage aktuelle Positionen aus MUREX bereitstellte. Dieser Dienst wurde von der MUREX-Abteilung implementiert und in Betrieb genommen und später auch von verschiedenen anderen Abteilungen genutzt. Zusätzlich plante, verteilte und verfolgte ich alle Aktivitäten der Entwickler und berat diese bei komplexen Problemen.
In meiner Rolle als Onsite Koordinator koordinierte ich alle Kommunikation, Wissenstransfers und Aktivitäten unserer Entwicklerkollegen in Indien.
Seit der Inbetriebnahme der neuen Handelsplattform wurden durch das bessere Lizenzmodell von Bloomberg SSEOSM eine Menge an Kosten eingespart. Als weiteres Ergebnis sind nun alle Positionen in MUREX in Echtzeit vorhanden und damit die Richtlinie erfüllt dass alle Positionen in MUREX verfügbar sein müssen. Auch war es der Bank nun möglich eine Übersicht über alle bankweiten Positionen in einem System zu haben, was täglich vom Management und Direktorium zur Entscheidungsfindung genutzt wird.
Die neuen Handelsdatenflüsse durch den bankeigenen FIX Message Backbone befolgten alle Standards und Regeln was einerseits zu einem leichter verständlichen Routing und andererseits zu einer wesentlich transparenteren Nachverfolgung von Handelsaufträgen führte. Administratoren konnten nun durch die Benutzung von Standard-Tools einen besseren Support für problematische Aufträge bieten.
Durch die Nutzung von neu entwickelter oder existierender Hochgeschwindigkeitsapplikationen konnte die Gesamtgeschwindigkeit stark gesteigert werden. Täglich wiederkehrende Prozesse wie zum Beispiel das Rebalancing des Hauptkontos konnten so stark optimiert werden dass sie nun nur Minuten anstelle von Stunden benötigen.
Mit dem Einführen von Expertensystemen (Rule Engines) im Handelsdatenfluss konnten das Management, die Händler, Administratoren und Entwickler eine Menge an Zeit sparen da die Kommunikation zwischen den Personen nun auf einer standardisierten Regelsprache basiert.
Technologien:
Applikation: Java 6, Drools, Shell Script
Frameworks: FIX Protocol
Datenbank: Sybase Adaptive Server Anywhere
Software: Bloomberg SSEOMS
Tool Stack: Linux, Subversion, Jira, Eclipse, NetBeans
BasketTrader
Architektur, Design und Weiterentwicklung der existierenden Applikation “BasketTrader” zum Etablieren einer abteilungsübergreifenden Lösung für Investment-Banking und Handel. BasketTrader ist eine Frontendapplikation zur Eingabe und Überwachung von Handelsaufträgen in Echtzeit.
Die Applikation bezieht in Echtzeit Preise von verschiedenen Anbietern und zeigt diese dem Benutzer zur Finden einer Handelsentscheidung an. Des Weiteren können Handelsaufträge mit den Marktpreisen generiert werden. Für den Bezug dieser Preisdaten wurden verschiedene steckbare Module (Plug-Ins) für die Preislieferanten Bloomberg und Reuters realisiert
Es wurde auch ein Modul hinzugefügt dass die Benutzerkonfiguration aus einer Datenbank lädt.
BasketTrader wurde für die New Yorker ETF Borrowing & Lending-Handelsabteilung dahingehend erweitert, dass auch ETFs, Swaps, Cash-Amounts und andere Typen von Instrumenten gehandelt und verwaltet werden konnten. Um geliehene und verliehene Positionen der Handelsabteilung in Balance zu halten wurde ein präziser Algorithmus implementiert der das Rebalancing eines Kontos mit mehreren Unterkonten und einer Vielzahl von Instrumententypen im Wert von mehr als 4 Milliarden US Dollar auf Abruf vornahm.
Als Ergebnis dieses Algorithmus wurde dem Rebalancing-Händler ein fertig zu handelndes Portfolio mit Kauf- und Verkaufsaufträgen angeboten um das Konto täglich ein- oder mehrmals in Balance zu bringen. Um die Balance des Kontos zu ermitteln wurden alle Positionen der Abteilung von dem bankinternen WebService MUREX Position Service abgerufen.
Ebenso wurden alle Geschäftsprozesse wie das Erzeugen oder die Rückgabe von ETFs, außerbörslicher Handel oder der Kontotransfer von Positionen implementiert
BasketTrader wurde von bis zu 3 Entwicklern parallel entwickelt und von bis zu 30 Händlern genutzt. Weitere Informationen über den BasketTrader und seine Geschichte sind in diesem Dokument in der Zeitspanne von 09.2008 bis 03.2011 verfügbar.
Technologien:
Applikation: Java 6, C++, Shell Script,
Frameworks: Swing, Web Service Client, Google Guice, JPA, Hibernate, MyBatis, Jenny, Disruptor, Bloomberg Open Market Data, Reuters RFA
Protokolle: FIX Protocol 4.2, WSDL
Datenbank: Sybase Adaptive Server Anywhere
Software: Bloomberg SSEOMS, Reuters 3000 XTRA, MUREX
Tool Stack: Linux, Subversion, Jira, NetBeans, MS Visual Studio 2010
CGI
Architektur, Design und Implementierung des Kerns und Prototyps des regelbasierten Expertensystems (Rules Engine) “CGI” als handelsabteilungsübergreifende Lösung zum Buchen von ausgeführten Handelsaufträgen in MUREX für die Verwaltung von Positionen und spätere Rechnungsstellung. CGI ist eine ETL-Prozessapplikation für Handelsnachrichten. Es extrahiert und transformiert eingehende FIX Protocol-Nachrichten über Handelsausführungen in MUREX-spezifische Stored SQL Procedure Aufrufe und führt diese aus.
Bisher nutzte die Cash Equities Handelsabteilung die hauseigene Applikation “SSEOMS-MF”. Diese war sehr intransparent und verkompliziert entwickelt worden und hatte einige ernsthafte Geschwindigkeitsprobleme bei Buchungen von hochvolumigen Transaktionen in MUREX.
Hinzu kam eine Anforderung für die New York ETF Borrowing & Lending Handelsabteilung alle Transaktionen ebenfalls in MUREX zu buchen, da die Applikation Pirate durch ihre interne Positionsverwaltung gegen eine bankinterne Richtlinie verstieß.
Eine weiterte Anforderung der Administration und des Supports war es die Regeln, zu Beispiel Mappings, die während der Transformation zur Anwendung kamen im laufenden Betrieb ändern zu können ohne auf einen neuen Liefereinsatz angewiesen sein zu müssen.
CGI wurde als hochflexible, multi-threaded und Regelsätze-basierte Pipeline entworfen mit multiplen und steckbaren Handlern für maßgeschneiderte Nachrichtenverarbeitung in jeder der Input-, Transformations-, und Output-Stufen.
Der Kern wurde um das Business-Rules-Managementsystem Drools konzipiert. CGI konnte mit generellen Transformationsregeln gefüttert werden welche allen Handelsabteilungen gemein waren. Diese konnten für jede Abteilung mit spezifischen Regelsätzen überschrieben oder mit Neuen erweitert werden. Auf diese Weise konnten verschiedene Nachrichten von multiplen Abteilungen mit gemeinsamen und spezifischen Regelsätzen in einer einzigen Instanz verarbeitet werden. Die Regeln wurden in einer Java-basierten domänenspezifischen Sprache (DSL) verfasst.
Die Applikation wurde an die New Yorker ETF Borrowing & Lending Handelsabteilung ausgeliefert während die Handelsplattform Pirate ausgetauscht wurde. Zur Anwendung kamen allgemeine Nachrichtenhandler, sowie allgemeine und abteilungsspezifische Regeln.
Später wurde CGI an die Cash Equities Handelsabteilung mit allgemeinem und abteilungsspezifischen Regelsätzen und einigen spezifischen Nachrichtenhandlern ausgeliefert.
Die Diskussionen um CGI auch an die Flow Trading Handelsabteilung auszuliefern dauern aktuell noch an. Aktuell gibt es auch eine Diskussion ob CGI für den Londoner Index Arbitrage-Handel eingesetzt werden kann.
Des Weiteren wird diskutiert ob CGI künftig als System für das Routing von Handelsaufträgen fungieren kann, da die Natur des Systems dies zulässt. Somit kann der existierende ESA-Router ersetzt werden und eine gemeinsame Codebasis und DSL geschaffen werden wodurch Kosten eingespart werden können.
Durch die Verwendung von CGI als geschäftsregelbasierte Transformations-Engine zum Generieren von MUREX Positionen aus FIX Protocol-Nachrichten heraus erhielt die Bank eine abteilungsübergreifende Lösung, die auf alle Eigenheiten der jeweiligen Abteilung eingehen kann, Die Lösung kann auch für komplett andere, ebenfalls in der regelbasierten Domäne angesiedelten Probleme, wie zum Beispiel Routing wiederverwendet werden.
Im Ergebnis konnte die ETF Borrowing & Lending Handelsabteilung durch den Einsatz vn CGI erfolgreich von Pirate weg migriert werden und die bankinterne Richtlinie zum Halten von Positionen in MUREX implementieren.
Die Cash Equities Abteilung konnte erfolgreich von der undurchsichtigen SSEOMS-MF Schnittstellenapplikation weg migriert werden. Administratoren und Supporter konnten nun Regeln im laufen Betrieb in einer einfachen Sprache anpassen. Zusätzlich wurden alle Geschwindigkeitsprobleme gelöst. Eine Messung ergab dass eine Stunde Verarbeitung in SSEOMS-MF auf eine Minute Verarbeitung in CGI beschleunigt werden konnte. Hochvolumige Transaktionen sind nun nahezu in Echtzeit in MUREX verfügbar.
Neben den technischen Vorteilen profitierten beide Handelsabteilungen von der strikten Trennung der Geschäftsregeln von der technischen Implementierung. Die Kommunikation der Entwickler, Administratoren, Supporter, Händler und des Management konnte stark verbessert werden, da alle Regeln in einer gemeinsam verständlichen Sprache formuliert waren. Dadurch wurden das Hinzufügen oder Ändern von Regeln, sowie das Finden von Problemen für alle involvierten Personen wesentlich einfacher.
CGI wurde von bis zu 2 Entwicklern parallel entwickelt. Meine Aufgabe war es eine Lösung für die ursprünglichen Probleme und Anforderungen zu erarbeiten, den Kern und Prototyp zu implementieren, der allgemeine und abteilungsspezifische Regelsätze verarbeiten kann.
Sobald CGI ein startklares System war, dass die Erfüllung aller funktionalen Anforderungen beweisen konnte, übergab ich die weitere Evolution an einen Mitarbeiter der die konkreten Geschäftsregeln und spezifischen Nachrichtenhandler in Zusammenarbeit mit den Fachabteilungen und Händlern implementierte.
Ich entwickelte CGI parallel zum BasketTrader und konzentrierte mich wieder auf die Entwicklung des BasketTrader nachdem die Entwicklung von CGI von meiner Seite soweit fortgeschritten war dass ich es übergeben konnte.
Technologien:
Applikation: Java 6, Drools, Shell Script
Frameworks: FIX Protocol
Datenbank: Sybase Adaptive Server Anywhere
Software: Bloomberg SSEOMS
Tool Stack: Linux, Subversion, Jira, Eclipse
Nebensächliche Aktivitäten
- Erweiterung der existierenden hauseigenen Applikation ESA Router und Fehlerbehebung in Regelfiltern, sowie Hinzufügen von neuen Verbindungen. ESA-Router ist ein Routingsystem für FIX Protocol Nachrichten. Diese Nachrichten werden zu Beispiel zu Brokern, Börsen oder bankinternen Darkrooms geleitet.
- Entwicklung eines FIX Protocol Logdatei-Inspektors der unter anderem auch FIX Protocol Nachrichten aus Logdateien oder Replay-Dateien für CGI erzeugen kann.
- Aufnahme von Anforderungen und Erarbeitung einer Lösung um die Handelsplattform der Londoner Index Arbitrage Handelsabteilung mit BasketTrader und CGI zu ersetzen.
Technologien:
Applikation: Java 6, Shell Script
Frameworks: FIX Protocol
Datenbank: Sybase Adaptive Server Anywhere
Software: Bloomberg SSEOMS
Tool Stack: Linux, Subversion, Jira, NetBeans, Eclipse