Core Derivatives Platform

Background

The Bank needed a new Derivatives platform that would provide all the functions needed for the business. It would have to support the increasing trade volumes, get rid of current manual steps in the workflow, support all the upcoming regulations

Implementation

We had to design the system from scratch. Main items that had to be designed included the trade representation, core system architecture, database modelling

An Event Driven System architecture was agreed as the preferred way of implementing the platform, where individual services would be implemented to provide the various business functions. A Messaging system would be incorporated to support the transport of events and allow a pub-sub model of listening to interested events. FpML, an industry standard Xml format, was chosen to be used to represent trade data for all the products and process workflow. We wrote extensions to FpML to customise it to business requirements. This resulted in the canoncial model of data that was used within the System. The database modeling of the trade data was completed taking into consideration use cases like displaying data on UI, reconciliation and reports.

Various Front office systems in the bank feed in OTC trade data in the application proprietary XML format. Individual Mapping services tranform this data into the FpML based canonical form and persist the trade into the Derivatives platform. This data gets enriched from a number of sources including counterparty static data, LEI information,Master Agreement information etc. The enriched trade would be validated for validity and completeness as per rules defined in the business. Any errors would raise tasks in the workflow management system for users to investigate and resolve.

The tech stack used for the solution evolved through several iterations. The final state used low latency messaging system - Solace as the main messaging system. This had a hierarchy of topics that could be subscribe to listen to various events in the system. The individual business services were developed in Java 8, packaged into fatjars and deployed on clustered linux servers with a load balancer. Each of the services had a good test coverage using combination of unit and integration tests. There was a CI pipeline implemented using Jenkins with artifacts produced getting stored in the Corporate Nexus repository. Automated deployment scripts were provided to promote the deployments throught DEV/QA/UAT and onto Production.

Main Tech Stack : Java 8, Google Guice, GRPC, REST, JPA, Hibernate, Multithreading, XML, XSD, Xpath, FpML, JSON, Mockito, Fitnesse, Maven, Jenkins, Sybase, Solace, MQ, Linux, SVN/Enterprise GitHub, Nexus Repository.

A Common UI app was provided to assist business users to view the history of each trade version as well specific views showing flows of the trade through each of the services. It also had Exception/Task management function to allow for users to manage errors in the system

This provided the core plaform for the bank to develop the entire portfolio of services that make up the Back office function today. The UI provided a user friendly view of the data that allowed to users to easily and securely query data, handle error case workflows and provided complete visibility into the system.