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.