Skip to main content
Version: 8.5.11.3

Schema: ResponderMarkupRC (ID: 2501)

METADATA

AttributeValue
Topic2450-liquidity-notice
MLink TokenSRATS
SRSE ProductSRTrade

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

BODY

#FieldTypeDefault ValueComment
10=accntstring(16)
11=clientFirmstring(16)
15=ekeyExpiryKey
14=respSideenum : BuySellauction responder side (your side); Buy = Buy Synthetic (Sell Shares)
100tickerTickerKey
101isDisabledenum : YesNoif Yes, this auto-responder record is disabled
134enabledUntilDateTimewill be enabled up until this time
102expiryQtyAvailintrevcons (contracts) available for responding (day total; this ticker/expiry; all strikes) [note: 1 contract = undPerCn underlier units]
103tickerQtyAvailintrevcons (contracts) available for responding (day total; this ticker; all strikes) [note: 1 contract = undPerCn underlier units]
104transactFeedouble(+ = you pay) / (- = you receive)
105stockRatedouble0.00 = no effective lend/borrow value (360 day convention)
106moneyRatedoubleeffective rate to borrow/lend money to expiry (360 day convention) [compares to globalRate * 360 / 365]
107ddivPvdoublepresent value of any expected dividends to expiry
108divControlenum : DivControldisable this auto-responder record if SR Dividends exist or are estimates
109respondFlexenum : YesNoif not None, much match auction notice containsFlex field
110incFeesInRespenum : YesNoinclude all estimated responder fees in final response price
111roundRuleenum : RoundRule
112openExpiryQtyintremaining revcons (100 share units) available for responding (day total; this ticker/expiry; all strikes)
113openTickerQtyintremaining revcons (100 share units) available for responding (day total; ticker; all strikes)
114cumFillQtyintrevcons (100 share units) traded (day total; this expiry; all strikes)
115cumFillMoneydoublecumulative fill money (credit/debit) (this expiry)
116avgFillRatedoubleavg fill effective stock rate (this expiry)
117isDivControlDisabledenum : YesNoyes if dividend control above is triggered
118uBiddoublelive stock nbbo bid price [SR Supplied]
119uAskdoublelive stock nbbo ask price [SR Supplied]
120iDaysdoubleiDays = effective interest days [SR supplied]
121iYearsdoubleiYears = iDays / 360.0
122strikedoubleSR selected strike (standard day strike)
123rcEExPremdoublercEExPrem = (pRv.price - pRvE.price) - (cRv.price - cRvE.price) [american price - european price] (same model parameters; SR supplied parameters including DDivs; is zero for flex revcons)
124strikePvdoublestrikePv = strike * (1.0 - moneyRate * iYears) [moneyRate supplied above]
125stockLendPvdoublestockLendPv = uPrc * stockRate * iYears [stockRate supplied above]
126revConPremdoublerevConPrem = stockLendPv + strikePv + ddivPv + rcEExPrem (if any) [uPrc + pRv.price - cRv.price] [ddivPv supplied above]
127effRevConLimitdoubleeffRevConLimit = refConPrem +/- transactFee [lend/borrow]
128limitPricedoublelimitPrice = ROUND(effRevConLimit) [this is your response limit]
129effStockLendPvdoubleeffStockLendPv = limitPrice - strikePv - ddivPv - rcEExPrem
130effStockRatedoubleeffStockRate = effStockLendPv / (uPrc * iYears)
135numNoticeslongnumber of notices that match response bucket
167numNoticeBlocklongnumber of SR block auction numNotices
168numNoticeFlashlongnumber of SR flash auction numNotices
169numNoticeExchPIlongnumber of Exch Price Improvement auction numNotices
170numNoticeExchEXlongnumber of Exch Exposure auction numNotices
171numNotMktPennylongnumber auction numNotices
172numMktPenny1longnumber auction numNotices
173numMktPenny2longnumber auction numNotices
174numMktPenny3plongnumber auction numNotices
175numNotMktNicklelongnumber auction numNotices
176numMktNickle1longnumber auction numNotices
177numMktNickle2longnumber auction numNotices
178numMktNickle3plongnumber auction numNotices
155respDisabledSkipslongnumber skipped from isDisabled
179stockDisabledSkipslongnumber skipped from canIncludeStock != Yes
180cpFlagSkipslongnumber skipped from cpFlag not matching notice legs CallPut
181expiryRangeSkipslongnumber skipped from out of range expiry value
182yearsRangeSkipslongnumber skipped from out of range years value
156listedFlexSkipslongnumber skipped from flex/listed filter
157noticePriceSkipslongnumber skipped from limit price filter (exchange only)
183aggSizeLimitSkipslongnumber skipped from aggregate contract/vega size limit
159riskGroupLimitSkipslongnumber skipped from riskGroup limits
184rootSkipslongnumber skipped from leg root mismatch
185xDeltaRangeSkipslongnumber skipped from out of range XDelta value
186strikeRangeSkipslongnumber skipped from out of range strike
187minVegaRatioSkipslongnumber skipped from not qualifying ratio netVega/sum(abs(vega))
188probabilitySkipslongnumber skipped from min probability threshold not being met
160numResponseslongnumber of response attempts (number of parentOrders/NoticeExecReports)
189numRespondsBlocklongnumber of SR block auction responses
190numRespondsFlashlongnumber of SR flash auction responses
191numResponsesExchPIlongnumber of Exch Price Improvement auction responses
192numResponsesExchEXlongnumber of Exch Exposure auction responses
161numFullSizelong
162numAllocSizelong
163numPriceMisslong
164numTooLatelong
165numOtherMisslong
166numDidNotTradelong
193numTradedint
194qtyTradedint
195sumWidthTradeddoubleSUM: marketWidth * trdQty => AvgMktWidth = sumWidthTraded / qtyTraded
196sumSurfEdgeTradeddoubleSUM: printEdge * trdQty => AvgPrintEdge = sumSurfEdgeTraded / qtyTraded
197sumM1PnLTradeddoubleSUM: M1PnL * trdQty => AvgM1PnL = sumM1PnLTraded / qtyTraded
198sumM10PnLTradeddoubleSUM: M10PnL * trdQty => AvgM10PnL = sumM10PnLTraded / qtyTraded
199numTradedBlocklongnumber of SR block auctions traded
200numTradedFlashlongnumber of SR flash auctions traded
201numTradedExchPIlongnumber of Exch Price Improvement auctions traded
202numTradedExchEXlongnumber of Exch Exposure auctions traded
131modifiedBystring(24)user who last modified this record
132modifiedInenum : SysEnvironment
133timestampDateTimetimestamp of last modification

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

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

