From wealth-management
Models, forecasts, interprets volatility using EWMA, GARCH(1,1), implied vol from options, smiles/skews/surfaces, term structure, VIX for risk management.
npx claudepluginhub joellewis/finance_skills --plugin wealth-managementThis skill uses the workspace's default tool permissions.
Model, forecast, and interpret volatility using time-series models and options-implied measures. This skill covers EWMA and GARCH(1,1) for volatility forecasting, implied volatility extraction, volatility smile/skew/surface construction, the volatility term structure, the realized-vs-implied volatility gap (volatility risk premium), and the VIX index. These tools are foundational for options pr...
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Model, forecast, and interpret volatility using time-series models and options-implied measures. This skill covers EWMA and GARCH(1,1) for volatility forecasting, implied volatility extraction, volatility smile/skew/surface construction, the volatility term structure, the realized-vs-implied volatility gap (volatility risk premium), and the VIX index. These tools are foundational for options pricing, risk management, and trading strategy development.
1b — Forward-Looking Risk
Prospective
A simple volatility model that gives more weight to recent observations. RiskMetrics popularized this approach with a standard decay factor.
sigma^2_t = lambda * sigma^2_{t-1} + (1 - lambda) * r^2_{t-1}
where:
Properties:
The Generalized Autoregressive Conditional Heteroskedasticity model adds a constant term that induces mean reversion in volatility.
sigma^2_t = omega + alpha * r^2_{t-1} + beta * sigma^2_{t-1}
where:
Stationarity condition: alpha + beta < 1. This ensures the process is covariance-stationary and mean-reverting.
Long-run (unconditional) variance:
V_L = omega / (1 - alpha - beta)
Long-run annualized volatility: sigma_L = sqrt(V_L * 252).
Persistence: The quantity alpha + beta measures how quickly volatility reverts to its long-run level. Higher persistence means slower mean reversion.
Half-life of volatility shocks: The number of periods for a volatility shock to decay by half:
h = -ln(2) / ln(alpha + beta)
Since alpha + beta < 1, ln(alpha + beta) < 0, and h is positive.
Multi-step forecasts: The h-step-ahead GARCH(1,1) forecast:
E[sigma^2_{t+h}] = V_L + (alpha + beta)^h * (sigma^2_t - V_L)
The forecast converges to V_L as h approaches infinity.
The volatility value that, when plugged into an option pricing model (typically Black-Scholes), produces a theoretical price equal to the observed market price.
For a European call under Black-Scholes:
C = S * N(d1) - K * exp(-rT) * N(d2)
d1 = [ln(S/K) + (r + sigma^2/2) * T] / (sigma * sqrt(T))
d2 = d1 - sigma * sqrt(T)
Implied volatility is the sigma that solves C_model(sigma) = C_market. There is no closed-form solution; it must be found numerically (e.g., Newton-Raphson, bisection).
In practice, implied volatility varies by strike price, contradicting the constant-volatility assumption of Black-Scholes.
Implied volatility varies across option expiration dates.
The two-dimensional surface of implied volatility across both strike (or delta/moneyness) and maturity. The volatility surface is the most complete representation of the options market's view of future uncertainty.
Practitioners interpolate the surface to price options at arbitrary strike/maturity combinations. Surface dynamics (how the surface shifts, tilts, and bends) are critical for options portfolio risk management.
Implied volatility systematically exceeds subsequent realized volatility on average. This gap is the volatility risk premium (VRP).
VRP = IV - RV_subsequent
The VRP exists because investors are willing to pay a premium for options (insurance), and option sellers demand compensation for bearing tail risk. The VRP is typically positive and has been a persistent source of return for volatility sellers.
Key considerations:
The CBOE Volatility Index measures the market's expectation of 30-day forward volatility, derived from S&P 500 option prices.
| Formula | Expression | Use Case |
|---|---|---|
| EWMA Variance | sigma^2_t = lambda * sigma^2_{t-1} + (1-lambda) * r^2_{t-1} | Simple volatility forecast |
| GARCH(1,1) Variance | sigma^2_t = omega + alpha * r^2_{t-1} + beta * sigma^2_{t-1} | Mean-reverting vol forecast |
| GARCH Long-Run Variance | V_L = omega / (1 - alpha - beta) | Unconditional variance level |
| GARCH Half-Life | h = -ln(2) / ln(alpha + beta) | Speed of mean reversion |
| GARCH h-Step Forecast | V_L + (alpha+beta)^h * (sigma^2_t - V_L) | Multi-period vol forecast |
| Black-Scholes Call | S * N(d1) - K * exp(-rT) * N(d2) | Option pricing (IV extraction) |
| Volatility Risk Premium | IV - RV_subsequent | Premium earned by vol sellers |
| EWMA Effective Window | approximately 1 / (1 - lambda) | Implicit lookback period |
Given: Yesterday's variance estimate sigma^2_{t-1} = 0.0004 (daily vol = 2%), yesterday's return r_{t-1} = -3% (i.e., r = -0.03), and lambda = 0.94.
Calculate: Today's EWMA variance estimate and daily volatility.
Solution:
sigma^2_t = 0.94 * 0.0004 + (1 - 0.94) * (-0.03)^2
= 0.94 * 0.0004 + 0.06 * 0.0009
= 0.000376 + 0.000054
= 0.000430
Daily volatility:
sigma_t = sqrt(0.000430) = 0.02074 = 2.074%
The large negative return (-3%) caused the volatility estimate to increase from 2.0% to 2.074%. The EWMA responded to the shock, but the high lambda (0.94) dampened the reaction.
Given: GARCH(1,1) parameters estimated from daily S&P 500 returns: omega = 0.000002, alpha = 0.08, beta = 0.91.
Calculate: Long-run daily variance, long-run annualized volatility, and half-life of volatility shocks.
Solution:
Stationarity check: alpha + beta = 0.08 + 0.91 = 0.99 < 1 (stationary, but highly persistent).
Long-run variance:
V_L = 0.000002 / (1 - 0.99) = 0.000002 / 0.01 = 0.0002
Long-run daily volatility:
sigma_L = sqrt(0.0002) = 0.01414 = 1.414%
Annualized:
sigma_annual = 0.01414 * sqrt(252) = 22.45%
Half-life:
h = -ln(2) / ln(0.99) = -0.6931 / (-0.01005) = 68.97 ~ 69 trading days
Interpretation: After a volatility shock, it takes approximately 69 trading days (about 3 months) for the excess volatility to decay by half. This high persistence (alpha + beta = 0.99) is typical for equity index returns.
Given: A stock trades at $100. A 3-month ATM call (K = $100) trades at $6.50. The risk-free rate is 5%. Using Black-Scholes, the implied volatility is determined (via numerical solver) to be 30%.
Calculate: What does this tell us, and how does it compare to realized vol of 22%?
Solution:
The implied volatility of 30% represents the market's consensus forecast of annualized volatility over the next 3 months, as embedded in option prices.
Comparing to realized (historical) volatility of 22%:
VRP = IV - RV = 30% - 22% = 8%
The positive 8-percentage-point gap is the volatility risk premium. Possible interpretations:
A systematic vol-selling strategy would sell this option, expecting to profit from the VRP if realized vol remains near 22%. However, the seller bears the risk that realized vol could exceed 30%.
See scripts/volatility_modeling.py for computational helpers.