Sensex closing discrepancy

Is the adjusted closing price calculation changed or is still same, ie, 30 mins vwap.

Because, todays sensex closing cannot be justified. Check the charts.

For 24 mins sensex stayed around or below 76370 and in last 6 mins it went around 76400 but closing price is 76391. How?? When more than half of time it stayed below this level. I am attaching chart for reference.

Volume matters not time.

2 Likes

But volume is not showing. For index how to check volume?

Closing price of index = weighted avg of closing price of constitutes.

I have checked charts of top 10 constituents of sensex. Only reliance moved by 4 points and infosys by 10 points and others reamin stable or even decline. I dont think These two alone can affect closing price of sensex by around 20-25 points. Something is surely wrong

4 points in last 5 minutes? btw movement of 20-25 points is nothing as compare to 76000.

Zerodha charts won’t show. Bu main tradingview chart will show.

Thought answering this would be simple ; But it took me solid more than an hour to answer with data

Created an extension in order to fetch the footprint chart from my trading view

Did not find the Constituents stocks exact weightage, reconstituted it using the Nippon mutual fund data.

@Aditya_Gupta ; Thank you , till date only had the superficial knowledge of how the calculation was done. But today I think I know.


:blue_book: Calculating the Sensex Close β€” Full Reference

1. Formula for an Individual Security’s Closing Price

BSE’s official closing price is the volume-weighted average price (VWAP) of trades in the last 30 minutes of trading (15:00–15:30):

                    Ξ£ ( Trade Priceβ‚– Γ— Trade Quantityβ‚– )
Closing Price  =  ─────────────────────────────────────────      (over last 30 min)
                          Ξ£ ( Trade Quantityβ‚– )

If there are no trades in that window, the last traded price of the day is used instead. This VWAP-based Closing Price is what feeds into the index formula below.

23-07-2026 TCS BSE β€” 15:00–15:29 IST Level-wise Order Flow from TradingView

