Phase 18 - Lesson 18.4

Capstone 4 - Volatility Modeling

Measure realized volatility, back out implied volatility, model conditional variance with GARCH, and confront the volatility smile.

⏱ 130 min● Advanced🔗 Prereqs: Phases 12, 15; Capstone 3
↖ Phase 18 hub
Builds on: Integrates Time-Series (Phase 12), Derivatives & Volatility (Phase 15), and the pricer from Capstone 3.
Leads to: Volatility estimates feed risk models and execution (Capstones 5–7); the smile motivates model risk.

Learning Objectives

Click a status chip to cycle: Not started → In progress → Studied → Practiced → Needs review → Mastered.

Key Vocabulary

Realized volatility
An estimate of \(\sigma\) from historical returns, e.g. \(\sqrt{252}\cdot\text{sd of daily returns}\).
Implied volatility
The \(\sigma\) that makes the Black–Scholes price equal the observed market price of an option.
Volatility smile
The empirical pattern that implied vol varies with strike/moneyness, contradicting constant-\(\sigma\) BS.
GARCH(1,1)
A model \(\sigma_t^2=\omega+\alpha\epsilon_{t-1}^2+\beta\sigma_{t-1}^2\) capturing volatility clustering.
Volatility clustering
The tendency of large moves to follow large moves; autocorrelation in squared returns.
Persistence
In GARCH, \(\alpha+\beta\); close to 1 means shocks to variance decay slowly.

Intuition & Motivation

Intuition
Volatility is the single most important and most treacherous input in derivatives. It is not observed directly - you estimate it. Three lenses matter: realized volatility looks backward at how much the asset actually moved; implied volatility looks forward, backed out of option prices; and GARCH models the fact that volatility is not constant but clusters - calm and stormy regimes.

The empirical smile is the crack in the Black–Scholes edifice: if the model were literally true, implied vol would be flat across strikes. It isn’t. That single fact - visible in every option market - is the honest starting point for everything in Phase 15 and a standing reminder that models are approximations, not truth (a theme for Capstone 5’s model risk).

The brief

Build a small volatility toolkit: realized vol, implied vol (inverting the Capstone-3 pricer), and a GARCH(1,1) fit. Validate the realized estimator against a simulated series with known \(\sigma\), and document the smile qualitatively. Deliverable: code, a validation showing recovery of the true \(\sigma\), and a paragraph on why the smile matters.

Required theory recap

Realized volatility and its estimation error

For daily log returns, the annualized realized volatility and its own sampling error are:

\[\hat\sigma_{\text{ann}}=\sqrt{252}\,\sqrt{\tfrac{1}{n-1}\textstyle\sum_t (r_t-\bar r)^2},\qquad \text{SE}(\hat\sigma)\approx \frac{\hat\sigma}{\sqrt{2n}}.\] (18.9)
Key Idea
Vol estimates are noisy: with one year (\(n\approx252\)) of daily data, \(\text{SE}(\hat\sigma)/\hat\sigma\approx1/\sqrt{504}\approx4.5\%\). Two strategies whose ‘vols differ by 5%’ may be statistically indistinguishable.

Implied volatility: inverting the pricer

Because the call price is strictly increasing in \(\sigma\) (positive vega), the equation \(C_{\text{BS}}(\sigma)=C_{\text{mkt}}\) has a unique root, found by bisection or Newton. Implied vol is the market’s consensus forward-looking volatility - a quote in vol units, not a physical measurement.

Worked Example - Validating realized vol against a known truth
1
Simulate GBM returns with a known \(\sigma=0.20\) over \(n=2000\) days (many years) so the estimator is tight.
2
Estimate \(\hat\sigma_{\text{ann}}=\sqrt{252}\,\text{sd(daily log returns)}\).
3
Predicted SE (18.9): \(0.20/\sqrt{4000}\approx0.0032\), so expect \(\hat\sigma\in[0.194,0.206]\) ~95% of the time.
4
If \(\hat\sigma\) lands far outside, either the annualization factor is wrong (used 365? mixed simple/log returns?) or the simulation \(\sigma\) wasn’t what you thought.
5
This is a ground-truth test: only simulation lets you know the true \(\sigma\) and hence grade the estimator.

GARCH(1,1): volatility clusters

Squared returns are autocorrelated: big days cluster. GARCH captures this with a variance that mean-reverts but remembers recent shocks. The long-run (unconditional) variance and persistence are:

\[\bar\sigma^2=\frac{\omega}{1-\alpha-\beta},\qquad \text{persistence}=\alpha+\beta.\] (18.10)

Typical equity estimates have \(\alpha+\beta\approx0.95\text{–}0.99\): shocks to volatility decay slowly, which is why a turbulent week raises expected vol for many days.

The volatility smile

Plotting implied vol against strike (or moneyness) for a fixed maturity yields a smile or skew, not a flat line. Under exact Black–Scholes it would be flat. The smile is the market pricing in fat tails, jumps, and stochastic volatility - the empirical falsification of the constant-\(\sigma\) assumption, and the reason Phase 15 exists.

▶ Reference architecture for the vol toolkit
vol/realized.py -> realized_vol(returns, periods=252) vol/implied.py -> implied_vol(price,S,K,r,T) via bisection on bs_call vol/garch.py -> fit_garch11(returns) -> (omega,alpha,beta); persistence vol/validate.py -> recover known sigma from simulated GBM within SE

