Precise exchange timestamps and data-gap alerts for order flow and MBO traders
Know exactly when every order and trade happened, and know when your data has a hole in it.
If you trade order flow, DOM or MBO, timing is everything. Was that iceberg refilled before or after the sweep? Did your limit order get filled because of a real aggressor, or because the book was rebuilt? How much latency is there between the exchange and your screen?
Today ATAS already receives this information from providers like Rithmic, but most of it never reaches our indicators and strategies. This idea asks ATAS to pass it through. You would get:
More accurate order flow analysis. Correct ordering of trades and book events, down to the nanosecond. Sweeps, icebergs, absorption and queue position become measurable instead of estimated.
Real latency visibility. See how old the data is when it reaches you, and spot when your connection or the provider is lagging.
Trustworthy history and replay. Know when the book was reset or data was missed, so a gap doesn’t silently distort your indicators, backtests or statistics.
Better execution review. Compare your own fills against the exact market events around them.
ATAS has already started: SourceTimeNs exists for MarketByOrder and Trade from Alpha 8.0.16.107. This idea is about finishing the job so every data path gets the same precision.
What exactly is requested:
Nanosecond exchange time on
MarketDataArg. Add the sameSourceTimeNs(exchange time, nanoseconds, from the provider) toMarketDataArg, which is used byOnNewTrade,MarketDepthChangedand cumulative trades.Provider receive time. Add an optional
ProviderReceiveTimeNsonMarketByOrder, Trade andMarketDataArg: the time the provider’s server received the event. For Rithmic,JopSsboe/JopNsecs. This allows measuring exchange → provider → platform latency.Clock-source flag.
Timeis currently exchange time, falls back to provider send time, and uses local time for book snapshots. Please add a small enum (for exampleTimeSource = Exchange | ProviderSend | Local) so indicators know which clock a value comes from and can handle the fallback correctly.Book rebuild / gap notification. Raise an event to indicators and strategies when the provider signals a book rebuild or reset (Rithmic
DboBookRebuild), including the instrument and the time. This way, code can mark data as incomplete instead of treating a reset as real market activity.Expose
PreviousPriceonMarketByOrder. Rithmic already sends the previous price on order modifications. Exposing it lets indicators tell a price-modify from a new order.Per-event platform sequence number. A monotonic counter per instrument, assigned by ATAS as events arrive from the connector, so indicators can prove no event was dropped between the provider and the indicator.
Batch / end-of-update marker. When the provider delivers several book changes together (for example, one aggressive order sweeping several levels), mark the last event of the batch so the book can be evaluated in consistent states.
Compatibility: all changes are additive and optional (nullable properties, one new event). Existing indicators and strategies keep working unchanged. Providers that don’t supply a field simply leave it empty.
If you care about precise order flow, MBO or execution quality, please vote.
Log in to comment and vote
Comments1
Ruben
Sep 30
All three provider clocks as separate fields. Rithmic delivers exchange time (
SourceSsboe/SourceNsecs), its own receive time (JopSsboe/JopNsecs) and its send time (Ssboe/Usecs). Please expose each one separately (nullable), instead of oneTimethat silently falls back from one clock to another.Trade condition. Expose the trade condition that Rithmic provides with each trade (
TradeInfo.Condition), so indicators can tell regular trades from implied or spread-related prints.Market state events. Raise an event when the provider reports a change in market mode (pre-open, open, halted, closed, with reason; Rithmic
MarketModeInfo), so a halt or session transition is never mistaken for missing data.