Composite Equities Feeds

Overview

dxFeed offers a line of composite equities feeds from SEC-regulated exchanges for US instruments, emphasizing the feed’s quality and transparent methodology.

Given a set of American stock source L1 feeds (Quotes, TimeAndSales, Trades, Summaries), we provide our composite best bid and offer (BBO) for several US exchanges that allows licensing costs optimizations.

Specifically, each composite feed is carefully constructed to optimize the following aspects of the resulting feed:

  • Frequency – composite feed has much higher frequency compared to native feeds.

  • Spread width – our BBO calculation logic allows us to provide a narrower spread between bid and ask than any of the components.

  • Originality - the composition is performed using transparent methodology without altering original prices. This entails, among other things, that the composite feed is fair and not augmented based on non-existing or implied events. Composite feeds show the same prices as received from exchanges.

  • Accuracy – we provide an accurate, true representation of prevailing market values for highly liquid US Stocks.

This product will be of most interest to the customers wanting real-time access to an accurate feed with liquidity in the market. dxFeed Composite Equities Feeds may be used as a cost-effective indicative feed for liquid US stocks.

Data processing flow

The Composite Equities Feed is generated by dxFeed Feed Consolidator Service (FCS) that works with equity-, and ETF-s consolidation. dxFeed Feed Consolidator Service allows merging any number of feeds with different types, and produces the expected results if input feeds satisfy the original service requirements.

  • FCS reads the list of feeds specified in the configuration and consolidates these feeds according to the rules listed below.

  • FCS works with the list of instruments available on the whole US market.

  • FCS subscribes to all required events per symbol from each feed.

  • FCS provides new values for each corresponding tick of market data event and works in a tick-by-tick manner.

  • One of the exchanges is set as the main exchange to make the consolidation procedure more predictable. For each specific feed, the main exchange is selected separately according to the highest liquidity and trading hours of all exchanges included in the composite feed.

  • Rules of building a consolidated feed per event type and symbol are described below.

Quality metrics

Frequency

One of the most important features of an aggregate feed is to have frequent updates. While no consensus exists among market participants on how to define this precisely, they often feel disturbed when the price does not move for a prolonged period of time. By combining the original set of sources into a composite feed, we get the total frequency for all incoming feeds, which is higher than the frequency on each individual exchange. The composite feed minimizes the time it “idles”, i.e. no market event updates for more than a pre-specified time threshold occur.

Short bid-ask spread

The chosen methodology for constructing a composite Quote allows minimizing the spread between bid and ask compared to Quotes received from constituent feeds.

Genuineness

dxFeed Composite Equities Feeds provide original prices received from original feeds. All the data from native feeds is available in subscription along with the composite feeds. We do not try to ‘enrich’ the composite feed based on non-existing or implied events in the market event flow. Once the input feeds have been selected and fixed, they alone participate in formation of the output flow.

Accuracy

dxFeed Composite Equities Feed are an accurate, true representation of prevailing market values for highly liquid US equities. Such as NASDAQ 100 components, dxFeed’s bid-ask data is within 1% away from the National Best Bid and Offer (NBBO) 95.392% of time, on average.

Feed Composition

Quote

A Quote event represents the top of the consolidated book: the highest available price to sell and the lowest available price to buy.

To distribute a Quote event, FCS builds a snapshot that includes the latest regional Quotes received from every feed per instrument. FCS uses this snapshot to fill the event fields of composite Quotes. With every change of a snapshot, FSC defines the fields of a composite Quote per instrument following these rules:

  • Bid time and ask time in the consolidated Quotes are equal to the maximum of bid time and ask time respectively.

  • To set bid parameters (Price, Size, Time, Exchange):

    • We choose an event with the maximum value of bid price. If several events have the same bid price, then we choose the event with the latest bid time.

    • If the bid price, size or exchange code of the selected event differs from snapshot, then a new composite Quote is formed and posted by FCS.

    • Else, FCS does not update the bid parameters.

  • To set ask parameters (Price, Size, Time, Exchange):

    • We choose an event with the minimum value of ask price. If several events have the same ask price, then we choose the event with the latest ask time.

    • If the ask price, size or exchange code of the selected event differs from snapshot, then a new composite Quote is formed and posted by FCS.

    • Else, FCS does not update the ask parameters.

  • If neither bid nor ask parameters are updated in the current calculation, then FCS does not post a new composite Quote.

Info

FCS publishes both composite Quote and all Quotes from each feed (regional Quotes).

Composite Quote Fields

Field

Description

Rule

eventSymbol

Symbol (instrument) of this event

Equals the eventSymbol of the original event

bidTime

Time of the last bid change

Maximum bid time out of all regional Quotes and the snapshot

bidExchangeCode

The code of the exchange where the bid was submitted

Equals the bidExchangeCode of the selected event with the maximum bid time

bidPrice

Bid price

