difference between FIX "Market Data Request" & "Quote Request"

Imported from previous forum

Hi,

Recently I have started working on the FIX protocol, but i am confused in the difference between FIX “Market Data Request” & “Quote Request”, i looked at there definitions in “FIXwiki” but they are still unclear to me.

Kindly can someone explain there difference and for what purpose they are used;

  • Which request gives top of the book?
  • Which request gives book depth?
  • Which request gives level 1 data?
  • Which request gives level 2 data?
  • Which request gives trade data?
  • Which request gives quote (bid/ask) data?

Thanks…


Regards,
Taimoor

[ original email was from Greg Wood - greg.wood@credit-suisse.com ]
Hi Taimoor,

Since the word “quote” is freely used in different contexts this is a good question, and I’ve spent some time with colleagues disentangling the common confusion as we implement both types of messaging. There are obviously lots of complexities to the question, but I’ll try and make some generalization from the perspective of FIX messaging.

Quotes are generally intended - though not always - for 2-way interaction. You would request a quote for a particular instrument (or a continuous stream of quotes) and then choose whether you wish to trade against the quote by placing an order that references the original quote ID. They are typically used in markets where you require a dealer to provide pricing, such as FX, OTC derivatives, or even listed products that do not have much liquidity. Typically quotes have a finite life, and if you place an order on a quote that has expired you will typically be rejected, though you may also get price improvement if the quote has moved in your favor. Quotes are usually requested based on the size that you wish to trade. To add to the confusion, it is possible for dealers to pass on quotes that are indicative, i.e. they cannot be traded against.

FIX Message Types for quotes are R, b, S and Z.

Market data is a 1 way stream of data that provides an indication of where a market is priced. It is typically used for listed products such as stocks, futures and exchange traded options. If you wish to trade against the prices, you would route the orders through whatever type of access you have to the marketplace. Since market data is continuously updated, if you place an order based on a market data price you will either take the price, join the book or trade through the book depending on where the market has moved. Market data subscriptions may be for top-of-book and/or depth-of-book, and will update based on how the order book changes. The NBBO in the US is an example of aggregated market data from different venues, though market data would typically be subscribed from a single venue.

FIX Message Types for market data are V, W, X and Y.

With regards to your questions below, you would typically receive all of this information through a market data request. FIX market data messages typically use repeating groups to show bid price/size and ask price/size enumerated based on their postion in the book. Trades are typically updated as a seperate message or may be sent as a part of an update to the book. For exchanges and ECNs (including those for FX) will typically disseminate prices as market data messages.

If you wanted to use quote messages to create a depth of book based on dealer prices you would usually have to request quotes for different sizes and synthesize your book since the bid/ask spread widens with increased size. For example in FX you may request a quote for 1 million, a quote for 2 million, a quote for 5 million and a quote for 10 million to build a synthetic view of a dealers book.

So while you may talk about a “quote” in any marketplace, from a FIX perspective it generally implies 2-way interaction for prices made on your behalf, whereas market data is a subscription to prices available to everyone.

Hope this helps,

  • Greg

Hi,

Recently I have started working on the FIX protocol, but i am confused in the difference between FIX “Market Data Request” & “Quote Request”, i looked at there definitions in “FIXwiki” but they are still unclear to me.

Kindly can someone explain there difference and for what purpose they are used;

  • Which request gives top of the book?
  • Which request gives book depth?
  • Which request gives level 1 data?
  • Which request gives level 2 data?
  • Which request gives trade data?
  • Which request gives quote (bid/ask) data?

Thanks…


Regards,
Taimoor

[ original email was from John Harris - john.harris@bondmart.com ]
Greg,

Well done, as usual, but let me correct or clarify in several respects.

A quote is always executable, whether time bounded. If it isn’t executable, it isn’t a quote. In request-for-quote trading frameworks, the quote request frequently responds to a published indicative price. Dealers frequently use the oxymoron “indicative quote” to describe their indicative bid and offer prices, but in doing so they are just being deceptive and not really expressing quotes.

A valid quote always contains, implicitly or explicitly, (1) instrument, (2) side, (3) price, (4) quantity, (5) time in force, and (6) settlement terms. If any of those items are missing, it isn’t a quote. A quote constitutes an express willingness by one party to enter into a contract on definite terms. Therefore, a quote is always an order and a quote can always be used to build at least a virtual order book.