# 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|isDisabled|enabledUntil|expiryQtyAvail|tickerQtyAvail|transactFee|stockRate|moneyRate|ddivPv|divControl|respondFlex|incFeesInResp|roundRule|openExpiryQty|openTickerQty|cumFillQty|cumFillMoney|avgFillRate|isDivControlDisabled|uBid|uAsk|iDays|iYears|strike|rcEExPrem|strikePv|stockLendPv|revConPrem|effRevConLimit|limitPrice|effStockLendPv|effStockRate|numNotices|numNoticeBlock|numNoticeFlash|numNoticeExchPI|numNoticeExchEX|numNotMktPenny|numMktPenny1|numMktPenny2|numMktPenny3p|numNotMktNickle|numMktNickle1|numMktNickle2|numMktNickle3p|respDisabledSkips|stockDisabledSkips|cpFlagSkips|expiryRangeSkips|yearsRangeSkips|listedFlexSkips|noticePriceSkips|aggSizeLimitSkips|riskGroupLimitSkips|rootSkips|xDeltaRangeSkips|strikeRangeSkips|minVegaRatioSkips|probabilitySkips|numResponses|numRespondsBlock|numRespondsFlash|numResponsesExchPI|numResponsesExchEX|numFullSize|numAllocSize|numPriceMiss|numTooLate|numOtherMiss|numDidNotTrade|numTraded|qtyTraded|sumWidthTraded|sumSurfEdgeTraded|sumM1PnLTraded|sumM10PnLTraded|numTradedBlock|numTradedFlash|numTradedExchPI|numTradedExchEX|modifiedBy|modifiedIn|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 = 'accnt: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 = 'ResponderMarkupRC'

