Skip to main content
Version: Staging

Schema: LiveSurfaceFixedTerm (ID: 1045)

LiveSurfaceFixedTerm (surfaceType = 'Live') records contain a live implied volatility term record at standardized days-to-expiration. SurfaceType = 'PriorDay' records contain the final record from the prior trading day.

These records include implied and histrical earnings moves, implied earnings date adjustments, and interpolated/gridded atm, sdiv, and quote width values.

LiveSurfaceTerm records are published to the SpiderRock elastic cluster every 10 minutes for all equity and index underliers with options.

METADATA

AttributeValue
Topic1000-analytics
MLink TokenOptSurface
SRSE ProductSRAnalytics

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

BODY

#FieldTypeComment
10=tickerTickerKey
11=surfaceTypeenum : SurfaceCurveType
50synSpotdoubleSynthetic spot price (market-derived spot when the underlying is not a traded instrument)
100hEMovefloatexpected forward earnings move (average of the last 8-12 underlier earnings moves; w/max clipping)
103hEMoveNumbytenum historical earnings moves in historical window
106hEMoveAvgfloatavg historical earnings move (last 8-12 underlier earnings moves)
109hEMoveStdfloatstd historical earnings move (last 8-12 underlier earnings moves)
112hEMoveMinfloatmax historical earnings move (last 8-12 underlier earnings moves)
115hEMoveMaxfloatmin historical earnings move (last 8-12 underlier earnings moves)
118iEMovefloatimplied earnings move (implied move; all earnings events)
121iEFitCodeenum : EFitCodeimplied EFit Code
124iEFitErrorfloateMove fit error (term surface fit error)
127expiryCountbytenumber of actual expirations involved
130iEMoveAvgfloataverage eMove today
133iEMoveStdfloateMove std dev today
136iEMoveMinfloateMove min today
139iEMoveMaxfloatemove max today
142iEMoveCntintnumber of surface term fits today
145eMoveExpAdj1intnumber of expirations (+/-) that the next earn date was moved to best fit market term structure (if any)
148eMoveYrsAdj1floatnumber of trading years (+/-) that the next earn date was moved to best fit market term structure (if any)
151eMoveYears1floatyears to expiration from LiveSurfaceCurve.pkey.ekey = eMoveFKey1
154eMoveEKey1ExpiryKeyLiveSurfaceCurve.pkey.ekey immediately after 1st implied earnings move (note: this will not match the base earnings calendar if eMoveDtAdj1 != 0)
157eMoveExpAdj2intnumber of expirations (+/-) that the 2nd earn date was moved to best fit market term structure (if any)
160eMoveYrsAdj2floatnumber of trading years (+/-) that the 2nd earn date was moved to best fit market term structure (if any)
163eMoveYears2floatyears to expiration from LiveSurfaceCurve.pkey.fkey = eMoveFKey2
166eMoveEKey2ExpiryKeyLiveSurfaceCurve.pkey.ekey immediately after 2nd implied earnings move (note: this will not match the base earnings calendar if eMoveDtAdj2 != 0)
169atmCenI_stfloatshort term (5 day) model atm volatility (censored using iEMult)
172atmCenI_ltfloatlong term (504 day) model atm volatility
175atmCenI_decayfloatmodel decay parameter
178atmCenI_5dfloatInterpolated 5 day atm vol (censored using iEMult)
181atmCenI_10dfloatInterpolated 10 day atm vol
184atmCenI_21dfloatInterpolated 21 day atm vol
187atmCenI_42dfloatInterpolated 42 day atm vol
190atmCenI_63dfloatInterpolated 63 day atm vol
193atmCenI_84dfloatInterpolated 84 day atm vol
196atmCenI_105dfloatInterpolated 105 day atm vol
199atmCenI_126dfloatInterpolated 126 day atm vol
202atmCenI_189dfloatInterpolated 189 day atm vol
205atmCenI_252dfloatInterpolated 252 day atm vol
208atmCenI_378dfloatInterpolated 378 day atm vol
211atmCenI_504dfloatInterpolated 504 day atm vol
214atmCenH_stfloatshort term (5 day) model atm volatility (censored using hEMult)
217atmCenH_ltfloatlong term (504 day) model atm volatility
220atmCenH_decayfloatmodel decay parameter
223atmCenH_5dfloatInterpolated 5 day atm vol (censored using hEMult)
226atmCenH_10dfloatInterpolated 10 day atm vol
229atmCenH_21dfloatInterpolated 21 day atm vol
232atmCenH_42dfloatInterpolated 42 day atm vol
235atmCenH_63dfloatInterpolated 63 day atm vol
238atmCenH_84dfloatInterpolated 84 day atm vol
241atmCenH_105dfloatInterpolated 105 day atm vol
244atmCenH_126dfloatInterpolated 126 day atm vol
247atmCenH_189dfloatInterpolated 189 day atm vol
250atmCenH_252dfloatInterpolated 252 day atm vol
253atmCenH_378dfloatInterpolated 378 day atm vol
256atmCenH_504dfloatInterpolated 504 day atm vol
259sDiv_5dfloatInterpolated 5 day implied sdiv rate
262sDiv_10dfloatInterpolated 10 day implied sdiv rate
265sDiv_21dfloatInterpolated 21 day implied sdiv rate
268sDiv_42dfloatInterpolated 42 day implied sdiv rate
271sDiv_63dfloatInterpolated 63 day implied sdiv rate
274sDiv_84dfloatInterpolated 84 day implied sdiv rate
277sDiv_105dfloatInterpolated 105 day implied sdiv rate
280sDiv_126dfloatInterpolated 126 day implied sdiv rate
283sDiv_189dfloatInterpolated 189 day implied sdiv rate
286sDiv_252dfloatInterpolated 252 day implied sdiv rate
289sDiv_378dfloatInterpolated 378 day implied sdiv rate
292sDiv_504dfloatInterpolated 504 day implied sdiv rate
295fwdUPrc_5dfloatInterpolated 5 day implied forward price
298fwdUPrc_10dfloatInterpolated 10 day implied forward price
301fwdUPrc_21dfloatInterpolated 21 day implied forward price
304fwdUPrc_42dfloatInterpolated 42 day implied forward price
307fwdUPrc_63dfloatInterpolated 63 day implied forward price
310fwdUPrc_84dfloatInterpolated 84 day implied forward price
313fwdUPrc_105dfloatInterpolated 105 day implied forward price
316fwdUPrc_126dfloatInterpolated 126 day implied forward price
319fwdUPrc_189dfloatInterpolated 189 day implied forward price
322fwdUPrc_252dfloatInterpolated 252 day implied forward price
325fwdUPrc_378dfloatInterpolated 378 day implied forward price
328fwdUPrc_504dfloatInterpolated 504 day implied forward price
331vWidth_5dfloatInterpolated 5 day market vwidth
334vWidth_10dfloatInterpolated 10 day market vwidth
337vWidth_21dfloatInterpolated 21 day market vwidth
340vWidth_42dfloatInterpolated 42 day market vwidth
343vWidth_63dfloatInterpolated 63 day market vwidth
346vWidth_84dfloatInterpolated 84 day market vwidth
349vWidth_105dfloatInterpolated 105 day market vwidth
352vWidth_126dfloatInterpolated 126 day market vwidth
355vWidth_189dfloatInterpolated 189 day market vwidth
358vWidth_252dfloatInterpolated 252 day market vwidth
361vWidth_378dfloatInterpolated 378 day market vwidth
364vWidth_504dfloatInterpolated 504 day market vwidth
367vSlope_5dfloatInterpolated 5 day atm vol slope
370vSlope_10dfloatInterpolated 10 day atm vol slope
373vSlope_21dfloatInterpolated 21 day atm vol slope
376vSlope_42dfloatInterpolated 42 day atm vol slope
379vSlope_63dfloatInterpolated 63 day atm vol slope
382vSlope_84dfloatInterpolated 84 day atm vol slope
385vSlope_105dfloatInterpolated 105 day atm vol slope
388vSlope_126dfloatInterpolated 126 day atm vol slope
391vSlope_189dfloatInterpolated 189 day atm vol slope
394vSlope_252dfloatInterpolated 252 day atm vol slope
397vSlope_378dfloatInterpolated 378 day atm vol slope
400vSlope_504dfloatInterpolated 504 day atm vol slope
403eCnt_5dbytenumber of expected earnings events
406eCnt_10dbytenumber of expected earnings events
409eCnt_21dbytenumber of expected earnings events
412eCnt_42dbytenumber of expected earnings events
415eCnt_63dbytenumber of expected earnings events
418eCnt_84dbytenumber of expected earnings events
421eCnt_105dbytenumber of expected earnings events
424eCnt_126dbytenumber of expected earnings events
427eCnt_189dbytenumber of expected earnings events
430eCnt_252dbytenumber of expected earnings events
433eCnt_378dbytenumber of expected earnings events
436eCnt_504dbytenumber of expected earnings events
439statusenum : CurveStatus
442timeTimeSpan
445timestampDateTimeupdate timestamp

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 = 'LiveSurfaceFixedTerm'

