Protocol Documentation

Table of Contents

Top

openfeed.proto

AddOrder

Add an order to the order book. Indexed by orderId, which is unique per channel

Field Type Label Description
transactionTime sint64
orderId sint64
side BookSide
price sint64
quantity sint64
isImplied bool
priority sint64

AddPriceLevel

Insert a new price level, pushing existing levels down

Field Type Label Description
transactionTime sint64 UTC Timestamp, nano seconds since Unix epoch
level sint32 price level index, starting at 1
side BookSide
price sint64 Divide by priceDenominator
quantity sint64 Divide by quantityDenominator
orderCount sint32
impliedQuantity sint64

AdminMessage

Administrative Message

Field Type Label Description
originationTime sint64 Origination time = UTC timestamp nano seconds since Unix epoch
source string
languageCode string
headLine string
text string
status AdminMessage.Status

BestBidOffer

Best Bid and Offer. If a side is not present, then that side has been deleted.

Field Type Label Description
transactionTime sint64 UTC Timestamp, nano seconds since Unix epoch
bidPrice sint64 Divide by priceDenominator
bidQuantity sint64 Divide by quantityDenominator
bidOrderCount sint32
bidOriginator string Liquidity provider information For Forex: BANK:CITY For Equities: EXCHANGE_MIC
bidQuoteCondition string
offerPrice sint64 Divide by priceDenominator
offerQuantity sint64 Divide by quantityDenominator
offerOrderCount sint32
offerOriginator string Liquidity provider information For Forex: BANK:CITY For Equities: EXCHANGE_MIC
offerQuoteCondition string
quoteCondition string
nationalBboUpdated bool

CapitalDistributions

Capital Distributions

Field Type Label Description
transactionTime sint64
instrumentType string
corporateAction string Corporate Action
payableDate sint32 Date only, format 2012-07-04 -> 20120704
recordDate sint32
exDate sint32
shortTermCapitalGain sint64 Distributions
longTermCapitalGain sint64
unallocatedDistributions sint64
returnOfCapital sint64
currencyCode string
notes string repeated
reinvestDate sint32

ChannelReset

Channel Reset

Field Type Label Description
channel sint32
transactionTime sint64

ClearBook

Clear all data from the order books that are configured for this market.

Field Type Label Description
reserved sint32
transactionTime sint64

Close

Field Type Label Description
transactionTime sint64
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
price sint64 Divide by priceDenominator
currency string

Context

Field Type Label Description
data ContextData repeated
tracePoints TracePoint repeated

ContextData

Field Type Label Description
id string
vstring string
vbytes bytes
vbool bool
vsint32 sint32
vsint64 sint64
vfloat float
vdouble double

DeleteOrder

Delete an order from the order book. Indexed by orderId, which is unique per channel

Field Type Label Description
transactionTime sint64
orderId sint64
side BookSide

DeletePriceLevel

Delete an existing price level, pulling existing levels up

Field Type Label Description
transactionTime sint64 UTC Timestamp, nano seconds since Unix epoch
level sint32 price level index, starting at 1
side BookSide

DepthOrder

Depth By Order

Field Type Label Description
orders DepthOrder.Entry repeated

DepthOrder.Entry

Field Type Label Description
addOrder AddOrder
deleteOrder DeleteOrder
modifyOrder ModifyOrder

DepthPriceLevel

Depth Price Level

Field Type Label Description
levels DepthPriceLevel.Entry repeated

DepthPriceLevel.Entry

Field Type Label Description
addPriceLevel AddPriceLevel
deletePriceLevel DeletePriceLevel
modifyPriceLevel ModifyPriceLevel

DividendsIncomeDistributions

Dividends and Income Distributions

Field Type Label Description
transactionTime sint64
instrumentType string
corporateAction string Corporate Action
distributionType string Distribution Type
payableDate sint32 Date only, format 2012-07-04 -> 20120704
recordDate sint32
exDividendDate sint32
amount sint64 Cash amount of distribution
currencyCode string
notes string repeated
totalCashDistribution sint64
nonQualifiedCashDistribution sint64
qualifiedCashDistribution sint64
taxFreeCashDistribution sint64
ordinaryForeignTaxCredit sint64
qualifiedForeignTaxCredit sint64
stockDividendRatio sint64
reinvestDate sint32

HeartBeat

Heart Beat

Field Type Label Description
transactionTime sint64 UTC timestamp of transaction, nano seconds since Unix epoch
status string

High

Field Type Label Description
transactionTime sint64
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
price sint64 Divide by priceDenominator
currency string

