Skip to main content
Version: Staging

Schema: FutOrderGateway (ID: 5150)

Records inserted, updated, or replaced into the FutureOrderGateway table are validated and then converted to SpdrParentOrder records and forwarded to the appropriate execution engine for futher processing. Parent orders can be inserted as either active/ready or in a wait start mode that requires subsequent release.

See the SpiderRock Execution Engine concept guide for more details.

METADATA

AttributeValue
Topic5120-srse-gateway
MLink TokenSystemData
SRSE ProductSRTrade

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

BODY

#FieldTypeComment
10=fkeyExpiryKey
11=accntstring(16)SR Account (default = primary account associated with SRSE login)
12=orderSideenum : BuySellOrder side. Values: Buy/Sell.
13=groupingCodelongClient supplied order
14=clientFirmstring(16)
103spdrActionTypeenum : SpdrActionType[Add (new order), AddReplace (add or replace order), Cancel (cxl existing), Replace (update existing only), Release (modify order active size)]
106altOrderIdstring(24)Alternate client order ID. This order ID will be copied to all execution reports.
109altAccntstring(32)alternate (client assigned) "long" account string (optional) [used to map between client and SR account strings]
112altUserNamestring(24)alternate (client assigned) user name (optional) [used to map between client and SR account strings]
385execBrkrCodestring(16)(optional) override the default execBrkrCode for this order
118externExDeststring(16)routing code for orders directed to an external order router (default = null); should match FixRoutingTable.destination (in SR accnt config)
121externParamstext1external algo names/parameters (usually just an algo name)
124strategystring(36)Client strategy string. This value will appear on the SR Trade Monitor and in execution reports.
130orderDttmDateTimeorder entry time (from client;if any)
133orderSizeintparent order size (contracts) [-1 = no change;used when spdrActionType=Release]
136orderActiveSizeinttotal activated size (total size released for execution) (-1 = all size available; 0 = staged/locked order)
139addCumFillQuantityenum : YesNoIf Yes then OrderSize is calculated @ order arrival as requested OrderSize + existing 'CumFillQuantity'.
142maxExposureSizeintmaximum simultaneous cumulative child order public size exposure (-1 = orderActiveSize) [order can overfill if > orderActiveSize and numMakeExchanges > 1]
145numMakeExchangesbytenumber of exchanges (1 - 4) on which to publish public making orders. Effective number might be less than requested number if sufficient exchanges are not available.
148publicSizeenum : PublicSizeHandlingpublic order size handling: None=use default size handling (usually limits public size to 'typical' market size); Randomize=randomize public size; MktSize=expose only 'typical' market size; FullSize=expose entire order size where possible
151randomizeSizeenum : YesNorandomize public order size
154canOverlapCxlReplenum : YesNocan execution engines overlap cancel/replace operations [order can overfill if YES] (at most one active overlapping cxl/replace operation for each parent order)
157progressRuleenum : ProgressRuleNone = all size immediately available;TWAP = size released in time intervals;VWAP = size released in volume intervals;
160twapSliceCntbyte[ProgressSliceCnt] number of progress slices to use. if none given will compute based on active size and duration. [max 20]
163progressExposeTimeintminimum time (secs) to expose order (0 = no minimum; used to guarantee that the order is exposed at mid-market for some time before actively taking)
166vwapParticipationfloattarget vwap participation rate (target % of trade activity)
169auctionResponderenum : AuctionResponderif set, parent order can be an auction responder
172triggerTypeenum : TriggerTypetype of trigger (PrintVol/SurfVol only for options) [print = print or actionable quote]
175triggerLevelfloatstop/trigger price for parent order to go active
178cxlUPrcRangeenum : UPrcCxlcancel parent order if/when outside min/max uPrc range [_Halt = also cancel if the security/underlier has been halted]
181minUBidfloat[optional]
184maxUAskfloat[optional] (< $0.01 = none)
187minMaxTypeenum : MinMaxTypeif Prc minUBid/maxUAsk are expressed as prices; if Pct then they are expresses as pct change since parent order arrival
190maxChildOrdersintmaximum number of child orders that can be generated by this parent order [order will terminate if/when this cap is reached;zero or neg = unlimited]
193spdrStageTypeenum : SpdrStageTypeSizeLock = stage pending modification (can reduce size); SizeModify = stage pending modification (can increase/reduce size)
377marketSessionenum : MarketSession
199startDttmDateTime[optional] (parent order start time)
202orderDurationint[optional] (number of seconds)
378activeDurationint
205goodTillDttmDateTime[optional] (default: 2000-01-01)
208startTypeenum : StartType[WaitTrigger]
214parentOrderHandlingenum : ParentOrderHandling
217parentBalanceHandlingenum : ParentBalanceHandling
220orderLimitTypeenum : SpdrLimitTypeVarious (Market, Prc, etc.); establishes the primary LimitPrice for a parent order
223takeLimitClassenum : SpdrLimitClassSimple = LimitPrice, Probability = BEST(LimitPrice, ProbLimit)
226makeLimitClassenum : SpdrLimitClassSimple = LimitPrice, Probability = BEST(LimitPrice, ProbLimit)
229takeReachRuleenum : ReachRuleNone = reach room immediately available; Delayed = available after [1-3] seconds; Passive = available if contra side aggresses; WeakOnly = only take if available size < avgMarketSize; ISOSweep = Intermarket Sweep [requires WaitTrigger]
232orderPrcLimitdoubleApplies if LimitType = Prc[]
235orderPrcOffsetdoubledefault=0
238takeAlphaTypeenum : AlphaTypeApplies if takeLimitClass = Probability
241makeAlphaTypeenum : AlphaTypeApplies if makeLimitClass = Probability
244takeAlphaFactorfloat[-2,+2] takeProbLimit = MAX(takeProbability, takeProbAvg + takeAlphaFactor * takeProbStd) [if takeAlphaType = Relative]
247makeAlphaFactorfloat[-2,+2] makeProbLimit = MAX(makeProbability, makeProbAvg + makeAlphaFactor * makeProbStd) [if makeAlphaType = Relative]
250takeProbabilityfloattakeProbLimit = takeProbability [if takeAlphaType = Static]
253makeProbabilityfloatmakeProbLimit = makeProbability [if makeAlphaType = Static]
256autoHedgeenum : AutoHedge
259hedgeSecKeyExpiryKeyauto-hedge instrument (either TickerKey or ExpiryKey) [hedgeSecKey cannot equal order.FKey]
262hedgeSecTypeenum : SpdrKeyTypeNone, Stock, or Future
265hedgeBetaRatiofloatPortion of executed $money to auto-hedge (can be 1.0 / Beta for beta hedging) [-4.0 to +4.0] (note: 0.0 will be interpreted as 1.0)
268hedgeScopeenum : HedgeScopeAuto-hedge at the RiskGroup or Accnt level
379hedgeSessionenum : MarketSession
274positionTypeenum : PositionType
277riskGroupIdlongAll group (grp) risk limits below are relative to this riskGroupId. Default: 0 (none). Required to be non-zero if autoHedge is something other than None.
380reqAuxRiskGroupCtrlenum : YesNo
381symDayDDeltaOffsetfloatmax acct+symbol day $delta offset (target)
316maxSymDayDDeltaLnfloatmax acct+symbol day $delta long (positive number;-1=no limit);risk limit = max limit - (current net counter - offset)
319maxSymDayDDeltaShfloatmax acct+symbol day $delta short (positive number;-1=no limit);risk limit = max limit + (current net counter - offset)
322maxGrpDayDDeltaLnfloatmax acct+riskGroup day $delta long (positive number;-1=no limit);risk limit = max limit - current net counter
325maxGrpDayDDeltaShfloatmax acct+riskGroup day $delta short (positive number;-1=no limit);risk limit = max limit + current net counter
382maxGrpDayContractsLnintmax acct+riskGroup day opt contracts long (positive number;-1=no limit);risk limit = max limit - current net counter
383maxGrpDayContractsShintmax acct+riskGroup day opt contracts short (positive number;-1=no limit);risk limit = max limit + current net counter
384maxGrpDayContractsAbsintmax acct+riskGroup day opt contracts abs (positive number;-1=no limit);risk limit = max limit - abs(current net counter)
328maxGrpDayRMetric1Lnfloatmax acct+riskGroup day rMetric1 long (positive number;-1=no limit);risk limit = max limit - current net counter
331maxGrpDayRMetric1Shfloatmax acct+riskGroup day rMetric1 short (positive number;-1=no limit);risk limit = max limit + current net counter
334maxGrpDayRMetric1Absfloatmax acct+riskGroup day rMetric1 abs (positive number;-1=no limit);risk limit = max limit - abs(current net counter)
337grpDayRMetric1Ratiofloattarget bot / sld ratio (eg ratio=0.5 means that neutral is bot rMetric1 = 0.5x sld rMetric1)
364traderNamestring(32)Name of the trader associated with the order
367userData1text1client supplied data field; passes through to parent and child executions and reports as well as FIX drops
370userData2text1client supplied data field; passes through to parent and child executions and reports as well as FIX drops
373childDatatext1client supplied data field; passes through to down stream child orders
376checksumbyteMust be set to 13. This helps detect some column/value misalignments.

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

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

