Model of Event Publishing
Event delivery contracts
Name | Description | Example |
---|---|---|
Ticker | Delivery of latest actual value, queued older events could be conflated to conserve bandwidth and resources | Values of the latest bid/ask and last sale prices for IBM |
Stream | All events are delivered in order | Incoming tape of all trades for IBM |
History | Request data history - values for certain records (groups of elements) which have arrived into QDS and have special timestamp value fitting into period requested by consumer | Charting: daily bars for IBM from Sep 1st till Sep 10th 2011 |
dxFeed API event classes
dxFeed API event | Corresponding QD records | Description | Fields | Delivery contracts |
---|---|---|---|---|
Quote | Quote | Bid/Ask prices for a given instrument | Symbol, Bid Time, Bid Exchange, Bid Price, Bid Size, Ask Time, Ask Exchange, Ask Price, Ask Size | Ticker, Stream |
Trade | Trade | Last Sale price for a given instrument + daily volume | Symbol, Exchange, Time, Price, Size, Volume | Ticker, Stream |
TimeAndSale | TradeHistory | Trade in a tape of trades for a given instrument | Symbol, Time, Sequence, Exchange, Price, Size, Bid Price, Ask Price, Exchange Sale Conditions, Flags (e.g. isValidTick, etc) | Ticker, Stream, History |
Summary | Fundamental, Summary | Open-High-Low-Close values for current day and Close for previous trading day | Symbol, Day Id, Day High Price, Day Low Price, Day Open Price, Day Close Price, Prev Day Id, Prev Day Close Price, Open Interest | Ticker, Stream |
Order | MarketMaker | Market depth: Level 2 quote by market maker / regional exchange quote / element of order book | Order: Symbol, Index, Side, Level, Time, Exchange, Market Maker ID, Price, Size MarketMaker: Symbol, Exchange, Market Maker ID, Bid Price, Bid Size, Ask Price, Ask Size | Ticker, Stream, History |
Profile | Profile | Instrument profile | Symbol, Description, Flags (Is Trading Halted) | Ticker, Stream |
Candle | Candle | Charting OHLCV candle | Symbol, Open, High, Low, Close, Volume, BidVolume, AskVolume, VWAP, Count | Stream, History |
Greeks | Greeks | Option greeks and implied volatility | Delta, Gamma, Rho, Theta, Vega, Volatility, Price | Ticker, Stream |
TheoPrice | TheoPrice | Option theoretical price | Delta, Gamma, Dividend, Interest, Price, Time, UnderlyingPrice | Ticker, Stream |
Underlying | Underlying | Snapshot of computed values that are available for an option underlying symbol based on the option prices on the market | Symbol, Volatility, FrontVolatility, BackVolatility, PutCallRatio | Ticker, Stream |
Series | Series | Snapshot of computed values that are available for all option series for a given underlying symbol based on the option prices on the market | Symbol, Index, Expiration, Volatility, PutCallRatio, ForwardPrice, Dividend, Interest | Ticker, Stream |
Events to be published for different feed types
Equities
Original Feed Event | dxFeed Event |
---|---|
BBO Quote (bid/ask) | Quote |
Regional Quote (bid/ask) | Quote, Order |
Trade (last sale) | Trade, TradeETH, TimeAndSale |
Trade conditions change messages | Trade, TradeETH |
Volume setting events (trades, explicit volume update messages) | Trade, TradeETH |
OHLC setting events: trades, explicit hi/lo update messages, explicit summary messages, etc. | Summary |
Instrument definition | Profile |
Trading halt/resume messages | Profile |
Depth: order books, price levels, market maker quotes | Order |
Charting aggregations | Candle |
Indices and indicators
Original Feed Event | dxFeed Event |
---|---|
Index value | Trade, TimeAndSale |
Bid index value, Ask index value (where available, calculated by bid/ask of index components) | Quote |
Volume setting events (trades, explicit volume update messages) | Trade |
OHLC setting events: trades, explicit hi/lo update messages, explicit summary messages, etc. | Summary |
Instrument definition | Profile |
Charting aggregations | Candle |
Note
The Size value is always NaN in Trade and TimeAndSale events because indices and indicators are not tradable. AskSize and BidSize are always NaN if the Quote record is published.
Futures
Original Feed Event | dxFeed Event |
---|---|
Quote (bid/ask) | Quote |
Trade (last sale) | Trade, TimeAndSale |
Trade conditions change messages | Trade |
Volume setting events (trades, explicit volume update messages) | Trade |
OHLC setting events: trades, explicit hi/lo update messages, explicit summary messages, etc. | Summary |
Instrument definition | Profile |
Depth: order books, price levels | Order |
Charting aggregations | Candle |
Options
Original Feed Event | dxFeed Event |
---|---|
BBO Quote (bid/ask) | Quote |
Regional Quote (bid/ask) | Quote |
Trade (last sale) | Trade, TradeETH, TimeAndSale |
Trade conditions change messages | Trade, TradeETH |
Volume setting events (trades, explicit volume update messages) | Trade, TradeETH |
OHLC setting events: trades, explicit hi/lo update messages, explicit summary messages, etc. | Summary |
Instrument definition | Profile |
Charting aggregations | Candle |
Greeks and IV | Greeks |
Theoretical prices | TheoPrice |
VIX-volatilities, P/C ratios | Underlying, Series |
Spreads
Original Feed Event | dxFeed Event |
---|---|
Quote (bid/ask) | Quote |
Trade (last sale) | Trade, TimeAndSale |
Volume setting events (trades, explicit volume update messages) | Trade |
OHLC setting events: trades, explicit hi/lo update messages, explicit summary messages, etc. | Summary |
Instrument definition | Profile |
Charting aggregations | Candle |
Greeks and IV | Greeks |
Theoretical prices | TheoPrice |
FX
Original Feed Event | dxFeed Event |
---|---|
Quote (bid/ask) | Quote |
Trade (last sale) | Trade, TimeAndSale |
Volume setting events | Trade |
Market depth | Order |
OHLC setting events: trades, explicit hi/lo update messages, explicit summary messages, etc. | Summary |
Instrument definition | Profile |
Charting aggregations | Candle |
Note
The values of Size, BidSize, and AskSize equal to 1 represent the minimum quantity for a trade on the exchanges that do not publish the actual sizes. This rule applies to all dxFeed events that provide the corresponding data points.
If Size, BidSize, or AskSize values are NaN, there are currently no buyers and/or sellers willing to participate in this trade. The price, however, can be indicated even in this case: it is either exchange-calculated or comes from the most recent trade.
Feed types and events matrix
Quote | Trade | TradeETH | TimeAndSale | Order | Summary | Profile | Candle | Greeks | TheoPrice | Underlying | Series | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Equities | o | o | o | o | o | o | o | o | o | |||
Indices | o | o | o | o | o | |||||||
Futures | o | o | o | o | o | o | o | o | ||||
Options | o | o | o | o | o | o | o | o | o | o | ||
Spreads | o | o | o | o | o | o | o | o | ||||
FX | o | * | * | * | o |
* only for cryptocurrencies
Daily reset (rollover) procedures
Daily rollover can happen per-instrument (e.g. futures could have different rollover times depending on contract and venue) or could happen simultaneously for all instruments on the market during after-hours (e.g. NYSE equities). Time of the rollover is defined by trading schedules on the given market.
Rollover affects the Summary event which contains the OHLC for the current day and close value for the day the instrument traded previously. Also, rollover (reset) zeroes Volume field in Trade record and Bid.Size/Ask.Size fields in Quote record.
Info
For futures, Settlement date replaces the last trade in Close when it arrives.
Summary consists of current and historical parts:
Current
Historical
Current
The fields DayId, OpenInterest, DayOpen.Price, DayHigh.Price, DayLow.Price and DayClose.Price are linked to either the current trading day or the previous trading day - when a new day has not begun yet. The day is shown in the DayId field.
These fields form a logical group linked to one trading day.
These fields are linked to a trading day, not a trading session.
These fields are linked to a trading days only, non-trading days are omitted (fields keep their current values during non-trading days).
These fields are linked to a trading day regardless of whether the instrument was actually traded this day or not.
Transition to the next trading day is done during trading pause (rollover).
Schedule is the following:
Before the start of the next trading day (before the first trading session of the new trading day) these fields are prepared for a new day. DayId is set to a new day, OpenInterest retains its current value (special field), all the OHLC-fields are reset to NaN. Ideally this happens at the given time before trading starts, e.g. 1 hour. In reality, it depends on the type of instrument, exchange, and protocol specialties. E.g. stocks are reset at midnight, options - at 6am, futures - 5-10 mins before open on individual schedules.
DayOpen, DayHigh, and DayLow are updated as soon as trading starts - either with official exchange values (if available) or calculated values. DayClose remains NaN.
Next step is divided into a-b:
After trading closes, DayClose is filled - with the official close price, if available, or the last trade price.
If the given instrument did not trade this day, all fields contain NaN.
In the case where an exchange sends a ClosePrice, but we had no sign of a trade in this instrument this day, we update the close price with the official value nevertheless.
Fields keep these values until a new trading day starts, where the whole procedure starts over from the step 1.
OpenInterest is a special field used for options and futures, it’s never reset. Formally it’s in the current group of fields and should be read as "open interest on the start of the current day".
Historical
The fields PrevDayId and PrevDayClose.Price are linked to the last trading day before DayId when this instrument was traded. That day is identified by the PrevDayId field.
The algorithm for filling these fields is simple - DayId and DayClose.Price are copied into them when preparing for the new trading day (see the first step from the Schedule above) when DayClose.Price is not NaN.