OrderCancelReplaceRequest (MsgType = G, FIXML = OrdCxlRplcReq)

The order cancel/replace request is used to change the parameters of an existing order.

Do not use this message to cancel the remaining quantity of an outstanding order, use the Order Cancel Request (F) message for this purpose.

Cancel/Replace will be used to change any valid attribute of an open order (i.e. reduce/increase quantity, change limit price, change instructions, etc.), Subject (147) to agreement between counterparties, it can be used to re-open a filled order by increasing OrderQty.

An immediate response to this message is required. It is recommended that an ExecutionRpt with ExecType=Pending Replace be sent unless the Order Cancel/Replace Request can be immediately accepted (ExecutionRpt with ExecType=Replace) or rejected (Order Cancel Reject message).

The Cancel/Replace request will only be accepted if the order can successfully be pulled back from the exchange floor without executing.Requests which cannot be processed will be rejected using the Cancel Reject message.The Cancel Reject message should provide the ClOrdID (11) and OrigClOrdID (41) values which were specified on the Cancel/Replace Request message for identification.

Note that while it is necessary for the ClOrdID (11) to change and be unique, the brokers OrderID (37) field does not necessarily have to change as a result of the Cancel/Replace request.

The protocol supports the chaining of multiple cancel/replace requests, though trading counterparties may not support this functionality. Care should be taken if the order sender wishes to send a cancel/replace request when there is one or more cancel/replaces which have not been accepted or rejected – in general:

The order sender should chain client order ids on an ‘optimistic’ basis, i.e. set the OrigClOrdID to the last non rejected ClOrdID sent

The order receiver should chain client order ids on a ‘pessimistic’ basis, i.e. set the OrigClOrdID on execution reports that convey the receipt or succesful application of a cancel/replace and Order Cancel Reject messages to be the last ‘accepted’ ClOrdID (See "Order State Change Matrices" for examples of this)

In the event that the order sender wants to chain order cancel/replaces rapidly then they should ensure that each replace request contains the full details of the order as they would now like it to be. For example if an attempt is made to change the limit price and then an immediate request to change the quantity is issued then if the desired behaviour is that both the limit price and quantity should be changed then the second request should include the revised limit price (in case the first replace request is rejected).

All of the application-level fields in the original order should be retransmitted with the original values in the Order Cancel/Replace Request, except the fields that are being changed.Any field may be changed with this message except those in the <Instrument> component block and limited changes to the Side (54) field (noted below), however,buy-side firms should note that sell-side firms may further restrict which fields they allow to change; hence bilateral agreement is required.For example, some sell-side firms may not allow fields such as Side, SettlDate, etc. to change.Sell-side firms should validate the Order Cancel/Replace Request to ensure that the client is not requesting a change for a field that the sell-side cannot change; in this case the sell-side should send a Cancel Reject message with CxlRejReason (102) = 2 (Broker/Exchange Option).

When modifying ExecInst (18) values in a replacement order, it is necessary to re-declare all ExecInst (18) in the replacement order. ExecInst (18) values will not be carried forward from the original order to the replacement unless re-declared.

Tag Field Name FIXML Req'd Comments
<Standard Message Header> Y MsgType = G
37 OrderID @OrdID N Supplementary registration information for this Order
2422 OrderRequestID @OrdReqID N

Required if provided on the order being replaced (or cancelled). Echo back the value provided by the requester.

<Parties> N Insert here the set of "CommissionData" fields defined in "Common Components of Application Messages".
<TargetParties> N

Identifies parties not directly associated with or owning the order, who are to be informed to effect processing of the order.

229 TradeOriginationDate @OrignDt N

Used with Fixed Income for Muncipal New Issue Market. Agreement in principal between counter-parties prior to actual trade date.

