Skip to content
Last updated on

The drop copy FIX session provides read-only visibility into order and trade activity for authorized client identifiers. Clients initiate delivery by sending a TradeCaptureReportRequest; the gateway responds with a TradeCaptureReportRequestAck. Once a request is accepted, the session streams the relevant ExecutionReport messages (35=8) and continues to fan out live updates until the subscription is cleared.

Typical flow:

  1. Client sends TradeCaptureReportRequest (35=AD) identifying the client IDs to monitor.
  2. Gateway replies with TradeCaptureReportRequestAck (35=AQ) indicating whether the subscription is active or rejected.
  3. When accepted, historical executions are replayed followed by live drop copy ExecutionReport traffic for the subscribed clients.
  4. Sending another request with SubscriptionRequestType (263)=2 clears the subscription and stops delivery.

TradeCaptureReportRequest (35=AD)

Used to start or adjust a drop copy subscription. At least one party entry with PartyRole (452)=3 must be supplied, and each PartyID (448) must be a decimal client identifier that is authorized for the FIX session.

TAGNAMETYPEREQDESCRIPTION
568TradeRequestIDstringNCorrelation identifier supplied by the client. Returned in the acknowledgement.
569TradeRequestTypeintNScope of data requested. Only 0 = ALL_TRADES is supported; other values are ignored and treated as ALL_TRADES.
263SubscriptionRequestTypecharNControls subscription lifecycle:
0 = Snapshot (processed as snapshot + updates)
1 = Snapshot + Updates (default)
2 = Disable previous subscription (clears any active client list).
453NoPartyIDsintYNumber of party entries. Must be greater than zero and include at least one client identifier.
↳448PartyIDstringYDecimal client identifier to authorize for drop copy delivery. Multiple entries are permitted.
↳452PartyRoleintYRole of the party entry. Must be 3 = Client ID. Entries with other roles are ignored.
55SymbolstringNOptional symbol filter. Currently ignored.
167SecurityTypestringNOptional security type filter. Currently ignored.
54SidecharNOptional side filter. Currently ignored.

If the request cannot be parsed or contains unauthorized client identifiers, the session rejects the subscription and clears the in-memory client list.


TradeCaptureReportRequestAck (35=AQ)

Returned for every trade capture request, indicating whether the subscription is active. The acknowledgement echoes identifiers from the request when they are present.

TAGNAMETYPEREQDESCRIPTION
568TradeRequestIDstringNEchoes the value from the request.
569TradeRequestTypeintNEchoes the value from the request.
263SubscriptionRequestTypecharNEchoes the value from the request.
911TotNumTradeReportsintNTotal number of trade reports in the snapshot. Not populated for the current implementation.
749TradeRequestResultintYOutcome of the request:
0 = Successful
3 = Invalid parties (missing or malformed client identifiers)
8 = TradeRequestType not supported
9 = Unauthorized for trade capture report request
99 = Other (unexpected error).
750TradeRequestStatusintYSubscription state:
0 = Accepted
1 = Completed
2 = Rejected.
58TextstringNHuman-readable reason (e.g., “Trade capture subscription accepted”, “No authorized client party provided”, or “Unauthorized trade capture client identifier”).

Clients must consider the request rejected when TradeRequestStatus (750)=2 or when TradeRequestResult (749) is any value other than 0. When the gateway acknowledges a disable request (SubscriptionRequestType=2), the result is 0 with text “Trade capture subscription cleared” and no further drop copy data is sent until a new subscription is established.


ExecutionReport (35=8)

After a subscription is accepted, the gateway replays and streams execution reports for the authorized clients. The payload mirrors the execution reports documented in the Order Entry section; key fields are summarized below.

TAGNAMETYPEREQDESCRIPTION
6AvgPxdecimal128CPresent when ExecType (150)=F (Trade). Average execution price across fills for the order.
11ClOrdIDstringYClient order identifier from the originating order flow.
15CurrencystringYCurrency for price and fee fields.
17ExecIDstringYUnique identifier assigned by the exchange for this execution event.
31LastPxdecimal128CPresent when ExecType indicates a fill. Price of the most recent execution.
32LastQtydecimal128CPresent when ExecType indicates a fill. Quantity of the most recent execution.
37OrderIDstringYExchange-assigned order identifier.
38OrderQtydecimal128YOriginal order quantity.
39OrdStatuscharYCurrent order status:
0 = New
1 = Partially Filled
2 = Filled
4 = Canceled
6 = Pending Cancel
8 = Rejected
9 = Suspended
A = Pending New
E = Pending Replace
C = Expired.
41OrigClOrdIDstringYPrevious client order identifier for replace or cancel flows; unset for new orders.
150ExecTypecharYExecution type, matching the values documented for order entry (e.g., 0 = New, 4 = Canceled, F = Trade).

All other fields present in the order entry execution reports may also appear and retain their original semantics. Drop copy sessions never originate ExecutionReport messages; they only mirror activity generated by the matching engine for the subscribed client identifiers.