Equals the  bidPrice of the selected event with the maximum bid time

bidSize

Bid volume as an integer number (rounded towards zero)

Equals the  bidSize of the selected event with the maximum bid time

askTime

Time of the last ask change

Maximum ask time out of all regional Quotes and the snapshot

askExchangeCode

The code of the exchange where the ask was submitted

Equals the askExchangeCode of the selected event with the maximum ask time

askPrice

Ask price

Equals  the askPrice of the selected event with the maximum ask time

askSize

Ask volume as an integer number (rounded to zero)

Equals  the askSize of the selected event with the maximum ask time

TimeAndSale

A TimeAndSale event represents information about individual transactions, including canceled and adjusted ones. Additionally, opening price, official close price, etc. are also transferred to TimeAndSale. TimeAndSale events are intended to provide information about trades in a continuous time slice (unlike Trade events which are supposed to provide a snapshot of the current last trade).

TimeAndSale events have unique index which can be used for later correction/cancellation processing.

  • For each regional TimeAndSale event:

    • FCS performs bijection from TimeAndSale sequence to a new composite TimeAndSale sequence.

    • FCS publishes original TimeAndSale with new calculated sequence as composite TimeAndSale.

  • Composite TimeAndSale event includes all TimeAndSale events from regional feeds. TimeAndSale event works in a stream contract that delivers all previous events - so no losses are possible.

  • FCS publishes only composite TimeAndSale events.

Composite TimeAndSale Fields

Field

Description

Rule

eventSymbol

Symbol (instrument) of this event

Equals the eventSymbol of the original event

time

Timestamp of the original event

Equals the time of the original event

sequence

The sequence number of an event that helps distinguish between two events with the same time

FCS assigns its own sequence. FCS performs bijection from TimeAndSale sequence to a new composite TimeAndSale sequence as sometimes TimeAndSale can be cancelled or corrected. Short description: Let's assume we have an amount of feeds that equals n, then FCS sequence = original sequence * n + feed id. Such a method allows us to save monotonicity within the framework of any source

exchangeCode

Exchange code of this TimeAndSale event

Equals the  exchangeCode of the original event

price

Price of this TimeAndSale event

Equals the price of the original event

size

Volume of this TimeAndSale event as an integer number (rounded towards zero)

Equals the size of the original event

bidPrice

Current bid price on the market when this TimeAndSale event occurred

Equals the bidPrice of the original event

askPrice

Current ask price on the market when this TimeAndSale event occurred

Equals the askPrice of the original event

SaleConditions

Exchange parameters of the transaction

Equals the SaleConditions of the original event

Flags

aggressorSide

Aggressor side of this time and sale event

Equals the aggressorSide of the original event

spreadLeg

Whether this transaction is part of a multileg order

Equals the spreadLeg of the original event

extendedTradingHours

Whether this event represents an extended trading hours sale

Equals the extendedTradingHours of the original event

validTick

Whether this event represents a valid intraday tick

Equals the validTick of the original event

type

Type of this time and sale event (new, cancel or correction)

Equals the type of the original event

Trade

A Trade event is a snapshot of the price and size of the last trade during regular trading hours and the overall daily volume and day turnover. It represents the most recent information available about the last regular trade on the market at any given moment of time.

To distribute a Trade event, FCS builds a snapshot that includes the latest Trade events per symbol from each feed.

With every change of a snapshot, FSC defines the fields of a composite Trade per instrument, following these rules:

  • DayVolume field is defined as the sum of volumes of the latest trade from each feed.

  • To calculate the new DayTurnover value, FCS calculates the difference between the current and previous dayVolume value, then multiplies it by the current Price and adds it to the old dayTurnover value.

  • Time, exchangeCode, price, and size are updated with the "last trades". The last trade is the obtained regional trade with its executed time bigger than the time of last published composite Trade.

Info

FCS publishes both composite Trade event and all Trades from each feed (regional Trades).

Composite Trade Fields

Field

Description

Rule

eventSymbol

Symbol (instrument) of this event

Equals the eventSymbol of the original event

Time

time of the last trade

Equals the Time of the last trade

Sequence

Sequence number of an event that helps distinguish between two events with the same time

Automatically increases (iteratively)

ExchangeCode

Exchange code of this Trade event

Equals the ExchangeCode of the last trade

Price

Price of this Trade event

Equals the Price of the last trade

Size

Size of this Trade event as integer number (rounded towards zero)

Equals the Size of the last trade

Tick (Direction)

Tick direction of the last trade(Old version)

Equals the Tick of the last trade

Change

Change of the last trade

Automatically calculated

DayVolume

Total volume traded for a day as integer number (rounded towards zero)

Sum of the DayVolume values from each incoming feed

DayTurnover

Total turnover traded for a day

DayTurnover is the last  trade price multiplied by sum of the DayVolume values from each incoming feeds

Flags

Direction

Tick direction of the last trade(New version)

