In 64 sessions of one-minute Nifty 50 bars, the Nifty's high or low of the day came in the first 30 minutes on 40 days (63%), and in the last 30 minutes on 15 (23%). The morning open was the busiest window for both extremes, and the late afternoon was where lows piled up.
I wanted to see this in the data rather than repeat a rule of thumb I half remembered. Everything below is a count of days.
The question and the data
The question. For each session, at what time did the Nifty print its high of the day, and its low? And how are those times spread?
The data. One-minute bars for the Nifty 50 index, 9:15 AM to 3:29 PM IST, 375 bars in a full session. This analysis covers 64 sessions, from 2 July to 30 September 2026. I checked the calendar: that is every weekday in the period except 14 September, which had no session. Nothing else is missing at the day level.
Some things I found when I looked closely:
- 53 sessions have all 375 bars. Nine have 374 and two have 373, so 11 sessions each lack one or two single minutes. A missing minute could in principle hide the exact extreme, so I checked the other way: for all 64 sessions, the daily high and low matched the highest and lowest of the minute bars to within a point.
- As a sensitivity check, I added an extra 17 sessions from earlier in the year. Adding them barely changes the picture: 51 of 81 sessions (63%) have the high or the low in the first half hour, and 61 of 81 (75%) in the first or last half hour.
- I haven't compared these minute bars with exchange files, so treat the minute stamps as approximate.
How I counted
For each session I found the highest and lowest prices among the minute bars, and the time of the first bar that touched each. Where the same level was touched twice, the earlier time counts. Then I put each time into a 30-minute bucket starting at 9:15, so the first bucket is 9:15 to 9:44 and the last is 3:00 to 3:29.
The unit is a day, so every table counts days. A day appears once in the high column and once in the low column.
Results: when the high and low came
| 30-minute bucket | Highs | Lows |
|---|---|---|
| 9:15 to 9:44 | 23 (36%) | 19 (30%) |
| 9:45 to 10:14 | 3 | 3 |
| 10:15 to 10:44 | 3 | 5 |
| 10:45 to 11:14 | 4 | 1 |
| 11:15 to 11:44 | 3 | 1 |
| 11:45 to 12:14 | 2 | 3 |
| 12:15 to 12:44 | 3 | 1 |
| 12:45 to 1:14 | 4 | 4 |
| 1:15 to 1:44 | 2 | 1 |
| 1:45 to 2:14 | 6 | 4 |
| 2:15 to 2:44 | 2 | 7 |
| 2:45 to 3:14 | 6 | 11 |
| 3:15 to 3:29 (last 15 minutes) | 3 | 4 |
Each column adds to 64 days. The last bucket is only 15 minutes long, so it is not a like-for-like slice. The final half hour as a whole (3:00 to 3:29) had 5 highs and 10 lows, which I count separately below.
Reading it plainly:
- The opening half hour is far ahead of every other bucket. 23 of 64 highs and 19 of 64 lows. Every other 30-minute stretch had between 1 and 11.
- The middle of the day is quiet. From 9:45 to 1:44, no bucket had more than 5 highs or 5 lows.
- Lows bunch up late. Between 2:15 and 3:14 PM, there were 18 lows against 8 highs.
The first and last 30 minutes
| Days (of 64) | Share | |
|---|---|---|
| High in the first 30 minutes | 23 | 36% |
| Low in the first 30 minutes | 19 | 30% |
| High or low in the first 30 minutes | 40 | 63% |
| Both in the first 30 minutes | 2 | 3% |
| High in the last 30 minutes | 5 | 8% |
| Low in the last 30 minutes | 10 | 16% |
| High or low in the last 30 minutes | 15 | 23% |
| High or low in the first or last 30 minutes | 48 | 75% |
Put another way: on three days out of four, at least one of the day's two extremes was set in the opening or closing half hour. The first hour on its own (9:15 to 10:14) held the high or the low on 46 of 64 days (72%), and the last hour (2:30 to 3:29) on 27 (42%).
Opposite halves of the day
I split the day at 12:30 PM, which gives a morning of 195 minutes and an afternoon of 180.
| Where the high and low fell | Days | Share |
|---|---|---|
| High in the morning, low in the afternoon | 28 | 44% |
| High in the afternoon, low in the morning | 20 | 31% |
| Both in the morning | 12 | 19% |
| Both in the afternoon | 4 | 6% |
So on 48 of 64 days (75%) the two extremes were in opposite halves. The high came before the low on 37 days and after it on 27. Only 2 days had both extremes in the opening half hour.
A fair baseline
A plain uniform spread would put each extreme in any given minute with equal chance. Under that, the first 30 minutes would hold a given extreme on 8% of days (30 of 375 minutes), and the high or low there on about 15%. The real figures, 36% and 63%, are far above it.
But a uniform spread isn't how a wandering price behaves. A price that moves randomly minute by minute tends to set its extremes near the start and end of the period, because the start and end are where a fresh extreme is easiest to reach. So I also simulated 100,000 sessions of a 375-step random walk, with no drift and no memory, and counted the same things. This is my own quick simulation, not a model of the real market.
| Share of days | Uniform spread | Random-walk simulation | My 64 sessions |
|---|---|---|---|
| High in the first 30 minutes | 8% | 19% | 36% |
| High or low in the first 30 minutes | 15% | 37% | 63% |
| High or low in the last 30 minutes | 15% | 36% | 23% |
| Extremes in opposite halves | 50% | 80% | 75% |
Two honest readings. The opening half hour beat even the random walk by a wide margin, about 63% against 37%. The last half hour, by contrast, came in below it, 23% against 36%. And the opposite-halves share, 75%, sits close to what a random walk gives, so it isn't unusual on its own.
A part of the strong opening effect is easy to explain: the market often opens with a gap, and the gap itself can be the day's high or low. I haven't split the days by gap size, so I can't say how much of the 63% that accounts for.
What this doesn't show
- It's 64 sessions in one stretch. A calm or trending quarter could give a different picture, and a single busy week moves several counts at once. The days are not independent of each other. On 64 days, the 63% figure carries a wide margin of error, and I haven't put a number on it.
- It's one instrument. Only the Nifty 50 index, in one market regime. Over this window the index fell to its lowest close of my sample on 30 September (22,620.45), which may be part of why lows favoured the late afternoon. I haven't tested that.
- It's about timing, not size. A high at 9:20 on a 60-point day and a high at 9:20 on a 300-point day count the same. I haven't measured how far the market travelled.
- Minute bars have quirks. A bar's high can come from one print.
- Nothing here predicts anything. Knowing that extremes cluster at the open says nothing about whether tomorrow's open is a high, a low, or neither.
What I take from it
For me the count is mostly a reminder about the shape of a session. The first half hour does a lot of the work in setting the day's range, the middle is often quiet, and the afternoon can make a fresh low. It fits with how the early minutes tend to behave, and with the idea that the gap is mostly decided before the bell, which I covered in the pre-market read post. What the pre-open call auction sets is explained in the pre-open session guide.
Expiry days are worth a separate look, since the last hour can behave differently then; the background is in my post on expiry days. I haven't split these 64 days by expiry, so I don't know. I'll repeat this count when I have more sessions.
Sources
- One-minute Nifty 50 index bars for 64 sessions, 2 July to 30 September 2026. All counts and percentages are my calculations from them.
- Random-walk baseline: my own simulation of 100,000 sessions of 375 steps (fixed random seed), counted the same way as the real days.
This post describes an analysis of the sessions I analysed, for information only. It is not investment advice or a recommendation to trade. Past patterns say nothing certain about the future. I am not registered with SEBI as an investment adviser or research analyst.