Skip to main content
Version: Upcoming

Schema: SpdrChildExecution (ID: 1535)

SpdrChildExecution records are published when a child order fill is received. These records update if busted or corrected by a downstream venue.

SpdrChildExecution records are published to the SpiderRock elastic cluster as they arrive.

METADATA

AttributeValue
Topic1525-child-orders
MLink TokenInternal
MLink EndpointMLink-Live
SRSE Product

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

BODY

#FieldTypeDefault ValueComment
10=fillNumberlongSR fill number (same as SpdrParentOrder.pkey.fillNumber)
100sysRealmenum : SysRealm
103sysEnvironmentenum : SysEnvironmentoriginal (source) sys environment [Stable, Current, etc]
106runStatusenum : RunStatusoriginal (source) run status [Prod,Beta]
109clOrdIdlongSR child order clOrdId, or CrossID on cross orders.
112childShapeenum : SpdrOrderShape
115execShapeenum : ExecShape
118streetClOrdIdstring(24)usually clOrdID.X16 but can be different if street gateway was translating clOrdId
121streetOrderIdstring(24)street side order ID (for canceling order)
124sideClOrdIdlongCross Side ClOrdId. From ChildOrder.custClOrdId, or ChildOrder.FaceSideList.alloclOrdID
127parentNumberlongparent order number
130parentVersionshortSPDR order instance number (1 = original order; 2 = 1st cancel/replace, etc)
133baseParentNumberlongbase order number (first parent number in chain)
136accntstring(16)SR trading accnt
139clientFirmstring(16)SR client firm
142coreClientFirmstring(16)
145sponsorClientFirmstring(16)
148faceSideenum : FaceSide
151faceShapeenum : FaceShapeCrossCust = split broker / cust side, CrossFace = split broker / face side, CrossBoth = single broker cross
154faceSideClOrdIdlongeither custClOrdId, faceClOrdId, or zero
157secKeyOptionKey
160secTypeenum : SpdrKeyType
163tickerTickerKey
166orderSideenum : BuySell
169priceTypeenum : PriceType
172orderExchint
175orderExDeststring(16)
178isoSweepenum : YesNo
181isDirectedenum : YesNochild order isDirected flag
184engineNamestring(32)SpiderRock execution engine that handled the parent order
187gatewayNamestring(20)StreetGateway server than handled the child order (if any)
190routingCodetext1
193relationshipTypeenum : RelationshipTypetype of SR <-> client relationship
196firmTypeenum : FirmTypefirm type markup on child order
199orderCapacityenum : OrderCapacityorder capacity markup on child order
202ssaleFlagenum : ShortSaleFlagshort sale flag @ child order send
205positionTypeenum : PositionTypeposition type @ child order send
208locateQuanintlocate quantity @ child order send
211orderStatusenum : OrderStatus
214cumFillQuantityintcopied from child order immediately after this fill has been incorporated
217avgFillPricedouble
220leavesQtyint
223legRatioushort
226fillProcDetailtext1
229execTransTypeenum : ExecTransType
232versionbytecancel/correct version number (initial fill is version=1)
235fillTsdoublefill report ts (seconds since startup; 100 nanosec resolution)
238fillDttmDateTimefill DateTime (from SRDateTime)
241fillSizeintfill size (from execReport.lastSize)
244fillSideenum : BuySellfill side (from execReport.side)
247fillPricedoublefill price (from execReport.lastPrice)
250fillTransactDttmDateTimefill DateTime (from execReport.fillDttm)
253fillMarketstring(8)fill market (from execReport.lastMarket)
256fillSRLiqTagstring(2)fill SR normalized liquidity tag
259fillExchLiqTagstring(4)fill exchange liquidity code
262fillExchDetailtext1other fix tags (tag:value#tag:value) [additional detail used for analysis]
265fillExchFeefloatfill exchange fee (either estimated by SR or as reported by street gateway)
268fillExecIdtext1fill execution id (from execReport.execId)
271fillRefExecIdtext1fill ref execution id (from execReport.refExecId) [only set on a cancel or correct]
274fillLegRefIdlongfill leg ref id (from execReport.legRefId)
277fillLegRatiointlegRatio (if spread order)
280fillFirmTypestring(16)fill firm type (as reported from street side)
283fillExecBrokerstring(16)fill execution broker (as reported from street side)
286altBrkrMPIDstring(8)alternative broker MPID for a given route (if needed)
289fillOrderCapacityenum : OrderCapacityfill order capacity (as reported from street side)
292fillReportDetailtext1all non-standard fix tags received on child fill report (custom packing) [used for passing values back to client or drop gateways]
295fillStreetTexttext1
298crossSideenum : CrossSideindicates if this order was the initiator or responder of the cross fill (None if not cross)
301isCrossBreakupFillenum : YesNocross order was broken up on exchange, and this execution was filled by party not specified on the original cross order
304completionTypeenum : CompletionTypeNone, DAC, POC, TAS, TACO, BTIC
307completionStateenum : CompletionState
310completionPricedoublecompletion trade price (final trade price)
313completionSecKeyOptionKeyfinal settlement secKey (contract that DAC, TAS, TACO, etc. will convert to; might not be valid until completed)
316completionSecTypeenum : SpdrKeyTypeusually Future or Option (None if not yet valid)
319locateFirmstring(6)firm granting the locate (also locate firm used on street FIX orders)
322srcTimestamplongsource timestamp (fixMessage.sendingTime) from street side [might not be high precision]
325sgwTimestamplongstreet gateway arrival timestamp
328engTimestamplongexecution engine arrival timestamp
331timestampDateTime

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

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

# 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 = 'sysRealm|sysEnvironment|runStatus|clOrdId|childShape|execShape|streetClOrdId|streetOrderId|sideClOrdId|parentNumber|parentVersion|baseParentNumber|accnt|clientFirm|coreClientFirm|sponsorClientFirm|faceSide|faceShape|faceSideClOrdId|secKey|secType|ticker|orderSide|priceType|orderExch|orderExDest|isoSweep|isDirected|engineName|gatewayName|routingCode|relationshipType|firmType|orderCapacity|ssaleFlag|positionType|locateQuan|orderStatus|cumFillQuantity|avgFillPrice|leavesQty|legRatio|fillProcDetail|execTransType|version|fillTs|fillDttm|fillSize|fillSide|fillPrice|fillTransactDttm|fillMarket|fillSRLiqTag|fillExchLiqTag|fillExchDetail|fillExchFee|fillExecId|fillRefExecId|fillLegRefId|fillLegRatio|fillFirmType|fillExecBroker|altBrkrMPID|fillOrderCapacity|fillReportDetail|fillStreetText|crossSide|isCrossBreakupFill|completionType|completionState|completionPrice|completionSecKey|completionSecType|locateFirm|srcTimestamp|sgwTimestamp|engTimestamp|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 = 'streetClOrdId: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 = 'SpdrChildExecution'

# Replace with your desired view. A "|" separated list of views can be provided
# If no view is provided, all views will be returned
VIEW = 'sysRealm|sysEnvironment|runStatus|clOrdId|childShape|execShape|streetClOrdId|streetOrderId|sideClOrdId|parentNumber|parentVersion|baseParentNumber|accnt|clientFirm|coreClientFirm|sponsorClientFirm|faceSide|faceShape|faceSideClOrdId|secKey|secType|ticker|orderSide|priceType|orderExch|orderExDest|isoSweep|isDirected|engineName|gatewayName|routingCode|relationshipType|firmType|orderCapacity|ssaleFlag|positionType|locateQuan|orderStatus|cumFillQuantity|avgFillPrice|leavesQty|legRatio|fillProcDetail|execTransType|version|fillTs|fillDttm|fillSize|fillSide|fillPrice|fillTransactDttm|fillMarket|fillSRLiqTag|fillExchLiqTag|fillExchDetail|fillExchFee|fillExecId|fillRefExecId|fillLegRefId|fillLegRatio|fillFirmType|fillExecBroker|altBrkrMPID|fillOrderCapacity|fillReportDetail|fillStreetText|crossSide|isCrossBreakupFill|completionType|completionState|completionPrice|completionSecKey|completionSecType|locateFirm|srcTimestamp|sgwTimestamp|engTimestamp|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 = 'streetClOrdId: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 = 'sysRealm: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 = 'SpdrChildExecution'

# Replace with fields you want to see aggregate values for. A "|" separated list of measures should be provided
MEASURE = 'sysRealm|sysEnvironment|runStatus|clOrdId|childShape|execShape|streetClOrdId|streetOrderId|sideClOrdId|parentNumber|parentVersion|baseParentNumber|accnt|clientFirm|coreClientFirm|sponsorClientFirm|faceSide|faceShape|faceSideClOrdId|secKey|secType|ticker|orderSide|priceType|orderExch|orderExDest|isoSweep|isDirected|engineName|gatewayName|routingCode|relationshipType|firmType|orderCapacity|ssaleFlag|positionType|locateQuan|orderStatus|cumFillQuantity|avgFillPrice|leavesQty|legRatio|fillProcDetail|execTransType|version|fillTs|fillDttm|fillSize|fillSide|fillPrice|fillTransactDttm|fillMarket|fillSRLiqTag|fillExchLiqTag|fillExchDetail|fillExchFee|fillExecId|fillRefExecId|fillLegRefId|fillLegRatio|fillFirmType|fillExecBroker|altBrkrMPID|fillOrderCapacity|fillReportDetail|fillStreetText|crossSide|isCrossBreakupFill|completionType|completionState|completionPrice|completionSecKey|completionSecType|locateFirm|srcTimestamp|sgwTimestamp|engTimestamp|timestamp'

# Replace with fields you want to see aggregated. A "|" separated list of fields should be provided
GROUP = 'sysRealm|sysEnvironment|runStatus|childShape|execShape|faceSide|faceShape|secType|orderSide|priceType|isoSweep|isDirected|relationshipType|firmType|orderCapacity|ssaleFlag|positionType|orderStatus|execTransType|fillSide|fillOrderCapacity|crossSide|isCrossBreakupFill|completionType|completionState|completionSecType'

# 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 = 'streetClOrdId: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 = 'SpdrChildExecution'

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