Always UNDEFINED

ETH (Extended traded hours)

Boolean Flag. It defines whether a Trade is made in ETH or not

All Trades now have IS NOT ETH flag value

Profile

A Profile event provides the security instrument description. It represents the most recent information that is available about the traded security on the market at any given moment of time.

To distribute the Profile event, FCS builds a snapshot that includes the latest Profile events from every feed per instrument.

With every change of a snapshot, FSC defines the fields of a composite Profile event, following the rules:

  • HighPrice52 and HighLimitPrice parameters are defined as a maximum of HighPrice52 and HighLimitPrice out of each incoming feed.

  • LowPrice52 and LowLimitPrice parameters are defined as minimum of LowPrice52 and LowLimitPrice out of each incoming feed.

  • Handling of halts: FCS publishes only those halts that happened on all sources. In this case, HaltStartTime field equals the maximum of HaltStartTime from each source and the HaltEndTime field equals the minimum of HaltEndTime from each source. StatusReason equals the StatusReason that was specified in the last Profile event with halt.

Info

FCS publishes both composite Profile events and all Profiles from each feed (regional Profiles).

Composite Profile Fields

Field

Description

Rule

eventSymbol

Symbol of this event

Equals the eventSymbol of the original event

Beta

Measure of the volatility of a security compared to the market

Null

Eps (Earnings per Share)

Measures the company's profit on a per-share basis

Null

DivFreq

Dividends frequency

Null

ExdDivAmount

Executed dividends amount

Null

ExdDivDate

Date of the last dividend payment

Null

HighPrice52

Maximum (high) price in the last 52 weeks

Maximum HighPrice52 out of each incoming feed

LowPrice52

Minimum (low) price in the last 52 weeks

Minimum LowPrice52 out of each incoming feed

Shares

Total number of shares issued by this company

Null

FreeFloat

Number of shares in free float or the number of outstanding shares available for public trading

Null

HighLimitPrice

Maximum allowable price

Maximum HighLimitPrice out of each incoming feed

LowLimitPrice

Minimum allowed price

Minimum LowLimitPrice out of each incoming feed

StartTime

Start time of the last trading halt interval

Maximum HaltStartTime out of each incoming feed

HaltEndTime

End time of the last trading halt interval

Minimum of incoming feeds highLimitPrice, but haltStartTime and haltEndTime are published only if haltEndTime is greater than the  haltStartTime

Status Reason

Description of the reason why trading was halted

Null

Description

Description of the instrument

Equals the Description of the main exchange feed

Flags

shortSaleRestriction

Short sale restriction of the security instrument ( undefined, inactive or active)

Always undefined

Trading Status

State of the instrument ( undefined, halted or active).

Haltedif all feeds has haltedstatus

Summary

A Summary event provides information about the trading session including highs, lows, etc. It represents the most recent information that is available about the trading session on the market at any given moment of time.

To distribute a Summary event, FCS builds a snapshot that includes the latest Summary events per instrument from each feed.

  • We use the logic of cancellation and correction of the main exchange, so DayOpenPrice, DayClosePrice, PrevDayClosePrice parameters and flags (ClosePriceType, PrevDayClosePriceType) are equal to these parameters in the main exchange feed.

  • With every change of a snapshot, FCS defines the fields of a composite Summary event, following the rules:

    • DayId parameter is defined as the maximum DayId of DayId out of each source. All Summary events with other DayId values are removed from consideration.

    • DayHighPrice/DayLowPrice parameters are defined as maximum/minimum of DayHighPrice/DayLowPrice out of each feed.

Info

FCS publishes both composite Profile events and all regional Profile events from each feed.

Composite Summary Fields

Field

Description

Rule

EventSymbol

Symbol of this event

Equals the eventSymbol of the original event

DayId

Identifier of the day that this summary represents

Maximum DayId out of each incoming feed

DayOpenPrice

The first (open) price for the day

Equals the DayOpenPrice of the main exchange feed

DayHighPrice

The maximum (high) price for the day

Maximum DayHighPrice out of each incoming feed

DayLowPrice

The minimum (low) price for the day

Minimum DayLowPrice out of each incoming feed

DayClosePrice

The last (close) price for the day

Equals the DayClosePrice of main exchange feed

PrevDayId

Identifier of the previous day that this summary represents

Maximum prevDayId out of each incoming feed

PrevDayClosePrice

The last (close) price for the previous day

Equals the PrevDayClosePrice of main exchange feed

PrevDayVolume

Total volume traded for the previous day

Sum of prevDayVolume values from incoming feeds

OpenInterest

Current openInterest indicator

Sum of OpenInterest values from incoming feeds

Flags

ClosePriceType

If the presented closing price is final

Equals ClosePriceType of the main exchange feed

PrevDayClosePriceType

If the presented closing price of the previous day is final

Equals the PrevDayClosePriceType of the main exchange feed