/helix

Helix, a market data feed handler for C and C++.

Primary LanguageC++OtherNOASSERTION

Helix

Build Status

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.