# 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 = 'spdrActionType|altOrderId|altAccnt|altUserName|execBrkrCode|externExDest|externParams|strategy|orderDttm|orderSize|orderActiveSize|addCumFillQuantity|maxExposureSize|numMakeExchanges|publicSize|randomizeSize|canOverlapCxlRepl|progressRule|twapSliceCnt|progressExposeTime|vwapParticipation|auctionResponder|triggerType|triggerLevel|cxlUPrcRange|minUBid|maxUAsk|minMaxType|maxChildOrders|spdrStageType|marketSession|startDttm|orderDuration|activeDuration|goodTillDttm|startType|parentOrderHandling|parentBalanceHandling|orderLimitType|takeLimitClass|makeLimitClass|takeReachRule|orderPrcLimit|orderPrcOffset|takeAlphaType|makeAlphaType|takeAlphaFactor|makeAlphaFactor|takeProbability|makeProbability|autoHedge|hedgeSecKey|hedgeSecType|hedgeBetaRatio|hedgeScope|hedgeSession|positionType|riskGroupId|reqAuxRiskGroupCtrl|symDayDDeltaOffset|maxSymDayDDeltaLn|maxSymDayDDeltaSh|maxGrpDayDDeltaLn|maxGrpDayDDeltaSh|maxGrpDayContractsLn|maxGrpDayContractsSh|maxGrpDayContractsAbs|maxGrpDayRMetric1Ln|maxGrpDayRMetric1Sh|maxGrpDayRMetric1Abs|grpDayRMetric1Ratio|traderName|userData1|userData2|childData|checksum'

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

