SPB Git

spb/wp46_uqo

Public
4.5 KB

# Model card — arch5 (ARCH(5))

# 1. Identity

  • model_id: arch5 · family: classical · tier: A · status: implemented · impl: arch 8.0.0 (ARCH(p=5))
  • Label: ARCH(5) · distributions: normal, t, ged, skewt
  • Seminal citation: engle1982autoregressive
  • Other references: bollerslev1986generalized (GARCH as parsimonious ARCH(∞)); bollerslev1992arch, engle2001garch (surveys); innovation laws bollerslev1987conditionally (t), nelson1991conditional (GED), hansen1994autoregressive (skew-t).

# 2. Definition

$$r_t = \mu + \varepsilon_t,\quad \varepsilon_t = \sigma_t z_t,\qquad \sigma_t^2 = \omega + \sum_{i=1}^{5}\alpha_i,\varepsilon_{t-i}^2 .$$ Pre-sample squared residuals ($t - i < 0$) are replaced by the backcast. Innovation laws (arch parameterisations, all with unit variance): normal; Student-t (ν); GED (ν); Hansen skew-t (η, λ).

# 3. Parameter space and admissibility

  • Parameters: mu, omega, alpha[1..5] (+ nu / eta, lambda).
  • arch bounds: $\omega \in [10^{-8}v, 10v]$ with $v = \overline{\varepsilon^2}$; $\alpha_i \in [0, 1]$; constraints $\omega > 0$, $\alpha_i \ge 0$, $\sum_i\alpha_i < 1$ (linear inequalities passed to SLSQP). Distribution bounds: ν ∈ [2.05, 500] (t), ν ∈ [1.01, 500] (GED), η ∈ [2.05, 300], λ ∈ [−1, 1].
  • Admissibility flag (ArchModel.fit): $\sum_i \alpha_i < 1$ (second-order stationarity). Positivity $\omega > 0$, $\alpha_i \ge 0$ is sufficient (and necessary for pure ARCH).

# 4. Nesting and relations

Nests constvar (α = 0). Not nested in GARCH(1,1) (which is ARCH(∞) with geometrically decaying weights); the registry keeps ARCH(5) as the pre-specified "pure ARCH" order variant. The HAR regressors (daily/weekly/monthly averages) are a restricted long ARCH on realized measures.

# 5. Estimation

arch ConstantMean + ARCH(5) + distribution, fit(disp="off", options={"maxiter": 1000}): SLSQP on the exact log-likelihood $\sum_t[\log f_z(\varepsilon_t/\sigma_t) - \tfrac12\log\sigma_t^2]$ with the bounds/constraints of §3. Starting values: arch grid over $\alpha \in {0.10, 0.15, …, 0.90}$ split equally across the 5 lags, $\omega = (1-\alpha)\operatorname{var}(\varepsilon)$, best Gaussian log-likelihood kept. Initial variance: backcast $= \sum_{i<\min(75,T)} w_i\varepsilon_i^2$, $w_i \propto 0.94^i$. Retries: ≤ 2 restarts from the previous estimate scaled by $0.9 + 0.2(i+1)/3$ with maxiter 2000 if convergence_flag ≠ 0. Warnings (ConvergenceWarning, DataScaleWarning — arch warns but does not rescale) stored in notes. Only point estimates are used in the rolling benchmark.

# 6. Forecasting

arch GARCH._analytic_forecast (ARCH is GARCH(p=5, o=0, q=0)): $\hat\sigma^2_{t+k|t} = \omega + \sum_{i=1}^{5}\alpha_i,\widetilde{\varepsilon^2}{t+k-i}$ where $\widetilde{\varepsilon^2}{s} = \varepsilon_s^2$ for $s \le t$ and $= \hat\sigma^2_{s|t}$ for $s > t$. Exact under $E[z^2] = 1$. Cumulative $h$-day variance = sum of the per-step forecasts. Method: analytic.

# 7. Implementation

  • src/wp46/models/arch_models.py (SPECS["arch5"]), arch 8.0.0 (sheppard2025arch).
  • Cross-check: not in the rugarch fixture (results/metrics/rugarch_crosscheck.json covers garch11, gjr11, egarch11, aparch11, figarch11, igarch11, cgarch11, nagarch11, garch11-skewt); the recursion is arch's garch_recursion, which the custom GARCH(1,1) test matches to 1e-9 (tests/unit/test_custom_models.py::test_custom_garch_equals_arch_loglik_and_forecast).
  • Tests: none dedicated; distributions checked in tests/unit/test_distributions.py::test_loglik_matches_arch.

# 8. Known limitations / failure modes

Short memory (5 days): under-reacts to persistent volatility; estimates frequently hit the $\alpha_i = 0$ bound or the $\sum\alpha_i < 1$ constraint on persistent series (boundary optima, SLSQP convergence_flag ≠ 0); forecasts revert to $\omega/(1-\sum\alpha_i)$ within a few days. Fourth-moment conditions for QMLE inference (he1999properties) are not checked (only point estimates are used).

# 9. Computational footprint

Analytic forecasts; 7–9 parameters; the 5-lag recursion is numba-compiled in arch. No pilot timing (not in the pilot). Expected cost between garch11 and aparch11.

# 10. Literature expectations

hansen2005forecast report ARCH(q) specifications among the worst of their 330 models on both DM/$ and IBM; bollerslev1986generalized motivated GARCH precisely by the long ARCH orders needed. Expectation: dominated by GARCH(1,1) at every horizon; included as the pre-registered pure-ARCH order variant (protocol §4).

Files · main
Menu

Theme