IndexValue

For non-tradable index products

Field Type Label Description
transactionTime sint64 UTC Timestamp, nano seconds since Unix epoch
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
last sint64
volume sint64
open sint64
settlementOpen sint64
specialOpen sint64
high sint64
low sint64
close sint64
bid sint64
offer sint64

InstrumentGroupStatus

Instrument Group Status

Field Type Label Description
transactionTime sint64 UTC Timestamp of transaction, nano seconds since Unix epoch
instrumentGroupId string
tradingStatus InstrumentTradingStatus
tradeDate sint32

InstrumentStatus

Instrument Status

Field Type Label Description
transactionTime sint64 UTC Timestamp, nano seconds since Unix epoch
tradingStatus InstrumentTradingStatus
openingTime sint64 UTC Timestamp, nano seconds since Unix epoch
note string
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
regulationSHOShortSalePriceTest RegulationSHOShortSalePriceTest

Last

Field Type Label Description
transactionTime sint64
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
price sint64 Divide by priceDenominator
quantity sint64 Divide by quantityDenominator
currency string

Low

Field Type Label Description
transactionTime sint64
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
price sint64 Divide by priceDenominator
currency string

MarketSnapshot

Snapshot for a market

Field Type Label Description
marketId sint64 Unique id identifying the market
transactionTime sint64 UTC Timestamp of transaction, nano seconds since Unix epoch
marketSequence int64 Instrument level sequence number
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
totalChunks sint32 A snapshot with market depth may exceed the maximum message size. In that case, the snapshot will be broken up across multiple snapshot messages.
currentChunk sint32
symbol string Optional symbol identifier
priceDenominator sint32 Divide prices by this value to get real price values. Optional, use value / from InstrumentDefinition if not set.
instrumentStatus InstrumentStatus
bbo BestBidOffer Best Bid Offer
index IndexValue Index Value
priceLevels AddPriceLevel repeated Price Level Book
orders AddOrder repeated Order Book
news News
open Open Most recent opening price
high High High price for the trading session
low Low Low price for the trading session
close Close Most recent closing price
prevClose PrevClose Previous closing price
last Last Most recent traded price and quantity
yearHigh YearHigh Year high price
yearLow YearLow Year low price
volume Volume Total traded volume
settlement Settlement Most recent settlement price
openInterest OpenInterest Most recent open interest
vwap Vwap Most recent volume weighted average price
dividendsIncomeDistributions DividendsIncomeDistributions
numberOfTrades NumberOfTrades
monetaryValue MonetaryValue
capitalDistributions CapitalDistributions
sharesOutstanding SharesOutstanding
netAssetValue NetAssetValue

MarketSummary

Intra and EOD Market Summary

Field Type Label Description
transactionTime sint64
tradingDate sint32 Date only, format 2012-07-04 -> 20120704
endOfDay bool
clear bool
instrumentStatus InstrumentStatus
bbo BestBidOffer
open Open
high High
low Low
close Close
prevClose PrevClose
last Last
volume Volume
settlement Settlement
openInterest OpenInterest
vwap Vwap

MarketUpdate

Market Update for an instrument

Field Type Label Description
marketId sint64 Unique id identifying the market
symbol string Optional symbol identifier
transactionTime sint64 UTC Timestamp of transaction, nano seconds since Unix epoch / This is usually the execution venue timestamp.
distributionTime sint64 Distribution time in nano seconds since epoch. / Execution timestamp of market participant for multi participant venues like CTA, UTP, etc..
marketSequence sint64 Market level sequencing number
sourceSequence sint64 Data source sequence number
originatorId string Market participant/originator
consolidated bool True if data is consolidated over many market participants/originators
priceDenominator sint32 Divide prices by this value to get real price values. Optional, use value / from InstrumentDefinition if not set.
context Context Feed specific context data set as required.
news News
clearBook ClearBook
instrumentStatus InstrumentStatus
bbo BestBidOffer
depthPriceLevel DepthPriceLevel
depthOrder DepthOrder
index IndexValue
trades Trades
open Open
high High
low Low
close Close
prevClose PrevClose
last Last
yearHigh YearHigh
yearLow YearLow
volume Volume
settlement Settlement
openInterest OpenInterest
vwap Vwap
dividendsIncomeDistributions DividendsIncomeDistributions
numberOfTrades NumberOfTrades
monetaryValue MonetaryValue
capitalDistributions CapitalDistributions
sharesOutstanding SharesOutstanding
netAssetValue NetAssetValue
marketSummary MarketSummary

