Introductory Context
"The conceptual understanding of GARCH and EWMA is not about implementing them mathematically -- professional quant tools (Python, R, Excel add-ins) handle the calculation. The understanding required for the options trader is: what do these models tell you that simple historical volatility does not, and how does that additional information affect volatility trading decisions? "
The Volatility Clustering Problem
An empirical fact about financial returns: volatility clusters. After a large daily Nifty move (say a 3% decline on a specific session), the following sessions are significantly more likely to also show large moves than a random distribution would predict. Similarly, after extended periods of small daily moves (calm markets), subsequent sessions tend to also be calm. This clustering means that yesterday's volatility is a much better predictor of today's volatility than the simple 60-day historical average would suggest.
Simple historical volatility ignores this clustering: it takes the standard deviation of all daily returns over the past 60 sessions and treats all sessions equally. This equally-weighted calculation dilutes the signal from recent high-volatility or low-volatility periods by averaging them with less-relevant older data. The result: simple historical volatility lags the market's actual current volatility, rising slowly when volatility is actually spiking and falling slowly when volatility is actually compressing.
EWMA - Exponentially Weighted Moving Average
EWMA volatility applies exponentially declining weights to historical returns: the most recent return gets the highest weight, the day before gets less weight, and so on, with weights declining at a constant rate (controlled by a decay factor lambda, typically 0.94). The formula: EWMA Variance(today) = lambda × EWMA Variance(yesterday) + (1 - lambda) × Return(today)². EWMA volatility responds faster to new information than simple historical volatility -- a sharp 3% move today immediately increases the EWMA volatility estimate significantly (weighted by (1 - 0.94) = 0.06 = 6% of the return²), while simple historical volatility would add only 1/60 = 1.67% weight to that same day.
Practical implication: compare the EWMA volatility to implied volatility (VIX / sqrt(12) for monthly) as a more responsive estimate of 'fair' current volatility. If EWMA volatility has just spiked (from a recent large move) to 22 percent while implied volatility (VIX) is at 18 percent, the EWMA signal suggests implied volatility is BELOW the current volatility regime -- options may be underpriced relative to the current level of actual market movement. If EWMA has just compressed to 11 percent while VIX remains at 15 percent, implied volatility appears ABOVE fair value -- options are rich relative to current movement, favouring sellers.
GARCH - The Full Volatility Clustering Model
GARCH extends EWMA by adding a mean-reversion component: GARCH Variance(today) = omega + alpha × Return(yesterday)² + beta × GARCH Variance(yesterday). The three parameters (omega, alpha, beta) capture the three components of volatility dynamics: omega = the long-run average variance (mean reversion level), alpha = the weight on recent shocks (how quickly new information affects the estimate), and beta = the weight on the previous period's variance (how persistent the current volatility regime is). For most equity markets: alpha + beta is close to 1.0 (high persistence), with beta typically around 0.85 to 0.90 (current volatility is strongly influenced by recent volatility) and alpha around 0.05 to 0.10 (recent shocks have moderate but not dominant influence).
GARCH provides a forecast of future volatility across multiple periods (not just today). The GARCH forecast declines exponentially toward the long-run average (omega) -- mean reversion built into the model. After a volatility spike, GARCH predicts declining volatility over the following weeks/months, converging back to the long-run mean. This GARCH forecast can be compared directly to the options market's term structure to assess whether near-term or far-term options are rich or cheap relative to the model's volatility path prediction.
EWMA vs Simple Historical Volatility vs Implied
Simple historical (60-day): equal weight to all 60 sessions. Lags current volatility. EWMA (lambda = 0.94): recent sessions weighted more heavily. Responds faster to new information. GARCH: models clustering and mean reversion explicitly. Best forecast model for near-term volatility. Implied (from VIX): market's expectation of future volatility. Incorporates all known information plus risk premium. Comparison strategy: if EWMA or GARCH < Implied (IV > realised models): sell volatility (IV is rich). If EWMA or GARCH > Implied (IV < realised models): buy volatility (IV is cheap).
GARCH and EWMA are the quant's tools for estimating 'fair' current volatility from historical returns. The volatility trader who can compare these model-based estimates to implied volatility has an additional analytical lens beyond the simple VIX-to-historical-average comparison. The models are not necessary for successful volatility trading -- the simpler VRP framework from Topic 18.1 is sufficient for most decisions. But for traders who want the most analytically rigorous framework for the implied-vs-realised comparison, GARCH and EWMA provide the precision that simple historical volatility lacks.
Use Python's arch Library for EWMA and GARCH Calculations
For retail traders interested in implementing EWMA and GARCH volatility estimates: Python's 'arch' library (pip install arch) provides simple EWMA and GARCH model fitting with NSE historical return data. Download Nifty daily closing prices from NSE's website (the bhavcopy file), calculate daily returns, fit the GARCH(1,1) model, and compare the forecast variance to the current VIX-implied variance. This 20-line Python script (documented on the arch library's GitHub) provides a personalised volatility model for the Nifty that is superior to simple historical volatility for the implied-vs-realised comparison.