# 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 = 'LiveSurfaceFixedTerm'

# 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 = 'synSpot|hEMove|hEMoveNum|hEMoveAvg|hEMoveStd|hEMoveMin|hEMoveMax|iEMove|iEFitCode|iEFitError|expiryCount|iEMoveAvg|iEMoveStd|iEMoveMin|iEMoveMax|iEMoveCnt|eMoveExpAdj1|eMoveYrsAdj1|eMoveYears1|eMoveEKey1|eMoveExpAdj2|eMoveYrsAdj2|eMoveYears2|eMoveEKey2|atmCenI_st|atmCenI_lt|atmCenI_decay|atmCenI_5d|atmCenI_10d|atmCenI_21d|atmCenI_42d|atmCenI_63d|atmCenI_84d|atmCenI_105d|atmCenI_126d|atmCenI_189d|atmCenI_252d|atmCenI_378d|atmCenI_504d|atmCenH_st|atmCenH_lt|atmCenH_decay|atmCenH_5d|atmCenH_10d|atmCenH_21d|atmCenH_42d|atmCenH_63d|atmCenH_84d|atmCenH_105d|atmCenH_126d|atmCenH_189d|atmCenH_252d|atmCenH_378d|atmCenH_504d|sDiv_5d|sDiv_10d|sDiv_21d|sDiv_42d|sDiv_63d|sDiv_84d|sDiv_105d|sDiv_126d|sDiv_189d|sDiv_252d|sDiv_378d|sDiv_504d|fwdUPrc_5d|fwdUPrc_10d|fwdUPrc_21d|fwdUPrc_42d|fwdUPrc_63d|fwdUPrc_84d|fwdUPrc_105d|fwdUPrc_126d|fwdUPrc_189d|fwdUPrc_252d|fwdUPrc_378d|fwdUPrc_504d|vWidth_5d|vWidth_10d|vWidth_21d|vWidth_42d|vWidth_63d|vWidth_84d|vWidth_105d|vWidth_126d|vWidth_189d|vWidth_252d|vWidth_378d|vWidth_504d|vSlope_5d|vSlope_10d|vSlope_21d|vSlope_42d|vSlope_63d|vSlope_84d|vSlope_105d|vSlope_126d|vSlope_189d|vSlope_252d|vSlope_378d|vSlope_504d|eCnt_5d|eCnt_10d|eCnt_21d|eCnt_42d|eCnt_63d|eCnt_84d|eCnt_105d|eCnt_126d|eCnt_189d|eCnt_252d|eCnt_378d|eCnt_504d|status|time|timestamp'

