Skip to main content
Version: Staging

Schema: OptionPrintSet (ID: 2815)

OptionPrintSet records contain every option print along with quote, surface, and SR probability details at print time. These records also contain T+1M and T+10M forward mark details. These records are created for every print at the time of print and are published to the SpiderRock elastic cluster 10 minutes later when T + 10M forward marks are available.

METADATA

AttributeValue
Topic2750-market-data-options
MLink TokenOptAnalytics
SRSE ProductSRAnalytics

Note: The symbol = next to a field number indicates that it is a primary key.

BODY

#FieldTypeComment
10=okeyOptionKey
11=prtNumberlongUnique print set identifier, will increment but not guaranteed to be sequential
368updateTypeenum : PrtUpdateType
100fkeyExpiryKeyunderlying fkey (if any)
103tickerTickerKeyunderlying ticker
106prtExchenum : OptExchexchange on which print took place
109prtSizeintprint size [contracts]
112prtPricefloatprint price
115prtTypeenum : PrtTypeprint type
118prtOrdersushortnumber of participating orders (future exchanges only)
121prtClusterNumintincremental print cluster counter (one counter per okey; used to group prints into clusters)
124prtClusterSizeintcumulative size of prints in this sequence (prints @ same or more aggressive price with less than 25 ms elapsing since first print; can span exchanges)
127prtVolumeintday print volume in contracts
130cxlVolumeintday print/cancel volume (num of contracts printed and then cancelled)
133bidCountushortnumber of bid prints
136askCountushortnumber of ask prints
139bidVolumeintbid print volume in contracts
142askVolumeintask print volume in contracts
145ebidfloatexchange bid (@ print time)
148easkfloatexchange ask (@ print time)
151ebszintexchange bid size
154easzintexchange ask size
157eagefloatage of prevailing quote at time of print
160prtSideenum : PrtSide
163prtTimestamplongexchange high precision timestamp (if available)
166netTimestamplonginbound packet PTP timestamp from SR gateway switch; usually syncronized with facility grandfather clock
169timestampDateTime
172oBidfloatOption NBBO bid a the time the print was received
175oAskfloatOption NBBO ask a the time the print was received
178oBidSzintOption NBBO cumulative bid size at the time the print was received
181oAskSzintOption NBBO cumulative ask size at the time the print was received
184oBidExenum : OptExchFirst (or largest) option exchange on the bid
187oAskExenum : OptExchFirst (or largest) option exchange on the ask
190oBidExSzintOption bid size of the largest exchange on the bid at the time the print was received
193oAskExSzintOption ask size of the largest exchange on the ask at the time the print was received
196oBidCntbyteNumber of exchanges on the NBBO bid
199oAskCntbyteNumber of exchanges on the NBBO ask
202oBid2floatSecond level bid price
205oAsk2floatSecond level ask price
208oBidSz2intCumulative size on the second level bid price
211oAskSz2intCumulative size on the second level ask price
353oBidIvdoubleoption bid IV
354oAskIvdoubleoption ask IV
214uBiddoubleunderlier bid
217uAskdoubleunderlier ask
220uPrcdoubleunderlier price
223yrsfloatyears to expiry
226ratefloatinterest rate
229sdivfloatcontinuous stock dividend
232ddivfloatdiscrete stock dividend value (sum of dividends <= expiration)
235xDefloatxDelta
238xAxisfloatSR surface xAxis value
241multihedgeenum : MultihedgeDistinguishes options that have a single underlying security from those that are more complex: multiple securities,cash components, binary options,etc: 'None','Simple','Complex','AllCash','Binary'
244flexTypeenum : FlexType
247flexRootstring(12)
250prtIvfloatprint implied vol
253prtDefloatprint delta
256prtGafloatprint gamma
259prtThfloatprint theta
262prtVefloatprint vega
265prtRofloatprint rho
268calcErrstring(24)calc error flag
271surfVolfloatSR surface volatility
274surfOpxfloatSR surface price
277surfAtmfloatSR surface ATM vol
280prtProbabilityfloat[M1] probability that buying prtSize contracts @ prtPrice will have positive m10 pnl (prtPriceM10 >= prtPrice) [recorded at time of print]
283prtProbabilityM2floatalternate probability model
286prtProbabilityM3floatalternate probability model
289oBidM1floatNBBO option bid 1 minute after print was received
292oAskM1floatNBBO option ask 1 minute after print was received
295uBidM1doubleNBBO underlying bid 1 minute after print was received
298uAskM1doubleNBBO underlying ask 1 minute after print was received
301uPrcM1doubleUnderlying price 1 minute after print was received
304sVolM1floatSuface volatility 1 minute after print was received
307sOpxM1floatSurface option price 1 minute after print was received
310sDivM1floatsDiv 1 minute after print was received
313sErrM1string(12)Surface error condition (if any) 1 minute after print was received
316pnlM1floatpnl after 1 minute
319pnlM1Errenum : YesNoError condition for PnL calculated over the first 1 minute after the print was received
322oBidM10floatNBBO option bid 10 minutes after print was received
325oAskM10floatNBBO option ask 10 minutes after print was received
328uBidM10doubleNBBO underlying bid 10 minutes after print was received
331uAskM10doubleNBBO underlying ask 10 minutes after print was received
334uPrcM10doubleUnderlying price 10 minutes after print was received
337sVolM10floatSuface volatility 10 minutes after print was received
340sOpxM10floatSurface option price 10 minutes after print was received
343sDivM10floatsDiv 10 minutes after print was received
346sErrM10string(12)Surface error condition (if any) 10 minutes after print was received
349pnlM10floatpnl after 10 minutes
352pnlM10Errenum : YesNoError condition for PnL calculated 10 minutes after the print was received
355oBidS1floatNBBO option bid 1 second after print was received
356oAskS1floatNBBO option ask 1 second after print was received
357uBidS1doubleNBBO underlying bid 1 second after print was received
358uAskS1doubleNBBO underlying ask 1 second after print was received
359uPrcS1doubleUnderlying price 1 second after print was received
360sVolS1floatSuface volatility 1 second after print was received
361sOpxS1floatSurface option price 1 second after print was received
362sDivS1floatsDiv 1 second after print was received
363sErrS1string(12)Surface error condition (if any) 1 second after print was received
364pnlS1floatpnl after 1 second
365pnlS1Errenum : YesNoError condition for PnL calculated over the first 1 second after the print was received
366oBidNextfloatnext NBBO option bid after print was received
367oAskNextfloatnext NBBO option ask after print was received

