Stale Quote Protection refers to configuration settings that can be invoked by MarketFactory, to direct FeedServers to reject orders submitted by the customer application. Rather than sending previously quoted orders to the trading venue. The intent of this is to prevent orders being sent to the venue that are too old or stale, and would ultimately result in venue rejection.

Stale quote protection is available for Taker (liquidity consumer) connections to venues, where the customer application submits previously-quoted orders ( that contain within them a quoteID) specifically;

 

Name of Trading VenueMF Feed name
Bank of America Meryll LynchBAML
BNP ParibasBNPP
Barclays BankBarx
Citadel SecuritiesCitadel
Citi BankCiti
Commerz BankCommerz
Credit SuisseCreditSuisse
Deutsche RapidDeuRapid
EBS SelectEBS Select
Goldman SachsGoldmanSachs
HSBCHSBC
Morgan StanleyMorgan Stanley
NomuraNomura
Royal Bank of CanadaRBC
Royal Bank of ScotlandRBS

Royal Bank of Scotland (RBS) will shortly be
rebranding as Natwest Markets

Saxo MarketsSaxo
Societe GeneraleSocGen
Standard CharteredStandardChartered
UBSUBS
XTXXTX

 

Stale Quote Protection (Y/N)

If both parameters are specified, either setting can cause a quote to be removed from consideration.  Another way to think of it is that both conditions must be satisfied in order for a quote to be considered valid.

Example

 

Quotes

To keep the example simple, we'll use only bid quotes. The example below displays that the history of quotes that live for a duration of a single tick.

QuoteID
Price
Quantity
Status
Delete Time
Quote11.401000000deleted00:00:05
Quote21.301000000deleted00:00:04
Quote31.102000000deleted00:00:03
Quote41.201000000deleted00:00:02
Quote51.101000000deleted00:00:01
Quote611000000current 

 

StaleAfterMilliseconds=2000, DeleteMessageBuffer not specified

The example below demonstrates the history of quotes once the condition of stale after 200 milliseconds is invoked without the deleted message buffer

Price and Quantity Needed
Quote matched
What happens
1000000@1Quote6QuoteID returned
[email protected]Quote3No quote matched – Quote3 is too old
[email protected]Quote5QuoteID returned
[email protected]Quote2No quote matched – Quote2 is too old

 

StaleAfterMilliseconds not specified, DeleteMessageBuffer = 3

With both conditions invoked (and the buffer size set to a tick size of three (3)) the history for the same period would be seen as below:

Price and Quantity Needed

Quote matched

What happens
1000000@1Quote6QuoteID returned
[email protected]Quote3QuoteID returned
[email protected]Quote5QuoteID returned
[email protected]Quote2No quote matched – Quote2 is outside DeleteMessageBuffer