# 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|isDisabled|enabledUntil|expiryQtyAvail|tickerQtyAvail|transactFee|stockRate|moneyRate|ddivPv|divControl|respondFlex|incFeesInResp|roundRule|openExpiryQty|openTickerQty|cumFillQty|cumFillMoney|avgFillRate|isDivControlDisabled|uBid|uAsk|iDays|iYears|strike|rcEExPrem|strikePv|stockLendPv|revConPrem|effRevConLimit|limitPrice|effStockLendPv|effStockRate|numNotices|numNoticeBlock|numNoticeFlash|numNoticeExchPI|numNoticeExchEX|numNotMktPenny|numMktPenny1|numMktPenny2|numMktPenny3p|numNotMktNickle|numMktNickle1|numMktNickle2|numMktNickle3p|respDisabledSkips|stockDisabledSkips|cpFlagSkips|expiryRangeSkips|yearsRangeSkips|listedFlexSkips|noticePriceSkips|aggSizeLimitSkips|riskGroupLimitSkips|rootSkips|xDeltaRangeSkips|strikeRangeSkips|minVegaRatioSkips|probabilitySkips|numResponses|numRespondsBlock|numRespondsFlash|numResponsesExchPI|numResponsesExchEX|numFullSize|numAllocSize|numPriceMiss|numTooLate|numOtherMiss|numDidNotTrade|numTraded|qtyTraded|sumWidthTraded|sumSurfEdgeTraded|sumM1PnLTraded|sumM10PnLTraded|numTradedBlock|numTradedFlash|numTradedExchPI|numTradedExchEX|modifiedBy|modifiedIn|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 = 'accnt: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 = '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 = 'ResponderMarkupRC'

# Replace with fields you want to see aggregate values for. A "|" separated list of measures should be provided
MEASURE = 'ticker|isDisabled|enabledUntil|expiryQtyAvail|tickerQtyAvail|transactFee|stockRate|moneyRate|ddivPv|divControl|respondFlex|incFeesInResp|roundRule|openExpiryQty|openTickerQty|cumFillQty|cumFillMoney|avgFillRate|isDivControlDisabled|uBid|uAsk|iDays|iYears|strike|rcEExPrem|strikePv|stockLendPv|revConPrem|effRevConLimit|limitPrice|effStockLendPv|effStockRate|numNotices|numNoticeBlock|numNoticeFlash|numNoticeExchPI|numNoticeExchEX|numNotMktPenny|numMktPenny1|numMktPenny2|numMktPenny3p|numNotMktNickle|numMktNickle1|numMktNickle2|numMktNickle3p|respDisabledSkips|stockDisabledSkips|cpFlagSkips|expiryRangeSkips|yearsRangeSkips|listedFlexSkips|noticePriceSkips|aggSizeLimitSkips|riskGroupLimitSkips|rootSkips|xDeltaRangeSkips|strikeRangeSkips|minVegaRatioSkips|probabilitySkips|numResponses|numRespondsBlock|numRespondsFlash|numResponsesExchPI|numResponsesExchEX|numFullSize|numAllocSize|numPriceMiss|numTooLate|numOtherMiss|numDidNotTrade|numTraded|qtyTraded|sumWidthTraded|sumSurfEdgeTraded|sumM1PnLTraded|sumM10PnLTraded|numTradedBlock|numTradedFlash|numTradedExchPI|numTradedExchEX|modifiedBy|modifiedIn|timestamp'

# Replace with fields you want to see aggregated. A "|" separated list of fields should be provided
GROUP = 'isDisabled|divControl|respondFlex|incFeesInResp|roundRule|isDivControlDisabled|modifiedIn'

# 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 = 'accnt: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 = 'ResponderMarkupRC'

# 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 = 'accnt: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)

Post 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'

# Request Parameters
params = {
# Required Parameters
"apiKey": API_KEY,
"cmd": 'postmsgs',
"postaction": "U", # (U)pdate, (I)nsert, or (R)eplace
"postmerge": "Y", # (Y)es or (N)o
}