ModifyOrder

Modify the price or quantity of an order. The side and implied flag cannot change

Field Type Label Description
transactionTime sint64
orderId sint64
side BookSide
price sint64
quantity sint64
isImplied bool
priority sint64

ModifyPriceLevel

Modify the quantity or orderCount of an existing price level. / The price itself will not change.

Field Type Label Description
transactionTime sint64 UTC Timestamp, nano seconds since Unix epoch
level sint32 price level index, starting at 1
side BookSide
price sint64 Divide by priceDenominator
quantity sint64 Divide by quantityDenominator
orderCount sint32
impliedQuantity sint64

MonetaryValue

Total monetary value of trades

Field Type Label Description
transactionTime sint64
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
value sint64 Divide by priceDenominator
valueCurrencyCode string

NetAssetValue

Field Type Label Description
netAssetValue sint64
transactionTime sint64

News

News or informational message

Field Type Label Description
originationTime sint64 Origination time = UTC timestamp nano seconds since Unix epoch
source string
languageCode string
headLine string
text string
symbols string repeated

NumberOfTrades

Total number of trades

Field Type Label Description
transactionTime sint64
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
numberTrades sint64

Open

Field Type Label Description
transactionTime sint64
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
price sint64 Divide by priceDenominator
OpenCloseSettlementFlag OpenCloseSettlementFlag
currency string

OpenInterest

Open interest

Field Type Label Description
transactionTime sint64
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
volume sint64

OpenfeedMessage

A wrapper for Openfeed data. Will contain exactly one of the supported message types

Field Type Label Description
sendingTime sint64 Nanoecond unix epoch at time of message transmission (UTC)
totalCount sint32 The total number of markets available on this channel at the time the message was sent. For UDP snapshot and definition feeds.
syncSequence int64 The most recent packet sequence number sent on the incremental feed at the time this message was sent. For UDP snapshot and definition feeds.
context Context Feed specific context data
channelReset ChannelReset
heartBeat HeartBeat
adminMessage AdminMessage
instrumentDefinition InstrumentDefinition
instrumentGroupStatus InstrumentGroupStatus
marketSnapshot MarketSnapshot
marketUpdate MarketUpdate

PrevClose

Field Type Label Description
transactionTime sint64
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
price sint64 Divide by priceDenominator
currency string

Settlement

Settlement value for futures and options markets.

Field Type Label Description
transactionTime sint64
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
price sint64 Divide by priceDenominator
preliminarySettle bool
currency string
reserved bool Reserved

SharesOutstanding

Field Type Label Description
sharesOutstanding sint64
transactionTime sint64

TracePoint

Tracing

Field Type Label Description
id string
componentId string
timestampNs sint64
componentLatencyNs int32

Trade

A live trade. When received, update the "last" field

Field Type Label Description
transactionTime sint64 UTC Timestamp, nano seconds since Unix epoch
price sint64 Divide by priceDenominator
quantity sint64 Divide by quantityDenominator
tradeId string
side BookSide The side of the aggressing order that caused the trade
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
buyerId string
sellerId string
openingTrade bool
systemPriced bool
marketOnClose bool
oddLot bool
settlementTerms SettlementTerms
crossType CrossType
byPass bool
lastPrice sint64
saleCondition string
currency string

TradeCancel

Trade Cancel/Break

Field Type Label Description
transactionTime sint64
correctedTradePrice sint64
correctedTradeQuantity sint64
tradeId string
saleCondition string
currency string

TradeCorrection

Trade Correction

Field Type Label Description
transactionTime sint64
price sint64 Corrected Price
quantity sint64 Corrected Quantity
tradeId string
side BookSide
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
buyerId string
sellerId string
openingTrade bool
systemPriced bool
marketOnClose bool
oddLot bool
settlementTerms SettlementTerms
crossType CrossType
byPass bool
originalTradeId string
saleCondition string
currency string

Trades

Trades

Field Type Label Description
trades Trades.Entry repeated

Trades.Entry

Field Type Label Description
trade Trade
tradeCorrection TradeCorrection
tradeCancel TradeCancel

Volume

Total volume traded

Field Type Label Description
transactionTime sint64
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
volume sint64 Total volume traded.

Vwap

Volume Weighted Average Price

Field Type Label Description
transactionTime sint64
tradeDate sint32 Date only, format 2012-07-04 -> 20120704
vwap sint64

YearHigh

52 week

Field Type Label Description
transactionTime sint64
price sint64 Divide by priceDenominator
currency string

YearLow

52 week