Time IST Price level Buy volume Sell volume Total volume
15:00 2,238.50 0 2,750 2,750
15:00 2,239.00 1 0 1
15:00 2,239.50 76 31 107
15:00 2,240.00 73 5 78
15:00 2,240.50 40 11 51
15:00 2,241.00 2 9 11
15:00 2,241.50 11 7 18
15:01 2,238.50 0 401 401
15:01 2,239.00 6 1,407 1,413
15:01 2,239.50 23 6 29
15:01 2,240.00 0 5 5
15:01 2,240.50 118 12 130
15:01 2,241.00 81 0 81
15:02 2,239.50 0 18 18
15:02 2,240.00 10 160 170
15:02 2,240.50 6 0 6
15:02 2,241.00 8 4 12
15:02 2,241.50 14 2 16
15:03 2,240.00 87 93 180
15:03 2,240.50 32 20 52
15:03 2,241.00 109 114 223
15:04 2,240.00 5 191 196
15:04 2,240.50 1 217 218
15:04 2,241.00 98 79 177
15:04 2,241.50 99 1 100
15:05 2,240.00 12 152 164
15:05 2,240.50 2 6 8
15:05 2,241.00 19 7 26
15:05 2,241.50 26 28 54
15:05 2,242.00 9 6 15
15:06 2,237.00 0 2 2
15:06 2,237.50 171 576 747
15:06 2,238.00 2 64 66
15:06 2,238.50 122 68 190
15:06 2,239.00 812 326 1,138
15:06 2,239.50 30 0 30
15:06 2,240.00 10 31 41
15:06 2,240.50 0 57 57
15:06 2,241.00 41 8 49
15:07 2,238.00 0 5 5
15:07 2,238.50 114 13 127
15:07 2,239.00 69 120 189
15:07 2,239.50 96 2 98
15:07 2,240.00 15 1 16
15:07 2,240.50 4 2 6
15:07 2,241.00 2 0 2
15:08 2,241.00 15 0 15
15:08 2,241.50 5 0 5
15:08 2,242.00 2 0 2
15:08 2,242.50 37 12 49
15:08 2,243.00 152 27 179
15:08 2,243.50 288 7 295
15:08 2,244.00 351 6 357
15:08 2,244.50 315 0 315
15:09 2,244.00 1 4 5
15:09 2,244.50 772 17 789
15:09 2,245.00 52 40 92
15:09 2,245.50 53 104 157
15:09 2,246.00 3 3 6
15:09 2,246.50 399 6 405
15:09 2,247.00 152 0 152
15:10 2,241.50 0 1 1
15:10 2,242.00 0 1 1
15:10 2,242.50 2 55 57
15:10 2,243.00 17 13 30
15:10 2,243.50 47 199 246
15:10 2,244.00 4 106 110
15:10 2,244.50 1 0 1
15:10 2,245.00 4 11 15
15:11 2,241.50 1 0 1
15:11 2,242.00 3 4 7
15:11 2,242.50 27 36 63
15:11 2,243.00 17 19 36
15:11 2,243.50 6 14 20
15:11 2,244.00 0 1 1
15:12 2,242.00 5 21 26
15:12 2,242.50 22 4 26
15:12 2,243.00 45 11 56
15:12 2,243.50 35 1 36
15:13 2,241.50 16 72 88
15:13 2,242.00 34 4 38
15:13 2,242.50 34 11 45
15:13 2,243.00 3 0 3
15:14 2,241.50 2 42 44
15:14 2,242.00 8 29 37
15:14 2,242.50 63 29 92
15:14 2,243.00 10 9 19
15:14 2,243.50 14 2 16
15:15 2,242.00 1 2 3
15:15 2,242.50 39 48 87
15:15 2,243.00 325 10 335
15:15 2,243.50 133 395 528
15:15 2,244.00 236 9 245
15:15 2,244.50 8 37 45
15:16 2,242.00 0 10 10
15:16 2,242.50 0 260 260
15:16 2,243.00 10 36 46
15:16 2,243.50 26 32 58
15:16 2,244.00 20 10 30
15:16 2,244.50 1,228 2 1,230
15:17 2,242.00 3 6 9
15:17 2,242.50 5 78 83
15:17 2,243.00 4 104 108
15:17 2,243.50 23 64 87
15:17 2,244.00 0 46 46
15:18 2,241.50 0 13 13
15:18 2,242.00 175 94 269
15:18 2,242.50 347 10 357
15:18 2,243.00 3 3 6
15:18 2,243.50 22 1 23
15:19 2,242.00 3 44 47
15:19 2,242.50 71 371 442
15:19 2,243.00 27 167 194
15:19 2,243.50 27 120 147
15:20 2,242.00 0 137 137
15:20 2,242.50 151 156 307
15:20 2,243.00 26 0 26
15:20 2,243.50 39 41 80
15:21 2,242.00 0 382 382
15:21 2,242.50 46 10 56
15:21 2,243.00 80 308 388
15:21 2,243.50 278 246 524
15:22 2,240.50 0 326 326
15:22 2,241.00 6 10 16
15:22 2,241.50 2 14 16
15:22 2,242.00 0 20 20
15:23 2,241.50 102 0 102
15:23 2,242.00 50 2 52
15:23 2,242.50 216 38 254
15:23 2,243.00 24 19 43
15:23 2,243.50 26 0 26
15:24 2,243.50 193 913 1,106
15:24 2,244.00 113 1 114
15:24 2,244.50 216 1 217
15:25 2,241.50 5 2 7
15:25 2,242.50 2 25 27
15:25 2,243.00 503 21 524
15:25 2,243.50 9 373 382
15:25 2,244.00 32 52 84
15:25 2,244.50 843 16 859
15:26 2,240.50 1 119 120
15:26 2,241.00 1 0 1
15:26 2,241.50 21 45 66
15:27 2,241.50 89 0 89
15:27 2,242.00 10 10 20
15:27 2,242.50 10 90 100
15:27 2,243.00 25 619 644
15:27 2,243.50 32 61 93
15:27 2,244.00 102 0 102
15:28 2,241.00 0 10 10
15:28 2,241.50 0 48 48
15:28 2,242.00 0 60 60
15:28 2,242.50 81 7 88
15:28 2,243.00 54 263 317
15:28 2,243.50 325 0 325
15:28 2,244.00 24 0 24
15:29 2,241.50 0 680 680
15:29 2,242.00 0 11 11
15:29 2,242.50 38 7 45
15:29 2,243.00 1 19 20
15:29 2,243.50 165 54 219
15:29 2,244.50 1 0 1

