The ExecutionReport (35=8) message is used to:
- confirm the receipt of an order
- confirm changes to an existing order (i.e. accept cancel and replace requests)
- relay order status information
- relay fill information on working orders
- relay fill information on tradeable or restricted tradeable quotes
- reject orders
- report post-trade fees calculations associated with a trade
NOTE: Execution reports do not replace the end-of-day confirm. Execution reports are to be regarded only as replacements for the existing fill messages currently communicated via telephone.
NOTE: Individual Execution Reports are sent for each order on a NewOrderList <E>.
Each execution report contains two fields which are used to communicate both the current state of the order as understood by the broker (OrdStatus <39>) and the purpose of the message (ExecType <150>).
In an execution report the OrdStatus <39> is used to convey the current state of the order. If an order simultaneously exists in more than one order state, the value with highest precedence is the value that is reported in the OrdStatus <39> field. The order statuses are as follows (in highest to lowest precedence):
The ExecType <150> is used to identify the purpose of the ExecutionReport (35=8) message. To transmit a change in OrdStatus <39> for an order, the broker (sell side) should send an ExecutionReport (35=8) with the new OrdStatus <39> value in both the ExecType <150> AND the OrdStatus <39> fields to signify this message is changing the state of the order. The only exception to this rule is that when rejecting a cancel or cancel/replace request the OrderCancelReject (35=9) message is used both to reject the request and to communicate the current OrdStatus <39>. An ExecType <150> of Pending Cancel or Pending Replace is used to indicate that a cancel or cancel/replace request is being processed. An ExecType <150> of Canceled or Replace is used to indicate that the cancel or cancel/replace request has been successfully processed.
Execution information (e.g. new partial fill or complete fill) should not be communicated in the same report as one which communicates other state changes (such as pending cancel, pending replace, canceled, replaced, accepted, done for day etc).
Any fills which occur and need to be communicated to the customer while an order is "pending" and waiting to achieve a new state (i.e. via a Order Cancel Replace (aka Order Modification) Request) must contain the "original" (current order prior to state change request) order parameters (i.e. ClOrdID <11>, OrderQty <38>, Price <44>, etc). These fills will cause the CumQty <14> and AvgPx <6> to be updated. An order cannot be considered replaced until it has been explicitly accepted and confirmed to have reached the replaced status via an execution report with ExecType <150> = 'Replace', at which time the effect of the replacement (ClOrdID <11>, new quantity or limit price etc) will be seen.
Requests to cancel or cancel/replace an order are only acted upon when there is an outstanding order quantity. Requests to replace the OrderQty <38> to a level less than the CumQty <14> will be interpreted by the broker as requests to stop executing the order. Requests to change price on a filled order will be rejected (see OrderCancelReject (35=9) message type). The OrderQty <38>, CumQty <14>, LeavesQty <151>, and AvgPx <6> fields should be calculated to reflect the cumulative result of all versions of an order. For example, if partially filled order A were replaced by order B, the OrderQty <38>, CumQty <14>, LeavesQty <151>, and AvgPx <6> on order B's fills should represent the cumulative result of order A plus those on order B.
There can be exceptions to this rule when ExecType <150> and/or OrdStatus <39> are Canceled, DoneForTheDay (e.g. on a day order), Expired, Calculated, or Rejected in which case the order is no longer active and LeavesQty <151> could be 0.
Communication of information about a new fill is via the Execution report with ExecType <150> = Trade. Execution Reports with ExecType <150> = Trade Cancel or Trade Correct are used to cancel or correct a previously modified execution report as follows:
- The ExecType <150> of Trade Cancel applies at the execution level and is used to cancel an execution which has been reported in error. The canceled execution will be identified in the ExecRefID <19> field. Note: ExecType <150> of Trade Cancel should not be used to cancel a previous ExecutionRpt with ExecType <150> of Trade Cancel (e.g. cannot cancel a cancel).
- The ExecType <150> of Trade Correct applies at the execution level and is used to modify an incorrectly reported fill. The incorrect execution will be identified in the ExecRefID <19> field. If a single execution is corrected more than once, ExecRefID <19> should refer to the ExecID <17> of the last corrected ExecutionRpt (same convention as ClOrdID <11> and OrigClOrdID <41>). To correct an ExecutionRpt which was previously canceled, an ExecutionRpt with ExecType <150>=Trade should be sent (e.g. cannot send ExecType <150>=Trade Correct for an ExecutionRpt with ExecType <150>=Trade Cancel). Note: Data reported in the CumQty <14>, LeavesQty <151>, and AvgPx <6> fields represent the status of the order as of the time of the correction, not as of the time of the originally reported execution.
An ExecType <150> of Order Status indicates that the execution messages contains no new information, only summary information regarding order status. It is used, for example, in response to an Order Status request message
See "Order State Change Matrices" for examples of key state changes, processing of cancel and cancel/replace requests, and for execution cancel/corrects.
An ExecutionRpt with ExecType <150> = Restated represents an ExecutionRpt sent by the sellside communicating a change in the order or a restatement of the order's parameters without an electronic request from the customer. ExecRestatementReason <378> must be set. This is used for GT orders and corporate actions (see below), changes communicated verbally to the sellside either due to normal business practices or as an emergency measure when electronic systems are not available, repricing of orders by the sellside (such as making Sell Short orders compliant with uptick / downtick rules), or other reasons (Broker option). ExecRestatementReason <378> can also be used to communicate unsolicited cancels.
The field ClOrdID <11> is provided for institutions or buy-side brokers or intermediaries to affix an identification number to an order to coincide with internal systems. The OrderID <37> field is populated with the sell-side broker-generated order number (or fund manager-generated order number for CIVs). Unlike ClOrdID <11> / OrigClOrdID <41> which requires a chaining through Cancel/Replaces and Cancels, OrderID <37> and SecondaryOrderID <198> are not required to change through changes to an order.
The underlying business assumption of orders that can trade over multiple days, such as GTC and Good Till Date orders expiring on a future trading date (henceforth referred to as GT orders) is that a GT order that is not fully executed and has not been canceled and has not expired on a given day remains good for the broker to execute the following day. Note that the concept of "day" is determined by the market convention, which will be security specific. At the end of each trading day, once the order is no longer subject to execution, the broker may optionally send an ExecutionReport (35=8) with ExecType <150>='3' (Done for Day). When the ExpireDate <432> or ExpireTime <126> of a Good Till Date order is reached, or a GTC order reaches a maximum age, the order is considered expired and the broker may optionally send an ExecutionReport (35=8) with ExecType <150> and OrdStatus <39>=Expired (C).
In handling GT orders, the OrderQty <38>, CumQty <14> and AvgPx <6> fields will represent the entirety of the order over all days. The fields DayOrderQty <424>, DayCumQty <425>, and DayAvgPx <426> can be used on days following the day of the first trade on a GT order. Prior to the start of business each day, for all GT orders that have partial fills on previous days, DayCumQty <425> and DayAvgPx <426> are set to zero, and DayOrderQty <424> becomes the LeavesQty <151>. The following relationship holds: DayOrderQty <424> = OrderQty <38> - (CumQty <14> - DayCumQty <425>). Since (CumQty <14> - DayCumQty <425>) represents the volume traded on all previous days, DayOrderQty <424> = OrderQty <38> - Volume traded on all previous days. Note that when changing the quantity of an order, both OrderQty <38> and DayOrderQty <424> will change. Requests to change or cancel an order will be made in terms of the total quantity for the order, not the quantity open today. For example, on an order where OrderQty <38>=10000 and 2000 shares trade during the previous days, a request to change OrderQty <38> to 15000 will mean that 13000 shares will be open. See "Order State Change Matrices" for examples of canceling and changing GT orders partially filled on previous days.
A Cancel on an execution (trade bust, ExecType <150> = Trade Cancel) happening the same day of the trade will result in CumQty <14> and DayCumQty <425> each decreasing by the quantity busted, and LeavesQty <151> increasing by the quantity busted. OrderQty <38> and DayOrderQty <424> will remain unchanged. If the business rules allow for a trade bust to be reported on a later date than the trade being busted, the OrderQty <38> and DayCumQty <425> will remain unchanged, the LeavesQty <151> and DayOrderQty <424> will increase by the quantity busted, and the CumQty <14> will decrease by the quantity busted.
If bilaterally agreed between counterparties, a broker may wish to transmit a list of all open GT orders, permitting reconciliation of the open orders. Typically this transmission may occur at the end of the trading day or at the start of the following trading day. There is no expected response to such retransmission; in the event of a reconciliation problem this should be resolved manually or via the DK message. Assuming no corporate actions have occurred, the broker will send an ExecutionReport (35=8) with ExecType <150> = Restated (D) and ExecRestatementReason <378> = GT renewal / restatement (no corporate action) (1) for each open GT order. These Execution Reports may have DayCumQty <425> and DayAvgPx <426> restated to zero, and DayOrderQty <424> restated to LeavesQty <151> if the transmission occurs at the start of the following business day. The broker has the option of changing the OrderID <37> and SecondaryOrderID <198> fields, or leaving them unchanged. If they are changed, then the buy-side should use these new ID fields when sending OrderCancelRequest <F>, OrderCancelReplaceRequest <G>, and OrderStatusRequest <H> messages.
In the case of a corporate action resulting in the adjustment of an open GT order, the broker will send an ExecutionReport (35=8) with ExecType <150> = Restated (D) and ExecRestatementReason <378> = GT Corporate action (0) with the order's state after the corporate action adjustment. In the case of stock splits, OrderQty <38>, CumQty <14>, AvgPx <6>, and LeavesQty <151> will be adjusted to reflect the order's state in terms of current quantity (e.g. shares), not pre-split quantity (e.g. shares). See "Order State Change Matrices" for examples of GT order restatement with and without a corporate action.
CIV orders to be executed by the fund manager do not use the TimeInForce <59> field and only a subset of OrdStatus <39> values are expected to be used. See VOLUME 7 - "PRODUCT: COLLECTIVE INVESTMENT VEHICLES" for the CIV-specific OrdStatus <39> values.
The ExecutionReport (35=8) message is also used for multileg instrument. See "Use of the ExecutionReport (35=8) for Multileg Instruments" for multileg-specific details.
|Component Block - <StandardHeader>||Y||MsgType <35> = 8|
|Component Block - <ApplicationSequenceControl>||N||For use in drop copy applications. NOT FOR USE in transactional applications.|
|37||OrderID||Y||OrderID is required to be unique for each chain of orders.|
Required if provided on the order message. Echo back the value provided in the order message.
Can be used to link execution to the MassOrder <DJ> message.
|198||SecondaryOrderID||N||Can be used to provide order id used by exchange or executing system.|
|526||SecondaryClOrdID||N||In the case of quotes can be mapped to:|
Required when referring to orders that where electronically submitted over FIX or otherwise assigned a ClOrdID <11>.
In the case of quotes can be mapped to:
In the case of quotes can be mapped to:
|41||OrigClOrdID||N||Conditionally required for response to a Cancel or Cancel/Replace request (ExecType <150>=PendingCancel, Replace, or Canceled) when referring to orders that where electronically submitted over FIX or otherwise assigned a ClOrdID <11>. ClOrdID of the previous accepted order (NOT the initial order of the day) when canceling or replacing an order.|
Reference to the MDEntryID <278> of this order or quote in the market data.
|693||QuoteRespID||N||Required if responding to a QuoteResponse <AJ> message. Echo back the Initiator's value specified in the message.|
|790||OrdStatusReqID||N||Required if responding to and if provided on the OrderStatusRequest <H> message. Echo back the value provided by the requester.|
|584||MassStatusReqID||N||Required if responding to an OrderMassStatusRequest <AF>. Echo back the value provided by the requester.|
|961||HostCrossID||N||Host assigned entity ID that can be used to reference all components of a cross; sides + strategy + legs|
|911||TotNumReports||N||Can be used when responding to an OrderMassStatusRequest <AF> to identify the total number of Execution Reports which will be returned.|
|912||LastRptRequested||N||Can be used when responding to an OrderMassStatusRequest <AF> to indicate that this is the last Execution Reports which will be returned as a result of the request.|
|Component Block - <Parties>||N||Insert here the set of <Parties> (firm identification) fields|
|Component Block - <TargetParties>||N||
Specifies parties not directly associated with or owning the order, who are to be informed to effect processing of the order.
|Component Block - <ContraGrp>||N||Number of ContraBrokers repeating group instances.|
|66||ListID||N||Required for executions against orders which were submitted as part of a list.|
|548||CrossID||N||CrossID for the replacement order|
|551||OrigCrossID||N||Must match original cross order. Same order chaining mechanism as ClOrdID <11> / OrigClOrdID <41> with single order Cancel/Replace.|
Conditionally required when RefRiskLimitCheckID <2334> is specified.
|17||ExecID||Y||Unique identifier of execution message as assigned by sell-side (broker, exchange, ECN) (will be 0 (zero) for ExecType <150>=I (Order Status)).|
|19||ExecRefID||N||Required for Trade Cancel and Trade Correct ExecType <150> messages|
|150||ExecType||Y||Describes the purpose of the execution report.|
Can be used to provide further detail for ExecType <150> field.
|39||OrdStatus||Y||Describes the current state of a CHAIN of orders, same scope as OrderQty <38>, CumQty <14>, LeavesQty <151>, and AvgPx <6>|
|636||WorkingIndicator||N||For optional use with OrdStatus <39> = 0 (New)|
|103||OrdRejReason||N||For optional use with ExecType <150> = 8 (Rejected)|
Reason description for rejecting the transaction request.
Must be set if EncodedRejectText <1665> field is specified and must immediately precede it.
|378||ExecRestatementReason||N||Required for ExecType <150> = D (Restated).|
|Component Block - <RegulatoryTradeIDGrp>||N|
May be used to bilaterally inform counterparty of trade reporting status.
|1||Account||N||Required for executions against electronically submitted orders which were assigned an account by the institution or intermediary|
|581||AccountType||N||Specifies type of account|
|Component Block - <PreAllocGrp>||N||Pre-trade allocation instructions.|
Required for NDFs to specify the "value date".
|Component Block - <Instrument>||Y||Insert here the set of <Instrument> (symbology) fields|
|Component Block - <FinancingDetails>||N||Insert here the set of <FinancingDetails> (symbology) fields|
|Component Block - <UndInstrmtGrp>||N||Number of underlyings|
|Component Block - <PaymentGrp>||N|
Available for optional use when Side <54> = 6(Sell short exempt).
|Component Block - <Stipulations>||N||Insert here the set of <Stipulations> (repeating group of Fixed Income stipulations) fields|
|Component Block - <OrderQtyData>||N||
Insert here the set of <OrderQtyData> fields
|Component Block - <PriceQualifierGrp>||N|
|44||Price||N||Required if specified on the order|
|99||StopPx||N||Required if specified on the order|
|Component Block - <TriggeringInstruction>||N||Insert here the set of "TriggeringInstruction" fields defined in "common components of application messages"|
|Component Block - <PegInstructions>||N||Insert here the set of <PegInstructions> fields|
|Component Block - <DiscretionInstructions>||N||Insert here the set of <DiscretionInstructions> fields|
|839||PeggedPrice||N||The current price the order is pegged at|
|1095||PeggedRefPrice||N||The reference price of a pegged order.|
|845||DiscretionPrice||N||The current discretionary price of the order|
Required if specified on the order
|847||TargetStrategy||N||The target strategy of the order|
|Component Block - <StrategyParametersGrp>||N||Strategy parameter block|
|848||TargetStrategyParameters||N||For further specification of the TargetStrategy <847>|
Mandatory for a TargetStrategy <847> = 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)
|850||TargetStrategyPerformance||N||For communication of the performance of the order versus the target strategy|
Must be set if EncodedComplianceText <2352> field is specified and must immediately precede it.
|59||TimeInForce||N||Absence of this field indicates Day order|
|168||EffectiveTime||N||Time specified on the order at which the order should be considered valid|
|432||ExpireDate||N||Conditionally required if TimeInForce <59> = GTD and ExpireTime <126> is not specified.|
|126||ExpireTime||N||Conditionally required if TimeInForce <59> = GTD and ExpireDate <432> is not specified.|
Conditionally required when TimeInForce <59>=10 (Good for Time)
|18||ExecInst||N||Can contain multiple instructions, space delimited.|
Applies to trades resulting from the order.
|Component Block - <OrderAttributeGrp>||N|
Quantity (e.g. shares) bought/sold on this (last) fill. Required if ExecType <150> = Trade or Trade Correct.
If ExecType <150> = Stopped, represents the quantity stopped/guaranteed/protected for.
|1056||CalculatedCcyLastQty||N||Used for FX trades to express the quantity or amount of the other side of the currency. Conditionally required if ExecType = Trade or Trade Correct and is an FX trade.|
|1071||LastSwapPoints||N||Optionally used when ExecType = Trade or Trade Correct and is a FX Swap trade. Used to express the swap points for the swap trade event.|
Price of this (last) fill. Required if ExecType <150> = Trade or Trade Correct.
If ExecType <150> = Stopped, represents the price stopped/guaranteed/protected at.
Not required for FX Swap when ExecType <150> = Trade or Trade Correct as there is no "all-in" rate that applies to both legs of the FX Swap.
|669||LastParPx||N||Last price expressed in percent-of-par. Conditionally required for Fixed Income trades when LastPx <31> is expressed in Yield, Spread, Discount or any other price type that is not percent-of-par.|
|194||LastSpotRate||N||Applicable for F/X orders|
|195||LastForwardPoints||N||Applicable for F/X orders|
Upfront Price for CDS transactions. Conditionally required if TradePriceNegotiationMethod <1740> = 4(Percent of par and upfront amount), 5(Deal spread and upfront amount) or 6(Upfront points and upfront amount).
|30||LastMkt||N||If ExecType <150>='F' (Trade), indicates the market where the trade was executed. If ExecType <150> ='0' (New), indicates the market where the order was routed.|
|Component Block - <LimitAmts>||N||
Insert here the set of "LimitAmts" fields defined in "Common Components"
|151||LeavesQty||Y||Quantity open for further execution. If the OrdStatus <39> is Canceled, DoneForTheDay, Expired, Calculated, or Rejected (in which case the order is no longer active) then LeavesQty <151> could be 0, otherwise LeavesQty <151> = OrderQty <38> - CumQty <14>.|
|14||CumQty||Y||Currently executed quantity for chain of orders.|
Not required for markets where average price is not calculated by the market.
Conditionally required otherwise.
|424||DayOrderQty||N||For GT orders on days following the day of the first trade.|
|425||DayCumQty||N||For GT orders on days following the day of the first trade.|
|426||DayAvgPx||N||For GT orders on days following the day of the first trade.|
|1361||TotNoFills||N||Used to support fragmentation. Sum of NoFills across all messages with the same ExecID.|
|893||LastFragment||N||Indicates whether this is the last fragment in a sequence of message fragments. Only required where message has been fragmented.|
|Component Block - <FillsGrp>||N||Specifies the partial fills included in this Execution Report|
|Component Block - <OrderEventGrp>||N||
Specifies the order events included in this ExecutionReport (35=8), mutually exclusive with FillsGrp component.
|427||GTBookingInst||N||States whether executions are booked out or accumulated on a partially filled GT order|
|75||TradeDate||N||Used when reporting other than current day trades.|
|60||TransactTime||N||Time the transaction represented by this ExecutionReport occurred|
|Component Block - <CommissionData>||N||
Insert here the set of "CommissionData" fields defined in "Common Components of Application Messages"
Note: On a fill/partial fill messages, it represents value for that fill/partial fill. On ExecType=Calculated, it represents cumulative value for the order. Monetary commission values are expressed in the currency reflected by the Currency field.
|Component Block - <CommissionDataGrp>||N||
Use as an alternative to CommissionData component if multiple commissions or enhanced attributes are needed.
|Component Block - <SpreadOrBenchmarkCurveData>||N||Insert here the set of "SpreadOrBenchmarkCurveData" (Fixed Income spread or benchmark curve) fields defined in "Common Components of Application Messages"|
|Component Block - <RelativeValueGrp>||N|
|Component Block - <YieldData>||N||Insert here the set of "YieldData" (yield-related) fields defined in "Common Components of Application Messages"|
|738||InterestAtMaturity||N||For fixed income products which pay lump-sum interest at maturity.|
|920||EndAccruedInterestAmt||N||For repurchase agreements the accrued interest on termination.|
|921||StartCash||N||For repurchase agreements the start (dirty) cash consideration|
|922||EndCash||N||For repurchase agreements the end (dirty) cash consideration|
|118||NetMoney||N||Note: On a fill/partial fill messages, it represents value for that fill/partial fill, on ExecType=Calculated, it represents cumulative value for the order. Value expressed in the currency reflected by the Currency field.|
|119||SettlCurrAmt||N||Used to report results of forex accommodation trade|
Used to report results of forex accomodation trade.
Required for NDFs.
|Component Block - <RateSource>||N|
|155||SettlCurrFxRate||N||Foreign exchange rate used to compute SettlCurrAmt from Currency to SettlCurrency|
|156||SettlCurrFxRateCalc||N||Specifies whether the SettlCurrFxRate should be multiplied or divided|
|Component Block - <ValueChecksGrp>||N|
|Component Block - <MatchingInstructions>||N|
May be used as an alternative to MatchingInstructions when the identifier does not appear in another field.
|Component Block - <DisplayInstruction>||N||Insert here the set of "DisplayInstruction" fields defined in "common components of application messages"|
|Component Block - <DisclosureInstructionGrp>||N|
|77||PositionEffect||N||For use in derivatives omnibus accounting|
|775||BookingType||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.|
|354||EncodedTextLen||N||Must be set if EncodedText field is specified and must immediately precede it.|
|355||EncodedText||N||Encoded (non-ASCII characters) representation of the Text field in the encoded format specified via the MessageEncoding field.|
|193||SettlDate2||N||Can be used with OrdType = "Forex - Swap" to specify the "value date" for the future portion of a F/X swap.|
|192||OrderQty2||N||Can be used with OrdType = "Forex - Swap" to specify the order quantity for the future portion of a F/X swap.|
|641||LastForwardPoints2||N||Can be used with OrdType = "Forex - Swap" to specify the forward points (added to LastSpotRate) for the future portion of a F/X swap.|
|442||MultiLegReportingType||N||Default is a single security if not specified.|
For contingency orders, the type of contingency as specified in the order.
|480||CancellationRights||N||For CIV - Optional|
|513||RegistID||N||Reference to Registration Instructions message for this Order.|
|494||Designation||N||Supplementary registration information for this Order|
|483||TransBkdTime||N||For CIV - Optional|
|515||ExecValuationPoint||N||For CIV - Optional|
|484||ExecPriceType||N||For CIV - Optional|
|485||ExecPriceAdjustment||N||For CIV - Optional|
|851||LastLiquidityInd||N||Applicable only on OrdStatus of Partial or Filled.|
|Component Block - <ContAmtGrp>||N||Number of contract details in this message (number of repeating groups to follow)|
|Component Block - <InstrmtLegExecGrp>||N||
Number of legs
Identifies a Multi-leg Execution if present and non-zero.
|Component Block - <MiscFeesGrp>||N||Required if any miscellaneous fees are reported.|
May be used for cross orders submitted with single order messages.
May be used for cross orders submitted with single order messages.
Can be used to highlight change of order ownership.
|Component Block - <TrdRegTimestamps>||N|
|Component Block - <TrdRegPublicationGrp>||N|
|Component Block - <TradePriceConditionGrp>||N|
May be used to indicate the post-execution trade continuation or lifecycle event. This should echo the value in the message that resulted in this report.
Must be set if EncodedTradeContinuationText <2371> field is specified and must immediately precede it.
|Component Block - <ThrottleResponse>||N|
|Component Block - <RelatedOrderGrp>||N||
May be used to provide a list of orders and their relationship to the order identified in this message.
|Component Block - <StandardTrailer>||Y|