Order Entry Specs
This document describes the application level FIX messages used to submit and manage orders for equities, futures, and options, including single-leg and multi-leg variants.
This document is intended to be used in conjunction with the SpiderRock FIX Session Guide which describes session level message handling and other SpiderRock FIX conventions in more detail.
Please refer to the OrderManagement section of this site for more information about SpiderRock execution and order management algos and concepts.
Supported Order Types
DMA style orders - These are market or limit orders with a simple limit price and a designated exchange.
Smart/Sweep style orders - These market or limit orders, with a simple limit price, and no designated exchange. These orders will be routed to one or more exchanges at SpiderRock's discretion.
Algorithmic orders These are orders with complex algo behavior and complex price and size limits. They can both provide and interact with liquidity on any public exchange.
Multi-Leg orders - Also known as spread orders, these are orders to buy and sell orders with more than one option simulaneously. Multi-Leg orders can have DMA, Smart/Sweep, or Complex Algo style order handling. They can also work legs individually across all relevant exchanges.
Opening/Closing auctions - Orders designated for participation in either exchange opening or closing auctions.
Order Life Cyce
Delayed start time The order may contain a start time parameter to specify when an order becomes active.
Wait-start The order can be be staged so that it does not become active until released (active size is initially zero).
Staged The order is entered by one user, and activated by another user.
StageReview The order is entered by one trading system, and activated by another system (compliance/risk).
Stop Time The order stops working when the stop time is reached.
Order Duration The order stops working when the order duration is reached
Price Range Cancel The order stops working when an underlying price is reached.
User Cancel The order is explicitly cancelled by the client
Note: Orders can be staged, released, and cancelled by any combination of SpiderRock GUI tools, the SpiderRock SRSE API, and FIX messaging.
Application Messages
NewOrderSingle (Client to SpiderRock)
NewOrderSingle<D> messages are used to submit orders for single securities. Both the standard order types and algorithmic order types offered by SpiderRock are communicated using this message.
In addition to standard FIX fields, SpiderRock uses custom FIX fields with tag numbers in the range 5,000-5,999 for SpiderRock specific parameters.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = D | |||
11 | ClOrdId | Y | string | altOrderId | Client order ID (24 character max) |
1 | Account | Y | string | accnt | SR account acronym. Must be configured prior to testing or trading Account superceded by: SRAccnt |
100 | ExDestination | N | multiple-value string | exchMask | SR Destination Code (see appendix) Required for DMA style orders Superceded by: SRExDestination |
40 | OrdType | N | char | orderLimitType | 1 = Market 2 = Limit 5 = Market on Close B = Limit on Close Required for DMA and Smart/Sweep style orders. Not required for more complex order types. If necessary, use Market as the order type when submitting orders with more complex behavior. Superceded by: SROrderLimitType |
44 | Price | N | float | orderPrcLimit | Required for limit order types Superceded by: SROrderPrcLimit |
59 | TimeInForce | N | string | orderDuration parentOrderHandling | 0 = Day 2 = Opening 3 = Immediate or Cancel (IOC) 6 = Good Till Date/Time (or Duration) 7 = Closing OrderDuration superceded by: SROrderDuration SRTimeInForce ParentOrderHandling superceded by SROrderHandling |
207 | SecurityExchange | N | string | secKey | Currently Ignored Market used to identify a security's issuing authority (see Appendix A for those accepted by SpiderRock) For Futures products: the issuing authority must be supplied For Equities and Equity Options in which the issuing authority SecurityExchange<207> is not explicitly supplied, NMS is assumed. Superceded by: SRSecKey |
461 | CFICode | N | string | seckey | Currently Ignored ES = Equity Common Shares [CS] F = Future [FUT] OC = Option - Call [OPT] OP = Option - Put [OPT] |
201 | PutOrCall | N | int | secKey | Alternative to CFICode<461> 0 = Put 1 = Call Superceded by: SRSecKey |
167 | SecurityType | N | string | secType | Alternative to CFICode<461> CS = Equity default FUT = Future/Future Options OPT = Equity Option Superceded by: SRSecType |
55 | Symbol | Y | string | secKey | Exchange symbol May incorporate symbol suffix (e.g. VIA.A) For OPRA options, SpiderRock accepts an OSI code in this field For standardized futures products, maturity information can be included in this field, e.g. GCZ22 Superceded by: SRSecKey |
65 | SymbolSfx | B | string | secKey | Symbol suffix Superceded by: SRSecKey |
22 | IDSource | N | string | secKey | 8 = Exchange Symbol is accepted when used in conjunction with SecurityID<48> to communicate the Exchange Symbol. Superceded by: SRSecKey |
48 | SecurityID | N | string | secKey | Exchange symbol, when IDSource = 8 and Symbol<55> is blank. Superceded by: SRSecKey |
541 | MaturityDate | N | string | secKey | For Futures and Options YYYYMMDD Superceded by: SRSecKey |
200 | MaturityMonthYear | N | string | secKey | Alternative to MaturityDate<541> YYYYMM Superceded by: SRSecKey |
205 | MaturityDay | N | int | secKey | Alternative to MaturityDate<541> 1-31 Superceded by: SRSecKey |
202 | StrikePrice | N | float | secKey | Option strike price Superceded by: SRSecKey |
54 | Side | Y | char | orderSide ssaleFlag | 1 = Buy 2 = Sell 5 = Sell short 6 = Sell short exempt Y= Sell auto (SR determines whether child orders should be selling long or short by looking up account/aggregate group position when child orders are created). OrderSide superceded by: SROrderSide SsaleFlag superceded by: SRShortSaleFlag |
77 | OpenClose | N | char | positionType | For Options: O = Open C = Close A = Auto (SR determines whether child orders should be marked open or closed by looking up account/aggregate group position when child orders are created). Superceded by: SRPositionType |
204 | CustomerOrFirm | N | char | firmType | 0 = Customer 1 = Firm 2 = Broker / Dealer 4 = Market Maker 5 = Non-Member Market Maker 8 = Customer Professional Will default to SR account configuration if not specified Superceded by: SRFirmType |
528 | OrderCapacity | N | char | orderCapacity | A = Agency G = Prop I = Individual P = Principal R = Riskless W = AgentOtherMember Will default to SR account configuration if not specified Superceded by: SROrderCapacity |
60 | TransactTime | Y | utcDttm | Time this order request was initiated/released. Formatted as: YYYYMMDD-HH:MM:SS.fff Note: this order must arrive at SpiderRock within 15 seconds of the TransactTime to be considered a valid order. | |
38 | OrderQty | Y | int | orderSize | Executable quantity Superceded by: SROrderSize |
Standard Trailer | Y |
Example -- DMA
DMA orders are used to send a single order to a specific exchange or destination. This order type allows the client to control where the order is traded. Note that DMA orders may interact with dark liquidity in the SpiderRock platform if this is desired.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = D | |||
Basic NewOrderSingle Fields | See "NewOrderSingle" above | ||||
100 | ExDestination | Y | string | exchMask | SR Destination Code (see appendix) |
Standard Trailer | Y |
Example - Smart/Sweep
Smart/Sweep orders are used to send an order without specifying a destination. SpiderRock will determine the optimal destination(s) for the order and will automatically sweep multiple destinations to maximize liquidity capture. This order type can optionally post any unfilled balance on an exchange.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = D | |||
Basic NewOrderSingle Fields | See "NewOrderSingle" above | ||||
Standard Trailer | Y |
Example - Staged/WaitStart
The SRStartType<5090> tag is used to send staged/wait orders to SpiderRock. These orders will be sent to the exchange once the client commands their release. Note that orders can be released in multiple ways: via the SpiderRock GUI tools, the SpiderRock SRSE/SQL API, and a Listexecute<L> FIX message. Staged orders will be acknowledged immediately; fills will only be reported after the order has been released.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = D | |||
Basic NewOrderSingle Fields | See "NewOrderSingle" above | ||||
Algorithmic NewOrderSingle Fields | See "NewOrderSingle" above | ||||
5086 | SRStageType | Y | int | spdrStageType | 1 = ModifyAny 2 = ModifyAlgo |
5090 | SRStartType | Y | int | startType | 2 = WaitTrigger (wait start) |
Standard Trailer | Y |
Example - Market-On-Open/Market-On-Close
Market-On-Open/Market-On-Close orders are used when participating in opening and closing exchange auctions. Note: Either FIX 4.2 or FIX 4.4style OrdType/TimeInForce tagging is allowed.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = D | |||
Basic NewOrderSingle Fields | See "NewOrderSingle" above | ||||
59 | TimeInForce | Y | char | parentOrderHandling | 2 = At the opening 7 = At the Close |
Standard Trailer | Y |
Example - SpiderRock Algorithm
Complex Algo/Parent orders express intent to interact with the market in a variety of ways. These parent orders can, and frequently do, result in multiple child orders being generated and routed to the exchange.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = D | |||
Basic NewOrderSingle Fields | See "NewOrderSingle" above | ||||
5036 | SRUsername | N | string | userName | Client defined username Used for customer service and futures compliance If necessary, a default may be assigned to the FIX session. (24 character max) |
5055 | SRProgressExposeTime | N | int | progressExposeTime | Duration in seconds |
5094 | SROrderHandling | Y | int | orderHandling | Primary order handling algorithm 1 = ActiveTaker 2 = PostOnly 3 = DMA 4 = MktOnOpn 5 = MktOnCls 11 = CrossResponse 12 = AuctionResponse |
5096 | SRBalanceHandling | N | int | parentBalanceHandling | 0 = None (non-marketable balance will not be posted) default 1 = PostWith 2 = PostTurn 3 = PostImprove 4 = PostLimit 5 = PostLmtW 7 = PostWthF 9 = PostFlash 10 = PostFlashW 12 = PostFlashI |
5090 | SRStartType | N | int | startType | 0 = Immediate 1 = WaitTrigger (wait for RiskGroup/Sweep trigger) 2 = Staged (wait for order to be modified/r eleased) |
5084 | SRTimeInForce | N | string | timeInForce | Day = Order remains working until the end of the day's primary trading session. EXT = Extended Day - Order remains working through the day's intended trading session until the next top of day rotation. WK = Week - Order remains working for the remainder of the week's normal trading sessions. EWK = Extended Week - Order remains working for the week's remaining extended trading sessions until the next Friday/EndOfWeek rotation. IOC = Immediate or Cancel - Order expires after one attempt at execution OR after one second. GTD = Good Till Duration - Order remains working through the day's extended trading session until the next top of day rotation OR when SRGoodTillDttm time is reached OR after working for SROrderDuration seconds. |
5086 | SROrderDuration | N | int | orderDuration | Order with SrTimeInForce = GTD expires after working for this number of seconds. |
5088 | SRGoodTillDttm | N | utcDttm | goodTillDttm | Order with SrTimeInForce = GTD expires at this time. |
5028 | SRExecBrokerCode | N | string | execBrkrCode | Overrides the default executing broker for this parent order |
5034 | SRStrategy | N | string | strategy | Client strategy label. Displayed on SR Order Manager |
5082 | SRExDestination | N | string | exchMask | Space separated exchange list; default = all available exchanges |
5046 | SRMaxExposureSize | N | int | maxExposureSize | Maximum simultaneous public exposure size across all exchanges |
5048 | SRNumMakeExchanges | N | int | numMakeExchanges | Number of public exposure exchanges |
5050 | SRPublicSize | N | char | publicSize | 0 = None 1 = Randomize 2 = MktSize 3 = FullSize 4 = MktSizeA 5 = MktSizeB 6 = MktSizeC 7 = FullSizeR Max25Pct=8 Max50Pct=9 Max75Pct=10 NoSize=11 |
5052 | SRCanCxlOverlap | N | char | canOverlapCxlRepl | When replacing (cancel-with-replacement) a child order, can cancel request overlap with new order? The order may overfill if 'Y'. Y = Yes N = No |
5080 | SRMaxChildOrders | N | int | maxChildOrders | Upper bound for the number of child orders generated for this parent order Default: 1000 |
5054 | SRProgressRule | N | int | progressRule | 0 = Immediate default 1 = Twap 2 = Vwap (not available for options) 3 = TwapReset 4 = VwapReset (not available for options) 5 = FastReset 6 = SlowReset 7 = TwapAlpha 8 = VwapAlpha (not available for options) 11 = SpdrPulse |
5056 | SRProgressSliceCnt | N | int | progressSliceCnt | number of slices to use (default = 4 or 8) [max 20] |
5104 | SRTakeReachRule | N | int | takeReachRule | 0 = None 1 = Delayed 2 = Passive 3 = WeakOnly 4 = RespondOnly 5 = FullSize 6 = ISOSweep 7 = AllOrNone 8 = QtyOrMore 9 = UpToQty 10 = AtMost25 11 = AtMost50 12 = MinTakeFee |
5098 | SROrderLimitType | N | int | orderLimitType | 0 = Market 1 = MarketArrival 2 = Prc 3 = PrcDe 4 = PrcDeX 5 = PrcDeT 6 = PrcDeP 7 = PrcDeXT 8 = PrcD eXP 9 = Vol 10 = VolX 11 = PrcV 12 = PrcVX 13 = VolPrc 14 = RelMid 15 = RelJoin 16 = RelCross 17 = SmrtFast 18 = SmrtNorm 19 = RelTurn 20 = PrcDeEm 22 = VolEm 23 = Aux 24 = UPrcPct 25 = PkgNeutral 26 = RcPrem 27 = SynthLimitMM 28 = SynthLimitBW 29 = SynthLimitWW |
5106 | SROrderPrcLimit | N | float | orderPrcLimit | Applies if SROrderLimitType<5098> = Prc |
5126 | SROrderPrcOffset | N | float | orderPrcOffset | Default=0 |
5132 | SRTakeAlphaFactor | N | float | takeAlphaFactor | |
5134 | SRMakeAlphaFactor | N | float | makeAlphaFactor | |
5136 | SRTakeProbability | N | float | takeProbability | |
5138 | SRMakeProbability | N | float | makeProbability | |
5259 | SRMaxSymDayDDeltaLn | N | float | maxSymDayDDeltaLn | max acct+symbol day $delta long Should be a positive number; Defaults to no limit |
5260 | SRMaxSymDayDDeltaSh | N | float | maxSymDayDDeltaSh | max acct+symbol day $delta short Should be a positive number; Defaults to no limit |
5058 | SRVwap Participation | N | float | vwapParticipation | Target VWAP participation rate (target % of trade activity) |
5290 | SRUserData1 | N | string | userData1 | User defined field (max 255 chars) - Can be returned on exec reports, forwarded on drop lines, or copied onto child orders. Please advise SpiderRock support staff of intended behavior. |
5291 | SRUserData2 | N | string | userData2 | User defined field (max 255 chars) - Can be returned on exec reports, forwarded on drop lines, or copied onto child orders. Please advise SpiderRock support staff of intended behavior. |
SR Option Specific Fields | See "Algorithmic Order -- Option Specific Fields" below | ||||
Standard Trailer | Y |
Algorithmic Order -- Option Specific Fields
The following fields can be included in Algorithmic orders when SecurityType<167> = Option.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
5170 | SRPositionType | N | int | positionType | Primary position type (single leg orders) |
5060 | SRAuctionResponder | N | string | auctionResponder | 0 =None ANY = parent order can be an auction responder |
5108 | SROrderRefUPrc | N | float | orderRefUPrc | The stock reference price, a contribution to the order premium. |
5110 | SROrderRefDelta | N | float | orderRefDelta | |
5112 | SROrderRefGamma | N | float | orderRefGamma | |
5192 | SROrderRefRMetric1 | N | float | orderRefRMetric1 | User supplied custom risk metric |
5194 | SROrderRefRMetric2 | N | float | orderRefRMetric2 | User supplied RMetric2 value |
5196 | SROrderRefRMetric3 | N | float | orderRefRMetric3 | User supplied RMetric3 value |
5198 | SROrderRefRMetric4 | N | float | orderRefRMetric4 | User supplied RMetric4 value |
5200 | SROrderRefRMetric5 | N | float | orderRefRMetric5 | User supplied RMetric5 value |
5212 | SROrderRefRMetric6 | N | float | orderRefRMetric6 | User supplied RMetric6 value |
5236 | SROrderRefRMetric7 | N | float | orderRefRMetric7 | User supplied RMetric7 value |
5116 | SROrderVolLimit | N | float | orderVolLimit | Order volatility limit - Valid range: [0.005, 9.000]. Required if SROrderLimitType<5098> is Vol, VolX, or VolPrc Ignored if SROrderLimitType is Market |
5118 | SRRateOverride | N | float | rateOverride | Must be positive |
5120 | SRSDivOverride | N | float | sdivOverride | |
5122 | SRDDivOverride | N | string | ddivOverride | Discrete dividends override Format:[years: amount, years:amount, ...] |
5124 | SROverrideCode | N | char | overrideCode | SDiv/DDiv override rule (applies if LimitType = Vol) 0 = None S = SDivOnly D = DDivOnly B = Both |
5228 | SRMakeSurfWidthOffset | N | float | makeSurfWidthOffset | |
5229 | SRTakeSurfWidthOffset | N | float | takeSurfWidthOffset | |
5140 | SRTakeSurfPrcOffset | N | float | takeSurfPrcOffset | |
5142 | SRTakeSurfVolOffset | N | float | takeSurfVolOffset | |
5144 | SRMakeSurfPrcOffset | N | float | makeSurfPrcOffset | |
5146 | SRMakeSurfVolOffset | N | float | makeSurfVolOffset | |
5072 | SRCxlUPrcRange | N | bool | cxlUPrcRange | Cancel order if outside stock price range Y = Yes N = No Z = Yes/Halt - Yes and also cancel on underlying halt M = No/Halt - No, but cancel on underlying halt |
5074 | SRMinUBid | N | float | minUBid | Any non-hold status will revert to markup if stock NBBO Mid is outside [midStockPx,maxUAsk] range. |
5076 | SRMaxUAsk | N | float | See description for minUBid | |
5078 | SRMinOptionPx | N | float | maxUAsk | Option price floor for orders tied to stock |
5255 | SRMaxExpDayWtVegaLn | N | float | maxExpDayWtVegaLn | max accnt+expiration day wvega (time weighted) long. Should be a positive number; Defaults to no limit |
5256 | SRMaxExpDayWtVegaSh | N | float | maxExpDayWtVegaSh | max accnt+expiration day wvega (time weighted) short. Should be a positive number; Defaults to no limit |
5257 | SRMaxSymDayWtVegaLn | N | float | maxSymDayWtVegaLn | max acct+symbol day vega long. Should be a positive number; Defaults to no limit |
5258 | SRMaxSymDayWtVegaSh | N | float | maxExpDayWtVegaSh | max acct+symbol day $delta short. Should be a positive number; Defaults to no limit |
Algorithmic Order -- Option Autohedging Fields
If autohedging is enabled, then any resulting autohedge fills will be reported using the orders. Note that since autohedge trades are generated in response to option fills, perhaps over multiple orders, some accommodations must be made in the resulting autohedge execution reports. They cannot be reported back to the client on an order entry line; all autohedged drop reports are reported down a separate FIX drop line.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
5152 | SRAutoHedge | N | char | autoHedge | N = NoHedge default X = FastCrx Y = FastDark Z = SlowDark F = AutoCrx S = AutoTrn M = AutoMid A = SpdrAuto 1 = Spdr10S 3 = Spdr30S 9 = Spdr90S 5 = Spdr5M H = Spdr30M D = SpdrDay 12 = SmartFast 13 = SmartNorm V1 = AlphaVwap1pct=V1 V2 = AlphaVwap2pct V5 = AlphaVwap5pct V25 = AlphaVwap25pct T = Static |
OrderCancelReplace (Client to SpiderRock)
The OrderCancelReplace<G> request is used to change the parameters of an existing New Order Single.
An ExecutionReport<8> with ExecType<150>=Pending Replace will be sent unless the OrderCancelReplace<G> can immediately be accepted (ExecutionReport<8> with ExecType<150>=Replaced) or rejected (OrderCancelReject<9> message).
An OrderCancelReplace<G> request will only be accepted if any associated child orders can successfully be cancelled. Requests that cannot be processed will be rejected with a CancelReject<3> message.
An order’s algorithmic parameters remain unaffected unless a new value is manually updated for a specific parameter. If a new value is not supplied, the previous order's algo parameters are carried forward onto the new order.
An OrderCancelReplace<G> request may be sent to increase the quantity on a filled order, but not a cancelled nor rejected order.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = G | |||
11 | ClOrdId | Y | string | altOrderId | Client order ID of the cancel request (24 character max) |
41 | OrigClOrdID | Y | string | altPrevOrderId | ClOrdID<11> of the previous order (NOT the initial order of the day) when canceling an order. (24 character max) |
Modifiable New Order Single Fields (See list above) | |||||
Standard Trailer | Y |
NewOrderMultileg (Client to SpiderRock)
A NewOrderMultileg<AB> message is used to submit an order for up to 6 option legs and one equity leg as a package. Both standard multi-leg order types and the more complex ones offered by SpiderRock are communicated using this message.
The NewOrderMultileg<AB> fields listed in the following table are used in common by all SpiderRock multileg orders. Additional fields are used by different order types to communicate their unique features. These fields are described in subsequent sections.
In addition to standard FIX fields, SpiderRock uses custom FIX fields (5,000+) for SpiderRock specific parameters.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = AB | |||
11 | ClOrdId | Y | string | altOrderId | Client order ID (24 character max) |
1 | Account | Y | string | accnt | SR account acronym Must be configured prior to testing or trading Account superceded by: SRAccnt |
38 | OrderQty | Y | int | orderSize | Executable quantity Superceded by: SROrderSize |
54 | Side | N | char | orderSide | 1 = Buy |
100 | ExDestination | N | string | exchMask | SR Destination Code (see appendix) - Required for DMA style orders Superceded by: SRExDestination |
40 | OrdType | N | char | orderLimitType | 1 = Market 2 = Limit - Required for DMA and Smart/Sweep style orders Superceded by: SROrderLimitType |
44 | Price | N | float | orderPrcLimit | Required for limit order types Superceded by: SROrderPrcLimit |
59 | TimeInForce | N | string | orderDuration parentOrderHandling | 0 = Day 3 = Immediate or Cancel (IOC) OrderDuration superceded by: SROrderDuration SRTimeInForce ParentOrderHandling superceded by SROrderHandling |
60 | TransactTime | Y | utcDttm | Time this order request was initiated/released. Formatted as: YYYYMMDD-HH:MM:SS.fff Note: this order must arrive at SpiderRock within 15 seconds of the TransactTime to be considered a valid order. | |
Algorithmic Multileg Fields | Associated Record Value (SpdrParentOrder.OrderLegsList) | See "Multileg Algorithm" below | |||
555 | NoLegs | Y | int | numLegs | Number of legs |
→ 654 | LegRefId | Y | string | altStkLegId altLegIdN | Used to identify a specific leg |
→ 608 | LegCFICode | N | string | Ignored | ES= Equity Common Shares OC = Option - Call [OPT] OP = Option - Put [OPT] F = Future [FUT] OCXF = Future Option - Call [OPT] OPXF = Future Option - Put [OPT] Superceded by: SRLegSecType Supercedes: LegSecurityType |
→ 609 | LegSecurityType | N | string | ticker secKeyN (for options) secTypeN (for options) | Alternative to LegCFICode<608> CS = Equity default FUT = Future/Future Options OPT = Equity Option |
→ 600 | LegSymbol | Y | string | ticker secKeyN (for options) | Leg Exchange symbol May incorporate symbol suffix, e.g. VIA.A For OPRA options, SpiderRock accepts an OSI code in this field. For standardized futures products, maturity information can be included in this field, e.g. GCZ22. |
→ 601 | LegSymbolSfx | N | string | ticker | Leg Symbol Suffix |
→ 611 | LegMaturityDate | N | string | secKeyN (for options) | For Futures and Options. Formatted as: YYYYMMDD |
→ 612 | LegStrikePrice | N | float | secKeyN (for options) | Option strike price |
→ 624 | LegSide | Y | char | ssaleFlag sideN | 1 = Buy 2 = Sell 5 = Sell short 6 = Sell short exempt Y = Sell auto (SR determines whether child orders should be selling long or short by looking up account/aggregate group position when child orders are created). Superceded by: SRLegSide,SRLegShortSaleFlag |
→ 623 | LegRatioQty | Y | int | multN | The ratio of quantity for this individual leg relative to the entire multileg security |
→ 564 | LegPositionEffect | N | char | posTypeN | For Options: O = Open C = Close A = Auto (SR determines whether child orders should be marked open or closed by looking up account/aggregate group position when child orders are created). Superceded by: SRLegPosEffect |
Standard Trailer | Y |
Example - DMA
DMA orders are used to send a multi-leg order to a specified exchange or destination. This order type is appropriate when the client wishes to control where the order is traded. Note that DMA orders may interact with dark liquidity in the SpiderRock platform if configured to do so.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = AB | |||
Basic NewOrderMultileg Fields | See "NewOrderMultileg" above | ||||
100 | ExDestination | Y | string | exchMask | SR Destination Code (see appendix) - Required for DMA style orders Superceded by: SRExDestination |
Standard Trailer | Y |
Example - Smart/Sweep
Smart/Sweep orders are used to send an order without specifying a destination. SpiderRock will determine the optimal destination(s) for the order and will automatically sweep multiple destinations to maximize liquidity capture. This order type can optionally post any unfilled balance on an exchange.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = AB | |||
Basic NewOrderMultileg Fields | See "NewOrderMultileg" above | ||||
Standard Trailer | Y |
Example - Staged/WaitStart
The SRStartType<5090> tag is used to send staged/wait orders to SpiderRock. These orders will be sent to exchange as market orders once the client commands their release. Note that orders can be released in multiple ways: via SpiderRock GUI tools, via the SpiderRock SRSE/SQL API, and via a Listexecute<L> fix message. Staged orders will be acknowledged immediately; fills will only be reported after the order has been released.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = AB | |||
Any Combination of Basic or Complex NewOrderMultiLeg Fields | |||||
5086 | SRStageType | Y | int | spdrStageType | 1 = ModifyAny 2 = ModifyAlgo |
5090 | SRStartType | Y | int | startType | 2 = WaitTrigger (wait start) |
Standard Trailer | Y |
Example - Multileg Algorithm
SpiderRock Algorithmic orders express intent to interact with the market in a variety of ways. These parent orders can, and frequently do, result in multiple child orders being generated and routed to the exchange.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = AB | |||
Basic NewOrderMultileg Fields (See NewOrderMultileg above) | |||||
5036 | SRUsername | N | string | altUserName | Client defined username. - Used for customer service and futures compliance - If necessary, a default may be assigned to the FIX session (24 character max). |
5055 | SRProgressExposeTime | N | int | progressExposeTime | Default = 0 |
5094 | SROrderHandling | Y | int | orderHandling | Primary order handling algorithm 8 = Legger 9 = Seeker 10 = SeekerLegger 20 = CobMaker |
5096 | SRBalanceHandling | N | int | parentBalanceHandling | 0 = None (non-marketable balance will not be posted) 4 = PostLimit |
5086 | SRStageType | Y | int | spdrStageType | 1 = ModifyAny 2 = ModifyAlgo |
5090 | SRStartType | N | int | startType | 0 = Immediate 1 = WaitTrigger (wait for RiskGroup/Sweep trigger) 2 = Staged (wait for order to be modified/released) |
5084 | SRTimeInForce | string | timeInForce | Day = Day -- Order remains working until the end of the day's primary trading session. EXT = Extended Day - Order remains working through the day's extended trading session until the next top of day rotation. - WK = Week - Order remains working for the remainder of the week's normal trading sessions. EWK = Extended Week - Order remains working for the week's remaining extended trading sessions until the next Friday/EndOfWeek rotation. IOC = Immediate or Cancel - Order expires after one attempt at execution OR after one second. GTD = Good Till Duration - Order remains working through the day's extended trading session until the next top of day rotation OR when SRGoodTillDttm time is reached OR after working for SROrderDuration seconds. | |
5089 | SRMarketSession | char | marketSession | 1 = Regular Market 2 = Pre-Market 3 = Post-Market 4 = Regular and Pre-Market 5 = Regular and Post-Market 6 = All Day | |
5086 | SROrderDuration | int | orderDuration | Order with SrTimeInForce = GTD expires after working for this number of seconds 0/missing = ignore | |
5088 | SRGoodTillDttm | utcDttm | goodTillDttm | Order with SrTimeInForce = GTD expires at this time working for this number of seconds | |
5034 | SRStrategy | N | string | strategy | Client strategy label. Displayed on SR Order Manager |
5360 | SRExDestination | string | exchMask | Comma separated exchange list; default = all available exchanges | |
5046 | SRMaxExposureSize | int | maxExposureSize | Maximum simultaneous public exposure size across all exchanges | |
5048 | SRNumMakeExchanges | int | numMakeExchanges | Number of public exposure exchanges | |
5050 | SRPublicSize | N | char | publicSize | 0 = None 1 = Randomize 2 = MktSize 3 = FullSize 4 = MktSizeA 5 = MktSizeB 6 = MktSizeC 7 = FullSizeR |
5080 | SRMaxChildOrders | int | maxChildOrders | Upper bound for the number of child orders generated for this parent order | |
5054 | SRProgressRule | int | progressRule | 0 = Immediate (default) 1 = Twap 3 = TwapReset 5 = FastReset 6 = SlowReset 7 = TwapAlpha progressRule 11 = SpdrPulse | |
5056 | progressSliceCnt | int | progressSliceCnt | Number of slices to use (default = 4 or 8) [max 20] | |
5104 | SRTakeReachRule | int | takeReachRule | 0 = Immediate 1 = Delayed 2 = Passive | |
5098 | SROrderLimitType | string | orderLimitType | 0 = Market 1 = MarketArrival 2 = Prc 3 = PrcDe 4 = PrcDeX 6 = PrcDeP 8 = PrcDeXP 14 = RelMid 15 = RelJoin 16 = RelCross | |
5100 | SRTakeLimitClass | char | takeLimitClass | 0 = Simple 1=Surface Probability=2 SurfProb=3 | |
5102 | SRMakeLimitClass | char | makeLimitClass | 0 = Simple 1=Surface Probability=2 SurfProb=3 | |
5106 | SROrderPrcLimit | float | orderPrcLimit | Applies if SROrderLimitType<5098> = Prc | |
5108 | SROrderRefUPrc | price | orderRefUPrc | default=underlier.mid | |
5110 | SROrderRefDelta | float | orderRefDelta | Default=option.delta | |
5112 | SROrderRefGamma | float | orderRefGamma | Default=option.gamma | |
5116 | SROrderVolLimit | N | float | orderVolLimit | Order volatility limit - Valid range: [0.005, 9.000]. Required if SROrderLimitType<5098> is Vol, VolX, or VolPrc Ignored if SROrderLimitType is Market |
5126 | SROrderPrcOffset | float | orderPrcOffset | Default=0 | |
5128 | SRTakeAlphaType | char | takeAlphaType | 1 = Static 2 = Hawk 3 = Eagle 4 = Falcon 5 = Relative | |
5130 | SRMakeAlphaType | char | makeAlphaType | 1 = Static 2 = Hawk 3 = Eagle 4 = Falcon 5 = Relative | |
5132 | SRTakeAlphaFactor | float | takeAlphaFactor | ||
5134 | SRMakeAlphaFactor | float | makeAlphaFactor | ||
5136 | SRTakeProbability | float | takeProbability | ||
5138 | SRMakeProbability | float | makeProbability | ||
5202 | SRLeadSide | char | leadSide | SROrderHandling=Legger Only 1 = Buy 2 = Sell | |
5204 | SRMaxCompletionSlippage | float | maxCompletionSlippage | SROrderHandling=Legger Only | |
5206 | SROrderRefPremium | float | orderRefPremium | Reference premium (multileg orders only) | |
5290 | SRUserData1 | N | string | userData1 | User defined field (max 255 chars) Can be returned on exec reports; forward to drop lines or forwarded to child orders Please advise SpiderRock support staff of intended behavior. |
5291 | SRUserData2 | N | string | userData2 | User defined field (max 255 chars) Can be returned on exec reports; forward to drop lines or forwarded to child orders Please advise SpiderRock support staff of intended behavior. |
Standard Trailer | Y |
Example - Legger
Legger orders allow SpiderRock to determine optimal destination(s) for the order. SpiderRock will automatically sweep multiple destinations to maximize the order's liquidity capturer. Any unfilled balance can optionally be posted to exchange.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
Basic NewOrderMultileg Fields (See NewOrderMultileg above) | |||||
5094 | SROrderHandling | Y | int | orderHandling | Primary order handling algorithm 8 = Legger |
5096 | SRBalanceHandling | N | int | parentBalanceHandling | 0 = None (non-marketable balance will not be posted) 4 = PostLimit |
5202 | SRLeadSide | N | char | leadSide | Legger Only 1 = Buy 2 = Sell |
5204 | SRMaxCompletionSlippage | N | float | maxCompletionSlippage | Legger Only |
Standard Trailer | Y |
MultilegCancelReplace (Client to SpiderRock)
The MultilegCancelReplace<AD> request is used to change the parameters of an existing New Order Single.
An ExecutionReport<8> with ExecType<150>=Pending Replace will be sent unless the MultilegCancelReplace<AD> can immediately be accepted (ExecutionReport<8> with ExecType<150>=Replaced) or rejected (OrderCancelReject<9> message).
An MultilegCancelReplace<AD> request will only be accepted if any associated child orders can successfully be cancelled. Requests that cannot be processed will be rejected with a CancelReject<3> message.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentOrder) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = AC | |||
11 | ClOrdId | Y | string | altOrderId | Client order ID of the cancel request (24 character max) |
41 | OrigClOrdID | Y | string | altPrevOrderId | ClOrdID<11> of the previous order (NOT the initial order of the day) when canceling an order. (24 character max) |
Modifiable NewOrderMultileg Fields (See list above) | |||||
Standard Trailer | Y |
ExecutionReport (SpiderRock to Client)
SpiderRock natively follows FIX 4.4 rules for ExecutionReport handling but can switch to FIX 4.2 on request.
Tag | Field Name | Req'd | Type | Associated Record Value SpdrParentReport (r) SpdrParentExecution (x) | Comments |
---|---|---|---|---|---|
115 | OnBehalfOfCompID | N | string | execBrkrClFirm (x) | client/firm at executing broker |
116 | OnBehalfOfSubID | N | string | execBrkrUserName (x) | userName at execution broker |
11 | ClOrdID | Y | string | parentNumber (x) | See Also: SRBaseParentNumber |
1 | Account | Y | string | accnt (r) execBrkrAccnt (x) | |
20 | ExecTransType | Y | int | execStatus (x) | |
150 | ExecType | Y | char | execStatus (x) | |
39 | OrdStatus | Y | char | spdrOrderStatus (r) fillQuantity (r) r.execType (r) | |
41 | OrigClOrdID | N | string | prevParentNumber (r) | Conditionally required for response to a Cancel or Cancel/Replace request - (ExecType=PendingCancel, Replaced, or Canceled) |
37 | OrderID | Y | hexlong | baseParentNumber (r) | Unique ID for order chain assigned by SpiderRock |
54 | Side | Y | char | orderSide (x) ssaleFlag (x) | Value from executing venue - Value may differ from client's order if execution order is sold short. |
38 | OrderQty | Y | int | orderSize (x) | parent order size |
40 | OrdType | Y | char | parentOrderHandling (r) limitPrice (r) orderLimitType (r) | Order type of this execution |
528 | OrderCapacity | N | char | orderCapacity (r) | Value from order to venue A = Agency W = Agent Other Member I = Individual P = Principal G = Proprietary |
44 | Price | N | float | limitPrice (r) | Value from client's order |
47 | Rule80A | N | char | orderCapacity (r) | A = Agency Singl eOrder W = Agent Other Member I = Individual P = Principal |
59 | TimeInForce | N | string | orderDuration (r) parentOrderHandling (r) | 0 = Day 2 = Opening 7 = Closing |
Symbology | |||||
55 | Symbol | Y | string | secKey (x) | Value from client's order |
65 | SymbolSfx | N | string | secKey (x) | Value from client's order |
167 | SecurityType | N | string | secKey (x) | MLEG = Multileg CS = Common Stock FUT = Future OPT = Option |
541 | MaturityDate | N | string | secKey (x) | Value from client's order YYYYMMDD |
200 | MaturityMonthYear | N | string | secKey (x) | Value from client's order YYYYMM |
205 | MaturityDay | N | int | secKey (x) | Value from client's order 1-31 |
202 | StrikePrice | N | price | secKey (x) | Value from client's order |
201 | PutOrCall | N | int | secKey (x) | Value from client's order |
100 | ExDestination | N | string | childExDest (r) | Child order exchange destination |
204 | CustomerOrFirm | N | char | firmType (r) | Child order firm type 0 = Customer 1 = Firm 2 = Broker / Dealer 3 = Broker Dealer Customer 4 = Market Maker 5 = Non-Member Market Maker 8 = Customer Professional J =Fim JBO |
77 | PositionEffect | N | string | positionType (x) | parent order position type O = Opening C = Closing |
439 | ClearingFirm | N | string | clearingFirm (x) | clearing firm |
440 | ClearingAccount | N | string | clearingAccnt (x) | clearing firm account |
17 | ExecID | Y | string | Unique ID assigned by SpiderRock | |
19 | ExecRefID | N | string | ||
654 | LegRefID | N | string | legRefId (x) | Used to identify a specific leg for multileg order execution reports |
6 | AvgPx | Y | float | sumFillMoney (x) sumFillQty (x) | Execution price |
14 | CumQty | Y | int | sumFillQty (x) | |
151 | LeavesQty | Y | int | orderSize(x) sumFillQty (x) | 0 if order is not active |
31 | LastPx | Y | float | fillPrice (x) | |
32 | LastShares | Y | int | fillQuantity (x) | |
30 | LastMkt | N | string | fillMarket (x) childExDest (x) | Value from executing venue |
29 | LastCapacity | N | string | lastCapacity (x) | child order capacity |
58 | Text | N | string | spdrCloseReason (r), orderClosedText (r) | |
60 | TransactTime | Y | utcDttm | fillTransactDttm (x) timestamp (r) | Time the transaction represented by this |
75 | TradeDate | N | utcDttm | secKey (x) fill.fillDttm (x) | Trading Date |
76 | ExecBroker | N | string | extExecBroker (r) | Child executing venue |
5607 | SRStreetExecID | N | string | fillExecId (x) | street side execution Id |
5608 | SRStreetExecRefID | N | string | fillExecRefId (x) | street side execution ref Id |
442 | MultiLegReportingType | N | char | parentShape (r) | Used to indicate what an Execution Report represents (e.g. used with multi-leg securities, such as option strategies, spreads, etc.). 1 = SINGLE_SECURITY 2 = INDIVIDUAL_LEG 3 = MULTI_LEG_SECURITY |
5602 | SRFillNumber | N | hexlong | fillNumber (x) | SpiderRock execution number |
5611 | SRExchLiqTag | N | string | exchLiquidityTag (x) | Exchange supplied liquidity code |
5610 | SRLiquidityTag | N | string | spdrLiquidityTag (x) | SpiderRock normalized venue liquidity tag |
5619 | SRExchFeeEst | N | float | fillExchFee (x) | SpiderRock estimate of the exchange fee based on liquidity tags (best effort) |
5618 | SRBillingRate | N | float | fillBrkrRate (x) fillRoutingRate (x) | billing brokerage + routing rate |
5360 | SRExDestination | N | string | childExDest (x) | child order exchange destination |
5627 | SRChildShortSaleFlag | N | string | childSSaleFlag (x) | 4 = Auto 6 = Close 8 = Cover 3 = Exempt 1 = Long 7 = N/A 5 = Open > 2 = Short |
5625 | SRChildPositionType | N | string | childPosType (x) | Child order position type 7 = Auto 5 = Open 7 = Close |
5631 | SRStreetRoute | N | string | routingCode (x) | SpiderRock market routing code |
5038 | SROrderDttm | N | utcDttm | orderDttm (r) | |
5012 | SRAltAccnt | N | string | altAccnt (r) | client assigned account |
5014 | SRAltUserName | N | string | altUserName (r) | client assigned user name |
5034 | SRStrategy | N | string | parentStrategy (r) | client assigned strategy name |
5009 | SRSpdrSource | N | string | spdrSource (r) | Source of this order (FIX, SRSE, HedgeTool, etc) |
5000 | SRParentNumber | N | hexlong | parentNumber (r) | SpiderRock order id. See Also SRBaseParentNumber |
5004 | SRBaseParentNumber | N | hexlong | baseParentNumber (r) | Unique ID for order chain assigned by SpiderRock See Also SRParentNumber |
5290 | SRUserData1 | N | string | userData1 (r) | client supplied data field |
5291 | SRUserData2 | N | string | userData2 (r) | client supplied data field |
5088 | SRGoodTillDttm | N | datetime | goodTillDttm (r) | |
Standard Trailer | Y |
OrderCancelRequest (Client to SpiderRock)
An OrderCancelRequest<F> message requests the cancelation of all the remaining quantity of an order. The request will only be accepted if the order can be successfully pulled back from a downstream exchange, broker, or equivalent destination.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentReport) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = F | |||
11 | ClOrdId | Y | string | altOrderId | Client order ID of the cancel request (24 character max) |
41 | OrigClOrdID | Y | string | altPrevOrderId | ClOrdID<11> of the previous order (NOT the initial order of the day) when canceling an order. (24 character max) |
37 | OrderID | N | string | SR assigned OrderID (from an ExecutionReport message) - Note: one of OrigClOrdID or OrderID must be supplied. | |
Symbology | |||||
55 | Symbol | Y | string | secKey | Exchange symbol May incorporate symbol suffix (e.g. VIA.A) For OPRA options, SpiderRock accepts an OSI code in this field For standardized futures products, maturity information can be included in this field, e.g. GCZ22 Superceded by: SRSecKey |
65 | SymbolSfx | B | string | secKey | Symbol suffix Superceded by: SRSecKey |
167 | SecurityType | N | string | secKey | MLEG = Multileg CS = Common Stock FUT = Future OPT = Option |
541 | MaturityDate | N | string | secKey | For Futures and Options YYYYMMDD Superceded by: SRSecKey |
200 | MaturityMonthYear | N | string | secKey | Alternative to MaturityDate<541> YYYYMM Superceded by: SRSecKey |
205 | MaturityDay | N | int | secKey | Alternative to MaturityDate<541> 1-31 Superceded by: SRSecKey |
202 | StrikePrice | N | float | secKey | Option strike price Superceded by: SRSecKey |
201 | PutOrCall | N | int | secKey | Value from client's order |
54 | Side | Y | char | orderSide ssaleFlag | Value from executing venue - Value may differ from client's order if execution order is sold short. |
60 | TransactTime | Y | utcDttm | Time this order request was initiated/released. Formatted as: YYYYMMDD-HH:MM:SS.fff Note: this order must arrive at SpiderRpcl within 15 seconds of the TransactTime to be considered a valid order. | |
38 | OrderQty | Y | int | orderSize | Executable quantity Superceded by: SROrderSize |
58 | Text | N | string | User supplied text such as a cancel reason | |
Standard Trailer | Y |
OrderCancelReject (SpiderRock to Client)
SpiderRock FIX Gateways follow FIX 4.4 style rules for CancelReject handling but can switch to FIX 4.2 on request.
Tag | Field Name | Req'd | Type | Associated Record Value (SpdrParentReport) | Comments |
---|---|---|---|---|---|
Standard Header | Y | MsgType = 8 | |||
37 | OrderID | Y | hexlong | baseParentNumber | Unique ID for order chain assigned by SpiderRock |
11 | ClOrdID | Y | string | parentNumber | See Also: SRBaseParentNumber |
41 | OrigClOrdID | Y | string | altPrevOrderId | Conditionally required for response to a Cancel or Cancel/Replace request (ExecType=PendingCancel, Replaced, or Canceled) |
434 | CxlRejResponseTo | Y | char | Valid values: 1 = OrderCancelRequest <F> 2 = OrderCancel/Replace Request <G> | |
102 | CxlRejReason | N | int | ||
39 | OrdStatus | Y | char | OrdStatus value after this cancel reject is applied | |
58 | Text | N | string | ||
Standard Trailer | Y |