Release 0.9.2

2023-02-22

This release was primarily about proper MarketByOrder (aka L3) support for the CME and Coinbase PRO gateways.

The Binance gateways (spot and futures) add a new feature to subscribe the same market data more than once such that the “fastest” update “wins” based on correlating exchange sequence numbers.

Gateways

Binance and Binance Futures

Now supporting primary and secondary market data streams.

CME

Now supporting MarketByOrder (L3).

This feature has been tested against the CME MDP 3.0 MBOFD multicast feed.

Note

This is an opt-in feature and must be enabled with --enable_market_by_order.

Coinbase PRO

Now supporting MarketByOrder (L3).

Note

This is an opt-in feature and must be enabled with --enable_market_by_order.

Development

roq::cache::MarketByOrder

A new interface

  • Cache market by order state.

  • Provide simple analytics, e.g. queue position of an order.

roq-strategy

A minimal project meant to be used as a starting point for developing your own strategies.

  • Install script for Miniforge and the minimum required dependencies.

  • CMakeLists.txt to get you started.

  • Source code split between binary and library to faciliate testing and profiling.

  • Testing using Catch2.

  • Profiling using Google’s Benchmark.

  • Basic conda-build recipe.

Note

Developers have often used the roq-cpp-samples project as a starting point. This is unfortunate because the project brings in too many dependencies and, also, it includes too many sub-projects that would have to be removed as part of an initial clean-up exercise.

Just fork the project from GitHub!

CHANGELOG

Milestone on GitHub.

Added

  • Support primary / secondary market data streams (Binance Futures) (#316).

  • Support primary / secondary market data streams (Binance) (#315).

  • Add MarketByOrder support (Coinbase PRO) (#314).

  • Add MarketByOrder support (CME) (#313).

  • Add cache::MarketByOrder to support L3 order book analytics (Client).

  • New roq-strategy template project on GitHub.

Changed

  • cache::MarketByPrice did not expose the allow_price_inversion flag (Client) (#310).

Fixed

  • Incorrect conversion from tick_size to price decimals for US Treasury futures (Core) (#311).

Other