Change in Inter-Table Ordering of Messages on WebSocket

At 01:00 UTC on Tuesday, April 21, 2020, BitMEX will begin transitioning its internal feeds infrastructure to a new version that will offer significantly improved latency, especially at the 75th, 90th, and 95th percentile.

This is our fourth major version of the system, and all previous major upgrades have maintained compatibility from version to version, with no user-facing changes required.

BitMEX allows subscribing to multiple tables through a single WebSocket connection. While messages within a single table follow a predictable order as generated by the trading engine and API, BitMEX has never guaranteed the ordering of messages between tables. For instance, if you execute a trade against resting liquidity, it is not guaranteed which of trade, instrument, position, execution, or margin will be received first.

However, in the third major revision, which was rolled out progressively from August 1, 2019 to August 8, 2019 and is in use today, inter-table orderings were relatively predictable. This was not the case before this time. We are aware that some users may have come to rely upon a predictable order. We have never guaranteed this ordering nor instructed users to rely upon it, suggesting instead that programs should be built to be event-based and to use all available data as it is received.

When we begin our roll-out on April 21, it will no longer be possible to rely upon a specific inter-table ordering, as tables will now begin to be processed by independent workers that will emit as soon as their processing is complete. As a result, long-tail latency is greatly improved.

The BitMEX Testnet was already migrated over to the next-generation infrastructure on March 24th. If you would like to test your existing programs, please connect to Testnet.