Get Schema API Call

import requests 

# Replace with your desired MLINK URL
MLINK_PROD_URL = 'https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json'

# Replace with your MLINK API Key
API_KEY = 'XXXX-XXXX-XXXX-XXXX'

# Replace with your desired MsgType.
MSG_TYPE = 'OptionPrintSet'

# Request Parameters for Get Schema Of The MsgType
params = {
#Required Parameters
"apiKey": API_KEY,
"cmd": 'getschema',
"msgType": MSG_TYPE,
}

response = requests.get(MLINK_PROD_URL, params=params)

Get Msg API Call

import requests 

# Replace with your desired MLINK URL
MLINK_PROD_URL = 'https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json'

# Replace with your MLINK API Key
API_KEY = 'XXXX-XXXX-XXXX-XXXX'

# Replace with your desired MsgType.
MSG_TYPE = 'OptionPrintSet'

# Replace with your pkey value for getting the specific message desired
PKEY = 'ReplaceThisValueForTheQueryToWork'

# Replace with your desired view. A "|" separated list of views can be provided
# If no view is provided, all views will be returned.
VIEW = 'updateType|fkey|ticker|prtExch|prtSize|prtPrice|prtType|prtOrders|prtClusterNum|prtClusterSize|prtVolume|cxlVolume|bidCount|askCount|bidVolume|askVolume|ebid|eask|ebsz|easz|eage|prtSide|prtTimestamp|netTimestamp|timestamp|oBid|oAsk|oBidSz|oAskSz|oBidEx|oAskEx|oBidExSz|oAskExSz|oBidCnt|oAskCnt|oBid2|oAsk2|oBidSz2|oAskSz2|oBidIv|oAskIv|uBid|uAsk|uPrc|yrs|rate|sdiv|ddiv|xDe|xAxis|multihedge|flexType|flexRoot|prtIv|prtDe|prtGa|prtTh|prtVe|prtRo|calcErr|surfVol|surfOpx|surfAtm|prtProbability|prtProbabilityM2|prtProbabilityM3|oBidM1|oAskM1|uBidM1|uAskM1|uPrcM1|sVolM1|sOpxM1|sDivM1|sErrM1|pnlM1|pnlM1Err|oBidM10|oAskM10|uBidM10|uAskM10|uPrcM10|sVolM10|sOpxM10|sDivM10|sErrM10|pnlM10|pnlM10Err|oBidS1|oAskS1|uBidS1|uAskS1|uPrcS1|sVolS1|sOpxS1|sDivS1|sErrS1|pnlS1|pnlS1Err|oBidNext|oAskNext'

