The Whisperer Enterprise SBE Schema is Maker/Taker agnostic, meaning that Quote Requests, Quotes, Orders and Executions may flow either to or from the client - the direction obviously being dependent on the Venue that the client is connected to.
The perspective of transaction sides is always from the perspective of the originator of the transaction, with Takers Buying and Selling against Makers Bids and Offers as follows:
Takers will always Buy or Sell their specified Dealt Currency - which is either
Conversely, Makers will publish quotes as Bids and Offers against the Base of the quoted Ccy pair:
This is set out in tabular form below:
| Taker Trades | against Maker | |
|---|---|---|
| Base Ccy | Terms Ccy | |
| BUY | SELL | OFFER |
| SELL | BUY | BID |
| In short, QuoteRequest, NewOrderMultileg and ExecutionReport all always express a transaction from the Taker perspective. Quotes always express prices from the Maker perspective. |
When publishing quotes as a Maker, it is important that the basic principles of price construction are understood, especially when considering multi-Legged product types.
Relevant details are provided in the QuoteRequest as follows:
When pricing a multi-Legged request, the Maker needs to determine which side of Spot is to be used across all the individual Legs.
Business rules for Swap pricing are well known and summarised in the table below:
| Near Leg | Far Leg | Dealt Currency | Far > Near | Side of Spot | Near Leg Fwd Pts & All-in | Far Leg Fwd Pts & All-in |
|---|---|---|---|---|---|---|
| Sell | Buy | Base | TRUE | Offer | Bid | Offer |
| Buy | Sell | Terms | TRUE | Offer | Bid | Offer |
| Sell | Buy | Base | FALSE | Bid | Bid | Offer |
| Buy | Sell | Terms | FALSE | Bid | Bid | Offer |
| Sell | Buy | Terms | TRUE | Bid | Offer | Bid |
| Buy | Sell | Base | TRUE | Bid | Offer | Bid |
| Sell | Buy | Terms | FALSE | Offer | Offer | Bid |
| Buy | Sell | Base | FALSE | Offer | Offer | Bid |
When considering Block requests, the simple "Far > Near" check is not sufficient to determine side of Spot. A naive approach is to simply extend the Swaps model above and arithmetically net all the Legs quantities to get an aggregated Buy or Sell. If the maker is more sophisticated, then the Net Present Value of each Leg can be determined, and those amounts aggregated.
Given the complexity of accounting for Venue-specific message and representational quirks, MarketFactory validates that each constructed quote adheres to some basic rules:
SpotRate used in MassQuote for BankBasket follows the same convention as per the above Spot Side Determination logic.
But to be consistent with the BidPx/OfferPx in the NoQuoteEntries group, HasExtendedBidFields / HasExtendedOfferFields are populated as per below:
QuoteSets | Near Leg QuoteSet1 | Far Leg QuoteSet2 | ||||||
|---|---|---|---|---|---|---|---|---|
NoQuoteEntries | BidPx | OfferPx | HasExtendedBidFields | HasExtendedOfferFields | BidPx | OfferPx | HasExtendedBidFields | HasExtendedOfferFields |
| Bid QuoteEntry | ✓ | ✓ | ✓ | ✓ | ||||
| Offer QuoteEntry | ✓ | ✓ | ✓ | ✓ | ||||