Skip to content
 
 

Latest commit

 

History

217 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

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

  1. 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.
  2. helix-top - Real-time Market Monitor Live monitoring tool (like top for market data) Shows real-time order book activity Displays trading statistics
  3. order_book_perf_test - Performance Benchmarking Tests the speed of order book operations Critical for low-latency trading systems
  4. 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.

About

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

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages