The Lab

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from this space and version 1.5.96

oth cases, standard RFS subscription rules ap

Table of Contents

Overview

...

In ESP pricing, a quote is rendered indicative by publication of zero quantities against prices for a given rung and side.

In addition, publication of a message without any rungs will effectively result in the complete withdrawal of the previous published ladder

QuoteType

For Quotes, QuoteType lives in the body level, and refers to the overall Quote Tradeability. Where as MassQuotes, it lives in NoQuoteEntries and it refers to the specific QuoteEntry

For a single Leg product, where BidPx is populated, but OfferPx is not.

  • Quote
    • The Body level, QuoteType.BidIsTradeable will be set to True
  • MassQuotes
    • The NoQuoteSets[1].NoQuoteEntries[X].QuoteType.BidIsTradeable will be set to True.

For Swap, Where the Near Leg OfferPx is populated, and the Far Leg BidPx is populated.

  • Quote
    • The Body level, QuoteType.BidIsTradeable will be set to True
  • MassQuotes
    • The Near Leg NoQuoteSets[1].NoQuoteEntries[X].QuoteType.OfferIsTradeable will be set to True, and the Far leg NoQuoteSets[2].NoQuoteEntries[X].QuoteType.BidIsTradeable will be set to True.

For Blocks, we always set both BidIsTradeable and OfferIsTradeable to True or Both to False

  • Quote
    • If the BLK is tradeable, both QuoteType.BidIsTradeable and QuoteType.OfferIsTradeable will be set to True, regardless of the overall side.
  • MassQuote
    • If level(X), if is Tradeable, all NoQuoteSets[ALL].NoQuoteEntries[X].QuoteType.BidIsTradeable and NoQuoteSets[ALL].NoQuoteEntries[X].QuoteType.OfferIsTradeable will be set True.
    • If level(Y) is not Tradeable, all NoQuoteSets[ALL].NoQuoteEntries[Y].QuoteType.BidIsTradeable and NoQuoteSets[ALL].NoQuoteEntries[Y].QuoteType.OfferIsTradeable will be set False.

Maker Quote Management

In ESP, Makers publish MassQuotes.  Each message is a single quote, which should contain a full snapshot of your price ladder for that symbol & price bucket.

...

  1. Venue Accepts Maker Trade - this is essentially confirming the trade has been completed successfully
  2. Venue Rejects Maker Trade -  this may happen for a variety of reasons - e.g. mandatory regulatory fields are incorrect.
  3. Venue Accepts Maker Rejection -  this is essentially a simple acknowledgment that no trade has been completed.
  4. Venue Rejects Maker Rejection - the Venue was unable to propery process therejection for some reason. This is an indication of a serious system error.

If It should be noted that there is a lot of variation in how this terminal message is used across the venues:

  • Some venues will only send 1. E.g. Bloomberg
  • Some Venues will only send 1. or 2. E.g. CboeFX.
  • Some Venues will send all variants. E.g. Currenex RFS
  • Some Venues may not use this message at all.


Info

In the absence of an ExecutionAck from the venue, Whisperer generates a synthetic ExecutionAck messages for Filled and Rejected orders.

Please note that the synthetic ExecutionAck from Whisperer does not apply to the Firm trading workflow, where the venue notifies (the maker) of the fills using ExecutionReport in response to MassQuote from the maker.

Please refer to 2025-09-16 - Post-Trade Normalisation (Execution Context) - Synthetic ExecutionAcknowledgement for more infoAt present Whisperer does not  generate synthetic ExecutionAck messages  as it is not possible to ensure uniformity, or know the actual venue state with any certainty.


Warning
titleManual Intervention Required

Should the Client receive an ExecutionAck (Rejected) message, then this is indicative of a serious condition that requires urgent rectification. The Client system should send a an urgent notification to relevant support teams that manual intervention is required.

...

Each individual Quote is good until replaced, withdrawn or ValidUntilTime expiry.  

Client as Taker

Anchor
Baskets
Baskets
Whisperer supports two Taker RFS pricing models:

...

In this model each QuoteSet represents a different Leg/value date, and each QuoteEntry for a given QuoteSet contains the Leg quote details provided by an individual LP, identified by reference to the "ExecutionVenue" EntryPassthruKey.

Whisperer does not apply any particular sorting across the QuoteEntries for a given QuoteSet, the Client is expected to apply their own rules for identification of "best price" etc.

QuoteEntries in MassQuote are sorted by best Bid/Offer.

    • SPT, FWD and NDF are sorted by BidPx/OfferPx.
    • SWP and NDS are sorted by Swap points.
    • BLK and NDB are sorted by SpotRate.

If two QuoteEntries have the same price, they will be ordered from Oldest to Newest.

Please also see Price RepresentationWhen submitting an order against a Basket MassQuote, the ExecutionVenue PartyRole must be provided, in addition to the QuoteID.


In both cases, standard RFS subscription rules apply - the subscription is terminated by a deal request or a pricing duration timeout.

...

Note
titleLast-Look vs Firm Trading

The messages flows documented here illustrate illustrates a standard "Last-Look" trading model.

"Firm" trading is possible on some Venues and comprises standard MassQuote provision alongside receipt of ExecutionReport messages from the Venue notifying the maker of the fills.

...