Wednesday 8 Apr 2026. Nifty rose 3.78% and closed at 23,997.35. That evening the twenty session realised volatility read 29.46 and the 30 day at the money implied volatility read 17.56, both percent a year. Twenty sessions later, on 8 May 2026, the realised volatility of the sessions that followed came in at 13.45. Two numbers on one evening, both answers to "how wild will the next month be", and the next month came in at less than half of one of them. My habit with any volatility forecast is to ask three things before I trust it: what horizon, scored against what, and how often it misses by a gap like this one. Everything below comes from NSE end of day files, dated, nothing live and nothing a view on the next month.

3By the end you can

  1. Explain how EWMA, GARCH and HAR each turn past returns into a volatility forecast.
  2. Read decay and persistence, and say how fast a spike fades under each.
  3. Score a forecast against realised volatility on dates the model has not seen.
The RupeeCase terminal on sample data: Your return three ways: why do the hero, key figure and XIRR differ?
Watch in the terminal: why do the hero, key figure and XIRR differ? A short tutorial on sample data.

The idea, plainly

What does a volatility forecast actually forecast?

Volatility is never seen, only returns. One return says little about the distribution behind it: a big move can come from a calm distribution. So a forecast has two jobs, to average squared returns sensibly and to say where volatility heads when no news arrives. Two facts shape every model. Volatility clusters, because big days follow big days. And it mean reverts towards a long run level, though not on a schedule.

Each model adds one idea to the one before

Four ways to forecast volatility, each adding one idea: an equal weight window, then fading weights, then a pull toward the long run level, then three horizons in one regressionDiagram with 4 boxes. Equal weight window to EWMA; EWMA to GARCH; GARCH to HAR.Equal weight windowevery day counts the sameEWMArecent days count moreGARCHadds a pull to the long runlevelHARday, week and month in oneregression
A ladder of ideas, not a ranking. A simpler model is often the harder one to beat once it is scored fairly. Source: RupeeCase, after the models named in the sources. As of 17 Oct 2026.

The models below are four steps on one ladder. The last two need a fit to history. The first two need only a choice, and that choice is where most of the damage is done.

Why does an equal weight window fail?

In a twenty session window every return carries the same weight, 5.00 percent of the variance, until the day it leaves and drops to nothing. A forecast should not move because a day aged out. EWMA, the exponentially weighted moving average, fades the weights by a fixed factor each day, the decay. At 0.94, today's return gets 6.00 percent.

A window drops a day with a bang. EWMA lets it fade.

Weight each past day gets: 5.00 percent for every day inside a twenty session window and nothing after, against an EWMA weight that fades from 6.00 percent a day old to 0.54 percent forty days oldWindow, any day to 20 5.00; Window, 21 days old 0.00; EWMA, 1 day old 6.00; EWMA, 5 days old 4.68; EWMA, 10 days old 3.44; EWMA, 20 days old 1.85; EWMA, 21 days old 1.74; EWMA, 40 days old 0.54.Share of the variance estimate, percentWindow, any dayto 205.00Window, 21 daysold0.00EWMA, 1 day old6.00EWMA, 5 days old4.68EWMA, 10 days old3.44EWMA, 20 days old1.85EWMA, 21 days old1.74EWMA, 40 days old0.54
Weights on the squared return of a day of the age shown. Window: twenty sessions, equal weights. EWMA: decay 0.94. The 8 Apr 2026 return was inside the window for twenty sessions and left on 8 May. Under EWMA its weight slides, from 1.85 to 1.74 percent between the twentieth and twenty first day. Source: RupeeCase arithmetic on a stated decay, not market data. As of 17 Oct 2026.
The maths: EWMA in two lines
Update:
s2(t) = L*s2(t-1)
      + (1-L)*r(t)^2
Weight on r(t-k):
  (1-L) * L^k
Example, L = 0.94
prior variance 0.81 (%^2)
today's return 2.5%
s2 = 0.94*0.81 + 0.06*6.25
   = 1.1364
Daily s.d. 1.07%;
annual: times sqrt(252)

Set L to zero and today's return is the whole estimate. Push L towards one and the estimate barely moves. The average age of the weights is L over one minus L days, about sixteen days at 0.94, so that decay reads roughly like a window of a month and a half. At 0.995 the average age is near two hundred days.

Read 2 more paragraphs, 176 words

The 8 Apr 2026 jump of 3.78% shows the difference. In the window it counts five percent of the estimate for twenty sessions, then nothing. In EWMA it counts less each day, and at twenty one days old it has barely changed. EWMA is the window with its cliff sanded off. It still has no view on where volatility goes next, so a forecast made from it is the current estimate, held flat.

The exchange uses the same device. The header of NSE's daily volatility file for F&O underlyings gives the formula: each day's variance is a share of the previous day's plus the rest from the squared log return. The decay in that file is 0.995, far slower than 0.94, so today's return gets only 0.5 percent. A decay is a choice about how much past to trust, and these two users made very different choices. At the lower decay the weights fall from 6.00 percent on day one to 4.68 on day five, 3.44 on day ten and 0.54 on day forty.

