Skip to main content
Version: 8.4.10.2

Schema: LiveSurfaceAtm (ID: 1030)

METADATA

AttributeValue
Topic1000-analytics
MLink TokenSRMLinkAnalytics
SRSE ProductSRAnalytics

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

BODY

#FieldTypeComment
10=ekeyExpiryKey
100tickerTickerKeyunderlying stock key that this option expiration attaches to
103fkeyExpiryKeyfuture that this option expiration month written on (if any)
106uBiddoubleunderlier bid price
109uAskdoubleunderlier ask price
112yearsfloattime to expiration (in years)
115ratefloatinterest rate
118sdivfloatstock dividend (borrow rate)
121ddivfloatpresent value of discrete dividend stream
124exTypebyteexercise type of the options used to compute this surface
127modelTypebyteoption pricing model used for price calcs
130earnCntfloatnumber of qualifying earnings events prior to expiration [can be fractional] (from StockEarningsCalendar)
133earnCntAdjfloatnumber of qualifying earnings events prior to expiration [adjusted] (from StockEarningsCalendar + LiveSurfaceTerm)
136axisVolRTfloataxis volatility x sqrt(years) (used to compute xAxis) [usually 4m atm vol]
139axisFUPrcfloataxis FwdUPrc (fwd underlying price used to compute xAxis)
142moneynessTypeenum : MoneynessTypemoneyness (xAxis) convention
145underlierModeenum : UnderlierModeunderlier pricing mode (None=use spot/stock market; FrontMonth=use front month future market * uPrcRatio; Actual = use actual underlier future market)
148priceQuoteTypeenum : PriceQuoteTypePrice or Vol
151atmVolfloatatm vol (xAxis = 0)
154atmCenfloatatm vol (xAxis = 0) (eMove/earnCntAdj censored)
157atmVolHistfloathistorical realized volatility (includes eMoveHist x earnCntAdj adjustment). Note that this is the default atmVol if no implied markets existed previous day.
160atmCenHistfloatcensored (earnings events removed) historical realized volatility. Trailing periods is 2x forward time to expiration. From HistoricalVolatility(windowType=hlCen).mv_nnn
163minAtmVolfloatminimum estimated atm vol
166maxAtmVolfloatmaximum estimated atm vol
169eMovefloatimplied earnings move (from LiveSurfaceTerm)
172eMoveHistfloathistorical earnings move (avg of trailing 8 moves). From StockEarningsCalendar.eMoveHist
175atmMovefloatfixed strike atm move from prior period
178atmCenMovefloatfixed strike atm (censored) move from prior period
181atmPhifloatsurface phi @ xAxis = 0
184atmVegafloatsurface vega @ xAxis = 0
187slopefloatvolatility surface slope (dVol / dXAxis) @ ATM (xAxis=0)
190varSwapFVfloatvariance swap fair value (estimated by numerical integration over OTM price surface)
193gridTypeenum : GridTypegridType defines D11 - U12 xAxis points + spline type
196minXAxisfloatminimum xAxis value; xAxis values to the left extrapolate horizontally
199maxXAxisfloatmaximum xAxis value; xAxis values to the right extrapolate horizontally
202minCurvValuefloatminimum curvature (2nd derivative) of skew curve (can be negative if curve is not strictly convex)
205minCurvXAxisfloatxAxis of minimum curvature point
208maxCurvValuefloatmaximum curvature (2nd derivative) of skew curve
211maxCurvXAxisfloatxAxis of maximum curvature point
214skewMinXfloatxAxis = (effStrike / effAxisFUPrc - 1.0) / axisVolRT; effStrike = strike * strikeRatio; effAxisFUPrc = axisFUPrc * symbolRatio
217skewMinYfloatskewMinX / skewMinY are the skew curve minimum point (usually a positive x value and a negative y value)
220skewD11floatskew @ D11 point (volatility skew curve)
223skewD10floatskew @ D10 point
226skewD9floatskew @ D9 point
229skewD8floatskew @ D8 point
232skewD7floatskew @ D7 point
235skewD6floatskew @ D6 point
238skewD5floatskew @ D5 point
241skewD4floatskew @ D4 point
244skewD3floatskew @ D3 point
247skewD2floatskew @ D2 point
250skewD1floatskew @ D1 point
253skewC0floatcentral value (@xAxis = 0) [usually zero]
256skewU1floatskew @ U1 point
259skewU2floatskew @ U2 point
262skewU3floatskew @ U3 point
265skewU4floatskew @ U4 point
268skewU5floatskew @ U5 point
271skewU6floatskew @ U6 point
274skewU7floatskew @ U7 point
277skewU8floatskew @ U8 point
280skewU9floatskew @ U9 point
283skewU10floatskew @ U10 point
286skewU11floatskew @ U11 point
289sdivD3floatsdiv @ D3 point
292sdivD2floatsdiv @ D2 point
295sdivD1floatsdiv @ D1 point
298sdivU1floatsdiv @ U1 point
301sdivU2floatsdiv @ U2 point
304sdivU3floatsdiv @ U3 point
307pwidthfloatminimum mkt premium width
310vwidthfloatminimum mkt volatility width
313cCntbytenum call strikes
316pCntbytenum put strikes
319cBidMissbytenumber of call bid violations (surface outside the market)
322cAskMissbytenumber of call ask violations (surface outside the market)
325pBidMissbytenumber of put bid violations
328pAskMissbytenumber of put ask violations
331fitAvgErrfloatsurface fit R2 (mid-market values)
334fitAvgAbsErrfloatmean square error (mid-market values)
337fitMaxPrcErrfloatworst case surface premium violation
340fitErrXXfloatokey_xx of the option with the largest fit error in this expiration
343fitErrCPenum : CallPutokey_cp of the option with the largest fit error in this expiration
346fitErrDefloatdelta of fixErrXX
349fitErrBidfloatbid of the option with the largest fit error
352fitErrAskfloatask of the option with the largest fit error
355fitErrPrcfloatsurface prc of the option with the largest fit error
358fitErrVolfloatsurface vol of the option with the largest fit error
361counterintmessage counter - number of surface fits today
364skewCounterintskew surface fit counter
367sdivCounterintsdiv surface fit counter
380tradingSessionenum : TradingSessiontrading session this surface is from
373tradeableStatusenum : TradeableStatusindicates whether the surface is currently tradeable or not (all server surface integrity checks pass)
376surfaceResultenum : SurfaceResult
379timestampDateTime

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

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

