Precious metal derivatives have traditionally been arranged via a voice broker acting as a middleman between traders to arrange deals. But a new generation of traders have become used to agreeing deals using online platforms which removes the need for a broker and reduces fees, whilst providing greater transparency. Up until Limpid Markets, there’s been no such platform for precious metal derivatives.
We’ve created a platform for both the precious metal swap and EFP (exchange for physical) markets, providing a price discovery and proposal mechanism without the need for an intermediary voice broker.
Since launching, 75% of all interbank market participants, including some of the biggest banks in the world, have adopted Limpid Markets for precious metal swaps and EFP. Most remaining interbank organisations are currently going through the on-boarding process.
How we did it
We initially mapped out the existing processes involved in voice brokering. Once we’d done that, we were able to identify areas where we could optimise the process within the software, enhancing the service beyond the existing voice brokerage offering.
The initial scope of the project was substantial so in order to test it on the market as early as possible we defined a minimum viable product by identifying the smallest amount of work we had to do to enable two traders to arrange a deal within the software.
Limpid Markets has always been a technically challenging, but immensely rewarding project for me. Over the lifecycle of the project I have worked on all elements of the system, however I now find myself working primarily on the backend and overall service architecture.
The primary services of our backend stack are a Symfony 3 REST API written in PHP 7.1 which serves as our data layer and holds the majority of our business logic. Then we have an ExpressJS Node application written in TypeScript 2 which handles our client facing WebSockets.
We use AMQP (RabbitMQ) as our protocol of choice for inter-service communication, allowing us to easily scale the platform horizontally as the amount of traders using it grows.
We’ve recently revamped our continuous integration solution too, creating immutable deployments with the help of Jenkins pipelines. Using Packer and Terraform has freed us up from fighting with our infrastructure and allows us to focus on delivering new functionality to the traders using the platform.
The frontend started life as an Angular 1.x application, allowing us to develop quickly with a modular architecture covered by an extensive suite of unit tests. This foundation proved its worth when, as the project scaled, performance issues and browser support constraints meant we introduced React into parts of the application.
Limpid Markets is a platform with an ever growing number of trading products within it, so the frontend code needs to be accommodating of this and a Pattern Library, powered by Fabricator, was created to document our conventions to maintain a consistent look and feel and to give us a top level view of the impact of changes. A BEM naming convention keeps our CSS code sane and helps with structuring, understanding and refactoring. Where supported by the browser we also utilise CSS animations to draw attention to areas of the application where things are changing or require action.