BSE·histdataOpen console

DATA REFERENCE · 9 MIN READ

Every column in your BSE export, explained

What Open, High, Low, Close, WAP, No. of Shares, No. of Trades, Total Turnover, Deliverable Quantity, % Deli. Qty and the two Spread columns actually mean — and where people misread them.

Every file this tool produces has the same thirteen columns, in the same order. Most are obvious. Three or four are not, and two of them — WAP and the two Spread columns — are BSE conventions that people coming from other data sources tend to guess at. Here is what each one actually contains.

ColumnWhat it is
DateThe trading date, written as a real spreadsheet date value (not text) so sorting and charting work immediately.
OpenPrice of the first trade of the continuous session, established by the pre-open call auction where one runs.
High / LowHighest and lowest traded prices of the day.
CloseThe official closing price — not simply the last trade. See below.
WAPWeighted average price for the day: total turnover divided by shares traded.
No. of SharesVolume — the number of shares that changed hands.
No. of TradesCount of individual executed trades. A different thing from volume.
Total TurnoverRupee value traded for the day.
Deliverable QuantityShares that actually settled into demat accounts rather than being squared off intraday.
% Deli. Qty to Traded QtyDeliverable quantity as a percentage of volume.
Spread H-LHigh minus Low, in rupees. The day’s trading range.
Spread C-OClose minus Open, in rupees. The day’s net move from the opening print.

Close is a computed price, not the last trade

This is the single most common misreading. The official closing price of a BSE equity is derived from the volume-weighted average of trades in the closing window — the final stretch of the continuous session — rather than being whatever price happened to print last. Where a scrip records no trades in that window, the last traded price is used instead.

Two consequences worth internalising. First, Close can differ from the last tick you saw on a live chart, and neither is wrong — they are different measures. Second, Close for an illiquid scrip may be a stale last-traded price carried in from earlier in the day, which is why thin scrips sometimes show a flat close across several sessions.

WAP: the column most worth using

WAPis turnover divided by volume — the average price paid across the whole day, weighted by size. It is a more honest summary of “where the stock traded today” than Close is, because a single small trade at the bell cannot move it.

A useful sanity check: WAP should always sit between Low and High. If it does not, something is off with that row — most likely a turnover figure that BSE revised, or a scrip that traded in more than one settlement type that day.

The gap between WAP and Closeis itself informative. A close well above the day’s WAP means buying pressure concentrated late in the session; well below means the opposite. On thin scrips, though, treat that signal with suspicion — a handful of trades can produce it by accident.

No. of Shares versus No. of Trades

Volume tells you how much stock moved. Trade count tells you how many separate transactions moved it. Dividing one by the other gives average trade size, which is a rough read on who is participating:

  • High volume, low trade count — large average tickets. Often institutional or block activity.
  • High trade count, modest volume — many small tickets. Retail participation, or algorithmic activity in a liquid name.
  • Both very low — the scrip barely traded, and every other number in the row is fragile. This describes a large share of the BSE listed universe on any given day.

The two Spread columns

These are BSE’s own conventions and they are simple arithmetic rather than anything exotic:

  • Spread H-L = HighLow. A rupee-denominated measure of intraday range.
  • Spread C-O = CloseOpen. Net move measured from the open, so it excludes any overnight gap.

Note the word spread here has nothing to do with a bid-ask spread. That is a genuinely different quantity and it is not in this dataset.

Because both are absolute rupee figures, they are not comparable across stocks at different price levels — a ₹20 range means something very different on a ₹150 scrip than on a ₹3,000 one. Divide by Close to get a percentage before comparing anything. Where BSE leaves these fields blank, this tool computes them from the price columns, so they should always be populated when the prices are.

Columns you might expect and will not find

  • Previous close. Not included — but it is the row above, so a spreadsheet reference gets you there. Beware: using the previous row as previous close is wrong across a corporate action, which is a whole topic of its own.
  • Adjusted close. Nothing here is adjusted for splits, bonuses or dividends.
  • Group or series.The export does not carry the scrip’s trading group, though the group materially affects how the stock behaves — see the group reference.
  • Anything intraday. One row per trading day, full stop.

Blank cells and what they mean

A blank is not a zero, and the distinction matters if you are averaging anything. Blanks arise for two different reasons:

  • Delivery columns blank, prices present. Normal. Delivery data is published in a separate BSE file on its own schedule, so recent rows frequently lack it — details here.
  • A price or volume field blank. The source returned nothing for that field. Rare, and worth treating the whole row as suspect when it happens.

Spreadsheet functions such as AVERAGE skip blanks but count zeros, so a column where no-trade days were filled with zeros would drag every average down. Leaving them blank is deliberate. The Excel guide has formulas that handle this correctly.


Keep reading

Or go straight to the download console and pull a file.