Calculation from the 15:00–15:29 footprint data:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                   β”‚
β”‚           Ξ£ ( Price_level Γ— (Buy + Sell) )        β”‚
β”‚  VWAP  =  ─────────────────────────────────       β”‚
β”‚                  Ξ£ (Buy + Sell)                   β”‚
β”‚                                                   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  • Total volume = 27,277
  • Total price Γ— volume = β‚Ή61,150,719.50
  • Footprint VWAP = β‚Ή2,241.8418

This is the footprint-derived closing-price estimate.
It differs from the official β‚Ή2,242.25 because this export aggregates executions into footprint price levels(0.5) rather than providing every raw exchange trade.

1 Like

2. Official BSE Sensex Index Formula

Closing value of the index β‰  VWAP of the index itself.

It is calculated by recomputing the index using the official closing prices of each constituent stock, where each stock’s closing price is determined using the exchange’s closing-price methodology.

                Ξ£ ( Closing Priceα΅’ Γ— Shares Outstandingα΅’ Γ— IWFα΅’ )
Index  =  ──────────────────────────────────────────────────────
                                  Divisor

where:

  • Closing Priceα΅’ = official BSE closing price of constituent i
  • Shares Outstandingα΅’ = total listed shares
  • IWFα΅’ = Investible Weight Factor (free-float factor)
  • Divisor = index divisor maintained by BSE to preserve continuity after corporate actions

Summed over all 30 Sensex constituents.


3. Data Needed for the EXACT Formula

# Input Count Public?
1 Official BSE closing price 30 :white_check_mark: yes
2 Shares outstanding 30 :white_check_mark: yes
3 IWF 30 :x: proprietary/Not Published
4 Divisor 1 :x: proprietary/Not Published

:point_right: Blockers: IWF and Divisor aren’t published by BSE β€” so the exact formula can’t be run directly from public data.


4. The Workaround (ratio / return method)

Since IWFα΅’, Shares Outstandingα΅’, and the Divisor are all identical today and yesterday (no corporate action overnight), write the formula for both days and divide:

Index_today       Ξ£ ( Priceα΅’,today Γ— Shares Outstandingα΅’ Γ— IWFα΅’ )
────────────  =  ──────────────────────────────────────────────      ← Divisor cancels
Index_yest        Ξ£ ( Priceα΅’,yest  Γ— Shares Outstandingα΅’ Γ— IWFα΅’ )

Since each stock’s weight already equals (Priceα΅’ Γ— Shares Outstandingα΅’ Γ— IWFα΅’) Γ· Total Free-Float Market Cap, this reduces to:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                      βŽ›           Price_today ⎞     β”‚
β”‚  Index_today = Index_yesterday Γ—  Ξ£ ⎜ weightα΅’ Γ— ─────────── ⎟     β”‚
β”‚                                      ⎝           Price_yest  ⎠     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

No IWF, no Shares Outstanding, no Divisor needed β€” all baked into the weights.

Data needed for the workaround

# Input Count Have it?
1 Yesterday’s Sensex close (anchor) 1 :white_check_mark:
2 Each stock’s weight 30 :white_check_mark:
3 Each stock’s price yesterday 30 :white_check_mark:
4 Each stock’s price today 30 :white_check_mark:

5. The Data (your latest ranked weightage)

