Markets: A Rigorous Course

2.10 Case studies

Core about 15 min

Throughout this section, "zz against calm volatility" divides a day's log return by the standard deviation of daily log returns over a stated earlier window. "zz against EWMA volatility" divides by the one-day-ahead forecast of an exponentially weighted moving average with decay 0.94, started on the first 250 days of the Nifty sample. Normal-model tail probabilities are Φˉ(∣z∣)\bar\Phi(|z|).

2.10.1Nifty, March 2020: a crash that was ordinary given its volatility#

Context Nifty closed at 12,362.30 on 14 Jan 2020 (Nifty sample high before the crash). COVID-19 spread out of China through February; Italy locked down in early March; India announced a national lockdown on 24 Mar 2020.

Timeline (Nifty closes; sources: Nifty sample for closes, press as cited)

  • 12 Mar 2020: −8.30% to 9,590.15 (reported by Wikipedia's Nifty 50 page and stableinvestor.com; one Wikipedia page gives −7.89%, so sources differ).
  • 13 Mar: Nifty hit its 10% lower circuit (a market-wide circuit breaker, which halts all equity and equity-derivative trading when the index falls a set percentage from the previous close) at 8,625 and trading stopped for 45 minutes, the first such halt in about 12 years (Business Standard, 13 Mar 2020). It recovered to close higher that day.
  • 16 Mar: −7.61% to 9,197.40.
  • 23 Mar: −12.98% to 7,610.25, a fall of 1,135.20 points, the largest one-day point fall in its history (Tribune India). Sensex hit its 10% lower circuit and triggered another 45-minute market-wide halt (Business Standard, 23 Mar 2020).
  • 24 Mar: India VIX closed at a record 83.61, after an intraday high of 86.63 (reported by Business Standard, 24 Mar 2020). Nifty's intraday low that day was about 7,511 (reported by stableinvestor.com).
  • 7 Apr: +8.76% to 8,792.20.

Peak to closing trough: 7,610.25/12,362.30−1=−38.4%7{,}610.25/12{,}362.30 - 1 = -38.4\% in 47 trading sessions.

Analysis Against 2019's daily volatility (0.87%), the 23 Mar log return of −13.9%-13.9\% was −15.9σ-15.9\sigma, with a normal-model probability of 10−56.610^{-56.6}. Against the trailing 250-day volatility it was −10.1σ-10.1\sigma. Against the EWMA forecast made the evening before (3.59% a day, after two weeks of 5–8% moves) it was −3.9σ-3.9\sigma. The question "how extreme was this day?" has no single answer; it depends on the volatility model, and once volatility clustering (2.7) is accounted for, the worst day in Nifty's history was a large but not freakish draw. The same standardisation applied to the whole sample cuts excess kurtosis from 15.2 to 2.2: most of Nifty's fat tail is volatility clustering, and what remains is Cont's "conditional heavy tails". The March 2020 episode also shows Proposition 2.15 at work: the rolling 52-week Nifty–S&P 500 correlation reached its sample maximum, 0.82, in the week of 20 Mar 2020.

With a tail index of 3 calibrated to the observed frequency of ∣z∣>4|z| > 4 days (0.81% of days), P(∣z∣>10)≈0.0081×(4/10)3=5.2×10−4P(|z| > 10) \approx 0.0081 \times (4/10)^3 = 5.2\times10^{-4}, about one day in eight years of 245 trading days. The Nifty sample contains three days beyond 10σ10\sigma (full-sample σ\sigma) in 19 years. The power law gets the order of magnitude right; the normal model is wrong by twenty orders.

Takeaway

Size positions to conditional volatility, and expect the conditional distribution to have fat tails as well. A position sized to 2019 volatility needed to survive a day of −16σ-16\sigma.

2.10.2Black Monday, 19 October 1987: what "20 sigma" means#

Context and timeline The S&P 500 fell 2.95%, 2.34% and 5.16% on 14, 15 and 16 Oct 1987, closing at 282.70 (Yahoo Finance ^GSPC). On Monday 19 Oct it closed at 224.84, a fall of 20.47% (reported by CNBC; same figure from Yahoo closes). The Dow Jones Industrial Average fell 508 points, 22.6% (Federal Reserve History, "Stock Market Crash of 1987"). It remains the largest one-day percentage fall of both indices. (Thorp's 2006 chapter cites "23%" for the S&P 500, which is close to the Dow figure; the S&P figure is 20.47%.)

Computation The log return was ln⁡(224.84/282.70)=−22.9%\ln(224.84/282.70) = -22.9\%. The daily standard deviation of S&P 500 log returns over the year to 16 Oct 1987 was 1.054% (computed from Yahoo closes; 16.7% annualised).

Volatility used σ\sigma (daily) zz log⁡10Φˉ(∣z∣)\log_{10}\bar\Phi(\lvert z\rvert)
1 year to 16 Oct, log return 1.054% −21.7 −104.2
1 year to 16 Oct, simple return 1.054% −19.4 −83.6
round 1.0%, simple return 1.0% −20.5 −92.7
20 days to 16 Oct, log return 1.847% −12.4 −34.9

At a probability of 10−9310^{-93} per day, the expected waiting time for one such day is about 109010^{90} years. The universe is about 1.4×10101.4\times10^{10} years old. The S&P 500 sample from 1950 to 2026 (19,332 daily returns) has the 1987 day at −23σ-23\sigma with full-sample volatility; the next worst, 16 Mar 2020 (−12.0%-12.0\%), is about −13σ-13\sigma.

The power-law alternative: with α=3\alpha = 3 and the Nifty-calibrated frequency of ∣z∣>4|z| > 4 days, P(∣z∣>20)≈0.0081×(4/20)3=6.5×10−5P(|z| > 20) \approx 0.0081 \times (4/20)^3 = 6.5\times10^{-5}, about once in 60 years of trading. That is a tail calibrated on another market, so treat it as an order of magnitude only. Its message is that a 20-sigma day is rare but expected within a career, not impossible within the life of the universe.

Mechanism The Brady Commission (Report of the Presidential Task Force on Market Mechanisms, January 1988) attributed much of the selling to "portfolio insurance", a dynamic hedging strategy that sold index futures as prices fell, and to the breakdown of arbitrage between futures and cash markets. Selling that rises as prices fall is positive feedback; it converts a large move into a discontinuity. M08's delta-hedging analysis shows why replicating a put requires selling into declines.

Takeaway

"nn-sigma" statements are statements about a model, not about the market. When a model calls an observed event a 10−9010^{-90} event, reject the model. Since 1987, equity index options have been priced with a persistent premium for downside strikes (the skew, M09), which is the options market's estimate that the normal model's left tail is too thin.

2.10.34 June 2024: a scheduled event#

Context Results of India's 2024 general election were counted on 4 Jun 2024. Exit polls published on 1 Jun projected a large majority for the incumbent alliance.

Timeline M01 · 1.11 Case 4 holds the dated timeline and its sources; this case takes the statistical angle. The numbers used here: the Nifty closed at 23,263.90 on 3 Jun 2024 (+3.25% on the exit polls), at 21,884.50 on 4 Jun (−5.93%, intraday low 21,281.45, about −8.5%-8.5\%) and at 22,620.35 on 5 Jun (+3.36%). India VIX closed at 26.75 on 4 Jun (NSE daily index file ind_close_all_04062024.csv; two press reports gave 25.89).

Analysis Against January–May 2024 volatility (0.72% daily), the 4 Jun log return of −6.1%-6.1\% was −8.5σ-8.5\sigma (10−16.810^{-16.8} under normality). Against the EWMA forecast it was still −6.0σ-6.0\sigma, and against the trailing 20-day volatility −6.2σ-6.2\sigma. Unlike March 2020, volatility clustering does not explain this day: volatility had not been building in the realised returns. But the options market had priced it: India VIX was about 24–25 in the last week of May (Yahoo series), implying a daily standard deviation of about 24.6/252=1.55%24.6/\sqrt{252} = 1.55\%, more than twice the realised 0.72%. India VIX measures 30-calendar-day volatility annualised over 365 days, so 24.6 corresponds to a 30-day variance of 0.2462×30/365=0.004970.246^2 \times 30/365 = 0.00497. If the 20 ordinary trading days in that window each carry (0.72%)2(0.72\%)^2, the remaining variance puts the standard deviation of the result day alone at about 6.3% (Problem 14 works this through, including the post-exit-poll VIX). On that reading the realised −6.1%-6.1\% was roughly a one-standard-deviation outcome of a priced event. On 5 Jun, with the uncertainty resolved, VIX fell to about 19.

The right statistical model for a scheduled binary event is a mixture: with probability π\pi outcome A (index +a+a), with probability 1−π1 - \pi outcome B (index −b-b), plus ordinary noise. Such a distribution can be bimodal; its variance is π(1−π)(a+b)2+σ2\pi(1-\pi)(a+b)^2 + \sigma^2, which is what the implied volatility was pricing. The exit-poll rally on 3 Jun raised the market's π\pi; 4 Jun was the realisation of the other branch. M12 develops event-study methods and scenario trees for this; M09 shows how option prices encode the event variance (the term structure of implied volatility kinks at the event date).

Takeaway

Unconditional and even GARCH-conditional models treat every day as exchangeable. Event days are not. Check the calendar (election results, Union Budget, RBI policy, US CPI, index-option expiries) and the implied volatility before sizing.

2.10.4The 2026 Iran war: a volatility regime, not a jump#

Context US and Israeli strikes on Iran began over the weekend of 28 Feb–1 Mar 2026 and the Strait of Hormuz was closed in early March. The dated timeline of the war, oil and policy is in M12 · 12.8 Case 6 (the course's reference timeline); M10 · 10.11.5 takes the oil-market angle and M11 Case 3 the rates angle. This case uses only the Nifty's return distribution.

Nifty closes used here (press as cited; NSE's daily index file ind_close_all_DDMMYYYY.csv is the primary record).

  • 27 Feb 2026: 25,178.65.
  • 2 Mar: −1.24% to 24,865.70; India VIX from 13.70 to about 17.1–17.5, reported as up more than 25% to a nine-month high (Free Press Journal; Business Today).
  • 19 Mar: −3.26%, the largest one-day fall of the month.
  • 30 Mar: closing low 22,331.40 (−2.14%), the last session of FY26; India VIX 27.89. March 2026: Nifty −11.3%, India VIX up about 103% on the month (reported in secondary market wraps).
  • 8 Apr: +3.78% to 23,997.35.

Analysis No single day was extreme. The worst day, 19 Mar (−3.3%-3.3\%), was −3.0σ-3.0\sigma against its EWMA forecast. What changed was the level of volatility: daily standard deviation was 0.77% from 1 Jan to 27 Feb 2026 and 1.48% over March–April, roughly a doubling, and the 11% monthly fall came from a run of moderate down days. This is Cont's volatility clustering and intermittency, not a heavy-tail jump, and it is the more common way markets fall. The VaR of a fixed position doubled in two weeks; a trader who held position size constant doubled their risk without making a decision.

Takeaway

Geopolitical shocks with uncertain duration raise volatility for weeks. Volatility-targeted sizing (2.7; M03 · 3.9) cuts exposure automatically as realised volatility rises, at the cost of being under-invested in the rebound (the +3.8% day on 8 Apr).

Create a free account

Reading is open to everyone. An account keeps your progress, answers, notes and code drafts, and gives you the study plan, the journals and the simulator. Running code needs an account approved for it.