Quotes may be one-side or two-sided. A one-sided quote is either a bid (express willingness to buy on definite terms) or an offer (express willing to sell on definite terms). A two-sided quote consists of both a bid and offer from the same party.

I would urge caution with respect to your suggestion that one can build a synthetic order book by requesting quotes from multiple dealers in an RFQ setting. Often, even the things that come back from dealers in response to quote requests are fake quotes. That is, the dealer is not bound to act on them, but rather, merely induces customers to give him real quotes that he can then act on.

An order book should consist only of real orders. One must investigate the contractual details of RFQ markets to ascertain that they are not in fact artfully-designed fleecing operations.

Best,
John

Hi Taimoor,

Since the word “quote” is freely used in different contexts this is a good question, and I’ve spent some time with colleagues disentangling the common confusion as we implement both types of messaging. There are obviously lots of complexities to the question, but I’ll try and make some generalization from the perspective of FIX messaging.

Quotes are generally intended - though not always - for 2-way interaction. You would request a quote for a particular instrument (or a continuous stream of quotes) and then choose whether you wish to trade against the quote by placing an order that references the original quote ID. They are typically used in markets where you require a dealer to provide pricing, such as FX, OTC derivatives, or even listed products that do not have much liquidity. Typically quotes have a finite life, and if you place an order on a quote that has expired you will typically be rejected, though you may also get price improvement if the quote has moved in your favor. Quotes are usually requested based on the size that you wish to trade. To add to the confusion, it is possible for dealers to pass on quotes that are indicative, i.e. they cannot be traded against.

FIX Message Types for quotes are R, b, S and Z.

Market data is a 1 way stream of data that provides an indication of where a market is priced. It is typically used for listed products such as stocks, futures and exchange traded options. If you wish to trade against the prices, you would route the orders through whatever type of access you have to the marketplace. Since market data is continuously updated, if you place an order based on a market data price you will either take the price, join the book or trade through the book depending on where the market has moved. Market data subscriptions may be for top-of-book and/or depth-of-book, and will update based on how the order book changes. The NBBO in the US is an example of aggregated market data from different venues, though market data would typically be subscribed from a single venue.

FIX Message Types for market data are V, W, X and Y.

With regards to your questions below, you would typically receive all of this information through a market data request. FIX market data messages typically use repeating groups to show bid price/size and ask price/size enumerated based on their postion in the book. Trades are typically updated as a seperate message or may be sent as a part of an update to the book. For exchanges and ECNs (including those for FX) will typically disseminate prices as market data messages.

If you wanted to use quote messages to create a depth of book based on dealer prices you would usually have to request quotes for different sizes and synthesize your book since the bid/ask spread widens with increased size. For example in FX you may request a quote for 1 million, a quote for 2 million, a quote for 5 million and a quote for 10 million to build a synthetic view of a dealers book.

So while you may talk about a “quote” in any marketplace, from a FIX perspective it generally implies 2-way interaction for prices made on your behalf, whereas market data is a subscription to prices available to everyone.

Hope this helps,

  • Greg

Hi,

Recently I have started working on the FIX protocol, but i am confused in the difference between FIX “Market Data Request” & “Quote Request”, i looked at there definitions in “FIXwiki” but they are still unclear to me.

Kindly can someone explain there difference and for what purpose they are used;

  • Which request gives top of the book?
  • Which request gives book depth?
  • Which request gives level 1 data?
  • Which request gives level 2 data?
  • Which request gives trade data?
  • Which request gives quote (bid/ask) data?

Thanks…


Regards,
Taimoor

Thanks Greg and John,

Your explanation has helped me alot understand the difference.

Thanks…


Regards,
Taimoor.

Greg,

Well done, as usual, but let me correct or clarify in several respects.

A quote is always executable, whether time bounded. If it isn’t executable, it isn’t a quote. In request-for-quote trading frameworks, the quote request frequently responds to a published indicative price. Dealers frequently use the oxymoron “indicative quote” to describe their indicative bid and offer prices, but in doing so they are just being deceptive and not really expressing quotes.

