What are Quote and Market Data messages in FIX protocol?
Categories:
Understanding FIX Protocol Quote and Market Data Messages

Explore the fundamental FIX Protocol messages for requesting and receiving real-time market data and quotes, crucial for electronic trading systems.
The Financial Information eXchange (FIX) protocol is a messaging standard developed specifically for the electronic exchange of securities transactions. Within this protocol, Quote and Market Data messages play a pivotal role in disseminating real-time pricing information, order book depth, and trade data. Understanding these messages is essential for anyone building or integrating with electronic trading platforms, as they form the backbone of pre-trade analysis and execution decisions.
Market Data Request (MsgType=V)
The Market Data Request message (MsgType=V) is used by a client application (e.g., a trading desk) to subscribe to or unsubscribe from market data streams for specific instruments. It allows the client to specify the type of market data required (e.g., bids, offers, trades, implied prices), the depth of the order book, and the update type (e.g., full refresh, incremental updates). This message initiates the flow of market data from the exchange or market data provider to the client.
sequenceDiagram participant Client participant MarketDataServer Client->>MarketDataServer: Market Data Request (MsgType=V) activate MarketDataServer MarketDataServer-->>Client: Market Data Snapshot/Incremental Refresh (MsgType=W) loop Continuous Updates MarketDataServer-->>Client: Market Data Snapshot/Incremental Refresh (MsgType=W) end deactivate MarketDataServer
Market Data Request and Response Flow
<FIXML>
<Header>
<MsgType>V</MsgType>
</Header>
<MarketDataRequest MDReqID="MDREQ-001" SubscriptionRequestType="1" MarketDepth="0" UpdateType="0">
<MDEntryType>0</MDEEntryType>
<MDEntryType>1</MDEntryType>
<MDEntryType>2</MDEntryType>
<Instrument Symbol="IBM" SecurityExchange="NYSE"/>
</MarketDataRequest>
</FIXML>
SubscriptionRequestType
field is crucial: '0' for Snapshot, '1' for Snapshot + Updates, '2' for Unsubscribe. MarketDepth
specifies the number of price levels requested (0 for full book, 1 for top of book).Market Data Snapshot/Incremental Refresh (MsgType=W)
Upon receiving a Market Data Request, the market data provider responds with Market Data Snapshot/Incremental Refresh messages (MsgType=W). These messages carry the actual market data. A 'snapshot' provides the current state of the market for a given instrument, while 'incremental refresh' messages deliver only the changes (additions, modifications, deletions) to the market data since the last update. This incremental approach is vital for minimizing network bandwidth and processing overhead in high-frequency trading environments.
<FIXML>
<Header>
<MsgType>W</MsgType>
</Header>
<MarketDataSnapshotFullRefresh MDReqID="MDREQ-001" Symbol="IBM">
<MDEntries>
<MDEntry MDEntryType="0" MDEntryPx="150.00" MDEntrySize="1000"/>
<MDEntry MDEntryType="1" MDEntryPx="150.05" MDEntrySize="500"/>
<MDEntry MDEntryType="2" MDEntryPx="150.02" MDEntrySize="200"/>
</MDEntries>
</MarketDataSnapshotFullRefresh>
</FIXML>
<FIXML>
<Header>
<MsgType>W</MsgType>
</Header>
<MarketDataIncrementalRefresh MDReqID="MDREQ-001" Symbol="IBM">
<MDEntries>
<MDEntry MDEntryType="0" MDEntryPx="150.01" MDEntrySize="1200" UpdateAction="0"/>
<MDEntry MDEntryType="1" MDEntryPx="150.06" MDEntrySize="400" UpdateAction="1"/>
</MDEntries>
</MarketDataIncrementalRefresh>
</FIXML>
MDEntryType
: '0' is Bid, '1' is Offer, '2' is Trade. For incremental updates, UpdateAction
specifies '0' for New, '1' for Change, '2' for Delete.Quote Request (MsgType=R) and Quote (MsgType=S)
Beyond general market data, the FIX protocol also supports specific Quote messages. A Quote Request (MsgType=R) is used to solicit a quote for a financial instrument from a counterparty. This is often used in Request For Quote (RFQ) workflows where a client wants to get a firm price for a specific quantity before placing an order. The counterparty then responds with a Quote message (MsgType=S), providing the bid and offer prices and quantities at which they are willing to trade.
sequenceDiagram participant Initiator participant QuotingParty Initiator->>QuotingParty: Quote Request (MsgType=R) activate QuotingParty QuotingParty-->>Initiator: Quote (MsgType=S) deactivate QuotingParty
Quote Request and Response Flow
<FIXML>
<Header>
<MsgType>R</MsgType>
</Header>
<QuoteRequest QuoteReqID="QR-001">
<Instrument Symbol="GOOG" SecurityExchange="NASDAQ"/>
<OrderQty>100</OrderQty>
</QuoteRequest>
</FIXML>
<FIXML>
<Header>
<MsgType>S</MsgType>
</Header>
<Quote QuoteReqID="QR-001" QuoteID="Q-001" BidPx="1700.50" OfferPx="1700.75" BidSize="100" OfferSize="100">
<Instrument Symbol="GOOG" SecurityExchange="NASDAQ"/>
</Quote>
</FIXML>
MsgType=S
are typically firm for a limited time and quantity. It's crucial to understand the quoting party's terms and conditions regarding quote validity.