# 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 = ''

# 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 = 'LiveSurfaceFixedTerm'

# Replace with your desired view. A "|" separated list of views can be provided
# If no view is provided, all views will be returned
VIEW = 'synSpot|hEMove|hEMoveNum|hEMoveAvg|hEMoveStd|hEMoveMin|hEMoveMax|iEMove|iEFitCode|iEFitError|expiryCount|iEMoveAvg|iEMoveStd|iEMoveMin|iEMoveMax|iEMoveCnt|eMoveExpAdj1|eMoveYrsAdj1|eMoveYears1|eMoveEKey1|eMoveExpAdj2|eMoveYrsAdj2|eMoveYears2|eMoveEKey2|atmCenI_st|atmCenI_lt|atmCenI_decay|atmCenI_5d|atmCenI_10d|atmCenI_21d|atmCenI_42d|atmCenI_63d|atmCenI_84d|atmCenI_105d|atmCenI_126d|atmCenI_189d|atmCenI_252d|atmCenI_378d|atmCenI_504d|atmCenH_st|atmCenH_lt|atmCenH_decay|atmCenH_5d|atmCenH_10d|atmCenH_21d|atmCenH_42d|atmCenH_63d|atmCenH_84d|atmCenH_105d|atmCenH_126d|atmCenH_189d|atmCenH_252d|atmCenH_378d|atmCenH_504d|sDiv_5d|sDiv_10d|sDiv_21d|sDiv_42d|sDiv_63d|sDiv_84d|sDiv_105d|sDiv_126d|sDiv_189d|sDiv_252d|sDiv_378d|sDiv_504d|fwdUPrc_5d|fwdUPrc_10d|fwdUPrc_21d|fwdUPrc_42d|fwdUPrc_63d|fwdUPrc_84d|fwdUPrc_105d|fwdUPrc_126d|fwdUPrc_189d|fwdUPrc_252d|fwdUPrc_378d|fwdUPrc_504d|vWidth_5d|vWidth_10d|vWidth_21d|vWidth_42d|vWidth_63d|vWidth_84d|vWidth_105d|vWidth_126d|vWidth_189d|vWidth_252d|vWidth_378d|vWidth_504d|vSlope_5d|vSlope_10d|vSlope_21d|vSlope_42d|vSlope_63d|vSlope_84d|vSlope_105d|vSlope_126d|vSlope_189d|vSlope_252d|vSlope_378d|vSlope_504d|eCnt_5d|eCnt_10d|eCnt_21d|eCnt_42d|eCnt_63d|eCnt_84d|eCnt_105d|eCnt_126d|eCnt_189d|eCnt_252d|eCnt_378d|eCnt_504d|status|time|timestamp'

