• Only pure entries are provided. We aggregate updates by price level.
• This feed provides streamed data and is not time-sliced.
• The Hotspot FIX market-data feed provides only full snapshots of the order book, while the Hotspot ITCH market-data feed provides streaming incremental updates. In both cases, we translate this into incremental updates to streamline processing.
• Hotspot also provides an unaggregated feed, which will be supported in a future version of the MFAPI.
• exTradeID contains the exchange-side TradeID (FIX tag 1003) as set by Hotspot.
Handler processes market data input in chunks of bytes, which could combine multiple writes by the venue. Handler batches all updates, which share the same exchange timestamp. Typical example is order modification which is presented by a pair of messages: remove old order ID and add new one. On each timestamp change (or when all data in read buffer is fully processed) handler sends MktDataMessage for each updated currency pair. Therefore, it is possible to observe multiple updates for the same instrument resulted from one iteration of input data processing. This feature is important for avoiding market data conflation.
Disclosure: Possibility for feed handler to process related updates in 2 subsequent reads exists, in which case DELETE and NEW will be delivered to client application by two different messages. However, probability of such event in practice is extremely low, and can be safely ignored. For this condition to occur feed handler must be overwhelmed with input to the extent that TCP stack on venue side is forced to split one logical write into 2 physical packets delivered separately.
Testing revealed rare cases when feed handler receives updates which simply replace one order with a new one having the same quantity and price. Such even will generate update message without updating anything in client’s market view. This condition becomes common and very frequent if client selects CBOE 5-msec-Pulse pricing product instead of more popular Top-of-book.
Another, more prevailing case, is when multiple LP's contribute to Top-of-book data stream resulting in update with total amount and price unchanged, but updated composition of the total amount e.g. 15 M as ”100000000+5000000” vs. “5000000+5000000+5000000” in components field
Our choice in current implementation was leaving these drawbacks unhanded in favor of keeping code simple and avoiding solving problem prematurely before it proves to be a problem. All cases can be addressed if necessary. Solution will require adding new code which may involve sorting to detect changes in amount composition.