The Lab

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from this space and version 1.5.96

...

  • On starting the subscription, the local book is regarded as empty. For the the first update the client receives, all MDEntries will specify NoMDEntries[*].MDUpdateAction = New, so the value of and MDFlags.IsSnapshot is immaterial in this case and Whisperer may mark the first update as a snapshot, or not, depending on the venue= TRUE.
  • Snapshots may be delivered at any time in the life of the subscription. This is particularly important for connections to UDP multicast feeds where dropped packets must trigger book/session recovery.

...

  • All    - MDEntryID and MDUpdateAction are always provided.
  • Delete  - by definition the entry is no longer valid, so there is no need to redeliver the state of the outdated entry.
  • New    - all other available fields will always be provided.
  • Change - typically, only the fields that have changed will be provided.
Info
titlePerformance considerations

For Change events, the following principles apply:

  • If the venue also delivers unchanged fields in addition to those that trigger the update, these will also be supplied.
  • In the typical case where the venue only delivers the modified fields, Whisperer does not re-populate the previously published fields.

MDEntryTypes

The following MDEntryTypes are used to manage the state of the Book:

All other MDEntryTypes represent monotonic attributes of the market data feed, for example Trade Ticker events, statistical measures (High, Low, Close etc).

Empty Book Handling

An empty book may occur in one of two ways:

  • Explicit publication of an EmptyBook snapshot
  • The implicit result of the incremental deletion of the last remaining entry(ies).

When clearing the book, only entries that form the book should be cleared. All other MDEntryTypes should be left alone.

Expand
titleExpand example
First MarketDataIncrementalRefresh
MessageProcessed view
IsSnapShotTrue
MDUpdateActionMDEntryTypeMDEntryIDPrice
NewBid11.12
NewTradingSessionHighPriceMF:TSHP1.15

The Book will contain one entry, and the TradingSessionHighPrice lives outside the book.

MDEntryTypeMDEntryIDPrice

Book

Bid11.12
Statistical Entries
TradingSessionHighPriceMF:TSHP1.15


Second MarketDataIncrementalRefresh
MessageProcessed view
IsSnapShotTrue
MDUpdateActionMDEntryTypeMDEntryIDPrice
NewBid11.12
NewBid21.14

The Book will contain two entries, and the TradingSessionHighPrice is still active as it lives outside the book.

MDEntryTypeMDEntryIDPrice

Book

Bid11.12
Bid21.14
Statistical Entries
TradingSessionHighPriceMF:TSHP1.15


Third MarketDataIncrementalRefresh
MessageProcessed view
IsSnapShotFalse

MDUpdateActionMDEntryIDMDEntryIDPrice
Delete111.12
Delete221.14

As both entries from the Book are deleted, leaving an implicit empty book.

MDEntryTypeMDEntryIDPrice

Book

---
Statistical Entries
TradingSessionHighPriceMF:TSHP1.15


Fourth MarketDataIncrementalRefresh
MessageProcessed view
IsSnapShotTrue
MDUpdateActionMDEntryTypeMDEntryIDPrice
NewBid31.14
ChangeTradingSessionHighPriceMF:TSHP1.16

Note that the TradingSessionHighPrice has remained in place after processing each of the previous messages because it lives outside the Book

MDEntryTypeMDEntryIDPrice

Book

Bid31.14
Statistical Entries
TradingSessionHighPriceMF:TSHP1.16


Fifth MarketDataIncrementalRefresh
MessageProcessed view
IsSnapShotTrue
MDUpdateActionMDEntryTypeMDEntryIDPrice
NewEmptyBookEMPTYBOOK1.12
NewBid21.14

The explicit EmptyBook entry clears the Book, but the TradingSessionHighPrice remains in place.

MDEntryTypeMDEntryIDPrice

Book

---
Statistical Entries
TradingSessionHighPriceMF:TSHP1.16


Sixth MarketDataIncrementalRefresh
MessageProcessed view
IsSnapShotFalse
MDUpdateActionMDEntryTypeMDEntryIDPrice
NewOffer11.14

The New Offer entry implicitly deletes the EmptyBook entry.

MDEntryTypeMDEntryIDPrice

Book

Offer11.14
Statistical Entries
TradingSessionHighPriceMF:TSHP1.16


Book Depth

Where clients subscribe for custom book depths against a given Venue, it is important to understand that entries that are pushed below the requested depth by more competitive orders will not necessarily result in an explicit Delete being delivered by the Venue for Whisperer to process.

...

  • Whisperer ensures that books will never exceed any specific requested depth - when  when implicit deletes are detected, the explicit Delete MDEntry is placed before the New that triggers it.
  • Two MDEntries in a PriceDepth book may momentarily have the same price - this typically occurs when multiple MDEntries on one side of the book change their prices up or down, such that the first MDEntry moves to a price level occupied by a different MDEntry that has yet to have it's price modified.

...

  • Line Arbitrage - the MDSubFeedType specifies the UDP market data source for venues which utilise A/B circuits.
  • Gap Detection - in the event that a UDP message gap occurs, this is reported to the Client User immediately it is detected for each affected subscription, via the publication of a EmptyBook MarketDatIncrementalRefresh message with MDFlags.IsSnapshot and MDFlags.GapDetected both set to TRUE.
  • Gap Recovery - the gap will be resolved by the Gateway utilising the venue's standard Late-joiner logic, and the next message will be a fresh Snapshot (typically, but not always, representing the full book). Thereafter Incrementals will be published as normal.

Orders

The Orders workflow is always normalised and consistently implements the state transition model as outlined in the diagram below. Where Venue events are absent, synthetic equivalents are generated by Whisperer in their place. These messages are easily discernible by reference to the TradingFlags.IsSynthetic field.

Info
titleExecutionAck
It's worth remembering that while  all inbound messages will adhere to the same state transition model, there will necessarily be Venue-specific variation in whether and how outbound ExecutionAck messages are handled.

Order State Transition Diagram

...

Order Submission and Modification

...