A rule that has run for months says: exit the position if the stock closes below ₹1,244. On Friday the alert does not fire, and on the same Friday a friend running the same rule from the exchange’s own end-of-day file exits. You pull the [[Bhavcopy]] to settle it. The official close for the day is ₹1,242.60. Your platform’s daily candle closes at ₹1,246.00. Both files are correct, both describe the same Friday, and the two numbers are not a discrepancy to be reported to anybody. They are answers to two different questions, and the rule never said which one it meant.
Ask how an innings finished and you can be told the score off the final delivery, or the run rate through the last five overs. Both are honest summaries of the end of the innings and they answer different questions — one is a single event, the other is how the whole closing passage went. A commentator who switches between them without saying so will be understood to be contradicting himself.
The last traded price of the day is the final delivery. India’s official closing price is the run rate of the last thirty overs — a volume-weighted average designed so that one late ball cannot set it. Your chart shows one of them and the exchange publishes the other, and nothing on either screen announces which.
Five fields, and where each one comes from
| Field | What the exchange publishes | What a platform gets by stacking its own intraday bars |
|---|---|---|
| Open | The first traded price of the session. For equities that price normally comes out of the pre-open call auction between 9.00 and 9.15; where the auction discovers no price, the first trade of the continuous session takes its place. | The open of its first bar. If the feed’s first bar starts at 9.15 and excludes the pre-open match, this is the first continuous-market trade instead — a different price on any day the auction actually did some work. |
| High and low | The highest and lowest traded prices of the session. | Normally identical, because both are traded prices — unless the feed excludes the pre-open trade or includes a window the exchange does not count. |
| Close | The volume-weighted average of the last thirty minutes of trading. Where there were no trades in that window, the last traded price stands in. | The close of the last intraday bar, which is the last trade of the day. Different from the official figure on essentially every day on which price moved during the final half hour. |
| Volume | The session’s traded quantity, on the segment and exchange the file covers. | The sum of its bars. Whether the pre-open matched quantity and any post-session window are inside that sum is a convention, and conventions differ. |
| Previous close | The previous session’s official close, which is what the day’s percentage change and the day’s price band are measured from. | Whatever the platform carried forward — which, if it carried forward its own resampled close, is not the number the exchange used. |
The awkward consequence: you cannot know the close while you can still trade it
There is a second-order problem hiding in the definition, and it is the one that matters for testing. The official close is computed from the last thirty minutes, which means it does not exist until those thirty minutes are over. A rule that says buy at the close when the close is above the level is therefore asking you to transact at a price computed from the window you would have had to transact inside. That is not a small operational nuisance; it is a mild [[Look-ahead bias]] baked into a very common backtest.
- The exchanges do run a [[Post-closing session]] — on the equity segment it has run from about 3.40 to 4 p.m. — in which orders may be entered at the closing price once it has been determined. That is the honest answer to “can I actually trade the close”, and it comes with two qualifications: your broker has to offer it, and somebody has to be on the other side, which in a thin name frequently means nobody is.
- Trades in that window cannot change the closing price, because the price was already determined before the window opened. They can, however, land inside a volume figure depending on the convention, which is one more reason two volume bars disagree.
- A signal computed on the close and executed the next morning is the clean and testable version, and it is what most daily systems in this track quietly assume. It has a cost — an overnight gap between the signal and the fill — and that cost is real, measurable and much better than an untestable assumption.
- Modelling a close-execution as an average of the last half hour is the other defensible route, because that is approximately what the official close is. It is more work and it is closer to what would actually have happened to someone working an order into the close.
- What is not defensible is filling at the official close in a backtest and treating it as free. That is the version almost every spreadsheet does by default, because the close is the column that is sitting right there.
The audit, on one day, once
- 1Pick a day on which the last half hour clearly trended
A flat afternoon will make the two closes agree and tell you nothing. Choose a session where the stock moved half a per cent or more after three o’clock.
- 2Compare five numbers, not one
Open, high, low, close and volume, from the exchange file against your platform’s daily candle. Note which agree exactly and which do not — the pattern of agreement tells you how your series was built.
- 3If only the close differs, your series is resampled
That is the signature: traded prices agree, the computed one does not. It is not a fault, and it does mean your daily closes are last-trade prices rather than official ones.
- 4If the open differs too, look at the pre-open
A platform whose first bar begins at 9.15 and ignores the [[Pre-open session]] match will show a different open on any day the auction discovered a price away from the previous close — which is to say, on the days that mattered.
- 5Write down which series your rules are written on
One line, next to the bar size and the anchor from the first lesson. Official daily closes from the exchange file, or your platform’s resampled candles. Both are workable. Testing on one and trading on the other is not.
Your platform builds its daily candles by stacking its own five-minute bars. Which field will differ from the exchange’s published daily bar on almost every session, and why?
Mandi ke board pe aaj ka bhaav ₹22 likha hai, jo aakhri kuch ghanton ke saudon ka average hai. Aakhri grahak ne ₹26 diya kyunki maal khatam ho raha tha. Dono number sach hain aur dono alag sawaal ka jawab hain. Exchange ka official close bhi average hai — aakhri tees minute (3.00 se 3.30) ka volume-weighted average — taaki koi ek aakhri sauda din ka bhaav tay na kar de. Aapka app apni intraday candle jod ke daily candle banata hai, toh uska close aakhri trade hota hai. Us Friday ko 3 baje bhaav ₹1,239.80 tha aur ghanti tak dheere-dheere ₹1,246 pahuncha: official close ₹1,242.60, app ka close ₹1,246.00, farq ₹3.40. Rule tha "₹1,244 ke neeche band ho toh nikal jao" — exchange ki file dekhne wala nikal gaya, app dekhne wala baitha rah gaya, aur dono ne rule poora follow kiya. Bhavcopy muft hai: ek din uthao aur paanch column milao — open, high, low, close, volume — sirf ek nahi.
- India’s official daily close is a volume-weighted average of the last thirty minutes, not the last trade.
- A daily candle built by stacking intraday bars closes at the last trade, so it disagrees with the exchange file on essentially every moving session.
- The open can differ too, if the platform’s first bar excludes the pre-open auction match.
- The official close does not exist until the window it is computed from has ended, so “buy at the close” in a backtest is a mild look-ahead unless it is modelled honestly.
- The bhavcopy is free, primary and settles the question in two minutes — check five fields, not one.
Mark it done to track your progress through the curriculum.