arch
GARCH and the rest of the volatility-model family, plus the tests you need around them.
by Kevin Sheppard
Last updated
What it is
arch fits conditional volatility models to a return series. arch_model(returns).fit() gets you
a GARCH(1,1) with a constant mean and normal errors in one line, and every part of that is
swappable: the mean model (constant, zero, AR, HAR, least squares, with or without exogenous
regressors), the volatility process (ARCH, GARCH, EGARCH, APARCH, FIGARCH, HARCH, MIDAS
hyperbolic, EWMA/RiskMetrics, RiskMetrics 2006, fixed variance) and the error distribution
(normal, Student's t, skew-t, generalised error).
It is written by Kevin Sheppard, an econometrician at Oxford, and it shows: the estimators are the ones from the literature, the standard errors are the robust ones, and the parameter tables print like a paper rather than like a dashboard. Cython and optional Numba do the recursion.
Three other modules travel with it and are worth the install on their own. Unit root and cointegration: augmented Dickey-Fuller, DF-GLS, Phillips-Perron, KPSS, Zivot-Andrews and variance ratio tests, Engle-Granger and Phillips-Ouliaris cointegration tests, and CCR, dynamic OLS and fully modified OLS estimators. Bootstrap: IID, stationary, circular block and moving block, with confidence intervals for any statistic you can write as a function — a Sharpe ratio, for instance. Multiple comparison: Hansen's SPA and the Reality Check, StepM and the Model Confidence Set, which is the correct answer to "I tested two hundred strategies and one looked great".
Repository state on 19 September 2026. Version 8.0.0 was released on 21 October 2025 and is
still the current one; the last commit to main was 14 September 2026, there were 27 open issues,
and the repository is not archived. That September date flatters it, though: it is Dependabot
bumping cibuildwheel, as is everything else on main since mid-June 2026, and the last commit
that touched the library was a division-warning fix on 16 June. Kevin Sheppard is the sole
maintainer. 8.0.0 was largely a compatibility release — the build moved to Meson, the Python floor
rose from 3.9 to 3.10, Python 3.14 wheels appeared, and the code was made ready for NumPy 2.4 and
pandas 3.
Pricing
Free under the NCSA licence, with nothing to buy. Thirty-one files ship per release: wheels for
CPython 3.10 through 3.14 across the usual platforms, plus a source distribution. conda-forge
carries it as arch-py, which is worth knowing because the import is still arch.
Data & coverage
No market data, but unusually for a library in this category it bundles example datasets — S&P 500 and NASDAQ prices, the VIX, WTI and crude, Fama-French factors, core CPI and two cross-sectional sets — so the documentation examples run offline. Everything else is a returns series you supply. The models are indifferent to what produced it.
Limitations
- Univariate only. No DCC, no BEKK, no multivariate volatility of any kind.
- Estimation is maximum likelihood with no Bayesian option, and long or awkward series can hit convergence problems that the package reports honestly and does not solve for you.
- The README's quick-start example still fetches FTSE prices through
pandas_datareaderwith an end date of 2014.pandas_datareaderis not a dependency, so the first example a new user copies does not run on a clean install. - Forecasting has real footguns — analytic versus simulation versus bootstrap forecasts differ, and only simulation and bootstrap work for the asymmetric models. The documentation covers this; the API will not stop you.
- Releases are roughly yearly, so a NumPy or pandas break can sit unreleased for months even while
mainhas the fix.
Alternatives
statsmodels covers the time-series ground around it — ARIMA, VAR, state space — and is a
dependency of arch rather than a competitor, so the two are installed together anyway. For
pricing models rather than volatility estimation, QuantLib. Anyone who only
wants a rolling standard deviation should stop at pandas; arch earns its place when the question
is whether volatility clusters, persists or reacts asymmetrically to losses.
Specs
- Interfaces
- Python, Python
- Export
- None
- Asset classes
- Stocks, ETF, Indices, Forex, Crypto, Commodities
- Markets
- Global
- Platforms
- Library
- AI features
- None
- Pricing verified
- Capabilities verified
- Coverage verified
Also worth comparing
- QuantLib — The open-source derivatives pricing library banks actually use, reachable from Python.
- empyrical-reloaded — The maintained fork of Quantopian's empyrical — risk statistics, no plots.
- ffn — Performance stats, drawdowns and portfolio weights from a DataFrame of prices.
- pandas-ta — The DataFrame indicator library whose repo is gone and whose last release is a year old.
- PyPortfolioOpt — Prices in, weights out — efficient frontier, Black-Litterman and HRP.
- QuantStats — HTML tearsheets and about eighty risk metrics from one pandas series of returns.
FAQ
Is arch still maintained?
Yes, by one person, but read the log rather than the date. Kevin Sheppard released 8.0.0 on 21 October 2025; the last commit to main was 14 September 2026, there were 27 open issues and no archive notice. Everything on main since mid-June 2026 is Dependabot and Snyk bumping CI actions, and the last change to the library itself was a division-warning fix on 16 June 2026. Mature and slow, not abandoned.
Does arch do multivariate GARCH — DCC or BEKK?
No. The package ships univariate volatility models only; there is no multivariate module in the source tree. Fitting a correlation model across several assets means another library or your own code.
What licence is arch under?
The University of Illinois/NCSA Open Source License, SPDX identifier NCSA — not MIT or BSD, although it reads like a combination of the two. It is permissive, OSI-approved and not copyleft, requiring attribution and forbidding use of the author's name to endorse derived products.
What else is in the package besides GARCH?
Four more modules that get used independently — unit-root tests (ADF, DFGLS, Phillips-Perron, KPSS, Zivot-Andrews, variance ratio), cointegration tests and estimators, a bootstrap module with IID, stationary and block bootstraps, and Hansen's SPA, StepM and the Model Confidence Set for comparing many strategies at once without fooling yourself.