# Replace with your desired where clause.
# a string in the form "field1:eq:valuse" or "(field1:ne:value1 & field1:ne:value2)
# "WHERE" clauses can contain the following comparison symbols:
# :gt: is greater than
# :ge: is greater than or equal to
# :lt: is less than
# :le: is less than or equal to
# :eq: is equal
# :ne: is not equal
# %26 is an AND statement
# | is an OR statement
# :sw: is starts with
# :ew: is ends with
# :cv: is contains values
# :nv: is does not contain value
# :cb: is contained between (two dates for instance) separated by '$'
WHERE = 'flexRoot:eq:ExampleString'

# Request Parameters for getmsg Of The MsgType
params = {
# Required Parameters
"apiKey": API_KEY,
"cmd": 'getmsg',
"pkey": PKEY,
"msgType": MSG_TYPE,
# Optional Parameters
"view": VIEW,
"where": WHERE
}

response = requests.get(MLINK_PROD_URL, params=params)

Get Msgs API Call

import requests 

# Replace with your desired MLINK URL
MLINK_PROD_URL = 'https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json'

# Replace with your MLINK API Key
API_KEY = 'XXXX-XXXX-XXXX-XXXX'

# Replace with your desired MsgType.
MSG_TYPE = 'OptionPrintSet'

# Replace with your desired view. A "|" separated list of views can be provided
# If no view is provided, all views will be returned
VIEW = 'updateType|fkey|ticker|prtExch|prtSize|prtPrice|prtType|prtOrders|prtClusterNum|prtClusterSize|prtVolume|cxlVolume|bidCount|askCount|bidVolume|askVolume|ebid|eask|ebsz|easz|eage|prtSide|prtTimestamp|netTimestamp|timestamp|oBid|oAsk|oBidSz|oAskSz|oBidEx|oAskEx|oBidExSz|oAskExSz|oBidCnt|oAskCnt|oBid2|oAsk2|oBidSz2|oAskSz2|oBidIv|oAskIv|uBid|uAsk|uPrc|yrs|rate|sdiv|ddiv|xDe|xAxis|multihedge|flexType|flexRoot|prtIv|prtDe|prtGa|prtTh|prtVe|prtRo|calcErr|surfVol|surfOpx|surfAtm|prtProbability|prtProbabilityM2|prtProbabilityM3|oBidM1|oAskM1|uBidM1|uAskM1|uPrcM1|sVolM1|sOpxM1|sDivM1|sErrM1|pnlM1|pnlM1Err|oBidM10|oAskM10|uBidM10|uAskM10|uPrcM10|sVolM10|sOpxM10|sDivM10|sErrM10|pnlM10|pnlM10Err|oBidS1|oAskS1|uBidS1|uAskS1|uPrcS1|sVolS1|sOpxS1|sDivS1|sErrS1|pnlS1|pnlS1Err|oBidNext|oAskNext'

# Replace with your desired where clause.
# a string in the form "field1:eq:value" or "(field1:ne:value1 & field1:ne:value2)
# "WHERE" clauses can contain the following comparison symbols:
# :gt: is greater than
# :ge: is greater than or equal to
# :lt: is less than
# :le: is less than or equal to
# :eq: is equal
# :ne: is not equal
# %26 is an AND statement
# | is an OR statement
# :sw: is starts with
# :ew: is ends with
# :cv: is contains values
# :nv: is does not contain value
# :cb: is contained between (two dates for instance) separated by '$'
WHERE = 'flexRoot:eq:ExampleString'

# Replace with your desired limit of how many messages you receive. The default limit is 500
LIMIT = 500

# Order clause eg. "(field1:DESC | field1:ASC | field2:DESC:ABS | field2:ASC:ABS" (default is unordered; default is faster)
ORDER = 'updateType:ASC'

# Request Parameters for getmsgs Of The MsgType
params = {
# Required Parameters
"apiKey": API_KEY,
"cmd": 'getmsgs',
"msgType": MSG_TYPE,
# Optional Parameters
"view": VIEW,
"where": WHERE,
"limit": LIMIT,
"order": ORDER
}

