The project had no concrete name. It was spanned over multiple trading desks and contained several applications to create synergy effects.
Main stakeholders of the project were:
- Cash Equities: A trading desk for institutional- and special customers to perform high volume transactions of single stocks or baskets. The central trading application is Bloomberg SSEOMS.
- Flow Trading: A trading desk for casual and non-special clients to perform small and medium volume transactions of single stocks or baskets. The central trading applications were Realtime Trading Desktop and DeltaAgent.
- ETF Borrowing & Lending: A trading desk for borrowing and lending Exchange Traded Funds. The previous central trading application was called “Pirate”. “Replacing Pirate” was one of three COIN projects in the bank that acquired investment budget during a bank-wide investment stop during the financial crisis. Only projects with a guaranteed earning or saving of millions of € were accepted as COIN project.
During the project a variety of existing applications or the complete trading platform were replaced in each trading desk.
I figured a couple of roles:
- As Lead Developer I dispatched and tracked team activities.
- As Architect I designed parts of or the complete software infrastructure of each these desks and defines complete trade flows from trade input to routing to execution to positioning and accounting.
- As Business Analyst I worked closely together with traders to understand the concrete business models and needs to find ideal desk-spanning solutions.
- As Onsite Coordinator I was responsible for remote developers in India in terms of communication, coordination, knowledge transfer, task assignment and tracking.
Responsibilities:
- Analysis of business requirements
- Advice solutions to business
- Architecture of software infrastructure and communication
- Architecture of software skeletons
- Design of software modules
- Design of database schemes
- Prototyping of software implementations
- Implementation
- Coordination of team responsibilities
- Coordination of team activities
- Support for operators
- Support for customers
- Support for traders
Team:
The project was driven by a staff of 3 to 8 developers. Including business, management, operation and reference customers the project was driven by up to 30 persons. The trading desks, management and developers were spread over Frankfurt, London, New York and India.
Activities:
Exchange of ETF Borrowing & Lending desk’s trading platform
Consulting, guidance and phased architecture design of replacing the complete New York ETF Borrowing & Lending desk’s trading platform from Pirate and FlexTrade to Bloomberg SSEOMS, BasketTrader, CGI and MUREX.
High level requirement was to replace the complete trading platform to save a lot of license costs by using Bloomberg SSEOMS, achieve much more transparent order flows by using Commerzbank in-house FIX Message backbone and connectivity and to satisfy the Commerzbank policy to track all positions in MUREX.
Because the project guaranteed a saving of millions of € it was accepted as COIN project.
Another expectation to the new platform was of course a better overall performance.
In my role as Business Analyst I worked closely together with business to find optimal solutions for the concrete needs and point out all possible issues.
In my role as Software Infrastructure Architect I worked out optimal order flows, to ensure all interfaces and regulatory reports are still fed. I advised business which parts of the platform can be replaced with alternatives and which of them need enhancements. I provided effort estimations per migration phase for different architecture solutions.
In my role as Lead Developer I enhanced or designed and prototyped applications that replaced existing parts of Pirate and FlexTrade. I specified requirements for a MUREX position providing service that got implemented by MUREX the team. Additionally I planned, assigned and tracked all developers’ activities and guided developers in case of complex problems.
In my role as Onsite Coordinator I coordinated all communication, knowledge transfer and activities of our colleagues in India.
Since the platform is replaced Commerzbank saves a lot of costs because of the better licensing model of Bloomberg SSEOMS. As a result of the migration all positions are kept in MUREX now. That satisfies the Commerzbank policy of position keeping and enables a complete overview of all positions bank-wide in MUREX which is used by high level management and board of directors on a daily basis for decision finding.
The new order flows through the Commerzbank FIX Protocol backbone follow all standard rules which lead to a much cleaner and understandable routing and tracking. Operators can now give much better support for problematic orders by using standard tools.
By using brand new or existing high performance applications the overall performance could be improved a lot. Daily processes like the account rebalancing are optimized to consume minutes now instead of hours. With the appearance of rule based engines in the order flow business, traders, operators and developers can save a lot of time in communication by using a standardized language.
Technologies:
Application: Java 6, Drools, Shell Script
Frameworks: FIX Protocol
Database: Sybase Adaptive Server Anywhere
Software: Bloomberg SSEOMS
Tool Stack: Linux, Subversion, Jira, Eclipse, NetBeans
BasketTrader
Architecture, design and further implementation of the existing front end application “BasketTrader” to establish a desk-spanning investment banking trader front end solution.
Price feeds got implemented as pluggable modules that utilize Bloomberg and Reuters feeds. Database connectivity was added to implement a single point of user configuration.
For the New York ETF Borrowing & Lending desk BasketTrader got extended to deal with ETFs, Swaps, Cash Amounts and more instrument types. To keep the desks’ positions of borrowed and lent instruments in balance the application implements a precise algorithm to rebalance an account worth more than 4 billions of dollars. In the end it offers the rebalancing trader a ready-to-trade basket with buy- and sell-orders to bring the account back in balance each day. It utilizes a bank internal web service to MUREX that provides the desks’ positions.
All other business processes like Creation and Redemption of an ETF, OTC trading and book transfers of positions got implemented as well.BasketTrader is developed by up to 3 developers in parallel and used by up to 30 traders. Further information about BasketTrader and its history is available in this document in the timespan from 09-2008 to 03-2011.
Technologies:
Application: Java 6, C++, Shell Script,
Frameworks: Swing, Web Service Client, Google Guice, Hibernate, MyBatis, Jenny, Disruptor, Bloomberg Open Market Data, Reuters RFA
Protocols: FIX Protocol 4.2, WSDL
Database: Sybase Adaptive Server Anywhere
Software: Bloomberg SSEOMS, Reuters 3000 XTRA, MUREX
Tool Stack: Linux, Subversion, Jira, NetBeans, MS Visual Studio 2010
CGI
Architecture, design, core implementation and prototyping of the rule based expert system application “CGI” from scratch as a desk-spanning solution to book trade execution reports into MUREX for position tracking and accounting. It transforms incoming FIX Protocol Trade Execution messages into MUREX specific SQL Procedure Calls and executes them.
Previously the Cash Equities trading desk used the in-house application “SSEOMS-MF” which was developed in a very non-transparent way and had some serious performance issues when booking high volume transactions into MUREX.
In addition there was a requirement for the New York ETF Borrowing & Lending desk to book all transactions into MUREX too because Pirate’s internal position tracking broke the Commerzbank policy. Another requirement was to allow changes of transformation rules on the fly, without the need of a new rollout.
CGI is designed as a highly flexible, multi-threaded, rule set based message processing pipeline with multiple and pluggable custom message processing handlers for each input-, transformation-, and output-stage. In its core it is conceptualized around the business rules management system Drools. CGI can be fed with general transformation rule sets which are common for all trading desks that could be overridden with desk-specific rules sets. It can process messages from multiple desks with multiple rules in a single instance. Rules are written in a Java based Domain Specific Language.
The application was deployed to the New York ETF Borrowing & Lending desk in the phase of replacing Pirate with a common set of message handlers and the common and specific rule NY sets. Afterwards it got deployed to the Cash Equities desk with common- and Cash Equities-specific rule sets and some specific message handlers. Discussions to deploy CGI to the Flow Trading desk are still ongoing. Although it was an initial requirement to handle all desks in a single instance the business decided to run desk-specific instances for a better separation of costs and support. Actually it is also in discussion to reuse CGI’s as an order routing engine to replace the existing ESA Router and have a common code base.
By using CGI as business rule based transformation engine to generate MUREX trades out of FIX Protocol trades, Commerzbank got a single solution for multiple desks that could take care of each desk’s oddities, and be reused to solve completely different problems in rule based domains like routing.
New York ETF Borrowing & Lending desk could successfully migrate away from Pirate and implement the Commerzbank policy to track all positions in MUREX.
Cash Equities desk could successfully migrate away from the non-transparent SSEOMS-MF interface and operators achieved to change rules in a running system, in a simple language. Additionally all performance issues are solved. A benchmark showed that a one 1 hour of SSEOMS-MF processing was accelerated to 1 minute in CGI. High volume transactions are processed and visible in MUREX in a finger snap now.
Besides the technical benefits, both desks take a high profit from the strict separation of business rules and technical implementation. The communication between developers, operators, traders and management improved a lot since all rules were phrased in a common understandable language. Thus adding or changing rules and finding issues got much comfortable for all involved persons.
CGI is developed by up to 2 developers in parallel. My part was to create a solution from scratch, implement the core engine and prototype common rules and some New York- and Cash Equities-specific rules. Once CGI was a ready-to-run system that proved all functional requirements I overhanded further evolution to a coworker who implemented the concrete business rules and specific message handlers together with business and traders. I developed CGI in parallel to BasketTrader and went ahead with BasketTrader after CGI was finished from my side.
Technologies:
Application: Java 6, Drools, Shell Script
Frameworks: FIX Protocol
Database: Sybase Adaptive Server Anywhere
Software: Bloomberg SSEOMS
Tool Stack: Linux, Subversion, Jira, Eclipse
Minor Activities:
Enhancing and fixing of rules, filters and connectivity of the existing in-house application ESA-Router. ESA-Router is a routing system for FIX Protocol messages. Orders are routed e.g. to brokers, exchanges or bank internal darkrooms.
Creation of a FIX Protocol log inspector that can recreate FIX Protocol messages or replay-files for CGI.
Collecting requirements and find solutions to replace the London Index Arbitrage trading desk’s trading platform to BasketTrader and CGI.
Technologies:
Application: Java 6, Shell Script
Frameworks: FIX Protocol
Database: Sybase Adaptive Server Anywhere
Software: Bloomberg SSEOMS
Tool Stack: Linux, Subversion, Jira, NetBeans, Eclipse