API for algorithmic and high-frequency trading (HFT).
Note! This project does not contain the implementation of the C++ interfaces. This is due to the ultra low latency communication protocol being closed source.
- Open source interface (no need to sign an NDA to access or use).
- Permissive license (anyone is free to copy and use for whatever purpose).
- Unified interface for all markets.
- Design is strongly inspired by standards and specific implementations used by major exchanges.
- Allocation-free message decoding supported.
- Auto-generated code based on schemas.
- Strongly typed messages (events).
- Asynchronous interfaces and implementations.
- C++ for ultra low latency.
- FlatBuffers as an optional interface when latency is not a concern.
- Linux
- FlatBuffers (Apache 2.0 License)
- fmt (MIT License)
Optional
- Google Test (BSD 3-Clause License)
The project is designed to be compatible with the conda package manager.
wget -N https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh -b -u -p ~/conda
source ~/conda/bin/activate
conda install -y \
git \
cmake \
gxx_linux-64 \
flatbuffers \
fmt
In addition, your system should provide clang-format
(at least version 10).
git submodule update --init --recursive
cmake .
make -j4
make test
Documentation can be found here.
The C++ interface is designed for ultra low latency and requires a closed source implementation
conda install -y --channel https://roq-trading.com/conda/stable \
roq-client
Samples can be found here.
The FlatBuffers interface is useful when latency is not a concern or when other programming languages than C++ are required. Furthermore, the event log storage format uses FlatBuffers and can be decoded from any language.
WORK IN PROGRESS.
The project is released under the terms of the MIT license.