A valid quote always contains, implicitly or explicitly, (1) instrument, (2) side, (3) price, (4) quantity, (5) time in force, and (6) settlement terms. If any of those items are missing, it isn’t a quote. A quote constitutes an express willingness by one party to enter into a contract on definite terms. Therefore, a quote is always an order and a quote can always be used to build at least a virtual order book.

Quotes may be one-side or two-sided. A one-sided quote is either a bid (express willingness to buy on definite terms) or an offer (express willing to sell on definite terms). A two-sided quote consists of both a bid and offer from the same party.

I would urge caution with respect to your suggestion that one can build a synthetic order book by requesting quotes from multiple dealers in an RFQ setting. Often, even the things that come back from dealers in response to quote requests are fake quotes. That is, the dealer is not bound to act on them, but rather, merely induces customers to give him real quotes that he can then act on.

An order book should consist only of real orders. One must investigate the contractual details of RFQ markets to ascertain that they are not in fact artfully-designed fleecing operations.

Best,
John

Hi Taimoor,

Since the word “quote” is freely used in different contexts this is a good question, and I’ve spent some time with colleagues disentangling the common confusion as we implement both types of messaging. There are obviously lots of complexities to the question, but I’ll try and make some generalization from the perspective of FIX messaging.

Quotes are generally intended - though not always - for 2-way interaction. You would request a quote for a particular instrument (or a continuous stream of quotes) and then choose whether you wish to trade against the quote by placing an order that references the original quote ID. They are typically used in markets where you require a dealer to provide pricing, such as FX, OTC derivatives, or even listed products that do not have much liquidity. Typically quotes have a finite life, and if you place an order on a quote that has expired you will typically be rejected, though you may also get price improvement if the quote has moved in your favor. Quotes are usually requested based on the size that you wish to trade. To add to the confusion, it is possible for dealers to pass on quotes that are indicative, i.e. they cannot be traded against.

FIX Message Types for quotes are R, b, S and Z.

Market data is a 1 way stream of data that provides an indication of where a market is priced. It is typically used for listed products such as stocks, futures and exchange traded options. If you wish to trade against the prices, you would route the orders through whatever type of access you have to the marketplace. Since market data is continuously updated, if you place an order based on a market data price you will either take the price, join the book or trade through the book depending on where the market has moved. Market data subscriptions may be for top-of-book and/or depth-of-book, and will update based on how the order book changes. The NBBO in the US is an example of aggregated market data from different venues, though market data would typically be subscribed from a single venue.

FIX Message Types for market data are V, W, X and Y.

With regards to your questions below, you would typically receive all of this information through a market data request. FIX market data messages typically use repeating groups to show bid price/size and ask price/size enumerated based on their postion in the book. Trades are typically updated as a seperate message or may be sent as a part of an update to the book. For exchanges and ECNs (including those for FX) will typically disseminate prices as market data messages.

If you wanted to use quote messages to create a depth of book based on dealer prices you would usually have to request quotes for different sizes and synthesize your book since the bid/ask spread widens with increased size. For example in FX you may request a quote for 1 million, a quote for 2 million, a quote for 5 million and a quote for 10 million to build a synthetic view of a dealers book.

So while you may talk about a “quote” in any marketplace, from a FIX perspective it generally implies 2-way interaction for prices made on your behalf, whereas market data is a subscription to prices available to everyone.

Hope this helps,

  • Greg

Hi,

Recently I have started working on the FIX protocol, but i am confused in the difference between FIX “Market Data Request” & “Quote Request”, i looked at there definitions in “FIXwiki” but they are still unclear to me.

Kindly can someone explain there difference and for what purpose they are used;

  • Which request gives top of the book?
  • Which request gives book depth?
  • Which request gives level 1 data?
  • Which request gives level 2 data?
  • Which request gives trade data?
  • Which request gives quote (bid/ask) data?

Thanks…


Regards,
Taimoor

