Schema: CCodeDefinitionV3 (ID: 9115)
Commodity code (product code) definitions for all futures, and the ccode -> SpiderRock ticker map. Sourced from listing exchange product definitions. Also covers exchange and user-defined spreads, including spreads used as option underliers; SpiderRock uses a compact form of the exchange spread product ID as the ccode where no human-readable exchange ticker exists. A family head begins with '@'; no product key or uplink does.
Two links. Field 103 ticker is the LINE the product derives from: a single-name product names its equity line
(the EquityDefinitionV3 9106 row with the ISIN), an index product its index line (IndexDefinitionV3 9109), a
dividend product its parent's dividend line; a commodity, rate, FX or futures-on-futures product, and any product
its region cannot resolve, names itself. Never a @ head. Nothing hangs on an obligor. Field 250 familyHead is
the FAMILY: one venue's products on one underlier, @[underlier]-[venue]-FUT, a head a loader names after its
outright (@ES), or a declared family (the common US families: ES and MES under @ES, VXM and its TAS under@VIXMIN), whose Primary is declared with it. Every product is its own complex; a head answers through the family's Primary.
DOMAIN TERMS ARE ATTACHED RECORDS on the same ccode pkey, not fields here: RepoTermsDefinitionV3 9245, TbaTermsDefinitionV3 9248, SwapTermsDefinitionV3 9251, ReceiptBasketDefinitionV3 9254.
READ symbolType TO CLASSIFY THE CCODE (CCode | RepoProduct | TbaContract | SwapProduct | CommodityProduct), never the presence of a terms record.
METADATA
| Attribute | Value |
|---|---|
| Topic | 9100-product-def-core |
| MLink Token | FutureDefinition |
| MLink Endpoint | MLink-Live |
| SRSE Product | SRReference |
Note: The symbol
=next to a field number indicates that it is a primary key.
BODY
| # | Field | Type | Default Value | Comment |
|---|---|---|---|---|
| 10= | ccode | TickerKey | the futures product code; AT and TS identify the universe it belongs to | |
| 100 | mic | string(4) | ISO 10383 listing venue | |
| 103 | ticker | TickerKey | the line the product derives from and settles into, else the product itself; never a @ head | |
| 106 | settleTime | enum : SettleTime | Settlement time: None; PM; AM | |
| 109 | positionLimit | int | max contract limit | |
| 112 | tickValue | float | $NLV value of a single tick change in display premium (pointValue = tickValue / tickSize) | |
| 115 | pointValue | float | $NLV value of a single point change in display premium (pointValue = tickValue / tickSize) | |
| 118 | pointCurrency | string(3) | ISO 4217 currency pointValue is denominated in | |
| 121 | priceScaling | float | underlying price scale factor - products where the underlying quotes in cents will have 0.01 | |
| 124 | underliersPerCn | int | the product's standard contract size: shares, index units or currency units per contract | |
| 127 | underlierType | enum : UnderlierType | what the product derives from: Equity, Index, Rate, Commodity, FX; Other = unclassified | |
| 190 | contractUnit | enum : ContractUnit | BBL, MMBTU, LBS, CTRCT, ... | |
| 196 | tradeCurr | string(3) | unit the contract is quoted in: ISO 4217, or GBX where the venue quotes pence; money is pointCurrency | |
| 199 | settleCurr | string(3) | ISO 4217 currency the contract settles in | |
| 202 | strikeCurr | string(3) | unit strikes are quoted in: ISO 4217, or GBX for pence strikes | |
| 205 | priceFormat | enum : PriceFormat | the quote convention for this product | |
| 130 | clearingCode | string(6) | GMI/Clearing code | |
| 151 | displayPriceScaling | float | internal display price scale factor override | |
| 154 | strikeScaling | float | internal strike price scale factor override | |
| 157 | description | string(48) | product description | |
| 160 | marketCenter | string(48) | market center, eg "ICE Market Type", "CME MarketGroup" | |
| 165 | tradingPeriod | enum : TradingPeriod | the rotation rule that sets this product's trade date - TradingPeriodDefinitionV3 9015 | |
| 170 | isHftTaxLiable | enum : YesNo | if Yes futures in this ccode grouping are liable for high frequency taxation and require hft throttling for maker algos | |
| 175 | hftTaxTriggerTime | double | value in seconds that any order activity (new, cancel, update) needs witheld for to prevent triggering hft (default .5 seconds per Italian tax) | |
| 185 | clearVenue | string(8) | ClearVenueDefinitionV3 - where contracts in this ccode clear | |
| 900 | v3Source | enum : V3Source | Bridge = projected from a legacy record; Loader = written natively. None reads as Loader | |
| 163 | timestamp | DateTime | when this row was last written | |
| 208 | scheduleGroup | string(6) | -> ScheduleDefinitionV3 9057; empty = '*' | |
| 211 | marketSegmentId | string(24) | venue market segment id | |
| 214 | productGroup | string(6) | venue product group (CME Asset) | |
| 217 | securityGroup | string(6) | venue security group (CME SecurityGroup) | |
| 220 | settlementDays | byte | T+n of the current regime; 0 means T+0, never unknown | |
| 223 | flexTypeFlag | flag : FlexTypeFlag | FLEX series types that may be MINTED on this underlier; None = no FLEX. A FLEX order mints a root before any root exists | |
| 226 | bbgYrCode | enum : BbgYrCode | Bloomberg year-code convention for this product; history and the FIX symbol builders read it | |
| 229 | hasOptions | enum : YesNo | HINT: options list on this product; subscription filter only, never a pricing or risk branch | |
| 235 | liveRateKey | TickerKey | empty = $MRGN-<pointCurrency>-RATE | |
| 238 | minTickSize | double | the product's tick: the smallest its contracts state | |
| 241 | role | enum : FamilyRole | ||
| 244 | defaultRoot | TickerKey | ||
| 247 | productKind | enum : FuturesProductKind | Outright, Physical, DividendAdjusted, TotalReturn, Dividend, Variance, Volatility, TradeAtSettlement, TradeAtMarker, BasisTradeAtClose (a BTIC quotes a basis to the index close; none of the last three is ever a Primary) | |
| 250 | familyHead | TickerKey |
Get Schema API Call
- Python
- cUrl
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 = 'CCodeDefinitionV3'
# 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)
curl -G 'https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json' \
--data-urlencode 'apiKey=XXXX-XXXX-XXXX-XXXX' \
--data-urlencode 'cmd=getschema' \
--data-urlencode 'msgType=CCodeDefinitionV3'
Get Msg API Call
- Python
- cUrl
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 = 'CCodeDefinitionV3'
# 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 = 'mic|ticker|settleTime|positionLimit|tickValue|pointValue|pointCurrency|priceScaling|underliersPerCn|underlierType|contractUnit|tradeCurr|settleCurr|strikeCurr|priceFormat|clearingCode|displayPriceScaling|strikeScaling|description|marketCenter|tradingPeriod|isHftTaxLiable|hftTaxTriggerTime|clearVenue|v3Source|timestamp|scheduleGroup|marketSegmentId|productGroup|securityGroup|settlementDays|flexTypeFlag|bbgYrCode|hasOptions|liveRateKey|minTickSize|role|defaultRoot|productKind|familyHead'
# 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 = 'mic: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)
curl -G 'https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json' \
--data-urlencode 'apiKey=XXXX-XXXX-XXXX-XXXX' \
--data-urlencode 'cmd=getmsg' \
--data-urlencode 'pkey=ReplaceThisValueForTheQueryToWork' \
--data-urlencode 'msgType=CCodeDefinitionV3' \
--data-urlencode 'view=mic|ticker|settleTime|positionLimit|tickValue|pointValue|pointCurrency|priceScaling|underliersPerCn|underlierType|contractUnit|tradeCurr|settleCurr|strikeCurr|priceFormat|clearingCode|displayPriceScaling|strikeScaling|description|marketCenter|tradingPeriod|isHftTaxLiable|hftTaxTriggerTime|clearVenue|v3Source|timestamp|scheduleGroup|marketSegmentId|productGroup|securityGroup|settlementDays|flexTypeFlag|bbgYrCode|hasOptions|liveRateKey|minTickSize|role|defaultRoot|productKind|familyHead' \
--data-urlencode 'where=mic:eq:ExampleString'
Get Msgs API Call
- Python
- cUrl
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 = 'CCodeDefinitionV3'
# Replace with your desired view. A "|" separated list of views can be provided
# If no view is provided, all views will be returned
VIEW = 'mic|ticker|settleTime|positionLimit|tickValue|pointValue|pointCurrency|priceScaling|underliersPerCn|underlierType|contractUnit|tradeCurr|settleCurr|strikeCurr|priceFormat|clearingCode|displayPriceScaling|strikeScaling|description|marketCenter|tradingPeriod|isHftTaxLiable|hftTaxTriggerTime|clearVenue|v3Source|timestamp|scheduleGroup|marketSegmentId|productGroup|securityGroup|settlementDays|flexTypeFlag|bbgYrCode|hasOptions|liveRateKey|minTickSize|role|defaultRoot|productKind|familyHead'
# 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 = 'mic: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 = 'mic: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)
curl -G 'https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json' \
--data-urlencode 'apiKey=XXXX-XXXX-XXXX-XXXX' \
--data-urlencode 'cmd=getmsgs' \
--data-urlencode 'msgType=CCodeDefinitionV3' \
--data-urlencode 'view=mic|ticker|settleTime|positionLimit|tickValue|pointValue|pointCurrency|priceScaling|underliersPerCn|underlierType|contractUnit|tradeCurr|settleCurr|strikeCurr|priceFormat|clearingCode|displayPriceScaling|strikeScaling|description|marketCenter|tradingPeriod|isHftTaxLiable|hftTaxTriggerTime|clearVenue|v3Source|timestamp|scheduleGroup|marketSegmentId|productGroup|securityGroup|settlementDays|flexTypeFlag|bbgYrCode|hasOptions|liveRateKey|minTickSize|role|defaultRoot|productKind|familyHead' \
--data-urlencode 'where=mic:eq:ExampleString' \
--data-urlencode 'limit=500' \
--data-urlencode 'order=mic:ASC'
Get Aggregate API Call
- Python
- cUrl
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 = 'CCodeDefinitionV3'
# Replace with fields you want to see aggregate values for. A "|" separated list of measures should be provided
MEASURE = 'mic|ticker|settleTime|positionLimit|tickValue|pointValue|pointCurrency|priceScaling|underliersPerCn|underlierType|contractUnit|tradeCurr|settleCurr|strikeCurr|priceFormat|clearingCode|displayPriceScaling|strikeScaling|description|marketCenter|tradingPeriod|isHftTaxLiable|hftTaxTriggerTime|clearVenue|v3Source|timestamp|scheduleGroup|marketSegmentId|productGroup|securityGroup|settlementDays|flexTypeFlag|bbgYrCode|hasOptions|liveRateKey|minTickSize|role|defaultRoot|productKind|familyHead'
# Replace with fields you want to see aggregated. A "|" separated list of fields should be provided
GROUP = 'settleTime|underlierType|contractUnit|priceFormat|tradingPeriod|isHftTaxLiable|v3Source|bbgYrCode|hasOptions|role|productKind'
# 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 = 'mic: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)
curl -G 'https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json' \
--data-urlencode 'apiKey=XXXX-XXXX-XXXX-XXXX' \
--data-urlencode 'cmd=getaggregate' \
--data-urlencode 'msgType=CCodeDefinitionV3' \
--data-urlencode 'measure=mic|ticker|settleTime|positionLimit|tickValue|pointValue|pointCurrency|priceScaling|underliersPerCn|underlierType|contractUnit|tradeCurr|settleCurr|strikeCurr|priceFormat|clearingCode|displayPriceScaling|strikeScaling|description|marketCenter|tradingPeriod|isHftTaxLiable|hftTaxTriggerTime|clearVenue|v3Source|timestamp|scheduleGroup|marketSegmentId|productGroup|securityGroup|settlementDays|flexTypeFlag|bbgYrCode|hasOptions|liveRateKey|minTickSize|role|defaultRoot|productKind|familyHead' \
--data-urlencode 'group=settleTime|underlierType|contractUnit|priceFormat|tradingPeriod|isHftTaxLiable|v3Source|bbgYrCode|hasOptions|role|productKind' \
--data-urlencode 'where=mic:eq:ExampleString'
Get Count API Call
- Python
- cUrl
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 = 'CCodeDefinitionV3'
# 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 = 'mic: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)
curl -G 'https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json' \
--data-urlencode 'apiKey=XXXX-XXXX-XXXX-XXXX' \
--data-urlencode 'cmd=getcount' \
--data-urlencode 'msgType=CCodeDefinitionV3' \
--data-urlencode 'where=mic:eq:ExampleString'