Skip to main content

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.

  1. These fields form a logical group linked to one trading day.

  2. These fields are linked to a trading day, not a trading session.

  3. These fields are linked to a trading days only, non-trading days are omitted (fields keep their current values during non-trading days).

  4. These fields are linked to a trading day regardless of whether the instrument was actually traded this day or not.

  5. Transition to the next trading day is done during trading pause (rollover).

Schedule is the following:

  1. 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.

  2. DayOpen, DayHigh, and DayLow are updated as soon as trading starts - either with official exchange values (if available) or calculated values. DayClose remains NaN.

  3. Next step is divided into a-b:

    1. After trading closes, DayClose is filled - with the official close price, if available, or the last trade price.

    2. 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.