I have some FX Spot Markets implemented for different currency pairs and for different clients. The most active markets are USD/COP, USD/CLP and USD/PEN. The main aspects of these markets are:

  1. There are a lot of users connected and watching markets (between 100 to 500 users).
  2. Many of these users are introducing, modifying and removing orders, many of them are also hitting and taking orders, not necessary against the best orders in the market, but surely against the best orders available for them.
  3. Bids are sorted descending by price and Offers ascending by price.
  4. Orders at the same price are not accumulated.
  5. Normally in the market there’s a depth of 100 to 300 orders for each side.
  6. All connected users that have access to see any market, have the right to see all orders in the market
  7. In order to trade against an order, the amount of bilateral credit (between the order owner and who wants to hit/take the order) should be enough to cover the order amount. Therefore each order has an indicator (green light) that shows if an order is tradable. If the order is not tradable, the indicator is red.
  8. When other user connects and in the market already exist 200 bids and 250 offers, all orders are sent, so the user can re-create the entire order book.
  9. When a user receives an order, it uses credit information (that previously received) to set green or red color.
  10. Usually there are several changes per second in orders, each change is sent to all connected users just when they occur.
  11. Each market has special rules about minimum and maximum amount, basic fraction for the amount and price, trading hours, defined time to cancel transactions, defined time to record transactions and confirm them.
  12. There is no match between bids and offers
  13. A User can accept any bid u offer in the market, they also can select some of the bids or offers and accept all selected; they also can accept an amount with a price limit.

I want to offer a platform the same using FIX protocol, so the question is: Could I use quotes instead order and some other message instead MarketDataRequest?

Thanks in advance.
Benito.

Hi Benito,
Your question is not clear.

Note, the MarketDataRequest serve only by the clients to subscribe to the market data. The server should followed by MarketDataFullRefresh[35=W] and MarketDataIncrementalRefresh[35=X] messages.

That would be the current standard approach.
I could not follow what disturb you using this approach.

Note that information like " minimum and maximum amount, basic fraction for the amount and price, trading hours" should be communicated in other messages (i.e. other than the above).

Regards
Yuval

Hi Yuval,

Sorry if my question was not clear, I’m trying to ask if there is another way (instead messages V, W, X) to send orders that already exist in the market to a user that is connecting. Because I read the article: http://www.fixtradingcommunity.org/mod/file/view.php?file_guid=42854
and Currently I’m using NewSingleOrder(D) message to enter orders and MarketDataRequest, MarketDataSnapshotFullRefresh and MarketDataIncrementalRefresh. But someone who also read the article said: Why we are not using the methodology Quotes, this seems to avoid the use of the MarketData… messages.

I hope now is clearer and you can explain something more.

Thanks.
Benito.

Benito,

It depends much on what you’re trying to do and there isn’t necessarily a “right” and “wrong” answer as it depends on your market model.

As your market seems to be specific to FX, generally there are two approaches. MarketData messages are usually used either by banks or an FX execution venue to send out streaming prices, possibly with pricing tiers/banding/ladders/vectors.

Another model with FX is what’s considered an RFQ (request for quote) model, where the customer requests specifically for quotes for certain amount of a currency pair from one or more dealers. There maybe market imposed rules such as how long the RFQ lasts (i.e. a transaction needs to occur within some period of time). However there are some implementations that will use the QuoteRequest to initiate a quote stream as well, from either a market venue or directly from a bank.

So that is the distribution side. In terms of the contribution side, banks may send into an execution venue prices via Quote messages to maintain two sided quotes (bid/ask) that are firm prices for some amount of time for some amount of volume. For bid/ask prices that may change frequently such as with FX, updating a Quote is easier than using NewOrderSingle followed by OrderCancelReplaceRequest, as the dealer just has to send in the Quote with same QuoteID to update. The Quote message also has the benefit of allowing both the bid/ask to sent in one message while 2 NewOrderSingle messages would need to be send in for a “bid” and “ask”.

In terms of your hit/take either a NewOrderSingle or a QuoteResponse can be used, but again depending on what messages you elect to eventually use, e.g. QuoteResponse is not a possible response message to a MarketData message, only to a Quote.

Lisa

Thank you very much Lisa. Further, following the FIX standard, we should use MarketData messages, and I understand that banks normally expect such messages for streaming prices, I’m right?

I would use MD message to stream out the prices especially if you are also looking to communicate the ranking of these prices within a “book” (you seem to have mentioned that in your original post); the MD msg is the only msg that has the book position capability.

Thanks again Lisa.