Field Type Label Description
transactionTime sint64
price sint64 Divide by priceDenominator
currency string

AdminMessage.Status

Name Number Description
OK 0

BookSide

Book side

Name Number Description
UNKNOWN_BOOK_SIDE 0
BID 1
OFFER 2

CrossType

Name Number Description
UNKNOWN_CROSS_TYPE 0
DEFAULT 1
INTERNAL 2
BASIS 3
CONTINGENT 4
SPECIAL 5
VWAP 6
REGULAR 7

InstrumentTradingStatus

Name Number Description
UNKNOWN_TRADING_STATUS 0
TRADING_RESUME 1
PRE_OPEN 2
OPEN 3
PRE_CLOSE 4
CLOSE 5
TRADING_HALT 6
QUOTATION_RESUME 7
OPEN_DELAY 8
NO_OPEN_NO_RESUME 9
FAST_MARKET 10
FAST_MARKET_END 11
LATE_MARKET 12
LATE_MARKET_END 13
POST_SESSION 14
POST_SESSION_END 15
NEW_PRICE_INDICATION 16
NOT_AVAILABLE_FOR_TRADING 17
PRE_CROSS 18
CROSS 19
POST_CLOSE 20
NO_CHANGE 21

OpenCloseSettlementFlag

Name Number Description
UNKNOWN 0
DAILY_OPEN 1
INDICATIVE_OPEN_PRICE 2

RegulationSHOShortSalePriceTest

Name Number Description
UNKNOWN_PRICE_TEST 0
PRICE_TEST_NONE 1
PRICE_TEST_IN_EFFECT 2
PRICE_TEST_REMAINS_IN_EFFECT 3

SettlementTerms

Name Number Description
UNKNOWN_SETTLEMENT_TERMS 0
CASH 1
NON_NET 2
CONTINGENT_TRADE 3
CASH_TODAY 4
DATE 5

Top

openfeed_instrument.proto

InstrumentDefinition

Field Type Label Description
marketId sint64 Unique ID used in the data feed.
instrumentType InstrumentDefinition.InstrumentType Instrument type as enum...
supportBookTypes InstrumentDefinition.BookType repeated Supported Book Types
bookDepth sint32 Maximum depth of market-by-price order book
vendorId string The name of the market data vendor
symbol string Human readable market symbol, assigned by the exchange or venue. Not necessarily unique as the exchange or vendor could assign the same symbol to different instruments, for example if the instruments trade on different exchanges.
description string Human readable market description.
cfiCode string Market CFI code: http://en.wikipedia.org/wiki/ISO_10962
currencyCode string Market currency code: http://en.wikipedia.org/wiki/ISO_4217
exchangeCode string Market exchange code: http://en.wikipedia.org/wiki/ISO_10383 For inter-exchange spreads, use the leg MICs separated by a hyphen
minimumPriceIncrement float Minimum price increment in market currency.
contractPointValue float Contract point value in market currency.
schedule InstrumentDefinition.Schedule Trading schedule for a typical week
calendar InstrumentDefinition.Calendar Trading calendar (expiration, notice days, holidays?, etc)
recordCreateTime sint64 UTC Timestamp of creation, nano seconds since Unix epoch
recordUpdateTime sint64 UTC Timestamp of update, nano seconds since Unix epoch
timeZoneName string Market time zone TZ database name. Permanent. Can be resolved into timeZoneOffset for given date/time. See http://joda-time.sourceforge.net/timezones.html See http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
instrumentGroup string Identifies a logical grouping of instruments. By product, for example.
symbolExpiration InstrumentDefinition.MaturityDate The Date of expiration for futures and options.
state InstrumentDefinition.State active: can have market state updates, can have historical data passive: can NOT have market state updates, but can have historical data normally "active" means newly listed or currently non expired markets normally "passive" means expired options, de-listed equities, etc.
channel sint32 The channel that updates for this instrument will appear on.
underlyingMarketId sint64 The marketId of the underlying asset. Used by Futures and Options when the underlying instrument is defined by the vendor
priceFormat InstrumentDefinition.PriceFormat Display format
optionStrikePriceFormat InstrumentDefinition.PriceFormat Strike price display format
priceDenominator sint32 Divide prices by this value to get real price values
quantityDenominator sint32 Divide trade quantities by this value to get real quantities
isTradable bool true if this is a tradable instrument
transactionTime sint64 UTC timestamp of transaction, nano seconds since Unix epoch
auxiliaryData bytes For internal use only. Ignore
symbols InstrumentDefinition.Symbol repeated List of alternate symbols for this instrument. A single instrument may be provided by many different market data vendors, each with their own unique symbology. Allows this instrument to be tagged with as many vendor symbols as necessary.
optionStrike sint64 Option strike price in market currency. Multiply by / factorOptionsStrike to get actual strike
optionType InstrumentDefinition.OptionType Option type: call vs put.
optionStyle InstrumentDefinition.OptionStyle Option style : American vs European.
optionStrikeDenominator sint32 Divide optionStrike by this value to get real strike price
spreadCode string Spread type, can be vendor specific
spreadLeg InstrumentDefinition.SpreadLeg repeated Ordered list of underlying legs in a spread.
userDefinedSpread bool true if user defined spread
marketTier string Listing market classification
financialStatusIndicator string Current financial status of the issuer
isin string ISIN: https://en.wikipedia.org/wiki/International_Securities_Identification_Number

