Release 0.6.0

This version bumps the minor version to reflect breaking interface changes.

In particular, the event-log format has been changed to better allow adapters to detect when a stream has been closed orderly. The file format is completely new.

Note

Please reach out if you need translation of files captured to the old format.

The ClickHouse and InfluxDB adapters have been upgraded for stability. Both can now accurately detect stale event-logs following gateway restart. We now use inotify to detect updates (and only resolve to infrequent filesystem polling).

All gateways have been reviewed in terms of MarketByPrice updates. The newly introduced GatewaySettings is used to communicate (1) market depth published by the exchange and (2) indicate if price inversion is a possibility (e.g. Bitstamp).

Note

Previous issues with Binance, Bitstamp and Kraken have now been resolved.

New API interfaces have been added, in particular

  • GatewaySettings allows a strategy to optimize e.g. memory storage required to maintain MarketByPrice, or see if price inversion is something to deal with (as opposed to an error condition).
  • ExternalLatency allows a strategy to monitor live ping-pong latencies between gateway and exchange. This is useful when optimizing the timing of order requests when trading on multiple exchanges, e.g. order book aggregation and execution.

The roq-api GitHub repository now includes all auto-generated headers. This makes it easier to more quickly track changes between releases.

The package manager has been changed: we now use Miniforge (conda-forge). The reason for the change is that the default C++ compiler used by Miniconda (anaconda) was getting a bit old. Miniforge uses GCC v9.3.0 (similar to the default compiler on Ubuntu 20.04 LTS) offering better performance and C++17 compatibility.

We now also support the linux-aarch64 target (ARM), in addition to the linux-64 target (X86-64).

We have now completed the upgrade to Abseil C++, and removed the use of Gflags.

Note

Command-line flags no longer supports hyphens. For example, you can use --foo_bar but not --foo-bar. We now also use the Abseil container classes throughout.

We continue to prepare for C++20.

The just mentioned libraries are not (yet) available from conda-forge. You can download them from the Roq conda channel using roq-oss-span-lite, roq-oss-range-v3 or roq-oss-date.