payload = {
"header": {
"mTyp": "ResponderMarkupRC"
},
"message": {
"pkey": {
"accnt": "exampleString", // string
"clientFirm": "exampleString", // string
"ekey": {
"at": "EQT",
"ts": "NMS",
"tk": "AAPL",
"dt": "2025-01-01"
},
"respSide": "enumValue" // enum(BuySell) - None Buy Sell
},
"ticker": {
"at": "EQT",
"ts": "NMS",
"tk": "AAPL"
},
"isDisabled": "enumValue", // enum(YesNo) - None, Yes, No
"enabledUntil": "2025-01-01 12:00:00.000000", // yyyy-MM-dd HH:mm:ss.SSSSSS
"expiryQtyAvail": 1, // int
"tickerQtyAvail": 1, // int
"transactFee": 1.0, // double
"stockRate": 1.0, // double
"moneyRate": 1.0, // double
"ddivPv": 1.0, // double
"divControl": "enumValue", // enum(DivControl) - None, DisableAny, DisableEstimates
"respondFlex": "enumValue", // enum(YesNo) - None, Yes, No
"incFeesInResp": "enumValue", // enum(YesNo) - None, Yes, No
"roundRule": "enumValue", // enum(RoundRule) - None, Exact, Fuzzy
"openExpiryQty": 1, // int
"openTickerQty": 1, // int
"cumFillQty": 1, // int
"cumFillMoney": 1.0, // double
"avgFillRate": 1.0, // double
"isDivControlDisabled": "enumValue", // enum(YesNo) - None, Yes, No
"uBid": 1.0, // double
"uAsk": 1.0, // double
"iDays": 1.0, // double
"iYears": 1.0, // double
"strike": 1.0, // double
"rcEExPrem": 1.0, // double
"strikePv": 1.0, // double
"stockLendPv": 1.0, // double
"revConPrem": 1.0, // double
"effRevConLimit": 1.0, // double
"limitPrice": 1.0, // double
"effStockLendPv": 1.0, // double
"effStockRate": 1.0, // double
"numNotices": 1, // long
"numNoticeBlock": 1, // long
"numNoticeFlash": 1, // long
"numNoticeExchPI": 1, // long
"numNoticeExchEX": 1, // long
"numNotMktPenny": 1, // long
"numMktPenny1": 1, // long
"numMktPenny2": 1, // long
"numMktPenny3p": 1, // long
"numNotMktNickle": 1, // long
"numMktNickle1": 1, // long
"numMktNickle2": 1, // long
"numMktNickle3p": 1, // long
"respDisabledSkips": 1, // long
"stockDisabledSkips": 1, // long
"cpFlagSkips": 1, // long
"expiryRangeSkips": 1, // long
"yearsRangeSkips": 1, // long
"listedFlexSkips": 1, // long
"noticePriceSkips": 1, // long
"aggSizeLimitSkips": 1, // long
"riskGroupLimitSkips": 1, // long
"rootSkips": 1, // long
"xDeltaRangeSkips": 1, // long
"strikeRangeSkips": 1, // long
"minVegaRatioSkips": 1, // long
"probabilitySkips": 1, // long
"numResponses": 1, // long
"numRespondsBlock": 1, // long
"numRespondsFlash": 1, // long
"numResponsesExchPI": 1, // long
"numResponsesExchEX": 1, // long
"numFullSize": 1, // long
"numAllocSize": 1, // long
"numPriceMiss": 1, // long
"numTooLate": 1, // long
"numOtherMiss": 1, // long
"numDidNotTrade": 1, // long
"numTraded": 1, // int
"qtyTraded": 1, // int
"sumWidthTraded": 1.0, // double
"sumSurfEdgeTraded": 1.0, // double
"sumM1PnLTraded": 1.0, // double
"sumM10PnLTraded": 1.0, // double
"numTradedBlock": 1, // long
"numTradedFlash": 1, // long
"numTradedExchPI": 1, // long
"numTradedExchEX": 1, // long
"modifiedBy": "exampleString", // string
"modifiedIn": "enumValue", // enum(SysEnvironment) - None, Neptune, Pluto, V7_Stable, V7_Latest, Saturn, Venus, Mars, SysTest, V7_Current
"timestamp": "2025-01-01 12:00:00.000000" // yyyy-MM-dd HH:mm:ss.SSSSSS
}
}

response = requests.post(MLINK_PROD_URL, params=params, json=payload)