Helix is an ultra low-latency market data feed handler written in C++. It provides an API to trading applications that normalizes market data updates from multiple feeds.
Helix core does not include networking functionality and expects applications to provide raw packet data.
- libuv 1.0 or later
- Boost libraries
macOS:
brew install boost cmake libuv pkg-config
To build Helix:
cmake .
make
To build a debug version of Helix that enables AddressSanitizer:
mkdir -p build/debug
cd build/debug
cmake -DCMAKE_BUILD_TYPE=debug ../..
To install Helix:
make install
Please note that Helix generates a pkg-config file so you can use pkg-config to integrate Helix with your project build system. If you installed Helix in the default location /usr/local/, you need to set the PKG_CONFIG_PATH environment variable as follows:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
To convert a NASDAQ TotalView-ITCH 5.0 file to CSV:
./helix-trace -i 07302015.NASDAQ_ITCH50 -s AAPL -c nasdaq-binaryfile-itch50 -f csv -o AAPL.csv
Please note that Helix only works with uncompressed files.
- C++ API
- C binding
- Order book view
- Data normalization
- Data filtering
- Retransmission requests
- Order book aggregation
- Synthetic NBBO
- NASDAQ
- NASDAQ TotalView-ITCH 5.0
- Nordic Equity TotalView-ITCH 2.02.2
- MoldUDP
- MoldUDP64
- BinaryFILE
- SoupFILE
- Parity
- PMD
Copyright © 2015 Pekka Enberg
Helix is distributed under the 2-clause BSD license. See LICENSE for the full license text.
Based on the CMakeLists.txt file and our earlier exploration, Helix is a high-performance C++ library for processing ultra low-latency market data feeds. Here's what it does:
Core Purpose Helix processes real-time financial market data from various exchanges, particularly focusing on:
NASDAQ ITCH protocols (versions 5.0, Nordic variants) Parity PMD (Parity Market Data) MoldUDP messaging protocols Main Components
- helix-trace - Market Data Converter Converts binary market data files to human-readable formats (CSV, pretty-print) Extracts specific symbols from large data feeds As we saw, it processed AMZN data showing trades, quotes, VWAP, etc.
- helix-top - Real-time Market Monitor Live monitoring tool (like top for market data) Shows real-time order book activity Displays trading statistics
- order_book_perf_test - Performance Benchmarking Tests the speed of order book operations Critical for low-latency trading systems
- libhelix - Core Library The library handles:
Order book management with multi-level price tracking Event-driven processing for real-time feeds Protocol parsing for different market data formats Memory-optimized data structures for ultra-low latency Market Data Protocols Supported NASDAQ ITCH 5.0: Standard US equity market data Nordic ITCH: European market variants MoldUDP: UDP-based reliable multicast protocol Parity PMD: Alternative trading system data Use Cases Algorithmic Trading: Parse live market feeds for trading decisions Market Analysis: Convert historical data for research Risk Management: Real-time position and exposure monitoring Market Making: Maintain accurate order book state Compliance: Trade reporting and audit trails Technical Features Ultra-low latency: Optimized for microsecond-level processing Zero-copy networking: Minimizes memory allocations Lock-free data structures: Avoids thread contention C++17 optimizations: Modern language features for performance Essentially, Helix is a financial market data processing engine designed for firms that need to react to market changes in microseconds - typically used by high-frequency trading firms, market makers, and quantitative trading operations.