Model card — fiegarch11 (FIEGARCH(1,d,1), fractionally integrated EGARCH) — post-registration extension
1. Identity
- model_id:
fiegarch11· family: fractional · tier: A · status: extension (E-01, added 2026-11-09 after the protocol freeze; scored with the frozen protocol, reported separately as exploratory) · impl: custom (src/wp46/models/extensions.py::FIEGARCH11) - Label: FIEGARCH(1,d,1) · distributions: normal, t (registry
dists; the class also accepts ged/skewt but those pairs are not scored) - Seminal citation:
bollerslev1996modeling - Other references:
nelson1991conditional(EGARCH, the d = 0 limit, scored asegarch11),baillie1996fractionally(FIGARCH),ding1996modeling(long memory in volatility),straumann2006quasi(EGARCH QMLE theory). This card replaces the former unsupported stub.
2. Definition (as coded)
$$r_t = \mu + \varepsilon_t,\quad \varepsilon_t = \sigma_t z_t,\qquad \log\sigma_t^2 = \omega + \sum_{k=0}^{999}\lambda_k,g(z_{t-1-k}),\qquad g(z) = \theta z + \gamma\big(|z| - E|z|\big),$$
$$\lambda(L) = (1-\phi L)^{-1}(1-L)^{-d}(1+\psi L),$$
i.e. bollerslev1996modeling's $\log\sigma_t^2 = \omega + \phi(L)^{-1}(1-L)^{-d}[1+\psi(L)],g(z_{t-1})$ with first-order $\phi(L)$, $\psi(L)$ and the ARFIMA(1,d,1) filter expanded into a 1,000-term MA (fiegarch_weights: $\pi_k$ of $(1-L)^{-d}$, then $(1+\psi L)$, then division by $(1-\phi L)$; $\lambda_0 = 1$). $E|z|$ is the exact mean absolute value of the fitted law: $\sqrt{2/\pi}$ for the normal, otherwise the 20,000-point midpoint quadrature of $|F^{-1}(u)|$ (_ez, cached by ν) — unlike arch's EGARCH, which uses $\sqrt{2/\pi}$ for every law (_discrepancies.md 15), so ω is Nelson's unconditional mean of $\log\sigma^2$ here. Recursion rec_fiegarch: pre-sample $g = 0$ (its mean) for all 1,000 lags — the backcast argument is not used, so $\log\sigma_0^2 = \omega$; $\log\sigma_t^2$ clipped to [−50, 50]. Innovations: standardised normal or Student-t.
3. Parameter space and admissibility
- Parameters:
mu, omega, d, phi, psi, theta, gamma(+nufor t). - Reparameterisation: ω free; $d = 0.499,\sigma(\theta_1) \in (0, 0.499)$; $\phi = 0.99\tanh(\theta_2)$, $\psi = 0.99\tanh(\theta_3) \in (-0.99, 0.99)$; θ free; $\gamma = e^{\theta_5} > 0$.
- Admissibility flag: $d < 0.5$, $|\phi| < 1$, $|\psi| < 1$ — the covariance-stationarity/invertibility region of the ARFIMA log-variance (
bollerslev1996modeling); all hold by construction, so the flag is vacuous. No positivity constraint is needed (log specification). The literature leaves γ's sign and d ≥ 0.5 free at estimation; the code restricts both (γ > 0 = magnitude effect positive; d < 0.5 enforced rather than flagged).
4. Nesting and relations
- d → 0: $(1-\phi L)(\log\sigma_t^2 - \omega) = (1+\psi L),g(z_{t-1})$, Nelson's EGARCH(1,1) with one extra MA term (ψ = 0 gives
egarch11with $\beta_{arch} = \phi$, $\alpha_{arch} = \gamma$, $\gamma_{arch} = \theta$, $\omega_{arch} = \omega(1-\phi)$); the limit is excluded by $d = 0.499,\sigma(\theta)$, hence "≈ EGARCH" at the boundary only. - d ∈ (0, ½): hyperbolic decay of the $\lambda_k$ ($\lambda_k \sim k^{d-1}$, $\sum_k\lambda_k = \infty$ in the untruncated model) with a finite-variance log-volatility; the 1,000-lag truncation makes the implemented sum finite.
figarch11/hygarch11/fiaparch11are the level-variance fractional models;betategarch11is the score-driven log-variance relative (bounded forcing instead of $|z|$).
5. Estimation
Own _negll (needs $E|z|$ of the current law; cache keyed by the rounded distribution parameters) with the shared optimiser (CustomModel.fit): L-BFGS-B (maxiter 2000, ftol 1e-10, gtol 1e-6) from up to three starts (ω, d, φ, ψ, θ, γ) ∈ {(0.05ℓ, 0.3, 0.9, 0, −0.05, 0.15), (0.02ℓ, 0.45, 0.95, −0.2, −0.08, 0.1), (0.1ℓ, 0.2, 0.8, 0.2, 0, 0.2)}, ℓ = log sample variance; μ start = sample mean; ν start 6; stop after the second start if converged; Nelder–Mead polish (maxiter 4000) + final L-BFGS-B if not converged or stalled; A-05 floor vs GARCH(1,1) with the same law (−50 units → two perturbed restarts → degenerate flag). The backcast $s_0$ is computed but not used by the recursion (§2). Each likelihood evaluation recomputes the 1,000 weights and the O(T × 1000) convolution of $g(z)$, where $z_t$ itself depends on the current $\log\sigma_t^2$ (sequential, not vectorisable). Point estimates only.
6. Forecasting
FIEGARCH11.forecast (method simulation): the filtered $g(z_s)$, s ≤ t, fill the 1,000-lag history (older lags = 0); $\log\hat\sigma^2_{t+1|t} = \omega + \sum_i\lambda_i g_{t+1-1-i}$ is deterministic; for k ≥ 2, 2,000 paths draw $z \sim$ fitted law (rvs, seeded), append $g(z)$ to the path history and recompute $\log\sigma^2_{t+k}$ (clipped to ±50); forecast = cross-path mean of $\exp(\log\sigma^2_{t+k})$ (exponentiation is nonlinear, so no closed form is used; bollerslev1996modeling give lognormal-type moment formulas under normality that the code does not use). Cumulative h-day variance = sum of the first h steps.
7. Implementation and verification
src/wp46/models/extensions.py::FIEGARCH11,fiegarch_weights, numbarec_fiegarch; dispatched throughEXTENSIONS.- Tests (
tests/unit/test_extensions.py):test_betategarch_fiegarch_realegarch_fit_and_forecast(FIEGARCH-t fit on the simulated GARCH-t fixture converges; 22-step forecast positive, finite, seed-reproducible);test_no_lookahead_extensions(5-step forecast unchanged when post-window returns are scaled ×5). No test of the weightsfiegarch_weightsagainst an ARFIMA reference and no test of the d → 0 EGARCH limit. - No external-package cross-check (FIEGARCH is not in arch 8.0.0 or rugarch 1.5-6), no simulation-recovery test, no likelihood identity test. The only external identity in the extension set is HYGARCH(amp = 1) vs arch's FIGARCH (
hygarch11.md§7). CLAUDE.md rule 6 is not met — henceextensionstatus.
8. Known limitations / failure modes
Post-registration, exploratory. Clipping of $\log\sigma^2$ at ±50 (variance between e⁻⁵⁰ and e⁵⁰ percent²) is a hard wall for the optimiser and a silent truncation in the simulation; the ARFIMA filter is truncated at 1,000 lags (every in-sample value within the 1,000-day window uses zeros for its oldest lags); initialisation at $\log\sigma_0^2 = \omega$ ignores the backcast; d is confined to (0, 0.499) by construction (no d ≥ ½ or d < 0 fits, no d = 0 EGARCH point), γ > 0 by construction; d, φ and ψ are weakly separately identified in a 1,000-day window (a near-unit φ mimics d); breaks mimic long memory (lamoureux1990persistence, hillebrand2005neglecting); $E|z|$ depends on ν, so ω moves with ν during the optimisation.
9. Computational footprint
Sequential O(T × 1000) numba recursion per likelihood evaluation (the forcing $g(z_t)$ needs $\sigma_t$, so the convolution cannot be vectorised) plus the O(1000) weight construction and, for the t law, a one-off 20,000-point quadrature per distinct ν; simulation forecasts O(2000 × 22 × 1000). Qualitatively 10–30× slower than GARCH(1,1), comparable to fiaparch11. Not timed in the pilot.
10. Literature expectations
bollerslev1996modeling report long memory in S&P 500 log-volatility and option-pricing implications; ding1996modeling and baillie1996fractionally document hyperbolic decay; lamoureux1990persistence/hillebrand2005neglecting attribute part of it to breaks; hansen2005forecast find no h = 1 gain for long-memory models. Under H1 (asymmetry through θ) and H4 (persistence) the expectation is a performance close to egarch11 at h = 1 and a possible small gain at h = 22 on equity indices; under H5 a high cost and failure rate.