Repository Public Research preview
1# Model card — `garch12` (GARCH with two variance lags: arch `GARCH(p=1, o=0, q=2)`)23## 1. Identity4- **model_id:** `garch12` · **family:** classical · **tier:** A · **status:** implemented · **impl:** arch 8.0.0 (`GARCH(p=1, o=0, q=2)`)5- **Label:** GARCH(1,2) · **distributions:** normal, t, ged, skewt6- **Seminal citation:** `bollerslev1986generalized`7- **Other references:** `nelson1992inequality`, `bougerol1992stationarity`, `francq2004maximum`.8- **Naming caveat:** arch's `q = 2` means two lagged conditional variances; in Bollerslev's convention this is GARCH(2,1). See `_discrepancies.md`.910## 2. Definition11$$\sigma_t^2 = \omega + \alpha_1\varepsilon_{t-1}^2 + \beta_1\sigma_{t-1}^2 + \beta_2\sigma_{t-2}^2,\qquad r_t = \mu + \sigma_t z_t ,$$12pre-sample terms replaced by the backcast. Innovations: normal, t, GED, Hansen skew-t.1314## 3. Parameter space and admissibility15- Parameters: `mu, omega, alpha[1], beta[1], beta[2]` (+ distribution).16- arch bounds/constraints: $\omega \in [10^{-8}v, 10v]$, $\alpha_1, \beta_j \in [0,1]$, $\omega > 0$, $\alpha_1 \ge 0$, $\beta_j \ge 0$, $\alpha_1 + \beta_1 + \beta_2 < 1$. Non-negativity of $\beta_2$ is sufficient, not necessary (`nelson1992inequality`: with p = 1, q = 2 the necessary and sufficient conditions allow $\beta_2 < 0$ under restrictions) — arch's constraint set is the sufficient one.17- Admissibility flag: $\alpha_1 + \beta_1 + \beta_2 < 1$.1819## 4. Nesting and relations20Nests `garch11` ($\beta_2 = 0$). Pre-registered order variant. Not nested in `garch21`.2122## 5. Estimation23As `garch11` (arch SLSQP, grid starting values with the GARCH mass split equally across the two variance lags, backcast initialisation, ≤ 2 restarts). Only point estimates are used in the rolling benchmark.2425## 6. Forecasting26arch `GARCH._analytic_forecast`: $\hat\sigma^2_{t+k|t} = \omega + \alpha_1\widetilde{\varepsilon^2}_{t+k-1} + \beta_1\tilde\sigma^2_{t+k-1} + \beta_2\tilde\sigma^2_{t+k-2}$ (observed values for $s \le t$, forecasts for $s > t$). Cumulative = sum over k ≤ h. Method: `analytic`.2728## 7. Implementation29- `src/wp46/models/arch_models.py` (`SPECS["garch12"]`), arch 8.0.0.30- Cross-check: not in the rugarch fixture; same `garch_recursion` as the validated (1,1) case.31- Tests: none dedicated.3233## 8. Known limitations / failure modes34$\beta_1$ and $\beta_2$ are poorly separated (near-collinear lagged variances) → flat likelihood, boundary optima at $\beta_2 = 0$, more SLSQP non-convergence than (1,1); the roots of $1 - \beta_1 L - \beta_2 L^2$ can be close to the unit circle.3536## 9. Computational footprint37Analytic; one extra parameter vs `garch11`. No pilot timing.3839## 10. Literature expectations40Same as `garch21`: `hansen2005forecast` and the surveys report no systematic out-of-sample gain from higher GARCH orders on daily data. Expectation: statistically indistinguishable from `garch11`, with a higher failure/inadmissibility count (H5).41