response = requests.get(MLINK_PROD_URL, params=params)

Get Aggregate API Call

import requests 

# Replace with your desired MLINK URL
MLINK_PROD_URL = 'https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json'

# Replace with your MLINK API Key
API_KEY = 'XXXX-XXXX-XXXX-XXXX'

# Replace with your desired MsgType.
MSG_TYPE = 'OptionPrintSet'

# Replace with fields you want to see aggregate values for. A "|" separated list of measures should be provided
MEASURE = 'updateType|fkey|ticker|prtExch|prtSize|prtPrice|prtType|prtOrders|prtClusterNum|prtClusterSize|prtVolume|cxlVolume|bidCount|askCount|bidVolume|askVolume|ebid|eask|ebsz|easz|eage|prtSide|prtTimestamp|netTimestamp|timestamp|oBid|oAsk|oBidSz|oAskSz|oBidEx|oAskEx|oBidExSz|oAskExSz|oBidCnt|oAskCnt|oBid2|oAsk2|oBidSz2|oAskSz2|oBidIv|oAskIv|uBid|uAsk|uPrc|yrs|rate|sdiv|ddiv|xDe|xAxis|multihedge|flexType|flexRoot|prtIv|prtDe|prtGa|prtTh|prtVe|prtRo|calcErr|surfVol|surfOpx|surfAtm|prtProbability|prtProbabilityM2|prtProbabilityM3|oBidM1|oAskM1|uBidM1|uAskM1|uPrcM1|sVolM1|sOpxM1|sDivM1|sErrM1|pnlM1|pnlM1Err|oBidM10|oAskM10|uBidM10|uAskM10|uPrcM10|sVolM10|sOpxM10|sDivM10|sErrM10|pnlM10|pnlM10Err|oBidS1|oAskS1|uBidS1|uAskS1|uPrcS1|sVolS1|sOpxS1|sDivS1|sErrS1|pnlS1|pnlS1Err|oBidNext|oAskNext'

# Replace with fields you want to see aggregated. A "|" separated list of fields should be provided
GROUP = 'updateType|prtExch|prtType|prtSide|oBidEx|oAskEx|multihedge|flexType|pnlM1Err|pnlM10Err|pnlS1Err'

# Replace with your desired where clause.
# a string in the form "field1:eq:value" or "(field1:ne:value1 & field1:ne:value2)
# "WHERE" clauses can contain the following comparison symbols:
# :gt: is greater than
# :ge: is greater than or equal to
# :lt: is less than
# :le: is less than or equal to
# :eq: is equal
# :ne: is not equal
# %26 is an AND statement
# | is an OR statement
# :sw: is starts with
# :ew: is ends with
# :cv: is contains values
# :nv: is does not contain value
# :cb: is contained between (two dates for instance) separated by '$'
WHERE = 'flexRoot:eq:ExampleString'

# Request Parameters for getaggregate Of The MsgType
params = {
# Required Parameters
"apiKey": API_KEY,
"cmd": 'getaggregate',
"msgType": MSG_TYPE,
"measure": MEASURE,
"group": GROUP,
# Optional Parameters
"where": WHERE,
}

response = requests.get(MLINK_PROD_URL, params=params)

Get Count API Call

import requests 

# Replace with your desired MLINK URL
MLINK_PROD_URL = 'https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json'

# Replace with your MLINK API Key
API_KEY = 'XXXX-XXXX-XXXX-XXXX'

# Replace with your desired MsgType.
MSG_TYPE = 'OptionPrintSet'

# Replace with your desired where clause.
# a string in the form "field1:eq:value" or "(field1:ne:value1 & field1:ne:value2)
# "WHERE" clauses can contain the following comparison symbols:
# :gt: is greater than
# :ge: is greater than or equal to
# :lt: is less than
# :le: is less than or equal to
# :eq: is equal
# :ne: is not equal
# %26 is an AND statement
# | is an OR statement
# :sw: is starts with
# :ew: is ends with
# :cv: is contains values
# :nv: is does not contain value
# :cb: is contained between (two dates for instance) separated by '$'
WHERE = 'flexRoot:eq:ExampleString'

# Request Parameters for getCount Of The MsgType
params = {
# Required Parameters
"apiKey": API_KEY,
"cmd": 'getcount',
"msgType": MSG_TYPE,
# Optional Parameters
"where": WHERE,
}

response = requests.get(MLINK_PROD_URL, params=params)