Provides live market data (price, volume, etc.) to the system.
Acts as an entry point for the incoming market data. It:
- Receives raw market data
- Pushes data onto the
data bus
A message bus responsible for transporting market data to:
Data Storagefor archivingSignal Processorsfor analysis
Archives all historical market data for backtesting and analytics.
These compute trading signals based on various algorithms like:
- Linear Regression
- Moving Average
- Others (e.g., momentum, RSI)
Processed signals are pushed onto the signal bus.
Carries trading signals to the Order Management System (OMS).
Central brain that:
- Makes trade decisions
- Pushes orders onto the
order bus - Tracks acknowledgements from the venues/exchanges.
Transports trading orders to OUT Gateways.
Handles acknowledgements from exchanges and notifies OMS for order state updates.
Responsible for sending orders to multiple EXCHANGES and receiving acknowledgements.
External markets where trades are executed.
-
Market Data Ingestion:
DATA SOURCE → IN Gateway → data bus -
Processing and Storage:
data bus → Data Storage & Signal Processors → signal bus -
Order Flow:
signal bus → OMS → order bus → OUT Gateway → EXCHANGE -
Acknowledgement Handling:
EXCHANGE → OUT Gateway → ack bus → OMS
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make -j