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-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#