Skip to content
Simon Devenish edited this page Nov 23, 2024 · 4 revisions

Welcome to the SubZero Wiki

About SubZero

SubZero is an open-source API for high-performance, low-latency trading applications. Forked from the original Libtrading project, SubZero retains its core strengths while adding modern enhancements and improved extensibility. SubZero provides tools for building trading systems that communicate with exchanges, dark pools, and other trading venues.

Core Features

  • High Performance, Low Latency: SubZero is optimized for HFT (high-frequency trading) environments.
  • Protocol Support: Includes FIX, FIX/FAST, ITCH, OUCH, and other proprietary trading protocols.
  • C API: Lightweight and efficient C-based API designed for flexibility and performance.
  • FIX Dialect Support: Seamlessly work with different variations of the FIX protocol.
  • SystemTap/DTrace Probes: Integrates with tools for system-level performance monitoring.

Modern Enhancements

Building on Libtrading’s foundation, SubZero adds:

  • A modernized codebase for maintainability and extensibility.
  • Cross-platform support, with future Windows support in the roadmap.
  • Community-driven development, welcoming contributions and feedback.

Performance

SubZero is built to excel in low-latency trading scenarios, as demonstrated by performance benchmarks.

Protocol Round-Trip Times (RTT)

Protocol RTT (μs)
FAST 13
FIX 6

These benchmarks were obtained by running messaging ping-pong tests on a 4-way Intel Haswell 3.60 GHz CPU running Fedora 21 with Linux 3.19.7-200. Processes were pinned to separate physical cores, and the RTT numbers include time spent in the Linux TCP/IP stack.

Performance Demonstration

To measure FIX engine performance locally, you can replicate the benchmark tests using SubZero’s tools:

  1. Start a FIX server:
    ./tools/fix/fix_server -m 1 -p 7070
    Output:
    Server is listening to port 7070...
  2. Run the FIX client latency tester:
    ./tools/fix/fix_client -n 100000 -m order -p 7070 -h localhost
    Output:
    Client Logon OK Messages sent: 100000 Round-trip time: min/avg/max = 15.0/16.8/129.0 μs Client Logout OK

This example demonstrates SubZero's ability to handle high message volumes with exceptional performance and minimal latency.


Getting Started

  1. Clone the repository:
    git clone https://github.com/simondevenish/SubZero.git
  2. Follow the Installation Guide.
  3. Dive into the Getting Started guide to explore SubZero’s features.

Documentation


Contributing and Feedback

SubZero welcomes contributions from the community. Whether it’s fixing bugs, improving documentation, or adding new features, your input is invaluable.


License

SubZero is distributed under the permissive 2-clause BSD License. This allows both commercial and non-commercial use with proper attribution.