Written and maintained by CASRAI Editorial Board
Last updated
A GARCH model (generalized autoregressive conditional heteroskedasticity) forecasts how large the next period’s variance of a series, usually financial returns, is likely to be, using the previous squared shock and the previous variance. It exists because volatility clusters: large changes tend to be followed by large changes. This guide gives the GARCH(1,1) formula with every symbol explained, a worked example with the arithmetic shown, a reading table for the parameters, and matching R and Python code.
What is a GARCH model?
A GARCH model describes the conditional variance of a time series: the variance at time t given what is already known at t−1. In the standard (sGARCH) specification, today’s conditional variance is a weighted sum of a constant, the previous squared residual (the ARCH term) and the previous conditional variance (the GARCH term). The rugarch package documentation states that volatility clustering is the feature of financial data that GARCH models capture, and that it is quantified by the persistence parameter.
ARCH vs GARCH
An ARCH(q) model uses only lagged squared residuals. GARCH(p,q) adds p lagged conditional variances as well, which lets a short model describe slowly decaying volatility. ARCH is credited to Engle (1982) and GARCH to Bollerslev (1986); the GARCH order is written (p, q), where p counts variance lags and q counts squared-residual lags.
GARCH(1,1)
GARCH(1,1) has one lag of each term and is the default in common software. When people write “GARCH model” without an order, they usually mean this one.
GARCH model formula and symbols
The Python arch package documentation writes the GARCH(1,1) model with a constant mean as:
- rt = μ + εt
- εt = σt et
- σt2 = ω + α εt−12 + β σt−12
| Symbol | Meaning |
|---|---|
| rt | Return (the observed series) at time t |
| μ | Constant mean of the returns |
| εt | Residual (shock): the return minus its mean |
| σt | Conditional volatility; σt2 is the conditional variance |
| et | Standardized residual (the random innovation) |
| ω, α, β | Volatility parameters: the intercept, the weight on the last squared shock, and the weight on the last variance |
For the general sGARCH model the rugarch vignette writes σt2 = ω + Σ αj εt−j2 + Σ βj σt−j2, with the sums over the ARCH and GARCH lags. Three quantities derived from the fitted parameters are used to interpret the model:
- Persistence: P = Σαj + Σβj, which is α + β for GARCH(1,1) (vignette eq. 11).
- Half-life: h = −ln 2 / ln P, the number of periods for half of the expected reversion toward the long-run variance to occur (eq. 12).
- Unconditional variance: ω / (1 − P) (eq. 13).
GARCH model worked example
Illustrative numbers, not estimated from real data. Suppose daily returns are in percent, so variances are in percent squared, and a fitted GARCH(1,1) has ω = 0.05, α = 0.10 and β = 0.85. Yesterday’s residual was εt−1 = −1.5 and yesterday’s conditional volatility was σt−1 = 1.2, so σt−12 = 1.44.
- Next-day variance: σt2 = 0.05 + 0.10 × (−1.5)2 + 0.85 × 1.44 = 0.05 + 0.10 × 2.25 + 1.224 = 0.05 + 0.225 + 1.224 = 1.499. The conditional volatility is √1.499 ≈ 1.224 percent.
- Persistence: P = 0.10 + 0.85 = 0.95.
- Unconditional variance: 0.05 / (1 − 0.95) = 0.05 / 0.05 = 1.00, a long-run volatility of 1 percent.
- Half-life: −ln 2 / ln 0.95 = 0.6931 / 0.0513 ≈ 13.5 periods (days here).
The forecast of 1.499 sits above the long-run variance of 1.00 because yesterday’s shock was large; with P = 0.95 the variance decays back toward 1.00, with half of the expected reversion complete after about 13.5 days.
How to interpret GARCH parameters
| Quantity | How to read it (from the definitions above) |
|---|---|
| α (ARCH term) | Weight on the last squared shock: how strongly a new surprise moves next-period variance |
| β (GARCH term) | Weight on the last conditional variance: how much of yesterday’s variance carries forward |
| P = α + β | Persistence: the measure of volatility clustering |
| Half-life | Periods for half the expected reversion toward the long-run variance; computable from P |
| ω / (1 − P) | Unconditional (long-run) variance implied by the fitted parameters |
| P = 1 (iGARCH) | Integrated GARCH (Engle and Bollerslev, 1986) imposes P = 1; the unconditional variance and half-life cannot then be calculated |
Assumptions and common mistakes
- Fit the volatility model to the residuals of a mean model. The equations above model the residual εt = rt − μ; check first that the series is not driven by leftover autocorrelation (see autocorrelation in time-series data).
- Do not confuse volatility modelling with fixing standard errors. Tools such as the Breusch-Pagan test or robust standard errors address heteroskedasticity in a regression; a GARCH model instead makes the changing variance itself the object of the forecast.
- Do not read a persistence of 1 as an ordinary result. Under iGARCH the long-run variance and half-life are undefined, so report them only for P < 1.
- Units matter. The intercept ω is in squared units of the data, so percent returns and decimal returns give different ω values for the same process.
- Do not treat the one-step formula as the whole model. Parameters are estimated jointly by the software; the formula only recomputes variances once estimates exist.
How to report a GARCH model (APA example)
State the specification, the estimator, and the parameter estimates with their standard errors, then the derived persistence. An example wording, using the illustrative values above and italicized statistical symbols:
A GARCH(1,1) model with a constant mean was fitted to daily percentage returns. The ARCH coefficient was α = 0.10 and the GARCH coefficient was β = 0.85, giving persistence P = 0.95 and a volatility half-life of 13.5 days. [Add standard errors, p values and the software and version used.]
How to calculate a GARCH model in Excel, R or Python
Excel
Excel has no built-in GARCH estimator, so the parameters must come from R, Python or another package. Once you have ω, α and β in cells B1, B2 and B3, the variance recursion is a single formula. With residuals in column C and variances in column D, the formula for row 3 is:
=$B$1 + $B$2*C2^2 + $B$3*D2
Persistence is =B2+B3, the unconditional variance is =B1/(1-(B2+B3)) and the half-life is =-LN(2)/LN(B2+B3).
R (rugarch)
library(rugarch)
spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 0)))
fit <- ugarchfit(spec = spec, data = returns)
fit
Python (arch)
from arch import arch_model
am = arch_model(returns, mean="Constant", vol="GARCH", p=1, q=1)
res = am.fit()
print(res.summary())
Here returns is a pandas Series of percentage returns. For other free tools, see free statistical software for research.
GARCH model FAQ
What does a GARCH model do?
It models and forecasts time-varying variance (volatility) in a series, capturing the tendency of large moves to cluster together.
What is the difference between ARCH and GARCH?
ARCH uses only past squared shocks; GARCH also uses past conditional variances, so it can represent persistent volatility with fewer parameters.
What does a high persistence mean?
A P = α + β close to 1 means shocks to volatility fade slowly; the half-life formula −ln 2 / ln P quantifies how slowly.
Is GARCH(1,1) enough?
It is the common default order in software; higher orders and variants such as iGARCH are available when the data call for them.
Sources
- Ghalanos, A. Introduction to the rugarch package, section 2.2 (standard GARCH, persistence, half-life, iGARCH). CRAN vignette. https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf (read 2026-11-07).
- arch Python package documentation, Univariate Volatility Models: Introduction. https://arch.readthedocs.io/en/latest/univariate/introduction.html (read 2026-11-07).
- Bollerslev, T. (1986). Generalized autoregressive conditional heteroskedasticity. Journal of Econometrics, 31, 307–327.
- Engle, R. F. (1982). Autoregressive conditional heteroscedasticity with estimates of the variance of United Kingdom inflation. Econometrica, 50, 987–1007.
- Engle, R. F., & Bollerslev, T. (1986). Modelling the persistence of conditional variances. Econometric Reviews, 5, 1–50.