The implied-vol module reuses the Capstone-3 bs_call as its single source of truth (17.4); the validator uses simulation because only then is the true \(\sigma\) known.

Common Mistakes to Avoid
  • Annualizing with 365 instead of ~252 trading days, or mixing simple and log returns.
  • Treating a realized-vol point estimate as exact - ignoring its \(\sim\hat\sigma/\sqrt{2n}\) standard error.
  • Expecting the implied-vol smile to be flat because ‘Black–Scholes says so’ - it never is.
  • Fitting GARCH with \(\alpha+\beta\ge1\) and calling it stationary (it isn’t; variance is non-stationary).
  • Confusing implied vol (forward, from prices) with realized vol (backward, from returns) - they need not match.
  • Validating a vol estimator on real data where the ‘true’ \(\sigma\) is unknown, so you can’t grade it.
Quant Practitioner Tips
  • Annualize with the actual periods-per-year of your data; state the convention explicitly.
  • Always report a vol estimate with its standard error \(\hat\sigma/\sqrt{2n}\).
  • Recover implied vol by bisection on the monotone price–vol relation; reuse your validated pricer.
  • Check GARCH stationarity \(\alpha+\beta\lt 1\); interpret \(\alpha+\beta\) as persistence.
  • Validate estimators on simulated data with a known \(\sigma\); only there do you have ground truth.

Interactive: realized vol and implied vol, validated

Implement the realized-vol estimator and an implied-vol solver, then confirm the realized estimator recovers a simulated true \(\sigma\) and the implied solver inverts the pricer.

Knowledge Check

Q1 Medium
A flat implied-volatility curve across strikes would be consistent with:
Real option markets
Exact constant-\(\sigma\) Black–Scholes (which markets violate)
GARCH
A volatility smile
Q2 Medium
In GARCH(1,1), persistence \(\alpha+\beta\) close to 1 means:
Volatility is constant
Shocks to variance decay slowly, so turbulence lingers
The model is misspecified
Returns are independent
Q3 Medium
You estimate annualized vol as 0.18 from one year of daily data (\(n\approx252\)). The approximate standard error is:
~0
~0.008 (i.e. \(0.18/\sqrt{2\cdot252}\)
~0.18
~0.09

Practical Exercise

You are handed 250 daily returns and asked whether the asset’s volatility ‘increased’ from the first half to the second half (0.16 vs 0.19 annualized). (a) Compute the approximate standard error of each half’s estimate. (b) Is the increase statistically meaningful? (c) What model would you fit if you believe volatility genuinely changes over time, and what parameter would you inspect?

▶ Show full solution

(a) Each half has \(n\approx125\) days, so \(\text{SE}\approx\hat\sigma/\sqrt{2n}=\hat\sigma/\sqrt{250}\approx\hat\sigma/15.8\)): about \(0.16/15.8\approx0.010\) and \(0.19/15.8\approx0.012\).

(b) The gap is \(0.19-0.16=0.03\); the SE of the difference is \(\sqrt{0.010^2+0.012^2}\approx0.016\). So the change is \(0.03/0.016\approx1.9\) standard errors - borderline, not clearly significant at 95%. With only 125 days per half you cannot confidently claim volatility rose.

(c) Fit a GARCH(1,1) (or EWMA) to model time-varying conditional variance. Inspect the persistence \(\alpha+\beta\): high persistence supports genuine, slowly-decaying regime changes rather than noise, and the fitted \(\sigma_t\) path shows when vol rose.

After the reveal, answer for yourself: How many days would you need to distinguish 0.16 from 0.19 at ~95% confidence, and is that realistic?

Lesson Summary

Volatility is estimated, not observed, through three lenses: realized vol \(\sqrt{252}\,\text{sd}(r)\) (backward, with SE \(\sim\hat\sigma/\sqrt{2n}\)), implied vol (forward, inverted from option prices), and GARCH(1,1) conditional variance capturing clustering with persistence \(\alpha+\beta\). The volatility smile shows implied vol is not flat across strikes, falsifying constant-\(\sigma\) Black–Scholes. Estimators are validated on simulated data where the true \(\sigma\) is known.

Retrieval Practice

Close the lesson and answer from memory before checking. This is deliberate, effortful recall - the single highest-yield study action.

▶ Show retrieval prompts & answers
Q: Give the annualized realized-vol estimator and its approximate standard error.
A: \(\hat\sigma_{\text{ann}}=\sqrt{252}\,\text{sd}(r_t)\) for daily log returns, with \(\text{SE}(\hat\sigma)\approx\hat\sigma/\sqrt{2n}\) - so vol estimates from one year of data are only ~4.5% precise.
Q: What does the volatility smile tell you about Black–Scholes?
A: That implied volatility varies with strike, whereas exact constant-\(\sigma\) Black–Scholes predicts a flat curve. The smile falsifies the constant-vol assumption and motivates stochastic-volatility and jump models.

Completion Checklist

Confidence / mastery rating
Personal notes

Source References

This lesson synthesizes and paraphrases concepts from the sources below. No copyrighted text, problem sets, or solutions are reproduced. Return to the originals for full depth.