Release 0.7.6

2021-09-02

This release is mostly about improving order request management and the simulation framework.

Client testing has also helped a lot with finding and resolving issues.

Order Request Management

Certain use-cases rely on guaranteed sequencing of order ack and updates:

  • FIX has particularly strict requirements for request chaining.

  • Certain market making strategies will require the option to track progress of individual requests even when there are many such requests simultaneously in transit.

The logic around request management has been upgraded to provide better guarantees.

Particularly so for those exchanges where

  • Order ack and updates originate from different channels.

  • Do not support the rewriting of client order id’s.

Documentation can be found here.

Simulation

The following simulation features are now supported

  • Multiplex several event-logs.

  • Proper latency simulation for order actions and updates.

  • Generator and Matcher interface separation has been completed. This means that you can implement your own exchange matching assumptions and use those with the simulator.

  • OrderAck is being used identicially to the gateway, i.e. forwarded, accepted, etc.

  • OrderUpdate has all fields populated by the simulator.

  • Request versions are communicated through the relevant OrderAck and OrderUpdate fields.

  • Using CustomMetrics with the Collector interface allows you to access and analyse internal strategy metrics. The same interface is used during live trading to publish strategy metrics to other strategies or third-party user interface.

Documentation can be found here.

CHANGELOG

Milestone on GitHub.

  • [CHANGE] Use web-safe “base64” encoding for clOrdID (BitMEX) (#43).

  • [CHANGE] RateLimitTrigger replaces RateLimitUsage (#34).

  • [FEATURE] Option to initialize missing MDEntryType’s to zero (FIX Bridge) (#45).

  • [FEATURE] Support order auto-cancelation (Kraken Futures) (#37).

  • [FEATURE] Added parser for Product.max_slippage_percentage (Coinbase PRO) (#35).

  • [FEATURE] Generic pub/sub is now possible through CustomMetrics (#8).

  • [FEATURE] Parse error messages (BitMEX) (#32).

  • [FEATURE] Publish SETTLEMENT_PRICE (Kraken Futures) (#27).

  • [FEATURE] Support event-log directories by day (YYYY-MM-DD) (#20).

  • [FEATURE] Adding side to OrderAck (#8).

  • [FEATURE] Event-logs can now be parsed using EventLogReader (#10).

  • [FEATURE] Secrets can now be maintained in separate config file (#15).

  • [FEATURE] roq-reduce can now read from stdin (#16).

  • [FEATURE] Upgraded the simulator framework (#7).

  • [FIXED] Statistics updates did not respect subscriptions (FIX Bridge) (#42).

  • [FIXED] OrderCancelReject did not contain OrdStatus for unknown order (FIX Bridge) (#41).

  • [FIXED] Gateways will now pre-populate account cache at construction time (#40).

  • [FIXED] OrderCancelReject use non-standard tag 151 and 6 (Deribit) (#36).

  • [FIXED] cliOrdId should be web-safe (Kraken Futures) (#33).

  • [FIXED] Request management has been improved to support chaining (#25).

  • [FIXED] Simulator OrderStatus and Disconnect issues (#29).

  • [FIXED] Config parser didn’t validate StatisticsType overrides (FIX Bridge) (#28).

  • [FIXED] Post data should be URL encoded (Kraken Futures) (#24).

  • [FIXED] Request chaining wasn’t working without receiving acks (#23).

  • [FIXED] Order cancel/replace reject did not reset OrigClOrdID (FIX Bridge) (#22).

  • [FIXED] Rate limiter will now attach order attributes to OrderAck (#12).

  • [FIXED] The gateways did not validate symbol permissions by user (#9).

  • [FIXED] ModifyOrder / CancelOrder now validates after request version has been updated (#13).

  • [DELETED] --rest_allow_order_updates (BitMEX) (#44).

  • [DELETED] Subscribe has been removed from the API (#14).

Looking Ahead

The following release will be tracked here.