Taker Counterparties
Synopsis
If configured to do so, Whisperer will populate the counterparty field of the TradeCapture message with a JSON string containing any known counterparties submitted in the execution report. The full set of counterparties is configured on a per-instance basis and applies to all venues in the instance.
Note
As counterparty is set on a per-instance basis the feature is either on or off for all venues in an instance.
Any string-type FIX tag and any partyRole, as well as partySubIDType, can be included.
The intention is to normalise the MarketFactory presentation of counterparties to allow customers to pick and choose the details they're interested in for order processing.
Operational Use
The table below lists examples of Trading Venues and the counterparty information they provide, alongside a JSON extract of how the resulting information would be transported by Whisperer to the customer application.
Number | Description | FIX Fragment | Resulting JSON |
|---|---|---|---|
| 1 | LastMkt tag | 30=Hotspot | {"LastMkt":{"ID":"Hotspot"}} |
| 2 | LastMkt tag, 2 parties: Acceptable Counterparty and Executing Firm | 453=2 448=BAML 452=1 448=Citadel 452=56 30=Hotspot | {"AcceptableCounterparty":{"ID":"Citadel"},"ExecutingFirm":{"ID":"BAML"},"LastMkt":{"ID":"Hotspot"}} |
| 3 | LastMkt tag, 2 parties: Acceptable Counterparty and Executing Firm; ExecutingFirm BAML has 2 subparties, Application and Firm | 453=2 448=BAML 452=1 802=2 523=UBS 803=1 523=Whisperer 803=4 448=Citadel 452=56 30=Hotspot | {"AcceptableCounterparty":{"ID":"Citadel"},"ExecutingFirm":{"Application":"Whisperer","Firm":"UBS","ID":"BAML"}, |
| 4 | Corner case: LastMkt tag with hypothetical LastMkt party (duplicate counterparty), Executing Firm party | 453=2 448=BAML 452=1 448=Citadel 452=56 30=Hotspot | {"ExecutingFirm":{"ID":"BAML"},"LastMkt":[{"ID":"Hotspot"},{"ID":"Citadel"}]} |
| 5 | Corner case: AcceptableCounterparty party, ExecutingFirm party=BAML with duplicate subparty (Application) and subparty Firm, and LastMkt tag | 453=2 448=BAML 452=1 802=3 523=UBS 803=1 523=Whisperer 803=4 523=Reuters2000 803=444 8=Citadel 452=56 30=Hotspot | {"AcceptableCounterparty":{"ID":"Citadel"},"ExecutingFirm":{"Application":["Whisperer","Reuters2000"],"Firm":"UBS", |
This example shows counterparty information as received in the FIX messages and presented in the TradeCapture message. The counterparty information is highlighted in red.
FIX Message (execution report):
TradeCapture message:
FIX Message (trade capture report):
TradeCapture Message:
Maker Counterparties
Gain GTX Maker
For the NewOrderMessage, PartyID is populated using FIX tag 453 (defined as NoPartyID) from the execution report, with each entry also having a FIX tag 452 (defined as PartyRole) entry included if present.
For the NewOrderMessage.detail (contained within the details field of the message where JSON counterparty information is held) the field is populated using data obtained from the venue containing the counterparty details an example is below:
Prototype:
Example:
| Trading Venue | AcountID (FIX tag 1) | PartyID (FIX tag 448) | ExecutingFirm (FIX tag 448) | Time in Force (FIX tag 59) | ContraTraderID (FIX tag 337) | ExecutingTrader | Broker of Credit |
|---|---|---|---|---|---|---|---|
| CURRENEX (RFQ) | - | onAppMsg | onAppMsg | - | - | - | - |
CURRENEX (ESP) | - | onAppMsg | onAppMsg | - | - | - | - |
| CURRENEX (OUCH) | - | onAppMsg | onAppMsg | - | - | - | - |
| EBS DIRECT | onAppMsg | onAppMsg | onAppMsg | onAppMsg | - | onAppMsg | onAppMsg |
| FASTMATCH | onAppMsg | - | - | onAppMsg | - | - | - |
| HOTSPOT | ExecutionReport | - | - | - | ExecutionReport | ExecutionReport | - |
| HOTSPOT (RFS) | - | onAppMsg | onAppMsg | - | - | - | - |
| INTEGRAL | - | - | - | onAppMsg | - | - | - |