# Replace with your desired view. A "|" separated list of views can be provided
# If no view is provided, all views will be returned
VIEW = 'spdrActionType|altOrderId|altAccnt|altUserName|execBrkrCode|externExDest|externParams|strategy|orderDttm|orderSize|orderActiveSize|addCumFillQuantity|maxExposureSize|numMakeExchanges|publicSize|randomizeSize|canOverlapCxlRepl|progressRule|twapSliceCnt|progressExposeTime|vwapParticipation|auctionResponder|triggerType|triggerLevel|cxlUPrcRange|minUBid|maxUAsk|minMaxType|maxChildOrders|spdrStageType|marketSession|startDttm|orderDuration|activeDuration|goodTillDttm|startType|parentOrderHandling|parentBalanceHandling|orderLimitType|takeLimitClass|makeLimitClass|takeReachRule|orderPrcLimit|orderPrcOffset|takeAlphaType|makeAlphaType|takeAlphaFactor|makeAlphaFactor|takeProbability|makeProbability|autoHedge|hedgeSecKey|hedgeSecType|hedgeBetaRatio|hedgeScope|hedgeSession|positionType|riskGroupId|reqAuxRiskGroupCtrl|symDayDDeltaOffset|maxSymDayDDeltaLn|maxSymDayDDeltaSh|maxGrpDayDDeltaLn|maxGrpDayDDeltaSh|maxGrpDayContractsLn|maxGrpDayContractsSh|maxGrpDayContractsAbs|maxGrpDayRMetric1Ln|maxGrpDayRMetric1Sh|maxGrpDayRMetric1Abs|grpDayRMetric1Ratio|traderName|userData1|userData2|childData|checksum'

# 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 = 'spdrActionType: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 = 'FutOrderGateway'

# Replace with fields you want to see aggregate values for. A "|" separated list of measures should be provided
MEASURE = 'spdrActionType|altOrderId|altAccnt|altUserName|execBrkrCode|externExDest|externParams|strategy|orderDttm|orderSize|orderActiveSize|addCumFillQuantity|maxExposureSize|numMakeExchanges|publicSize|randomizeSize|canOverlapCxlRepl|progressRule|twapSliceCnt|progressExposeTime|vwapParticipation|auctionResponder|triggerType|triggerLevel|cxlUPrcRange|minUBid|maxUAsk|minMaxType|maxChildOrders|spdrStageType|marketSession|startDttm|orderDuration|activeDuration|goodTillDttm|startType|parentOrderHandling|parentBalanceHandling|orderLimitType|takeLimitClass|makeLimitClass|takeReachRule|orderPrcLimit|orderPrcOffset|takeAlphaType|makeAlphaType|takeAlphaFactor|makeAlphaFactor|takeProbability|makeProbability|autoHedge|hedgeSecKey|hedgeSecType|hedgeBetaRatio|hedgeScope|hedgeSession|positionType|riskGroupId|reqAuxRiskGroupCtrl|symDayDDeltaOffset|maxSymDayDDeltaLn|maxSymDayDDeltaSh|maxGrpDayDDeltaLn|maxGrpDayDDeltaSh|maxGrpDayContractsLn|maxGrpDayContractsSh|maxGrpDayContractsAbs|maxGrpDayRMetric1Ln|maxGrpDayRMetric1Sh|maxGrpDayRMetric1Abs|grpDayRMetric1Ratio|traderName|userData1|userData2|childData|checksum'

# Replace with fields you want to see aggregated. A "|" separated list of fields should be provided
GROUP = 'spdrActionType|addCumFillQuantity|publicSize|randomizeSize|canOverlapCxlRepl|progressRule|auctionResponder|triggerType|cxlUPrcRange|minMaxType|spdrStageType|marketSession|startType|parentOrderHandling|parentBalanceHandling|orderLimitType|takeLimitClass|makeLimitClass|takeReachRule|takeAlphaType|makeAlphaType|autoHedge|hedgeSecType|hedgeScope|hedgeSession|positionType|reqAuxRiskGroupCtrl'

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

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