(Note tag # was reserved in FIX 4.1, added in FIX 4.3)

(prior to FIX 4.4 field was of type UTCDate)

75 TradeDate @TrdDt N

Indicates date of trading day. Absence of this field indicates current day (expressed in local time at place of trade).

41 OrigClOrdID @OrigClOrdID N

ClOrdID(11) of the previous non rejected order (NOT the initial order of the day) when canceling or replacing an order.

Required when referring to orders that were electronically submitted over FIX or otherwise assigned a ClOrdID

11 ClOrdID @ClOrdID Y

Unique identifier of replacement order as assigned by institution or by the intermediary with closest association with the investor. Note that this identifier will be used in ClOrdID field of the Cancel Reject message if the replacement request is rejected.

526 SecondaryClOrdID @ClOrdID2 N

Assigned by the party which originates the order. Can be used to provide the ClOrdID (11) used by an exchange or executing system.

583 ClOrdLinkID @ClOrdLinkID N

Permits order originators to tie together groups of orders in which trades resulting from orders are associated for a specific purpose, for example the calculation of average execution price for a customer or to associate lists submitted to a broker as waves of a larger program trade.

2829 DuplicateClOrdIDIndicator @DupClOrdIDInd N

Used to indicate that a ClOrdID(11) value is an intentional duplicate of a previously sent value. Allows to avoid the rejection of an order with OrdRejReason(103) = 6 (Duplicate Order).

In the context of US CAT this can be used when the recipient of a previously routed order requires the same identifier to be re-used for a new route.

66 ListID @ListID N

Required for List Orders

586 OrigOrdModTime @OrigOrdModTm N

TransactTime of the last state change that occurred to the original order

1 Account @Acct N

Account mnemonic as agreed between buy and sell sides, e.g. broker and institution or investor/intermediary and fund manager.

660 AcctIDSource @AcctIDSrc N

Used to identify the source of the Account (1) code. This is especially useful if the account is a new account that the Respondent may not have setup yet in their system.

581 AccountType @AcctTyp N

Type of account associated with an order

589 DayBookingInst @DayBkngInst N

Indicates whether or not automatic booking can occur.

590 BookingUnit @BkngUnit N

Indicates what constitutes a bookable unit.

591 PreallocMethod @PreallocMeth N

Indicates the method of preallocation.

70 AllocID @AllocID N

Used to assign an overall allocation id to the block of preallocations

<PreAllocGrp> N

Number of repeating groups for pre-trade allocation

63 SettlType @SettlTyp N

For NDFs either SettlType or SettlDate should be specified.

64 SettlDate @SettlDt C

Takes precedence over SettlType value and conditionally required/omitted for specific SettlType values.

For NDFs either SettlType or SettlDate should be specified.

544 CashMargin @CshMgn N

Identifies whether an order is a margin order or a non-margin order. This is primarily used when sending orders to Japanese exchanges to indicate sell margin or buy to cover. The same tag could be assigned also by buy-side to indicate the intent to sell or buy margin and the sell-side to accept or reject (base on some validation criteria) the margin request.

635 ClearingFeeIndicator @ClrFeeInd N

Indicates type of fee being assessed of the customer for trade executions at an exchange. Applicable for futures markets only at this time.

(Values source CBOT, CME, NYBOT, and NYMEX):

21 HandlInst @HandlInst N

Instructions for order handling on Broker trading floor

18 ExecInst @ExecInst N

Can contain multiple instructions, space delimited. Replacement order must be created with new parameters (i.e. original order values will not be brought forward to replacement order unless redefined within this message).

1805 AuctionInstruction @AuctInst N

Instruction related to system generated auctions, e.g. flash order auctions.

110 MinQty @MinQty N

Minimum quantity of an order to be executed.

(Prior to FIX 4.2 this field was of type int)

1822 MinQtyMethod @MinQtyMeth N

Indicates how the minimum quantity should be applied when executing the order.

1089 MatchIncrement @MtchInc N

Allows orders to specify a minimum quantity that applies to every execution (one execution could be for multiple counter-orders). The order may still fill against smaller orders, but the cumulative quantity of the execution must be in multiples of the MatchIncrement.

1090 MaxPriceLevels @MxPxLvls N

Allows an order to specify a maximum number of price levels to trade through. Only valid for aggressive orders and during continuous (autoexecution) trading sessions. Property lost when order is put on book. A partially filled order is assigned last trade price as limit price. Non-filled order behaves as ordinary Market or Limit.

2676 MaximumPriceDeviation @MaxPxDeviatn N

Maximum deviation, in percentage terms, of an execution price from a reference price, e.g. the initial price of a match event.

<ValueChecksGrp> N

Specifies the type of trade strategy.

<MatchingInstructions> N

Type of underlying InstrumentPartySubID (1053) value.

Same values as PartySubIDType (803)

2362 SelfMatchPreventionID @SlfMtchPrvntnID N

May be used as an alternative to MatchingInstructions when the identifier does not appear in another field.

2964 SelfMatchPreventionInstruction @SlfMtchPrvntnInst N

Indicate the instruction for self-match prevention when the incoming (aggressive) order has the same SelfMatchPreventionID(2362) as a resting (passive) order.

<DisplayInstruction> N
<DisclosureInstructionGrp> N

Specifies instructions to disclose certain order level information in market data.

111 MaxFloor @MaxFloor N

The quantity to be displayed . Required for reserve orders. On orders specifies the qty to be displayed, on execution reports the currently displayed quantity.

1300 MarketSegmentID @MktSegID N

Identifies the market segment

100 ExDestination @ExDest N

Execution destination as defined by institution when order is entered.

Valid values:

See "Appendix 6-C"

1133 ExDestinationIDSource @ExDestIDSrc N

The ID source of ExDestination

2704 ExDestinationType @ExDestTyp N

Identifies the type of execution destination for the order.

<TrdgSesGrp> N

Specifies the number of repeating TradingSessionIDs

<Instrument> Y
<FinancingDetails> N
<UndInstrmtGrp> N

Number of underlyings

54 Side @Side Y

Should match original order's side, however, if bilaterally agreed to the following groups could potentially be interchanged:

Buy and Buy Minus

Sell, Sell Plus, Sell Short, and Sell Short Exempt

Cross, Cross Short, and Cross Short Exempt

2102 ShortMarkingExemptIndicator @SMEInd N

Indicates whether the originating account is exempt (Y) from marking orders as short or not (N). This designation may be used on both buy and sell orders.

1688 ShortSaleExemptionReason @ShrtSaleExmptnRsn N

Available for optional use when Side(54) = 6(Sell short exempt).

60 TransactTime @TxnTm Y

Time this order request was initiated/released by the trader or trading system.

<Stipulations> N

PartyID value within an instrument party repeating group. Same values as PartyID (448)

854 QtyType @QtyTyp N

Type of quantity specified in quantity field. ContractMultiplier (tag 231) is required when QtyType = 1 (Contracts). UnitOfMeasure (tag 996) and TimeUnit (tag 997) are required when QtyType = 2 (Units of Measure per Time Unit).

<OrderQtyData> Y
40 OrdType @OrdTyp Y

Order type. *** SOME VALUES ARE NO LONGER USED - See "Deprecated (Phased-out) Features and Supported Approach" *** (see Volume : "Glossary" for value definitions)

423 PriceType @PxTyp N

Code to represent the price type.

44 Price @Px C

Required for limit OrdTypes. For F/X orders, should be the "all-in" rate (spot rate adjusted for forward points). Can be used to specify a limit price for a pegged order, previously indicated, etc.

2838 CurrentWorkingPrice @CurWrkngPx N

May be used to correct the initial working price of the parent order when this (child) order was entered.

1092 PriceProtectionScope @PxPrtScp N

Defines the type of price protection the customer requires on their order.

99 StopPx @StopPx C

Required for OrdType = "Stop" or OrdType = "Stop limit".

<TriggeringInstruction> N
<SpreadOrBenchmarkCurveData> N
<YieldData> N
<PegInstructions> N
<DiscretionInstructions> N
847 TargetStrategy @TgtStrategy N

The target strategy of the order

<StrategyParametersGrp> N

Strategy parameter block

848 TargetStrategyParameters @TgtStrategyParameters N

For further specification of the TargetStrategy

849 ParticipationRate @ParticipationRt C

Mandatory for a TargetStrategy=Participate order and specifies the target particpation rate.

For other order types optionally specifies a volume limit (i.e. do not be more than this percent of the market volume)

376 ComplianceID @ComplianceID N

ID used to represent this transaction for compliance purposes (e.g. OATS reporting).

2404 ComplianceText @ComplianceTxt N

Free text for compliance information required for regulatory reporting.

2351 EncodedComplianceTextLen @EncComplianceTxtLen N

Must be set if EncodedComplianceText(2352) field is specified and must immediately precede it.

2352 EncodedComplianceText @EncComplianceTxt N

Encoded (non-ASCII characters) representation of the ComplianceText(2404) field in the encoded format specified via the MessageEncoding(347) field.

377 SolicitedFlag @SolFlag N

Indicates whether or not the order was solicited.

15 Currency @Ccy N

Must match original order.

2897 CurrencyCodeSource @CcySrc N

Identifies class or source of the Currency(15) value.

59 TimeInForce @TmInForce N

Absence of this field indicates Day order

168 EffectiveTime @EfctvTm N

Can specify the time at which the order should be considered valid

432 ExpireDate @ExpireDt C

Conditionally required if TimeInForce = GTD and ExpireTime is not specified.

126 ExpireTime @ExpireTm C

Conditionally required if TimeInForce = GTD and ExpireDate is not specified.

427 GTBookingInst @GTBkngInst N

States whether executions are booked out or accumulated on a partially filled GT order

1629 ExposureDuration @ExpsreDur N

Conditionally required when TimeInForce(59)=10 (Good for Time)

1916 ExposureDurationUnit @ExpsreDurUnit N

Time unit in which the ExposureDuration(1629) is expressed.

<CommissionData> N
<CommissionDataGrp> N

Use as an alternative to CommissionData component if multiple commissions or enhanced attributes are needed.

528 OrderCapacity @Cpcty N

Designates the capacity of the firm placing the order.

(as of FIX 4.3, this field replaced Rule80A (tag 47) --used in conjunction with OrderRestrictions (529) field)

(see Volume : "Glossary" for value definitions)

529 OrderRestrictions @Rstctions N

Restrictions associated with an order. If more than one restriction is applicable to an order, this field can contain multiple instructions separated by space.

1815 TradingCapacity @TrdgCpcty N

Designates the capacity in which the order is submitted for trading by the market participant.

1091 PreTradeAnonymity @PrTrdAnon N

Allows trader to explicitly request anonymity or disclosure in pre-trade market data feeds. Anonymity is relevant in markets where counterparties are regularly disclosed in order depth feeds. Disclosure is relevant when counterparties are not normally visible.

1390 TradePublishIndicator @TrdPubInd N

Applies to trades resulting from the order.

582 CustOrderCapacity @CustCpcty N

Capacity of customer placing the order.

Used by futures exchanges to indicate the CTICode (customer type indicator) as required by the US CFTC (Commodity Futures Trading Commission). May be used as required by other regulatory commissions for similar purposes.

<OrderAttributeGrp> N

The forward points for this leg's fill event. Value can be negative. Expressed in decimal form. For example, 61.99 points is expressed and sent as 0.006199

121 ForexReq @ForexReq N

Indicates that broker is requested to execute a Forex accommodation trade in conjunction with the security trade.

120 SettlCurrency @SettlCcy C

Required if ForexReq=Y.

Required for NDFs.

2899 SettlCurrencyCodeSource @SettlCcySrc N

Identifies class or source of the SettlCurrency(120) value.

<RateSource> N

Number of Underlying InstrumentPartySubID (1053) and InstrumentPartySubIDType (1054) entries

2795 OffshoreIndicator @OffshrInd N

Indicates the type of the currency rate being used. This is relevant for currencies that have offshore rate that different from onshore rate.

775 BookingType @BkngTyp N

Method for booking out this order. Used when notifying a broker that an order to be settled by that broker is to be booked out as an OTC derivative (e.g. CFD or similar). Absence of this field implies regular booking.

58 Text @Txt N

Free format text string

(Note: this field does not have a specified maximum length)

354 EncodedTextLen @EncTxtLen C

Must be set if EncodedText field is specified and must immediately precede it.

355 EncodedText @EncTxt C

Encoded (non-ASCII characters) representation of the Text field in the encoded format specified via the MessageEncoding field.

193 SettlDate2 @SettlDt2 N

Can be used with OrdType = "Forex - Swap" to specify the "value date" for the future portion of a F/X swap.

192 OrderQty2 @Qty2 N

Can be used with OrdType = "Forex - Swap" to specify the order quantity for the future portion of a F/X swap.

640 Price2 @Px2 N

Can be used with OrdType = "Forex - Swap" to specify the price for the future portion of a F/X swap.

1816 ClearingAccountType @ClrAcctTyp N

Designates the account type to be used for the order when submitted to clearing.

77 PositionEffect @PosEfct N

For use in derivatives omnibus accounting

203 CoveredOrUncovered @Covered N

For use with derivatives, such as options

210 MaxShow @MaxShow N

Maximum quantity (e.g. number of shares) within an order to be shown to other customers (i.e. sent via an IOI).

(Prior to FIX 4.2 this field was of type int)

114 LocateReqd @LocReqd C

Required for short sell orders

480 CancellationRights @CxllationRights N

For CIV - Optional

481 MoneyLaunderingStatus @MnyLaunderingStat N

A one character code identifying Money laundering status.

513 RegistID @RegistID N

Reference to Registration Instructions message for this Order.

494 Designation @Designation N

Supplementary registration information for this Order

1028 ManualOrderIndicator @ManOrdInd N

Indicates if an order, quote or trade was initially received manually (as opposed to electronically) or if it was entered manually (as opposed to entered by automated trading software).

1029 CustDirectedOrder @CustDrctdOrd N

Indicates if the customer directed this order to a specific execution venue "Y" or not "N".

A default of "N" customer did not direct this order should be used in the case where the information is both missing and essential.

1030 ReceivedDeptID @RcvdDptID N

Identifies the broker-dealer department that first took the order.

1031 CustOrderHandlingInst @CustOrdHdlInst N

Codes that apply special information that the Broker / Dealer needs to report, as specified by the customer.

NOTE: This field and its values have no bearing on the ExecInst and TimeInForce fields. These values should not be used instead of ExecInst or TimeInForce. This field and its values are intended for compliance reporting and/or billing purposes only.

For OrderHandlingInstSrc(1032) = 1 (FINRA OATS), valid values are (as of OATS Phase 3 as provided by FINRA. See also http://www.finra.org/Industry/Compliance/MarketTransparency/OATS/PhaseIII/index.htm for a complete list.

For OrderHandlingInstSrc(1032) = 2 (FIA Execution Source Code), only one enumeration value may be specified.

1032 OrderHandlingInstSource @OrdHndlInstSrc N

Identifies the class or source of the order handling instruction values.  Scope of this will apply to both CustOrderHandlingInst(1031) and DeskOrderHandlingInst(1035).

Conditionally required when CustOrderHandlingInst(1031) or DeskOrderHandlingInst(1035) is specified.

1724 OrderOrigination @OrdOrigntn N

Identifies the origin of the order.

2882 ContraOrderOrigination @CntraOrdOrigntn N

May be used for cross orders submitted with single order messages.

1725 OriginatingDeptID @OrigntngDeptID N

An identifier representing the department or desk within the firm that originated the order.

1726 ReceivingDeptID @RcvgDeptID N

An identifier representing the department or desk within the firm that received the order.

2883 RoutingArrangementIndicator @RtgArngmntInd N

Indicates whether a routing arrangement is in place, e.g. between two brokers. May be used together with OrderOrigination(1724) to further describe the origin of an order.

An arrangement under which a participant of a marketplace permits a broker to electronically transmit orders containing the identifier of the participant. This can be either through the systems of the participant for automatic onward transmission to a marketplace or directly to a marketplace without being electronically transmitted through the systems of the participant.

2884 ContraRoutingArrangementIndicator @CntraRtgArngmntInd N

May be used for cross orders submitted with single order messages.

522 OwnerType @OwnerTyp N

Identifies the type of owner.

2679 OrderOwnershipIndicator @OrdOwnershipInd N

Can be used to request change of order ownership.

<TrdRegTimestamps> N

Used to report volume with a trade

1685 ThrottleInst @ThrttlInst N

Describes action recipient should take if a throttle limit were exceeded.

1803 AuctionType @AuctTyp N

Conditionally required for auction orders.

1804 AuctionAllocationPct @AuctPct N

Percentage of matched quantity to be allocated to the submitter of the response to an auction order.

1810 ReleaseInstruction @RlsInst N

Instruction to define conditions under which to release a locked order or parts of it.

1811 ReleaseQty @RlsQty N

Quantity to be made available, i.e. released from a lock.

<Standard Message Trailer> Y