Imported from previous forum
[ original email was from Mikael Brannstrom - mikael.brannstrom@ngm.se ]
Hi,
I’ve been trying to figure out how quotes are supposed to work, regarding volume updates and snapshot recovery (QuoteStatusRequest/Report).
After digging the specs and the discussion forum, e.g.
http://www.fixprotocol.org/discuss/read/e247c633
http://fixprotocol.org/discuss/read/f3582df8
… there are still some pieces I don’t understand.
I haven’t been able to find how to interpret the BidSize (total volume or visible volume). The only reasonable way to implement volume in quotes seem to be to interpret the BidSize and OfferSize as the total executed volume + available volume, i.e. similar to OrderQty which is (in general) CumQty + LeavesQty.
However, OrigBidSize has been added to the custom fields indicating that BidSize might be interpreted as the visible volume (LeavesQty):
http://www.fixprotocol.org/specifications/fields/search?search=OrigBidSize
Well, I treat it as the total volume for the rest of this post.
Whenever a fill occurs, CumQty and LeavesQty are reported back in an ExecutionReport.
In case the quote issuer need to request a snapshot of all quotes, it will receive QuoteStatusReport messages. However, the QuoteStatusReport does not include CumQty nor LeavesQty. How should the client know what to set the BidSize to if it does not know the CumQty?
What is common practice here? Cancel all quotes and start over with CumQty=0? Or can this information be found somewhere in a snapshot reply? Or have I misunderstood it all?
Mikael,
I believe the common practice is to view bid/offer size as the open or remaining qty, not the total, i.e. different to the semantic of OrderQty. The custom fields you mention have a different intention, i.e. “The original buy side quantity of the quote as known to a Firm when sending a modification request.”. It is what the user believes is still open and covers a potential race condition that does not occur with OrderQty. If OrigBidSize deviates from the current qty, the Quote is probably rejected.
That said, I see the need to additionally offer fields to provide total bid/offer size as an alternate model for quoting. On the request side it allows to run a model similar to orders, i.e. avoid being “over-filled” on a quote. Having BidTotalSize as well as BidSize on the response (QuoteStatusReport, MassQuoteAck), you can easily calculate “CumQty” as BidTotalSize - BidSize.
As soon as the quote is deleted (BidSize=0) I would start back with BidTotalSize=0 (an order would be “Filled”), i.e. a new BidTotalSize coming in would cause BidSize to go up to BidTotalSize again (like a new order). If BidSize>0 then a new BidTotalSize requires you to recalculate BidSize instead. It is easier to understand if you think of BidSize as BidOpenSize.
Hope this helps more than it confuses…
Hi,
I’ve been trying to figure out how quotes are supposed to work,
regarding volume updates and snapshot recovery
(QuoteStatusRequest/Report).After digging the specs and the discussion forum, e.g.
http://www.fixprotocol.org/discuss/read/e247c633
http://fixprotocol.org/discuss/read/f3582df8… there are still some pieces I don’t understand.
I haven’t been able to find how to interpret the BidSize (total volume
or visible volume). The only reasonable way to implement volume in
quotes seem to be to interpret the BidSize and OfferSize as the total
executed volume + available volume, i.e. similar to OrderQty which is
(in general) CumQty + LeavesQty.However, OrigBidSize has been added to the custom fields indicating that
BidSize might be interpreted as the visible volume (LeavesQty): http://-
www.fixprotocol.org/specifications/fields/search?search=OrigBidSizeWell, I treat it as the total volume for the rest of this post.
Whenever a fill occurs, CumQty and LeavesQty are reported back in an
ExecutionReport.In case the quote issuer need to request a snapshot of all quotes, it
will receive QuoteStatusReport messages. However, the QuoteStatusReport
does not include CumQty nor LeavesQty. How should the client know what
to set the BidSize to if it does not know the CumQty?What is common practice here? Cancel all quotes and start over with
CumQty=0? Or can this information be found somewhere in a snapshot
reply? Or have I misunderstood it all?
[ original email was from Mikael Brannstrom - mikael.brannstrom@ngm.se ]
Thanks Hanno!
The race condition in tradeable quotes is what confused me, I couldn’t make it work with the standard fields. I also didn’t want to add custom fields before understanding the spec.
It is … well, somewhat clearer now ![]()
I believe the common practice is to view bid/offer size as the open or
remaining qty, not the total, i.e. different to the semantic of
OrderQty. The custom fields you mention have a different intention, i.e.
“The original buy side quantity of the quote as known to a Firm when
sending a modification request.”. It is what the user believes is still
open and covers a potential race condition that does not occur with
OrderQty. If OrigBidSize deviates from the current qty, the Quote is
probably rejected.