
Overview
In order to ensure that MarketFactory does not impede the exchange of regulatory information between trading counterparties and intermediaries (ECNs), we ensure that all regulatory fields that are specified in a Venue API are supported in the Whisperer Enterprise API, and mapped.
Rather than provide a loose, generic (i.e. obfuscated) mechanism to convey these fields, Whisperer Enterprise makes explicit provision for SEF, EMIR and MIFID requirements as different categories, each with explicit provision for every field, across the trading lifecycle and through the deal/leg/allocation trade structure, as detailed in Message Structure below.
It needs to be understood that there is significant variation in the interpretation and implementation of all regulatory requirements across the market. By ensuring that all variants are accommodated, it follows that the Whisperer API offers a clear view of market best practice, and the potential impact to Customers intending to integrate with a wide range of Venues.
Another very important implication is that just because a regulatory field is specified in the Whisperer API for a particular message and product type does not mean that it will be populated or supported by every Venue. Similarly, it may well be that our Customers have differing views of their regulatory obligations, such that they do not all need to publish particular fields to a given Venue, or use the regulatory details provided by the Venue, internally.
In order to accommodate this variation, Whisperer Enterprise behaves as follows:
- If a regulatory field on an inbound Venue message is not populated, then it is because the Venue does not provide it.
- If a regulatory field is populated on an outbound SBE message from the Client , but the Venue does not support it, then it will be ignored.
- Reporting obligations bilaterally agreed between Customer and Venue may vary between Maker and Taker roles. The Whisperer API is agnostic to this.
Message Structure
MarketFactory allows clients to reference or populate these regulatory fields for appropriate messages via the use of dedicated repeating groups containing key/value pairs, at the appropriate level within the message structure:
The message body contains the RegulatoryBodies field, which provides an explicit indication whether or not SEF, EMIR or MiFID fields are populated elsewhere in the message structure.
NoBodyRegulatoryFields, NoLegRegulatoryFields and NoAllocRegulatoryFields groups contain sequences of key/value pairs, with keys of type BodyRegulatoryKey, LegRegulatoryKey and AllocRegulatoryKey, respectively.
| Message | Parent Group | Name |
|---|
| QuoteRequest | - | NoBodyRegulatoryFields |
| NoLegs | NoLegRegulatoryFields |
| NoLegAllocs | NoAllocRegulatoryFields |
| Quote | - | NoBodyRegulatoryFields |
| MassQuote | - | NoBodyRegulatoryFields |
| NewOrderMultileg | - | NoBodyRegulatoryFields |
| NoLegs | NoLegRegulatoryFields |
| NoLegAllocs | NoAllocRegulatoryFields |
ExecutionReport
| - | NoBodyRegulatoryFields |
| NoLegs | NoLegRegulatoryFields |
| NoLegAllocs | NoAllocRegulatoryFields |
| ExecutionAcknowledgement | - | NoBodyRegulatoryFields |
| NoLegs | NoLegRegulatoryFields |
For more detail reference the SBE Schema.
Venue-Specific Details
The table below sets out what Regulatory keys are supported by Venue and Message
| Venue | Message | Parent Group | Passthru Key | Venue Comment | MarketFactory Comment |
|---|
| Standard Chartered | QuoteRequest | NoBodyPassthruFields
| Reference1 | Optionally supplied notes for this request. | - |
|---|
| Standard Chartered | QuoteRequest | NoBodyPassthruFields
| Reference2 | Optionally supplied notes for this request. | - |
|---|
| Standard Chartered | QuoteRequest | NoBodyPassthruFields
| Reference3 | Optionally supplied notes for this request. | - |
|---|
| Standard Chartered | QuoteRequest | NoBodyPassthruFields
| NDFCurrency | Optional tag which can be used to specify the NDF currency if there is ambiguity as to which currency is non deliverable. | NDF, NDS, NDB only. |
|---|
| Standard Chartered | Quote | NoBodyPassthruFields | NDFCurrency | Optional tag which can be used to specify the NDF currency if there is ambiguity as to which currency is non deliverable. | NDF, NDS, NDB only. |
|---|
| Standard Chartered | Quote | NoBodyPassthruFields | MaturityTime | Fixing time on the fixing date for the NDF contract. This is an optional field but must be expressed in local time with offset to UTC specified. | NDF only. |
|---|
| Standard Chartered | Quote | NoBodyPassthruFields | BidSwapPoints | Bid combined points (aka LHS points) for a SWAP/NDS. Points are scaled. | SWP, NDS only. |
|---|
| Standard Chartered | Quote | NoBodyPassthruFields | OfferSwapPoints | Offer Combined points (aka RHS points) for a SWAP/NDS. Points are scaled. | SWP, NDS only. |
|---|
| Standard Chartered | Quote | NoBodyPassthruFields | MidSwapPoints | The mid points for the (SWAP/NDS) quote. Only provided where the client is in scope for Dodd Frank regulations. As the scope is subject to change all clients must be capable of accepting this tag. Points are scaled. | SWP, NDS only. |
|---|
| Standard Chartered | Quote | NoLegPassthruFields | LegMaturityTime | Optional maturity time for this leg if this is an NDF SSP. | NDS, NDB only. |
|---|
| Standard Chartered | MassQuote | NoBodyPassthruFields | NDFCurrency | Optional tag which can be used to specify the NDF currency if there is ambiguity as to which currency is non deliverable. | NDF only. |
|---|
| Standard Chartered | MassQuote | NoBodyPassthruFields | MaturityTime | Fixing time on the fixing date for the NDF contract. This is an optional field but must be expressed in local time with offset to UTC specified. | NDF only. |
|---|
| Standard Chartered | NewOrderMultileg | NoBodyPassthruFields | TradingReference1 | An optional trading reference (will be returned in the execution). | - |
|---|
| Standard Chartered | NewOrderMultileg | NoBodyPassthruFields | TradingReference2 | An optional trading reference (will be returned in the execution). | - |
|---|
| Standard Chartered | NewOrderMultileg | NoBodyPassthruFields | TradingReference3 | An optional trading reference (will be returned in the execution). | - |
|---|
| Standard Chartered | NewOrderMultileg | NoBodyPassthruFields | NDFCurrency | Optional tag which can be used to specify the NDF currency if there is ambiguity as to which currency is non deliverable. | NDF, NDS, NDB only. |
|---|
| Standard Chartered | NewOrderMultileg | NoLegPassthruFields | LegMaturityTime | Optional maturity time for this leg if this is an NDFSSP/NDS. If supplied this will be validated. | NDS, NDB only. |
|---|
| Standard Chartered | ExecutionReport | NoBodyPassthruFields | TradingReference1 | Optional trading reference returned if supplied on the NewOrderSingle (35=D). | - |
|---|
| Standard Chartered | ExecutionReport | NoBodyPassthruFields | TradingReference2 | Optional trading reference returned if supplied on the NewOrderSingle (35=D). | - |
|---|
| Standard Chartered | ExecutionReport | NoBodyPassthruFields | TradingReference3 | Optional trading reference returned if supplied on the NewOrderSingle (35=D). | - |
|---|
| Standard Chartered | ExecutionReport | NoBodyPassthruFields | NDFCurrency | For NDFs this is the NDF Currency. | NDF, NDS, NDB only. |
|---|
| Standard Chartered | ExecutionReport | NoBodyPassthruFields | MaturityTime | Fixing time on the fixing date for the NDF contract. This is an optional field but must be expressed in local time with offset to UTC specified. | NDF only. |
|---|
| Standard Chartered | ExecutionReport | NoBodyPassthruFields | MidSwapPoints | The mid swap points at execution for SWAP/NDS. This is only supplied for where compliance is required for Dodd-Frank regulations. Points are scaled. | SWP, NDS only. |
|---|
| Standard Chartered | ExecutionReport | NoLegPassthruFields | LegMaturityTime | Optional maturity time for this leg if this is an NDFSSP/NDS. | NDS, NDB only. |
|---|
| FXall QuickTrade | QuoteRequest | NoBodyPassthruFields | MakerGroupName | The group handling the order at the Maker. | - |
|---|
| FXall QuickTrade | QuoteRequest | NoBodyPassthruFields | TakerGroupName | The name of the group which the Taker that submitted the Order for trading belongs to. | - |
|---|
| FXall QuickTrade | QuoteRequest | NoLegPassthruFields | SpotDate | The Spot Date of all requirements within this leg. | - |
|---|
| FXall QuickTrade | QuoteRequest | NoAllocPassthruFields | TakerCustom | A field for custom-use by the Taker. | - |
|---|
| FXall QuickTrade | QuoteRequest | NoAllocPassthruFields | TakerAccountName | The Taker's name for the account being traded against. | - |
|---|
| FXall QuickTrade | QuoteRequest | NoAllocPassthruFields | MakerCustom | A field for custom-use by the Maker. | - |
|---|
| FXall QuickTrade | QuoteRequest | NoAllocPassthruFields | SettlementType | Indicates whether the settlement instructions to be used for this trade are "Standard" or "Special" . | - |
|---|
| FXall QuickTrade | Quote | NoBodyPassthruFields | MakerOrderCustom | A field for custom-use by the Maker. FXall will store this field on receipt and acceptance by FXall's system and return it to the Maker every subsequent time the DefaultCOrder is sent to the Maker. | - |
|---|
| FXall QuickTrade | Quote | NoLegPassthruFields | MakerLegCustom | A field for custom-use by the Maker. FXall will store this field on receipt and acceptance by FXall's system and return it to the Maker every subsequent time the DefaultCOrder is sent to the Maker. | - |
|---|
| FXall QuickTrade | NewOrderMultileg | NoBodyPassthruFields | MakerGroupName | The group handling the order at the Maker | - |
|---|
| FXall QuickTrade | NewOrderMultileg | NoBodyPassthruFields | TakerGroupName | The name of the group which the Taker that submitted the Order for trading belongs to. | - |
|---|
| FXall QuickTrade | NewOrderMultileg | NoBodyPassthruFields | MakerOrderCustom | A field for custom-use by the Maker. FXall will store this field on receipt and acceptance by FXall's system and return it to the Maker every subsequent time the DefaultCOrder is sent to the Maker. | - |
|---|
| FXall QuickTrade | NewOrderMultileg | NoLegPassthruFields | SpotDate | The Spot Date of all requirements within this leg. | - |
|---|
| FXall QuickTrade | NewOrderMultileg | NoLegPassthruFields | MakerLegCustom | A field for custom-use by the Maker. FXall will store this field on receipt and acceptance by FXall's system and return it to the Maker every subsequent time the DefaultCOrder is sent to the Maker. | - |
|---|
| FXall QuickTrade | NewOrderMultileg | NoAllocPassthruFields | SettlementType | Indicates whether the settlement instructions to be used for this trade are "Standard" or "Special" . | - |
|---|
| FXall QuickTrade | ExecutionAcknowledgement | NoBodyPassthruFields | MakerGroupName | The group handling the order at the Maker | - |
|---|
| FXall QuickTrade | ExecutionAcknowledgement | NoBodyPassthruFields | TakerGroupName | The name of the group which the Taker that submitted the Order for trading belongs to. | - |
|---|
| FXall QuickTrade | ExecutionAcknowledgement | NoBodyPassthruFields | MakerOrderCustom | A field for custom-use by the Maker. FXall will store this field on receipt and acceptance by FXall's system and return it to the Maker every subsequent time the DefaultCOrder is sent to the Maker. | - |
|---|
| FXall QuickTrade | ExecutionAcknowledgement | NoLegPassthruFields | SpotDate | The Spot Date of all requirements within this leg. | - |
|---|
| FXall QuickTrade | ExecutionAcknowledgement | NoLegPassthruFields | MakerLegCustom | A field for custom-use by the Maker. FXall will store this field on receipt and acceptance by FXall's system and return it to the Maker every subsequent time the DefaultCOrder is sent to the Maker. | - |
|---|
|