Case study

Startup Trading Exchange

Our mission: Deliver a platform to reimagine the mortgage industry.

technology strategy
microservices
devops strategy

Startup Trading Exchange

This exciting fintech startup needed help with their mission to disrupt the mortgage industry with an completely new type of equities trading platform. They engaged Notional to deliver a full end-to-end solution, including their members' website, trading exchange, order management and settlement platform.

Our client is on a mission - to rethink property financing. Their vision is based around an innovative two-sided marketplace, allowing new forms of market participation, and opening the mortgage industry to players outside of financial institutions.
By re-imagining property financing as an open debt & equity marketplace, they created wealth opportunities for a wide range of market participants - from traditional home-owners, landlords, through to sophisticated investors.

Starting with a blank slate, they needed a complete trading platform, bespoke tailored to match and support their ambitious vision.

  • An equities order book and matching engine
  • Order management system
  • Execution and settlement
  • Wallet and ledger management
  • An API for financial institutions to integrate with their existing portfolio management tools
  • An advanced algo engine, allowing select partners to submit trading-bots as first-class citizens within the exchange
  • A consumer-facing website, allowing investors and homeowners to manage their accounts, positions and transactions.

Notional was engaged to help bootstrap their internal team, by providing the architecture foundations and initial functionality of all the major components of their ambitious trading platform.

Over the course of a nine-month engagement, we followed an iterative release cycle, delivering rapidly, and then incrementally adding new features.

Starting initially with order capture and matching engine, our initial release was delivered within a few short weeks, and allowed the founders to see for the first time what trading debt & equity in property would feel like, outside of spreadsheets and hand-written simulations.

We continued with a series of incremental releases, adding features around account setup, trade settlement, credit tooling, ledger management, advanced order management, and finally a handful of algo bots trading on the exchange.

The architecture

The platform was built as a suite of Spring Boot microservices, which allowed for rapid incremental delivery.

Using Event Sourcing to model the exchange, we chose to leverage Kafka as both our message bus, and our primary data store.

Where required, microservices used their own domain specific projections, stored in traditional RDBMS. As these were derived entirely from the event stream, it proved trivial to modify and replay projections, as the business needs evolved. As our client was a startup, whose business requirements were rapidly changing and evolving, this proved invaluable.

Our platform was built, deployed and managed on Docker and Kubernetes, using Google Cloud. By building atop of the Google Cloud infrastructure, we were able to rapidly deliver a solution that was both scalabable, quick to deploy, and heavily secured.

Our team leveraged Terraform to automatically provision our environments, and Gitlab CI/CD to build, test, and deploy our code.

This allowed both long-lived environments, such as production and test, but also made it trivial to spin up ad-hoc environments for experimentation, demos, or performance testing during our builds.

Finally, we built a suite of runtime monitoring tooling, integrated as first-class citizens to the platform.
Using a stack of Micrometer, Prometheus and Grafana, we were able to include a suite of dashboards and alerting monitoring that exposed key performance metrics and health indicators across the entire platform.

This, leveraged with the in-built log aggregation and monitoring provided through Google Cloud and Kubernetes, provided a robust, first-class monitoring solution.