Where does GARCH add something?

EWMA forecasts flat. GARCH, the generalised autoregressive conditional heteroscedasticity model, adds a small constant that pulls variance towards a long run level, so a forecast made from a spike declines and one made from a lull rises. Everything turns on persistence: the weights on yesterday's estimate and on today's squared return, added up. At 0.97 the gap to the long run level shrinks by that factor every day.

With persistence near one, a spike takes months to fade

A shock to variance with persistence 0.97: 54.4 percent of the gap to the long run level is still open after twenty days and 16.1 percent after sixtyAfter 5 days 85.9; After 10 days 73.7; After 20 days 54.4; After 40 days 29.6; After 60 days 16.1; After 120 days 2.6.Gap to the long run level still open, percentAfter 5 days85.9After 10 days73.7After 20 days54.4After 40 days29.6After 60 days16.1After 120 days2.6
The share of the initial gap between variance and its long run level that is left after the days shown, persistence 0.97. It is a property of the model's arithmetic. Whether Nifty fades at this rate is for the data to say. Source: RupeeCase arithmetic on a stated persistence, not market data. As of 17 Oct 2026.
The maths: GARCH(1,1) and its forecast path
s2(t) = w + a*r(t-1)^2
      + b*s2(t-1)
Persistence p = a + b < 1
Long run V = w/(1-a-b)
k days ahead:
  V + p^k * (s2(t)-V)
Example: w = 0.02,
a = 0.08, b = 0.89
p = 0.97, V = 0.02/0.03
  = 0.667 (daily %^2)
20 day forecast: the mean
of the k day values,
k = 1 to 20

The parameters are not read off a table. They are fitted by maximum likelihood on a long return history, and they move with the sample. A fit over a calm stretch gives lower persistence than a fit that includes a crash.

Read one more paragraph, 119 words

That is 85.9 percent of the gap open after five days, 73.7 after ten, 54.4 after twenty, 29.6 after forty, 16.1 after sixty and 2.6 after a hundred and twenty. About 49.6 percent is still open after 23 days, so I read it as a half life of about a month of sessions. It also explains why a trailing window overshoots after a spike: the model expects fading, the window assumes none. In the other direction a GARCH forecast fades even if the spike was the start of a regime, and that is when it fails. A forecast for the next twenty sessions is the average of the daily forecasts over those sessions, not the value on the twentieth.

What does HAR do differently?

HAR, the heterogeneous autoregressive model, drops the latent variance and regresses the next period's realised volatility on three averages: yesterday, the last week and the last month. Different market users look at different horizons, a day trader at the day and a fund at the month, and their reactions stack into something that looks like long memory. It is a plain regression, easy to fit and easy to read.

The short window swings most. The long window is the anchor.

Volatility cone for the Nifty on windows from five to one hundred and twenty sessions: the band of past readings is widest on the shortest window and narrowest on the longestVolatility cone for 5 windows from 5 to 120 days. Range of past realised volatility at the longest window: 8.0% to 17.2%; realised now 14.3%; implied now 12.4%.Annualised volatility, %Min to max25th to 75thMedianRealised nowImplied now10%20%30%40%5d10d20d60d120dWindow, trading days
Close to close realised volatility on rolling windows, from 1 Jul 2025 to 15 Sep 2026. The band runs from the lowest to the highest reading. The dashed line is the 30 day at the money implied volatility of 12.44 percent. Source: NSE end of day data, computed by RupeeCase. As of 15 Sep 2026.
The maths: HAR in one line
RV(t+1) = c + bd*RVd
        + bw*RVw + bm*RVm
RVd: yesterday
RVw: mean of last 5 sessions
RVm: mean of last 22
Fit: ordinary least squares

Because it is least squares on a handful of inputs, the fit is stable and its weights are easy to read: a large weight on the month means volatility has a long memory in the sample.

Read one more paragraph, 48 words

The cone shows why three windows can carry different information. The short window swings far more than the long one, so a blend can react to news and still keep an anchor. HAR's inputs are realised volatilities, so the estimator choices of the earlier lesson matter here too.

Worked example: eight dates, one scorecard

How do you score a forecast?

Fix a start date and make the forecast from data up to that close. Wait, then measure the realised volatility of the next twenty sessions, with the same horizon, estimator and factor. The error is forecast less realised. Never score a model on the sample it was fitted on, because it has already seen the answer.

A second caution: start dates a day apart share nineteen of their twenty returns, so a hundred scored dates are not a hundred independent tests.

What do eight dates show?

I picked eight start dates spread across the file and scored two simple forecasts: the trailing twenty session realised volatility held flat, and the 30 day implied volatility, the market's own price for the same stretch. Four each. Both missed badly at the start of stress: on 6 Mar 2026 implied read 18.10 and the next twenty sessions came in at 29.46.

