GARCH Models
GARCH Models
Overview
GARCH (Generalized AutoRegressive Conditional Heteroskedasticity) models are used to estimate the volatility of a time series. While ARIMA models the conditional mean, GARCH models the conditional variance (
1. The Volatility Problem
In financial time series (stock returns), we often observe Volatility Clustering: Large changes tend to be followed by large changes, and small by small.
- This violates the constant variance (homoscedasticity) assumption of standard regression.
- GARCH treats this heteroscedasticity not as a bug, but as a feature to be modeled.
2. The Model Structure
GARCH(p, q):
Where:
: Constant baseline variance. : Past squared residuals (ARCH term) — "News" or "Shock". : Past variance (GARCH term) — "Persistence" (Memory).
GARCH(1,1): The most common specification.
Worked Example: Risk Management
You manage a portfolio.
- Today: Return
. - Current Volatility:
. - Model: GARCH(1,1) with
.
Question: Forecast tomorrow's volatility (
Solution:
-
Identifying Terms:
is the squared shock from today. If we assume mean return is 0, . So . .
-
Calculation:
Conclusion:
Volatility is predicted to increase from 1.5 to 1.95. The market is getting riskier because of today's large drop (shock).
Assumptions
Limitations
- Explosive Models: If
, the variance explodes to infinity (Integrated GARCH). Real financial data usually sums to ~0.99. - Ignores Direction: Standard GARCH assumes positive shocks and negative shocks affect volatility equally. In reality, market crash (bad news) spikes volatility more than a rally (good news). Use EGARCH or GJR-GARCH for asymmetric effects.
- High Frequency: Does not work well on low-frequency data (e.g., yearly). Best for daily/intraday.
4. Interpretation Guide
| Coefficient | Meaning |
|---|---|
| Reaction to new "shocks". High |
|
| Persistence of old variance. High |
|
| Baseline variance. Essential for stability. | |
| High persistence (common in finance). |
5. Python Implementation (arch package)
Note: The standard library statsmodels has limited GARCH support. arch is the industry standard.
from arch import arch_model
import numpy as np
# Sample Returns
returns = np.random.normal(0, 1, 1000)
# Fit GARCH(1,1)
model = arch_model(returns, vol='Garch', p=1, q=1)
results = model.fit(disp='off')
print(results.summary())
# Forecasting Volatility
forecasts = results.forecast(horizon=5)
print(forecasts.variance[-1:])
6. Related Concepts
- ARIMA Models - Often combined (ARIMA-GARCH).
- Heteroscedasticity - The phenomenon being modeled.
- Stationarity (ADF & KPSS)