110 likes | 267 Views
Trade Half Matching. Description of message flows in Emapi and FIX. Background. In Release 2.0, an outgoing (from Burgundy) TradeCaptureReportRequest was added to the counterparty of a TradeCaptureReport.
E N D
Trade Half Matching Description of message flows in Emapi and FIX
Background • In Release 2.0, an outgoing (from Burgundy) TradeCaptureReportRequest was added to the counterparty of a TradeCaptureReport. • The system sends a Trade Capture Report Request also for the second Trade Capture Report sent in by the counterparty as a trade confirmation. • Issue: there was not enough information in the Execution Report to identify a matched trade in an Execution Report with such a Trade Capture Report Request.
Background • Solution: the tag 198 (SecondaryOrderID) of ExecutionReport now contains TradeRequestID of the counterparty’s TradeCaptureReportRequest for ExecType = ’F’ (Trade) / MatchType = 2 (two-party trade report).
Scenario • Trading Members A and B have agreed upon a trade over the phone. • A enters his side of the trade, TradeHalf-A • Both A and B receive a private trade events with TradeHalf-A • A sees TradeHalf-A in the GUI as ”Sent and unconfirmed” • B sees TradeHalf-A in the GUI as ”Received and unconfirmed”
Scenario cont. • B confirms TradeHalf-A by sending in TradeHalf-B. • A and B receive a private trade event each with TradeHalf-B • B sees TradeHalf B as ”Received and unconfirmed” for a minimal time in the GUI. • Immediately after, the system matchas TradeHalf-A and TradeHalf-B and sends a matched Trade. • Both A and B see the Trade as Confirmed in their GUI:s.
Private Trade Event flow in Emapi • TradeHalf-A • To A • TRADE_REPORT_HALF, ownMember = A, receivingMember = null, isBid = true, tradeId = T1G09KKC3G-0, bidSideId = null, askSideId = null • A’s client displays trade as ”Sent and unconfirmed” • To B: • TRADE_REPORT_HALF, ownMember = A, receivingMember = A, isBid = true, tradeId = T1G09KKC3G-0, bidSideId = null, askSideId = null • B’s client displays trade as ”Received and unconfirmed” • Note that receivingMember is set to A to indicate that this is a copy of B’s trade half.
Private Trade Event flow in Emapi cont. • TradeHalf-B: • To A • TRADE_REPORT_HALF, ownMember = B, receivingMember = B, isBid = false, tradeId = T1G09KKFIA-0, bidSideId = null, askSideId = null • A’s client displays trade as ”Received and unconfirmed”. • Note that receivingMember is set to B to indicate that this is a copy of B’s trade half. • To B • TRADE_REPORT_HALF, ownMember = B, receivingMember = null, isBid = false, tradeId = T1G09KKFIA-0, bidSideId = null, askSideId = null • B’s client displays trade as ”Sent and unconfirmed”
Private Trade Event flows in Emapi, cont. • Matched trade: • To A • NEW, ownMember = A, receivingMember = null, isBid = false, tradeId = T1G09KKFIA-1, bidSideId = T1G09KKC3G-0, askSideId = T1G09KKFIA-0 • To B • NEW, ownMember = B, receivingMember = null, isBid = true, tradeId = T1G09KKFIA-1, bidSideId = T1G09KKC3G-0, askSideId = T1G09KKFIA-0 • The trading clients of A and B use the bidSideId and askSideId to change the status of the unconfirmed trade halves to confirmed.
Message flow in FIX • A enters TradeCaptureReport with ClOrdID = AXYZ • Client may optionally set OrderID to AXYZ instead. • BURG system creates TradeID T1G09KKC3G-0 for A’s side of the trade. • A’s client displays trade as ”Sent and unconfirmed”. • BURG sends TradeCaptureReportRequest to B with TradeRequestID = T1G09KKC3G-0 • B’s client displays trade as ”Received and unconfirmed”
Message flow in FIX, cont. • B confirms trade by sending in TradeCaptureReport with ClOrdID = BXYZ. • BURG system creates TradeID T1G09KKFIA-1 for B’s side of the trade. • BURG sends TradeCaptureReportRequest to A with TradeRequestID = T1G09KKFIA-0 • A’s client displays trade as ”Received and unconfirmed”.
Message flow in FIX cont. • BURG sends matched trade as ExecutionReport • To A • ClOrderID = AXYZ • SecondaryOrderID = T1G09KKFIA-0 • To B • ClOrderID = BXYZ • SecondaryOrderId = T1G09KKC3G-0 • The trading clients of A and B use ClOrderID and SecondaryOrderID to change the status of the unconfirmed trade halves to confirmed.