Essay · · 3 min

Cadenza design note

An architecture sketch for a large trading engine: client, gateway, matching and risk layers joined by HTTP, WebSocket and FIX.

By Sonami

Creating a large-scale trading engine requires careful architectural planning to ensure high performance, low latency, and scalability. Below is a high-level architecture design for your trading engine that leverages HTTP, WebSocket, and FIX protocol.

High-Level Architecture

Client Layer

  • HTTP API: For standard request-response interactions.
  • WebSocket API: For real-time data delivery and bi-directional communication.
  • FIX API: For institutional clients and high-frequency trading.

Gateway Layer

  • API Gateway: Handles and routes HTTP and WebSocket requests. This layer ensures security (authentication and authorization), rate limiting, and request validation.

Load Balancer

  • Load Balancer: Distributes incoming connections from clients to multiple instances of trading servers to ensure even load distribution and high availability.

Trading Core

  • Trading Engine: High-performance, low-latency engine that handles order matching, order book management, and execution.
  • Quote Aggregator: Aggregates quotes from liquidity providers in real-time.
  • Order Router: Routes orders to the appropriate liquidity provider based on the best available price and execution policies.

Market Data Layer

  • Market Data Feeds: Consumes and processes real-time market data from multiple liquidity providers.
  • Normalization Layer: Normalizes data from various formats to a unified format.
  • Market Data Distributor: Distributes processed market data to clients via WebSocket or HTTP endpoints.

Liquidity Provider Layer

  • FIX Connectors: Connects to liquidity providers using FIX protocol.
  • WebSocket/HTTP Connectors: Connects to liquidity providers using WebSocket or HTTP APIs.

Data Storage Layer

  • High-Performance Databases: For storing order books, trade history, and market data.
  • Use in-memory databases (e.g., Redis) for real-time data.
  • Use relational databases (e.g., PostgreSQL) for transactional data.
  • Use NoSQL databases (e.g., Cassandra) for scalable market data storage.

Monitoring and Logging

  • Monitoring Tools: Tools like Prometheus and Grafana to monitor system health, performance metrics, and alerting.
  • Centralized Logging: Utilizing ELK Stack (Elasticsearch, Logstash, Kibana) for log aggregation and analysis.

Security Layer

  • DDoS Protection: To protect against distributed denial-of-service attacks.
  • WAF (Web Application Firewall): To filter and monitor HTTP/HTTPS requests.
  • Encryption: SSL/TLS for data-in-transit and encryption for data-at-rest.

Detailed Components

Client Layer

  • Clients: Various clients such as web platforms, mobile apps, and institutional traders use the HTTP, WebSocket, and FIX APIs to interact with the trading engine.

Gateway Layer

  • API Gateway: Manages all incoming API requests. Examples: Kong, NGINX, AWS API Gateway.
  • Authentication & Authorization: JWT tokens, OAuth.
  • Rate Limiting: To prevent abuse and ensure fair usage.

Load Balancer

  • Load Balancer: Examples: HAProxy, NGINX, AWS Elastic Load Balancing, Google Cloud Load Balancing.

Trading Core

  • Trading Engine: Developed with languages known for high performance (e.g., C++, Java).
  • Order Matching Algorithm: FIFO, Pro-Rata, etc.
  • Quote Aggregator: Receives and aggregates quotes from liquidity providers continuously.
  • Order Router: Implements smart order routing (SOR) to achieve optimal execution.

Market Data Layer

  • Market Data Feeds: Interfaces with market data providers.
  • Normalization Layer: Unifies data formats across different providers.
  • Market Data Distributor: Distributes real-time data to subscribed clients.

Liquidity Provider Layer

  • FIX Connectors: Handles connections to liquidity providers via the FIX protocol.
  • WebSocket/HTTP Connectors: Manages connections using WebSocket or HTTP APIs.

Data Storage Layer

  • In-memory Databases: For high-speed data access (e.g., Redis).
  • Relational Databases: For reliable transactional data storage (e.g., PostgreSQL).
  • NoSQL Databases: Handles large volumes of market data (e.g., Cassandra).

Monitoring and Logging

  • Prometheus/Grafana: Metric collection and visualization.
  • ELK Stack: Centralized logging and log analysis.

Security Layer

  • DDoS Protection: Services like Cloudflare.
  • WAF: Protection against web attacks.
  • Encryption: Ensuring secure data transfer and storage.

Scalability Considerations

  • Horizontal Scalability: Adding more servers to handle increased loads.
  • Microservices Architecture: Decoupling services to independently scale and manage.
  • Auto-Scaling: Leveraging cloud auto-scaling features to dynamically manage resources based on load.

Example Technology Stack

  • Languages: C++, Java, Node.js, Python.
  • APIs: REST, GraphQL, FIX protocol.
  • Databases: PostgreSQL, Redis, Cassandra.
  • Servers: NGINX, HAProxy.
  • Hosting: AWS, Google Cloud, Azure.

Also