Curriculum Vitae
Summary
-
Senior Software Analyst/Developer with nineteen years of experience in the Investment Banking industry
-
Proven track record of designing and developing software solutions to complex business problems using Java, JavaScript, C# and C++, both on the user interface and server side
-
Made a significant impact to the business by delivering on a diverse range of projects from back-office client reporting and server-side processing to front-office real-time trading
-
Primarily involved with software development but worked on all stages of the software life-cycle to help build good relationships with Traders, Investment Advisors and Operations staff
Employment History
G Research
|
Worked as a senior developer within the Data Engineering team responsible for ingesting data sets and making them available to Quantitative Analysts. Re-wrote a number of data ingestion streams as part of G Research’s multi-year migration to a private cloud platform. This involved porting a series of complex SQL based data transformations to Kotlin Spring Boot applications interfacing with Kafka running through Kubernetes. Developed a library as a Kotlin DSL to upload CSV data to SQL Server to simplify part of this process and facilitate re-use.
Built an automated testing tool in Python to compare the results of the new application vs. the old using the index-merge algorithm. This tool has been useful across the team for other regression testing efforts.
Worked with a second team in G Research to build a number of data downloader tools in Kotlin. These downloaders are more reliable and easier to monitor than the shell scripts that they replace and provide a pattern for future downloader efforts in Kotlin / Kubernetes.
HSBC
|
Built an end-to-end testing environment using Google Cloud Platform, Docker and Jenkins for the GDM Falcon Core team.
BNP Paribas
|
Developed an internal ION gateway to trade Asset Backed Securities. The Java service manages the workflow between sales and traders within BNP using a finite state machine to keep track of the state of the request as it goes through the negotiation process. When agreed a trade is published to ION for downstream consumption. A data warehouse component was also built to log all changes to the request for MiFID compliance. Worked with the front-end Omega team to agree a JSON API and with the business to understand workflow for this new market.
Developed a service to read credit pricing data from MarketAxess. The service comprises a FIX acceptor which consumes a stream of data published over a secure TCP connection. Written in Java using Quickfix/J, the service publishes the prices to BNP’s ION environment for use by the quants team.
Built a plug-in for ION.Net to allow BNP Credit traders to execute orders received from Blackrock. When orders are received the plug-in allows the BNP trader to adjust the agreed quantity to fill or partially fill an order. This plug-in, written in C#, uses ION’s proprietary .Net libraries to display the order to the trader as well as the result of some internal consistency and compliance checks.
GammaDEX – Decentralized Ethereum Token Exchange
|
Engaged in a full-time project with two former Morgan Stanley colleagues to build GammaDEX, a decentralised Ethereum token exchange with the aim of building the application out in to a profitable business. GammaDEX went live in August, 2018 and attracted a small but loyal user base.
Primarily focussed on the design and development of backend services to synchronise orders between GammaDEX and external exchanges sharing the same smart contract. The system maintained a complete order book in our PostgreSQL database and had to load data from unreliable and inconsistent external exchange sources.
Morgan Stanley & Co.
|
Sole developer on Juno, a greenfield project to develop an Investment Book of Record for MSIM. The Juno Engine calculates positions on demand from underlying transactions to produce real-time positions for use in downstream applications such as MSIM’s order entry and reporting systems.
Transactions are loaded in to a Sybase database, via a SOAP based service, from ESP, the Accounting Book of Record supplied by a third-party vendor. Transaction deltas are loaded using a synchronisation process that determines which transactions in ESP need to be cancelled/inserted/updated in the local database.
By using Juno to reconcile positions vs. ESP we identified 30 problems with the vendor’s end of day processes, several of which they could not fix. Juno is providing the MSIM business with up-to-date, accurate position data which cannot be provided by the vendor alone.
Credit Suisse Securities Ltd.
|
Built a series of enhancements to the WPF based TSRD GUI including an interface for a new mechanism to analyse and manage the quality of time series data. Introduced view composition using dependency injection with MEF and MVVM Light to make the code base more manageable, help with unit testing and allow greater component reuse.
Morgan Stanley & Co.
|
Re-wrote the data abstraction and reporting service layer in C++ to enhance the monthly statement generation process. PWM went from generating 70,000 client reports in eight hours to 1 million client reports in 30 minutes on the same hardware.
Sole developer and co-designer on a project to replace the transaction booking system in all PWM regions.
Skills / Education
Server Technologies |
Java 11; Kotlin; C/C++; JavaScript (Node.js); PostgreSQL/Sybase/Informix; FIX; ION; Spring; Kubernetes; Docker; Google Cloud Platform; Kafka |
UI Technologies |
C# (WPF); Infragistics; Vaadin; JavaScript (Angular.js, React, Redux); Web3 |
Business Knowledge |
Investment Banking; Market Risk; Portfolio Accounting; Financial Products (incl. Equities, Bonds, Mutual Funds, Listed Options); Data Mining |
Academic Achievements |
BSc (Hons.) Computing Systems 2:1 from The Nottingham Trent University; 3 A-Levels |