Low-latency NASDAQ ITCH 5.0 market data pipeline built in C++26. Replays binary feed files through a lock-free SPMC ring buffer into per-symbol order books. Reconstructed L2 price-level depth.
FileSource (mmap) → FeedHandler → SPMCRingBuffer → MarketDataHandler × N
↓
OpenAddressMap (order records)
↓
LimitedDepthOrderBook (top 10 levels)
- Feed: memory-mapped file source, dispatch via SPMC disruptor
- Queue: lock-free single-producer multi-consumer ring buffer, cache-line aligned control blocks
- Deserializer: reflection-based zero-copy ITCH message parser (
stse), skips ignored fields at compile time - Order tracking: open-addressing hash map keyed by order reference number
- Order book: bounded sorted array (top 10 price levels per side), contiguous in memory
# optimised release
make release
# w/ latency instrumentation
make instrumented
# sanitizers
make asan
make ubsan
make tsanmake run_release ARGS=path/to/12302019.NASDAQ_ITCH50
make run_instrumented ARGS=path/to/12302019.NASDAQ_ITCH50| Metric | p50 | p99 | p99.9 |
|---|---|---|---|
| Market event | 320ns | 1.5µs | 4.0µs |
| Order book insert | 20ns | 80ns | 420ns |
| Order book remove | 20ns | 70ns | 270ns |
| OAM lookup | 230ns | 960ns | 1.6µs |
- GCC 16+ (C++26, P2996 reflection)
- Linux (epoll, mmap,
pthreadaffinity) - NASDAQ TotalView-ITCH 5.0 binary feed file