Endpoint: WebSocket Market Data Feed (wss://api.upstox.com/v3/feed/market-data-feed )
Context:
I’m using the v3 WebSocket feed to subscribe to real-time market data for NSE F&O options using the “full” mode. The current subscription request is for a single instrument key (NSE_FO|58567) with the trading symbol: "BANKNIFTY 55400 CE 29 MAY 25". The responses are parsed using the Protobuf definitions generated from the official MarketDataFeed.proto file.
Problem Description:
When receiving feed updates for the above subscribed options instrument (NSE_FO|58567), the FeedResponse message correctly contains marketFF data, including ltpc (trade) and marketLevel (depth). However, while the best bid price (bidP ) and bid quantity (bidQ ) in the first element of the marketLevel.bidAskQuote list appear correct, the corresponding best ask price (askP ) and ask quantity (askQ ) are consistently either missing or report incorrect values across the board on all the elements.
Expected Behavior:
For liquid options instruments subscribed in "full" mode during market hours, the askP and askQ fields in the first element ([0] ) of the marketLevel.bidAskQuote list should contain valid, non-zero best ask price and quantity values reflecting the current market offers as seen on the Upstox UI.
Observed Behavior:
The logs consistently show valid bidP and bidQ values, but askP is 0.0 and askQ is 0.
ltpc {
ltp: 1169.1
ltt: 1745909515564
ltq: 30
cp: 1225.35
}
marketLevel {
bidAskQuote {
bidQ: 30
bidP: 1169.45
}
bidAskQuote {
bidQ: 30
bidP: 1169.4
}
bidAskQuote {
bidQ: 30
bidP: 1169.05
}
bidAskQuote {
bidQ: 60
bidP: 1169.0
}
bidAskQuote {
bidQ: 60
bidP: 1168.95
}
}
optionGreeks {
delta: 1168.3
theta: 55490.0
gamma: 0.17667770385742188
vega: 0.5229
rho: -18.6171
}
marketOHLC {
ohlc {
interval: "1d"
open: 1271.0
high: 1557.75
low: 1152.75
close: 1169.1
vol: 957810
ts: 1745865000000
}
ohlc {
interval: "I1"
open: 1177.55
high: 1184.45
low: 1173.9
close: 1173.9
vol: 3660
ts: 1745909400000
}
ohlc {
interval: "I1"
open: 1177.3
high: 1177.35
low: 1164.0
close: 1169.1
vol: 4380
ts: 1745909460000
}
ohlc {
interval: "I30"
open: 1240.65
high: 1240.65
low: 1152.75
close: 1190.0
vol: 150510
ts: 1745907300000
}
ohlc {
interval: "I30"
open: 1190.15
high: 1202.15
low: 1164.0
close: 1169.1
vol: 23970
ts: 1745909100000
}
}
------
ltpc {
ltp: 1169.1
ltt: 1745909515564
ltq: 30
cp: 1225.35
}
marketLevel {
bidAskQuote {
bidQ: 90
bidP: 1170.8
}
bidAskQuote {
bidQ: 30
bidP: 1170.7
}
bidAskQuote {
bidQ: 30
bidP: 1170.65
}
bidAskQuote {
bidQ: 30
bidP: 1170.1
}
bidAskQuote {
bidQ: 30
bidP: 1170.05
}
}
optionGreeks {
delta: 1169.15
theta: 55483.6
gamma: 0.17734527587890625
vega: 0.522
rho: -18.6877
}
marketOHLC {
ohlc {
interval: "1d"
open: 1271.0
high: 1557.75
low: 1152.75
close: 1169.1
vol: 957810
ts: 1745865000000
}
ohlc {
interval: "I1"
open: 1177.55
high: 1184.45
low: 1173.9
close: 1173.9
vol: 3660
ts: 1745909400000
}
ohlc {
interval: "I1"
open: 1177.3
high: 1177.35
low: 1164.0
close: 1169.1
vol: 4380
ts: 1745909460000
}
ohlc {
interval: "I30"
open: 1240.65
high: 1240.65
low: 1152.75
close: 1190.0
vol: 150510
ts: 1745907300000
}
ohlc {
interval: "I30"
open: 1190.15
high: 1202.15
low: 1164.0
close: 1169.1
vol: 23970
ts: 1745909100000
}
}
---
2025-04-29 01:30:17.066 - INFO - 1745904617.065930 - NSE_FO|58569 - TRADE - LTP: 1181.05, Vol: 30, LTT: 1745904615989
2025-04-29 01:30:17.066 - INFO - 1745904617.065930 - NSE_FO|58569 - QUOTE - Bid P: 1179.0, Bid Q: 120, Ask P: 0.0, Ask Q: 0
2025-04-29 01:30:17.352 - INFO - 1745904617.352611 - NSE_FO|58569 - TRADE - LTP: 1181.05, Vol: 30, LTT: 1745904617201
2025-04-29 01:30:17.353 - INFO - 1745904617.352611 - NSE_FO|58569 - QUOTE - Bid P: 1179.0, Bid Q: 120, Ask P: 0.0, Ask Q: 0
Could you please investigate if this is expected behavior or a potential issue with the v3 WebSocket feed for options data in "full" mode? Thank you.