Getting the weightage also took me a lot of time. I searched everywhere but couldn’t find the official data. So, I ultimately reconstructed it from the Nippon India ETF BSE Sensex portfolio dated 30 June 2026. It holds all 30 constituents in index proportions, plus 0.39% cash. I removed the cash and renormalized the weight of every stock.

Anchor: 22-Jul-2026 Sensex close = 76,755.05

# Stock Weight % 22-Jul Close β‚Ή 23-Jul Close β‚Ή Change %
1 HDFCBANK 13.42 753.15 748.00 βˆ’0.68
2 ICICIBANK 10.88 1,441.00 1,433.95 βˆ’0.49
3 RELIANCE 9.65 1,288.85 1,275.35 βˆ’1.05
4 BHARTIARTL 6.22 1,950.05 1,931.15 βˆ’0.97
5 LT 5.34 3,816.85 3,793.60 βˆ’0.61
6 SBIN 4.70 1,025.35 1,012.85 βˆ’1.22
7 AXISBANK 4.25 1,239.75 1,222.95 βˆ’1.36
8 INFY 3.85 1,052.30 1,051.80 βˆ’0.05
9 KOTAKBANK 3.19 381.80 383.45 +0.43
10 ITC 3.05 280.80 281.40 +0.21
11 M&M 3.03 3,174.65 3,228.70 +1.70
12 BAJFINANCE 2.96 1,060.00 1,039.50 βˆ’1.93
13 TCS 2.27 2,208.85 2,242.25 +1.51
14 SUNPHARMA 2.22 1,942.95 1,954.05 +0.57
15 ETERNAL 2.11 283.40 286.70 +1.16
16 HINDUNILVR 2.09 2,158.00 2,160.70 +0.13
17 MARUTI 2.01 13,546.50 13,396.05 βˆ’1.11
18 TITAN 1.99 4,705.65 4,696.55 βˆ’0.19
19 NTPC 1.87 350.55 348.75 βˆ’0.51
20 TATASTEEL 1.71 186.50 184.25 βˆ’1.21
21 BEL 1.63 406.80 405.30 βˆ’0.37
22 ADANIPORTS 1.48 1,819.35 1,778.30 βˆ’2.26
23 ULTRACEMCO 1.47 11,876.50 11,930.00 +0.45
24 POWERGRID 1.44 288.30 289.80 +0.52
25 INDIGO 1.33 5,120.65 5,023.90 βˆ’1.89
26 ASIANPAINT 1.32 2,693.05 2,669.00 βˆ’0.89
27 HCLTECH 1.25 1,237.55 1,244.85 +0.59
28 TRENT 1.19 2,887.55 2,874.10 βˆ’0.47
29 BAJAJFINSV 1.10 1,883.40 1,889.35 +0.32
30 TECHM 0.98 1,557.55 1,554.00 βˆ’0.23
Total 100.00

6. The Calculation (step by step)

  1. For each stock compute weight Γ— (price_today / price_yesterday).
    Example β€” HDFCBANK: 0.1342 Γ— (748.00 Γ· 753.15) = 0.133283
  2. Sum all 30 terms β†’ Ξ£ = 0.994917
  3. Multiply by the anchor:
    Index_23Jul = 76,755.05 Γ— 0.994917 = 76,384.86
    

7. Result

Value
Calculated close 76,384.86
Actual BSE close 76,391.39
Difference βˆ’6.53 pts
% error βˆ’0.0086%

:white_check_mark: Independently reproduced to within 0.0086% β€” using only the anchor, your weightage, and two days of prices, with the Divisor and IWF never required directly (they cancel via the weights).


8. Why It’s Not Exact to the Last Paisa

Weights are a vendor free-float reconstruction, not BSE’s exact proprietary Shares Outstanding Γ— IWF product.

These are data-source accuracy limits, not formula or precision limits. Closing the last few points needs BSE’s two entitlement-only inputs: the exact IWF (or index shares) and the exact official closing prices.

It’s wrong. It should be :

% Change in index = weighted avg of % change in constitutes .