Helix
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.
Building
Prerequisites
- libuv 1.0 or later
- Boost libraries
macOS:
brew install boost cmake libuv pkg-config
Building and Installing
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/
Usage
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.
Features
Core
- C++ API
- C binding
- Order book view
- Data normalization
- Data filtering
- Retransmission requests
- Order book aggregation
- Synthetic NBBO
Protocols
- NASDAQ
- NASDAQ TotalView-ITCH 5.0
- Nordic Equity TotalView-ITCH 2.02.2
- MoldUDP
- MoldUDP64
- BinaryFILE
- SoupFILE
- Parity
- PMD
License
Copyright © 2015 Pekka Enberg
Helix is distributed under the 2-clause BSD license. See LICENSE for the full license text.