Skip to main content
Version: 8.6.10.4

Schema: FutExpiryDefinitionV3 (ID: 9121)

One row per futures contract - the expiry-rung counterpart of OptExpiryDefinitionV3.

A PRODUCT CARRIES A RULE, A CONTRACT CARRIES DATES AND TERMS. The listing rule (listingCycle, undExpiryRule) is on CCodeDefinitionV3; the resolved dates for one contract are here.

Margin is not here - SpanRiskParameters (4370) keeps it.

METADATA​

AttributeValue
Topic9100-product-def-core
MLink TokenFutureDefinition
MLink EndpointMLink-Live
SRSE ProductSRReference

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

BODY​

#FieldTypeDefault ValueComment
10=fkeyExpiryKeyccode + contract month
100ccodeTickerKeythe product - CCodeDefinitionV3; also fkey.TickerKey, stored for the reverse index
103lastTradeDateDateKeyfinal trading day for this contract
106firstNoticeDateDateKeyfirst notice day; empty = not supplied. Cash settlement is settleMethod, never an absent date
109firstDeliveryDateDateKeyfirst day delivery may occur; empty = not supplied
112lastDeliveryDateDateKeylast day delivery may occur; empty = not supplied
115finalSettleDateDateKeywhen the final settlement price is struck
118contractMonthDateKeythe delivery month itself; NOT derivable from fkey where the code and month differ
121underliersPerCndoubleoverrides CCodeDefinitionV3; double because CME sizes can be fractional
124tickValuefloatcash value of one minTickSize move, in the contract currency
127minTickSizedoublesmallest price increment for this contract
130settleMethodenum : SettleMethoda mid-life change to cash settlement leaves old contracts physical
160decayQtyintdaily decay quantity; 0 = does not decay
163decayStartDateDateKeydate decayQty starts reducing the contract size; empty when it does not decay
166contractSizefloatdeliverable quantity, in CCodeDefinitionV3.contractUnit
169minLotSizeshortminimum tradeable lot
172contMultiplierfloatdeliverable multiplier
175parValuefloatper-contract par value
178productTermenum : ProductTermMonth / Week / BalanceOfMonth / Quarter / Season ...
133spotMonthLimitintapplies while this contract is the spot month; -1 = unrestricted, 0 = not supplied
136singleMonthLimitint-1 = unrestricted, 0 = not supplied; a venue never publishes a limit of zero
151statusFlagenum : TkStatusFlagActive or Delisted. A delisted row stays resolvable and is never deleted
154pendingDeleteenum : YesNoYes = queued for removal; stop resolving against this row
181exchSymbolstring(30)the venue's full text symbol for this contract; empty when the venue assigns none
184priceRatiodoubleprice ratio for interest-rate inter-commodity spreads
900v3Sourceenum : V3SourceBridge = projected from a legacy record; Loader = written natively. None reads as Loader
157timestampDateTimewhen this row was last written
187displayFactordoublevenue display multiplier for quoted prices (CME tag 9787); 0 = not supplied
190productTypeenum : ProductTypethe venue's contract type (Outright, TAS, TAA, BIC ...); an execution engine completes a TAS fill as TAS
193lastTradeDttmDateTimethe venue's last-trade timestamp, time of day included; lastTradeDate is its date
196dividendPeriodStartDateKeyfirst ex-date the contract counts
199dividendPeriodEndDateKeylast ex-date the contract counts

REPEATING FIELDS​

Deliverable

#FieldTypeDefault ValueComment
142bondKeyOptionKeythe deliverable issue
145conversionFactordoublescaled per CCodeDefinitionV3.conversionFactorScale
148isDeliverableenum : YesNorows are RETAINED when eligibility lapses, so a delivered basket stays reconstructable

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

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

# 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 = 'ccode|lastTradeDate|firstNoticeDate|firstDeliveryDate|lastDeliveryDate|finalSettleDate|contractMonth|underliersPerCn|tickValue|minTickSize|settleMethod|decayQty|decayStartDate|contractSize|minLotSize|contMultiplier|parValue|productTerm|spotMonthLimit|singleMonthLimit|statusFlag|pendingDelete|exchSymbol|priceRatio|v3Source|timestamp|displayFactor|productType|lastTradeDttm|dividendPeriodStart|dividendPeriodEnd'

# 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 = 'exchSymbol: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 = 'FutExpiryDefinitionV3'

# Replace with your desired view. A "|" separated list of views can be provided
# If no view is provided, all views will be returned
VIEW = 'ccode|lastTradeDate|firstNoticeDate|firstDeliveryDate|lastDeliveryDate|finalSettleDate|contractMonth|underliersPerCn|tickValue|minTickSize|settleMethod|decayQty|decayStartDate|contractSize|minLotSize|contMultiplier|parValue|productTerm|spotMonthLimit|singleMonthLimit|statusFlag|pendingDelete|exchSymbol|priceRatio|v3Source|timestamp|displayFactor|productType|lastTradeDttm|dividendPeriodStart|dividendPeriodEnd'

# 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 = 'exchSymbol: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 = 'ccode: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 = 'FutExpiryDefinitionV3'

# Replace with fields you want to see aggregate values for. A "|" separated list of measures should be provided
MEASURE = 'ccode|lastTradeDate|firstNoticeDate|firstDeliveryDate|lastDeliveryDate|finalSettleDate|contractMonth|underliersPerCn|tickValue|minTickSize|settleMethod|decayQty|decayStartDate|contractSize|minLotSize|contMultiplier|parValue|productTerm|spotMonthLimit|singleMonthLimit|statusFlag|pendingDelete|exchSymbol|priceRatio|v3Source|timestamp|displayFactor|productType|lastTradeDttm|dividendPeriodStart|dividendPeriodEnd'

# Replace with fields you want to see aggregated. A "|" separated list of fields should be provided
GROUP = 'settleMethod|productTerm|statusFlag|pendingDelete|v3Source|productType'

# 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 = 'exchSymbol: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 = 'FutExpiryDefinitionV3'

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