# Model card — `igarch11` (Integrated GARCH(1,1)) ## 1. Identity - **model_id:** `igarch11` · **family:** classical · **tier:** A · **status:** implemented · **impl:** custom (`src/wp46/models/custom.py::IGARCH11`) - **Label:** IGARCH(1,1) · **distributions:** normal, t, ged, skewt - **Seminal citation:** `engle1986modelling` (Engle & Bollerslev 1986) - **Other references:** `nelson1990stationarity` (strict stationarity of IGARCH), `lumsdaine1996consistency`, `lee1994asymptotic`, `jensen2004asymptotic` (QMLE under unit persistence); `lamoureux1990persistence`, `mikosch2004nonstationarities`, `hillebrand2005neglecting` (spurious IGARCH from breaks); `jpmorgan1996riskmetrics` (EWMA, nested). ## 2. Definition $$r_t = \mu + \varepsilon_t,\ \varepsilon_t = \sigma_t z_t,\qquad \sigma_t^2 = \omega + \alpha\,\varepsilon_{t-1}^2 + (1-\alpha)\,\sigma_{t-1}^2 ,$$ i.e. GARCH(1,1) with $\beta = 1 - \alpha$ imposed (`rec_garch(eps, omega, alpha, 1 - alpha, s0)`), $\sigma_0^2 = \omega + s_0$ ($s_0$ = backcast, since $\alpha + \beta = 1$). Innovations: normal, t(ν), GED(ν), Hansen skew-t(η, λ) (standardised, `distributions.py`). ## 3. Parameter space and admissibility - Parameters: `mu, omega, alpha` (+ `nu` | `eta, lambda`). - Reparameterisation (unconstrained θ): $\omega = e^{\theta_0}$, $\alpha = \sigma(\theta_1) \in (0,1)$ (logistic); t: $\nu = 2.05 + e^{\theta}$; GED: $\nu = 0.3 + e^{\theta}$; skew-t: $\eta = 2.05 + e^{\theta}$, $\lambda = 0.99\tanh(\theta')$. - Admissibility flag: $\omega > 0$ and $0 < \alpha < 1$. No covariance stationarity (unconditional variance does not exist); strictly stationary for $\alpha < 1$ (`nelson1990stationarity`). ## 4. Nesting and relations Boundary case of `garch11` ($\alpha + \beta = 1$); nests `ewma094` ($\omega = 0$, $\alpha = 0.06$ — registry `ewma094: nested_in: igarch11`). Variance forecasts grow linearly in the horizon (unit root in $\varepsilon_t^2$). Related to `figarch11` with d = 1. ## 5. Estimation Custom MLE (`CustomModel.fit`): objective $-\sum_t[\log f_z(z_t) - \tfrac12\log\sigma_t^2]$ with numba recursion; L-BFGS-B (maxiter 2000, ftol 1e-10, gtol 1e-6) on θ from three starting vectors (ω, α) ∈ {(0.01 v, 0.06), (0.003 v, 0.03), (0.03 v, 0.12)} with $v = \operatorname{var}(r)$ (at least two starts are tried; the third only if the second fails), Nelder–Mead polish (maxiter 4000) if L-BFGS-B does not report success; μ starts at the sample mean; distribution starts ν = 6 / 1.5 / (6, −0.05). Initial variance: arch-style backcast of the demeaned returns ($\sum_{i<75} w_i (r_i - \bar r)^2$, $w_i \propto 0.94^i$), stored in `aux["backcast"]`. `converged` = optimizer success with finite objective; inadmissible optima kept and flagged. No standard errors; point estimates only. ## 6. Forecasting `IGARCH11.step_forecast`: $\hat\sigma^2_{t+1|t} = \omega + \alpha\varepsilon_t^2 + (1-\alpha)\sigma_t^2$, $\hat\sigma^2_{t+k|t} = \omega + \hat\sigma^2_{t+k-1|t}$ for $k = 2..22$ (linear growth by ω per day). Cumulative $h$-day variance $= h\hat\sigma^2_{t+1|t} + \omega h(h-1)/2$. Method: `analytic`. ## 7. Implementation - `src/wp46/models/custom.py::IGARCH11` (custom, numba `rec_garch`), standardised densities from `src/wp46/models/distributions.py` (equal to arch's to 1e-12, `tests/unit/test_distributions.py`). - Cross-check (`results/metrics/rugarch_crosscheck.json`, rugarch `iGARCH`, Student-t, shared fixture): log-likelihood −3385.4670 (ours) vs −3385.5171 (rugarch), **difference +0.0502**. - Tests: `tests/replication/test_rugarch.py` (asserts ours ≥ rugarch − 1.0); `tests/unit/test_custom_models.py::test_nesting_and_admissibility[IGARCH11]` (convergence, admissibility, positive finite 22-step forecasts; excluded from the "nests GARCH(1,1)" log-likelihood assertion). No simulation-recovery test. ## 8. Known limitations / failure modes Imposes unit persistence even when the data are stationary: on the GJR-t fixture the IGARCH likelihood is 6.0 units below GARCH(1,1) (−3385.47 vs −3379.46). Forecast variance grows without bound with h (h = 22 cumulative variance inflated by $\omega \cdot 231$). $\omega$ near zero makes the model indistinguishable from EWMA. Linear growth makes long-horizon forecasts sensitive to $\hat\omega$. ## 9. Computational footprint Analytic recursion and forecasts; 3–5 parameters; L-BFGS-B with numerical gradients. Not in the pilot; cost comparable to `garch11` custom estimation (a few milliseconds per refit on a 1,000-day window). ## 10. Literature expectations Near-integrated GARCH estimates are common in long daily samples (`engle1986modelling`, `lamoureux1990persistence`); `hansen2005forecast` include IGARCH among the models that do not beat GARCH(1,1). Expectation: close to GARCH(1,1) at h = 1 for highly persistent instruments, worse at h = 22 because of the absent mean reversion (literature matrix §a.1).