Model card — ewma094 (EWMA / RiskMetrics 1994, λ = 0.94)
1. Identity
- model_id:
ewma094· family: baseline · tier: A · status: implemented · impl: arch 8.0.0 (EWMAVariance(lam=0.94), λ fixed) - Label: EWMA (RiskMetrics 1994, lambda = 0.94) · distributions: normal
- Seminal citation:
jpmorgan1996riskmetrics(RiskMetrics Technical Document, 4th ed.) - Other references:
engle1986modelling(IGARCH, of which EWMA is the zero-intercept case; registrynested_in: igarch11);zumbach2009riskmetrics(RM2006 successor).
2. Definition
$$r_t = \mu + \varepsilon_t,\qquad \sigma_t^2 = \lambda,\sigma_{t-1}^2 + (1-\lambda),\varepsilon_{t-1}^2,\qquad \lambda = 0.94 .$$
arch's ewma_recursion starts from $\sigma_0^2$ = backcast. Innovation law: N(0,1) (only μ is estimated; the Gaussian likelihood is used to estimate μ).
3. Parameter space and admissibility
- Estimated:
muonly. λ is fixed at 0.94 (parameter_names()is empty for the volatility process). - $0 < \lambda < 1$ enforced at construction. No stationarity: the process is integrated ($\lambda + (1-\lambda) = 1$) and has no unconditional variance. Admissibility flag always
True(no check inArchModel.fit).
4. Nesting and relations
EWMA = IGARCH(1,1) with $\omega = 0$, $\alpha = 1-\lambda = 0.06$, $\beta = \lambda$ (igarch11 card); = GARCH(1,1) on the unit-persistence boundary with zero intercept. rm2006 is a weighted mixture of 14 EWMAs with different decays.
5. Estimation
arch ConstantMean + EWMAVariance(0.94) + Normal, fit(disp="off", options={"maxiter": 1000}): SLSQP over the single parameter μ (Gaussian log-likelihood with the EWMA variance path); starting value = sample mean; backcast = exponentially weighted average of the first min(75, T) squared residuals (weights ∝ 0.94ⁱ). Restarts (≤ 2) as for all arch-backed models (src/wp46/models/arch_models.py::ArchModel.fit). Only point estimates are used in the rolling benchmark; filtering with am.fix(params).
6. Forecasting
arch _analytic_forecast for EWMA: $\hat\sigma^2_{t+1|t} = \lambda\sigma_t^2 + (1-\lambda)\varepsilon_t^2$ and $\hat\sigma^2_{t+k|t} = \hat\sigma^2_{t+1|t}$ for $k = 2..22$ (flat; a martingale variance). Cumulative $h$-day variance $= h,\hat\sigma^2_{t+1|t}$. Method: analytic.
7. Implementation
src/wp46/models/arch_models.py(SPECS["ewma094"],fixed=True), arch 8.0.0 (sheppard2025arch).- Cross-check: none in
results/metrics/rugarch_crosscheck.json(parameter-free recursion; rugarch has no fixed-λ EWMA entry in the fixture script). - Tests: no dedicated test; not in the pilot.
8. Known limitations / failure modes
Fixed decay calibrated on 1990s daily data; integrated dynamics give a flat term structure (no mean reversion), which the literature identifies as its main weakness at h = 5, 22. Cannot fail to converge in the variance recursion (only μ is optimised).
9. Computational footprint
One-parameter SLSQP, analytic forecasts: among the cheapest estimated models. No pilot timing.
10. Literature expectations
hansen2005forecast include RiskMetrics-type EWMA among the dominated benchmarks on the DM/$ and IBM series; jpmorgan1996riskmetrics is a risk-management standard rather than a forecasting contender. The literature matrix (§a.1) lists it as an "industry baseline; flat term structure" — expectation: close to GARCH(1,1) at h = 1 in calm periods, inferior at h = 22 and in regimes where mean reversion matters.