# 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 = ''

# 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 = 'synSpot: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 = 'LiveSurfaceFixedTerm'

# Replace with fields you want to see aggregate values for. A "|" separated list of measures should be provided
MEASURE = 'synSpot|hEMove|hEMoveNum|hEMoveAvg|hEMoveStd|hEMoveMin|hEMoveMax|iEMove|iEFitCode|iEFitError|expiryCount|iEMoveAvg|iEMoveStd|iEMoveMin|iEMoveMax|iEMoveCnt|eMoveExpAdj1|eMoveYrsAdj1|eMoveYears1|eMoveEKey1|eMoveExpAdj2|eMoveYrsAdj2|eMoveYears2|eMoveEKey2|atmCenI_st|atmCenI_lt|atmCenI_decay|atmCenI_5d|atmCenI_10d|atmCenI_21d|atmCenI_42d|atmCenI_63d|atmCenI_84d|atmCenI_105d|atmCenI_126d|atmCenI_189d|atmCenI_252d|atmCenI_378d|atmCenI_504d|atmCenH_st|atmCenH_lt|atmCenH_decay|atmCenH_5d|atmCenH_10d|atmCenH_21d|atmCenH_42d|atmCenH_63d|atmCenH_84d|atmCenH_105d|atmCenH_126d|atmCenH_189d|atmCenH_252d|atmCenH_378d|atmCenH_504d|sDiv_5d|sDiv_10d|sDiv_21d|sDiv_42d|sDiv_63d|sDiv_84d|sDiv_105d|sDiv_126d|sDiv_189d|sDiv_252d|sDiv_378d|sDiv_504d|fwdUPrc_5d|fwdUPrc_10d|fwdUPrc_21d|fwdUPrc_42d|fwdUPrc_63d|fwdUPrc_84d|fwdUPrc_105d|fwdUPrc_126d|fwdUPrc_189d|fwdUPrc_252d|fwdUPrc_378d|fwdUPrc_504d|vWidth_5d|vWidth_10d|vWidth_21d|vWidth_42d|vWidth_63d|vWidth_84d|vWidth_105d|vWidth_126d|vWidth_189d|vWidth_252d|vWidth_378d|vWidth_504d|vSlope_5d|vSlope_10d|vSlope_21d|vSlope_42d|vSlope_63d|vSlope_84d|vSlope_105d|vSlope_126d|vSlope_189d|vSlope_252d|vSlope_378d|vSlope_504d|eCnt_5d|eCnt_10d|eCnt_21d|eCnt_42d|eCnt_63d|eCnt_84d|eCnt_105d|eCnt_126d|eCnt_189d|eCnt_252d|eCnt_378d|eCnt_504d|status|time|timestamp'

# Replace with fields you want to see aggregated. A "|" separated list of fields should be provided
GROUP = 'iEFitCode|status'

# 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 = ''

# 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 = 'LiveSurfaceFixedTerm'

# 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 = ''

# 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)