InstrumentDefinition.Calendar

Field Type Label Description
events InstrumentDefinition.Event repeated

InstrumentDefinition.Event

Field Type Label Description
type InstrumentDefinition.EventType
date sint64

InstrumentDefinition.MaturityDate

Date and time with time zone.

Field Type Label Description
year sint32 Year of century.
month sint32 Month of year.
day sint32 Day of month.

InstrumentDefinition.PriceFormat

Recommended display format for prices.

Field Type Label Description
isFractional bool
denominator sint32
subDenominator sint32
subFormat InstrumentDefinition.PriceFormat.SubFormat

InstrumentDefinition.Schedule

Typical trading week schedule

Field Type Label Description
sessions InstrumentDefinition.TimeSpan repeated

InstrumentDefinition.SpreadLeg

Field Type Label Description
marketId sint64 The marketId of the leg
ratio sint32 The ratio of the this leg with respect to the spread. Negative means short the absolute value, positive means long the absolute value. FIXME? Alternatively, we could have separate LONG/SHORT indicator in the message and use this field as only the absolute value
symbol string Additional information about the leg will be found in the instrument definition for the leg. It is not included here to reduce duplication.

InstrumentDefinition.Symbol

A vendor's symbol for an instrument

Field Type Label Description
vendor string The vendor that provides this symbol.
symbol string The symbol assigned by the vendor.

InstrumentDefinition.TimeSpan

Trading session Times are in nanos since midnight UTC on the Sunday starting a given trading week

Field Type Label Description
timeStart sint64
timeFinish sint64

InstrumentDefinition.BookType

Market depth implementation type

Name Number Description
UNKNOWN_BOOK_TYPE 0
TOP_OF_BOOK 1 BBO
PRICE_LEVEL_DEPTH 2 Book uses price level
ORDER_DEPTH 3 Book uses order-id

InstrumentDefinition.EventType

Name Number Description
UNKNOWN_EVENT_TYPE 0
FIRST_TRADE_DATE 1 All instruments
LAST_TRADE_DATE 2
SETTLEMENT_DATE 10 Futures only
FIRST_DELIVERY_DATE 11
LAST_DELIVERY_DATE 12
FIRST_NOTICE_DATE 13
LAST_NOTICE_DATE 14
FIRST_HOLDING_DATE 15
LAST_HOLDING_DATE 16
FIRST_POSITION_DATE 17
LAST_POSITION_DATE 18

InstrumentDefinition.InstrumentType

Name Number Description
UNKNOWN_INSTRUMENT_TYPE 0
FOREX 1
INDEX 2
EQUITY 3
FUTURE 4
OPTION 5
SPREAD 6
MUTUAL_FUND 7
MONEY_MARKET_FUND 8

InstrumentDefinition.OptionStyle

Option style.

Name Number Description
UNKNOWN_OPTIONS_STYLE 0
DEFAULT 1
AMERICAN 2
EUROPEAN 3

InstrumentDefinition.OptionType

Option type.

Name Number Description
UNKNOWN_OPTION_TYPE 0
CALL 1
PUT 2

InstrumentDefinition.State

Name Number Description
UNKNOWN_STATE 0
ACTIVE 1
PASSIVE 2

Scalar Value Types

.proto Type Notes C++ Type Java Type Python Type
double double double float
float float float float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long
uint32 Uses variable-length encoding. uint32 int int/long
uint64 Uses variable-length encoding. uint64 long int/long
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long
sfixed32 Always four bytes. int32 int int
sfixed64 Always eight bytes. int64 long int/long
bool bool boolean boolean
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode
bytes May contain any arbitrary sequence of bytes. string ByteString str