Chart an Indian stock and you will eventually see something that looks like a data error: a flat line for four sessions, a price that opens far from where it closed, or a day where high, low and close are all identical. None of those are bugs. They are the market’s structural rules showing up in the data, and each one means something specific.
Gaps: the price jumps between sessions
A gap is when a session opens away from the previous close. In your export it shows as OPENsitting well above or below the prior row’s CLOSE.
This is normal and expected. Trading runs for part of the day, but news does not. Earnings, regulatory decisions, global market moves overnight — all of it accumulates while the market is shut, and the pre-open auction prices it in before continuous trading starts.
Find them with a formula in a free column, at row 3:
=IF(ABS(C3/H2-1)>0.03,"GAP","")
That flags any open more than 3% away from the previous close. Two things to keep in mind:
- A very large gap is often not a gap at all. It is a stock split or bonus issue, where the price legitimately halves overnight. Check corporate actions before concluding anything happened.
- Gaps distort intraday range measures. High minus low ignores the overnight move entirely, which is exactly why true range exists — it includes the previous close in the calculation. The formula is in the spreadsheet guide.
Price bands: why a stock stops moving
NSE applies daily price bands to many securities — a maximum percentage move from the previous close, beyond which orders outside the band are not accepted. Bands are commonly set at levels such as 2%, 5%, 10% or 20% depending on the security, and securities in the derivatives segment operate under a different, more flexible arrangement.
The exact band for a given stock is set by the exchange and can change. Do not assume a level — check the exchange’s own published information for the security if it matters to your analysis.
What a band looks like in your data:
- Close equals high, exactly, on an up day — the stock hit its upper limit and stayed there.
- High, low and close are all the same number — the stock opened at the limit and never traded away from it. Volume is usually tiny, because at a limit there is a queue on one side and almost nobody on the other.
- The same pattern repeats for several sessions. A stock repricing by more than its band needs multiple days to get there. This is the flat-line-then-cliff shape people mistake for missing data.
Flag limit days with:
=IF(AND(D2=E2,E2=H2),"LIMIT","")
This matters more than it sounds. During a limit sequence the quoted price is not a price at which you could have transacted in size — there was no liquidity on the other side. Any backtest assuming you bought or sold at those closes is fiction. Volatility measured across such a run is also understated, because the band suppressed the move that wanted to happen.
Market-wide circuit breakers
Separately from individual stock bands, the exchange halts all trading when a benchmark index moves by a large percentage. These are tiered — progressively larger moves trigger progressively longer halts, and a sufficiently large move ends the session entirely. The halt duration also depends on what time of day the trigger occurs.
In your data a market-wide halt shows up as an unusually short session: volume far below normal across effectively every stock on the same date, often with a big move into the close. It is a market-level event, not something about the company. If you see one date where every stock you have downloaded behaves strangely at once, that is the explanation.
Flat lines that are not circuits
A price that does not change for several days has three possible causes, and telling them apart is straightforward using volume:
| What you see | What it means |
|---|---|
| Flat price, near-zero volume, few trades | Illiquidity. Nobody is trading it. The price is stale — the last transaction happened days ago and nothing has repriced it. |
| Flat price, tiny volume, high = low = close | Circuit limit. There is demand, but it cannot execute past the band. |
| Flat price, normal volume | Genuine equilibrium. Unusual over several days, but it happens in large, stable names during quiet periods. |
The illiquid case is the dangerous one for analysis. A stale price produces a string of zero returns, which drags measured volatility down and makes the stock look far calmer than it is. Always check VOLUME and NO OF TRADES alongside price before trusting any statistic computed from a thin stock.
Volume spikes worth investigating
A day where volume is several times its recent average is worth a look, but the interesting question is what kind of spike it was. Average trade size answers it:
=J2/L2
Volume up sharply with trade count roughly flat means a small number of very large transactions — a block, an institutional position being built or unwound. Volume and trade count rising together means broad participation. Same headline number, completely different events.
Cross-check with DELIVERY % for a third dimension: a spike that was mostly delivered is different from one that was churned intraday and left no ownership change behind. The caveats in the delivery guide apply.
A sanity pass before you chart anything
- Filter to one series. Duplicate dates from multiple series corrupt everything downstream. Details.
- Scan for corporate actions. Compare each row’s
PREV. CLOSEagainst the previous row’sCLOSE; mismatches are candidates. - Flag limit days where high, low and close coincide.
- Check for stale runs — consecutive sessions with near-zero volume.
- Only then compute returns, averages and volatility.
Nothing above is a trading strategy or a recommendation — it is how to avoid misreading a chart. See the disclaimer.
Keep reading
- Every column in your NSE export, explained — What OPEN, HIGH, LOW, PREV. CLOSE, LTP, CLOSE, VWAP, VOLUME, VALUE, NO OF TRADES, DELIVERY QTY and DELIVERY % actually mean in an NSE historical data file — and where people misread them.
- NSE series codes: EQ, BE, BZ, SM and ST — Why your export sometimes has two rows for the same date, what each NSE series code means for how a stock trades, and which rows you probably want to keep.
- Delivery percentage: how to read it, and its limits — How NSE delivery quantity and delivery percentage are calculated, what high and low readings suggest about participation, and the cases where the number misleads.
Or go straight to the download console and pull a file.