# 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 = 'ticker|fkey|uBid|uAsk|years|rate|sdiv|ddiv|exType|modelType|earnCnt|earnCntAdj|axisVolRT|axisFUPrc|moneynessType|underlierMode|priceQuoteType|atmVol|atmCen|atmVolHist|atmCenHist|minAtmVol|maxAtmVol|eMove|eMoveHist|atmMove|atmCenMove|atmPhi|atmVega|slope|varSwapFV|gridType|minXAxis|maxXAxis|minCurvValue|minCurvXAxis|maxCurvValue|maxCurvXAxis|skewMinX|skewMinY|skewD11|skewD10|skewD9|skewD8|skewD7|skewD6|skewD5|skewD4|skewD3|skewD2|skewD1|skewC0|skewU1|skewU2|skewU3|skewU4|skewU5|skewU6|skewU7|skewU8|skewU9|skewU10|skewU11|sdivD3|sdivD2|sdivD1|sdivU1|sdivU2|sdivU3|pwidth|vwidth|cCnt|pCnt|cBidMiss|cAskMiss|pBidMiss|pAskMiss|fitAvgErr|fitAvgAbsErr|fitMaxPrcErr|fitErrXX|fitErrCP|fitErrDe|fitErrBid|fitErrAsk|fitErrPrc|fitErrVol|counter|skewCounter|sdivCounter|tradingSession|tradeableStatus|surfaceResult|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 = 'LiveSurfaceAtm'

# Replace with your desired view. A "|" separated list of views can be provided
# If no view is provided, all views will be returned
VIEW = 'ticker|fkey|uBid|uAsk|years|rate|sdiv|ddiv|exType|modelType|earnCnt|earnCntAdj|axisVolRT|axisFUPrc|moneynessType|underlierMode|priceQuoteType|atmVol|atmCen|atmVolHist|atmCenHist|minAtmVol|maxAtmVol|eMove|eMoveHist|atmMove|atmCenMove|atmPhi|atmVega|slope|varSwapFV|gridType|minXAxis|maxXAxis|minCurvValue|minCurvXAxis|maxCurvValue|maxCurvXAxis|skewMinX|skewMinY|skewD11|skewD10|skewD9|skewD8|skewD7|skewD6|skewD5|skewD4|skewD3|skewD2|skewD1|skewC0|skewU1|skewU2|skewU3|skewU4|skewU5|skewU6|skewU7|skewU8|skewU9|skewU10|skewU11|sdivD3|sdivD2|sdivD1|sdivU1|sdivU2|sdivU3|pwidth|vwidth|cCnt|pCnt|cBidMiss|cAskMiss|pBidMiss|pAskMiss|fitAvgErr|fitAvgAbsErr|fitMaxPrcErr|fitErrXX|fitErrCP|fitErrDe|fitErrBid|fitErrAsk|fitErrPrc|fitErrVol|counter|skewCounter|sdivCounter|tradingSession|tradeableStatus|surfaceResult|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 = 'ticker: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 = 'LiveSurfaceAtm'

# Replace with fields you want to see aggregate values for. A "|" separated list of measures should be provided
MEASURE = 'ticker|fkey|uBid|uAsk|years|rate|sdiv|ddiv|exType|modelType|earnCnt|earnCntAdj|axisVolRT|axisFUPrc|moneynessType|underlierMode|priceQuoteType|atmVol|atmCen|atmVolHist|atmCenHist|minAtmVol|maxAtmVol|eMove|eMoveHist|atmMove|atmCenMove|atmPhi|atmVega|slope|varSwapFV|gridType|minXAxis|maxXAxis|minCurvValue|minCurvXAxis|maxCurvValue|maxCurvXAxis|skewMinX|skewMinY|skewD11|skewD10|skewD9|skewD8|skewD7|skewD6|skewD5|skewD4|skewD3|skewD2|skewD1|skewC0|skewU1|skewU2|skewU3|skewU4|skewU5|skewU6|skewU7|skewU8|skewU9|skewU10|skewU11|sdivD3|sdivD2|sdivD1|sdivU1|sdivU2|sdivU3|pwidth|vwidth|cCnt|pCnt|cBidMiss|cAskMiss|pBidMiss|pAskMiss|fitAvgErr|fitAvgAbsErr|fitMaxPrcErr|fitErrXX|fitErrCP|fitErrDe|fitErrBid|fitErrAsk|fitErrPrc|fitErrVol|counter|skewCounter|sdivCounter|tradingSession|tradeableStatus|surfaceResult|timestamp'

# Replace with fields you want to see aggregated. A "|" separated list of fields should be provided
GROUP = 'moneynessType|underlierMode|priceQuoteType|gridType|fitErrCP|tradingSession|tradeableStatus|surfaceResult'

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

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