StartTrailingImpliedNext 20
27 Oct 20257.9810.947.12
23 Dec 20258.378.768.38
7 Jan 20266.909.6815.31
19 Feb 202615.8611.5520.40
6 Mar 202613.9918.1029.46
8 Apr 202629.4617.5613.45
8 May 202613.4515.8212.84
4 Aug 202613.5310.795.21

Realised volatility peaked after implied had already come down

Nifty twenty session realised volatility and 30 day at the money implied volatility from 15 Dec 2025 to 30 Jun 2026: realised peaks at 29.46 on 8 Apr 2026 while implied is already lower at 17.56Nifty 20 day realised vol: from 8.3% at 15 Dec 2025 to 11.5% at 30 Jun 2026, high 29.5% at 8 Apr 2026, low 6.9% at 7 Jan 2026. Nifty 30 day ATM IV: from 9.4% at 15 Dec 2025 to 13.1% at 30 Jun 2026, high 29.2% at 30 Mar 2026, low 8.6% at 24 Dec 2025.Nifty 20 day realised volNifty 30 day ATM IV10%15%20%25%30%Jan 2026MarMay8 Apr8 May
Percent a year. Realised is close to close over twenty sessions. Implied is the 30 day at the money series. Marks: the peak on 8 Apr and 8 May, when the 8 Apr return left the window. Source: NSE end of day data, computed by RupeeCase. As of 30 Jun 2026.
Read 4 more paragraphs, 311 words

Neither side owns the table. Trailing was closer on 27 Oct 2025, 23 Dec 2025, 19 Feb 2026 and 8 May 2026. Implied was closer on 7 Jan, 6 Mar, 8 Apr and 4 Aug 2026. Trailing wins when the next month looks like the last: 27 Oct and 23 Dec 2025 sat in a quiet stretch, and the trailing figure landed within a point of what followed. Implied wins when volatility reverts down: from 29.46 on 8 Apr to 13.45 twenty sessions later, the market's 17.56 was far nearer. The same file has the opposite lesson. On 19 Feb 2026 implied read 11.55 against 20.40 that followed. Neither forecast announced the stress, because nothing in past returns does.

I also ran every start date the file allows. The two forecasts miss by nearly the same amount on average, and implied sits a little above what followed. That second point is the next lesson. For now the reading is that a model has to beat these two, not beat zero. A GARCH fit that does no better than "last month, held flat" has found nothing. A HAR fit that cannot beat the market's own price has found nothing a trader could use.

My habit with a fitted model is to add it as a third column in the table, scored the same way on dates it has not seen. If it improves the average miss and also the worst misses, it earns a place. If it improves only the calm months, it has learned the average.

One more limit. All three models read past prices only. A known event, such as a Budget or a policy day, adds variance on a date the return history cannot see, and the event hedging lesson shows how option prices carry it instead. A model fitted on returns is a view of ordinary days.

The common mistake

The claim: Fit a GARCH model and you know next month's volatility. A fitted model gives a number, with a tidy fit statistic, and that is the trap. The table above scored two forecasts on eight dates and each missed by 11.36 points or more at least once, on 8 Apr 2026 for trailing (29.46 against 13.45) and on 6 Mar 2026 for implied (18.10 against 29.46). A model that fades a spike also misses when the spike turns out to be a regime. A forecast is a point on a distribution of outcomes. State the horizon, score it on dates it has not seen, and treat the miss as part of the answer.

Key takeaways

  • A window drops a day with a bang; EWMA lets the weight fade.
  • GARCH adds a pull towards a long run level, set by persistence.
  • HAR regresses on day, week and month averages of realised volatility.
  • Score each forecast against the realised volatility of the same horizon.
  • Neighbouring start dates overlap, so scored dates are not independent tests.
  • A model must beat trailing and implied volatility, not zero.

3 terms this section turns on

3 terms this section turns on3 terms this section turns on. EWMA: An exponentially weighted moving average. Each day's variance estimate is a fixed share of yesterday's plus the rest from today's squared return, so older days fade smoothly. GARCH: A model of variance with three parts: a constant, a share of yesterday's squared return and a share of yesterday's variance. It pulls variance back towards a long run level. Persistence: In a GARCH model, the two shares added up. Near one, a spike in variance takes a long time to fade.EWMAAn exponentially weighted moving average. Eachday's variance estimate is a fixed share ofyesterday's plus the rest from today's...GARCHA model of variance with three parts: aconstant, a share of yesterday's squaredreturn and a share of yesterday's...PersistenceIn a GARCH model, the two shares added up.Near one, a spike in variance takes a longtime to fade.
From the module glossary; every term is in the Learn glossary too. Source: Module 16.12, Forecasting volatility: EWMA, GARCH and HAR.

Before you trade. Derivatives trading carries a high risk of loss. SEBI's study "Profitability of Individual Traders in the Equity Derivatives Segment (FY25 to FY26)" (August 2026) found that 87.7% of individual traders in equity F&O made net losses in FY26, with aggregate net losses of Rs 91,685 crore. Read the SEBI study