Model card — betategarch11 (Beta-t-EGARCH(1,1), score-driven log-variance with leverage) — post-registration extension
1. Identity
- model_id:
betategarch11· family: score-driven · 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::BetaTEGARCH11) - Label: Beta-t-EGARCH · distributions: t only (the model is defined by the Student-t score)
- Seminal citation:
harvey2008beta - Other references:
harvey2013dynamic(dynamic conditional score models, closed-form moments, robustness),harvey2014egarch(Beta-t-EGARCH with skewness and leverage),creal2013generalized(GAS framework;gas_t11is the level-variance twin),blasques2015information(optimality of score updates),nelson1991conditional(EGARCH, the model it is designed to replace).
2. Definition (as coded, unit-variance Student-t)
$$r_t = \mu + \varepsilon_t,\quad \varepsilon_t = \sigma_t z_t,\quad z_t \sim t_\nu\ \text{standardised to unit variance},\qquad
\log\sigma_t^2 = \omega + \beta\log\sigma_{t-1}^2 + \alpha,u_{t-1} + \gamma,\operatorname{sgn}(-\varepsilon_{t-1}),(u_{t-1} + 1),$$
$$u_t = \frac{(\nu+1),z_t^2}{\nu - 2 + z_t^2} - 1,\qquad z_t = \varepsilon_t/\sigma_t .$$
$u_t$ is the score of the unit-variance t log-density with respect to $\log\sigma_t$ (equivalently twice the score with respect to $\log\sigma_t^2$: $\partial\log f/\partial\log\sigma^2 = u_t/2$); it is bounded, $u_t \in [-1, \nu)$, with $E[u_t] = 0$ under correct specification ($u_t + 1$ is $(\nu+1)$ times a Beta(½, ν/2) variable, hence the name). The leverage term $\operatorname{sgn}(-\varepsilon)(u+1)$ is non-negative for negative shocks (γ > 0 = volatility rises more after losses); sgn(0) = 0. Mapping to harvey2008beta (unstandardised $t_\nu$ with log-scale $\lambda_{t|t-1}$, $\lambda_{t+1|t} = \delta + \phi\lambda_{t|t-1} + \kappa u_t + \kappa^\operatorname{sgn}(-y_t)(u_t+1)$): the score $u_t$ is identical, $\log\sigma_t^2 = 2\lambda_{t|t-1} + \log\frac{\nu}{\nu-2}$, so $\beta = \phi$, $\alpha = 2\kappa$, $\gamma = 2\kappa^$, $\omega = 2\delta + (1-\phi)\log\frac{\nu}{\nu-2}$. Recursion rec_betategarch: $\log\sigma_0^2 = \log s_0$ (backcast), $\log\sigma_t^2$ clipped to [−50, 50].
3. Parameter space and admissibility
- Parameters:
mu, omega, alpha, gamma, beta, nu. - Reparameterisation: ω free; $\alpha = e^{\theta_1} > 0$; γ free; $\beta = \tanh(\theta_3) \in (-1, 1)$; $\nu = 2.05 + e^{\theta_4}$.
- Admissibility flag: $|\beta| < 1$ (stationarity of the linear log-variance recursion;
harvey2013dynamic) and $\alpha \ge 0$ — both hold by construction, so the flag can only fail numerically. No positivity constraint is needed (log specification). The literature does not restrict the sign of κ; the code imposes α > 0.
4. Nesting and relations
- vs
gas_t11(GAS-t / Beta-t-GARCH): same score $u_t$;gas_t11updates the variance level with inverse-information scaling, $f_t = \omega + \alpha\frac{\nu+3}{\nu}f_{t-1}u_{t-1} + \beta f_{t-1}$, without leverage; Beta-t-EGARCH updates $\log\sigma^2$ with unit scaling and adds the sign term. - vs
egarch11(Nelson EGARCH with t innovations): EGARCH's forcing variable $\theta z + \gamma(|z| - E|z|)$ is unbounded in z, so one outlier can raise the log-variance without bound; $u_t$ is bounded, which is the robustness argument ofharvey2008beta/harvey2013dynamic. The two models are not nested. - $\nu \to \infty$: $u_t \to z_t^2 - 1$, giving $\log\sigma_t^2 = \omega + \beta\log\sigma_{t-1}^2 + \alpha(z_{t-1}^2 - 1) + \gamma\operatorname{sgn}(-\varepsilon_{t-1})z_{t-1}^2$ — a log-GARCH-type model in squared innovations, not GARCH(1,1) and not EGARCH. The A-05 floor nevertheless compares the fit with GARCH(1,1)-t (the model is not in the exclusion list of
CustomModel.fit).
5. Estimation
Own _negll (t only): $-\sum_t[\log f_{t_\nu}(z_t) - \tfrac12\log\sigma_t^2]$ with ν estimated jointly; shared optimiser (CustomModel.fit): L-BFGS-B (maxiter 2000, ftol 1e-10, gtol 1e-6) from up to three starts (ω, α, γ, β) ∈ {(0.02ℓ, 0.05, 0.02, 0.98), (0.05ℓ, 0.1, 0.04, 0.95), (0.01ℓ, 0.03, 0, 0.99)}, ℓ = log sample variance, ν start 6, μ start = sample mean; 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)-t (−50 units → two perturbed restarts → degenerate flag). Backcast $s_0$ = exponentially weighted mean (75 lags, 0.94) of the first squared demeaned returns. Point estimates only. (sigma2() reads self._nu, which is set by filter(); fit/forecast use their own code paths — same pattern as gas_t11.)
6. Forecasting
BetaTEGARCH11.forecast (method simulation): $\log\hat\sigma^2_{t+1|t}$ is deterministic from $(\log\sigma_t^2, \varepsilon_t)$; for k ≥ 2, 2,000 paths with $\varepsilon = \sigma z$, $z \sim t_\nu$ (unit variance, rvs, seeded), path update as in §2 with clipping at ±50, forecast = cross-path mean of $\exp(\log\sigma^2_{t+k})$. Cumulative h-day variance = sum of the first h steps. harvey2013dynamic give closed-form multi-step moments of $\sigma_{t+k}^2$ (products of Beta-function moments) that the code does not use.
7. Implementation and verification
src/wp46/models/extensions.py::BetaTEGARCH11, numbarec_betategarch; dispatched throughEXTENSIONS.- Tests (
tests/unit/test_extensions.py::test_betategarch_fiegarch_realegarch_fit_and_forecast): fit on the simulated GARCH-t fixture converges; 22-step forecast positive and finite; identical forecasts for identical seeds. - No external-package cross-check (Beta-t-EGARCH is not in arch 8.0.0 or rugarch 1.5-6; the R package
betategarchis not part of the version-locked toolchain and was not run), 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 in full — henceextensionstatus.
8. Known limitations / failure modes
Post-registration, exploratory. Student-t only (no normal/GED/skew-t pair). One-component specification (Harvey's two-component variants are not implemented); leverage through a sign function rather than a smooth asymmetry; β may be negative by construction (the literature uses 0 < φ < 1); clipping of $\log\sigma^2$ at ±50 is a hard wall for the optimiser; the ν → ∞ limit is not a GARCH model, so the A-05 floor against GARCH(1,1)-t is a heuristic rather than a nesting argument; multi-step forecasts rely on simulation although closed forms exist.
9. Computational footprint
One O(T) numba recursion per likelihood evaluation with a ν-dependent density — the same order as gas_t11/garch11_custom; one 2,000 × 22 vectorised simulation per forecast origin. Qualitatively a small multiple of GARCH(1,1), far below the fractional extensions. Not timed in the pilot.
10. Literature expectations
harvey2008beta/harvey2013dynamic report better in-sample fit than EGARCH-t and robustness to outliers; harvey2014egarch add skewness and leverage; creal2013generalized/blasques2015information motivate score updates. Under H2 (distribution) and H1 (asymmetry) the expectation is a modest gain over garch11-t and gas_t11 on heavy-tailed, outlier-prone instruments and in stressed regimes (H6), with no gain where returns are close to Gaussian; no large cross-asset forecasting benchmark of Beta-t-EGARCH is in the literature matrix.