Model card — stgarch11 (logistic smooth-transition GARCH(1,1)) — post-registration extension
1. Identity
- model_id:
stgarch11· family: regime-switching · tier: A · status: extension (E-01, added 2026-11-09 after the protocol freeze; scored with the frozen protocol, reported separately as exploratory —progress.md) · impl: custom (src/wp46/models/extensions.py::STGARCH11) - Label: Smooth-transition GARCH (logistic) · distributions: normal, t (registry
dists; the class also accepts ged/skewt but those pairs are not scored) - Seminal citation:
gonzalezrivera1998smooth - Other references:
hagerud1997smooth(smooth-transition ARCH),terasvirta2009introduction(survey of smooth-transition GARCH forms),lundbergh2002evaluating(tests of smooth-transition dynamics),glosten1993relation(GJR, the γ → ∞ limit),haas2004new(msgarch2, the discrete-regime model of the registry). This card replaces the former unsupported stubstgarch.md(the id changed tostgarch11).
2. Definition (as coded)
$$r_t = \mu + \varepsilon_t,\quad \varepsilon_t = \sigma_t z_t,\qquad \sigma_t^2 = \omega + \big[\alpha_1 + \alpha_2,F(\varepsilon_{t-1})\big]\varepsilon_{t-1}^2 + \beta,\sigma_{t-1}^2,\qquad F(e) = \frac{1}{1 + e^{-\gamma e}},\ \gamma > 0 .$$
The transition variable is the lagged innovation in percent (γ has units percent⁻¹) and the logistic function is centred at zero (no location parameter). Positive shocks load with $\alpha_1 + \alpha_2 F \to \alpha_1 + \alpha_2$ as $\gamma\varepsilon \to \infty$, negative shocks with $\to \alpha_1$. Recursion rec_stgarch: $\sigma_0^2 = s_0$ (backcast; note that garch11_custom initialises with $\omega + (\alpha+\beta)s_0$), floor $\sigma_t^2 \ge 10^{-12}$. Innovations: standardised normal or Student-t (loglik_z).
3. Parameter space and admissibility
- Parameters:
mu, omega, alpha1, alpha2, gamma, beta(+nufor t). - Reparameterisation (
theta_to_vol): $\omega = e^{\theta_0}$; persistence $s = \sigma(\theta_1) \in (0,1)$ and share $w = \sigma(\theta_2)$ give $\bar\alpha \equiv \alpha_1 + \alpha_2/2 = s,w$ and $\beta = s(1-w)$; $q = \tanh(\theta_3) \in (-1,1)$ gives $\alpha_2 = 2q\bar\alpha$, $\alpha_1 = \bar\alpha(1-q)$; $\gamma = e^{\theta_4}$; $\nu = 2.05 + e^{\theta_5}$. - Implied domain (all by construction): $\omega > 0$, $\alpha_1 \ge 0$, $\alpha_1 + \alpha_2 = \bar\alpha(1+q) \ge 0$ (the ARCH loading stays non-negative for every value of F), $\beta \ge 0$, $\gamma > 0$, $\alpha_1 + \alpha_2/2 + \beta < 1$.
- Admissibility flag (
admissible): the same six conditions. The persistence $\alpha_1 + \alpha_2/2 + \beta$ is exact for symmetric innovation laws: since $F(e) + F(-e) = 1$, $E[F(\varepsilon_t)\varepsilon_t^2 \mid \sigma_t^2] = \sigma_t^2/2$, so $E[\sigma_t^2] = \omega/(1 - \alpha_1 - \alpha_2/2 - \beta)$ under normal/t innovations (it would not be exact under a skewed law).
4. Nesting and relations
- $\alpha_2 = 0$: GARCH(1,1) ($\omega, \alpha_1, \beta$); γ is then unidentified (nuisance parameter absent under the null).
- $\gamma \to \infty$: $F \to \mathbf 1{\varepsilon > 0}$ and the model becomes GJR with $\alpha_{GJR} = \alpha_1 + \alpha_2$ (positive shocks) and $\gamma_{GJR} = -\alpha_2$ (extra loading of negative shocks) —
gjr11is the limit, not a special case. - Relatives in the registry:
msgarch2(discrete, latent regimes instead of a smooth observed-shock transition),nagarch11/qgarch11(other smooth asymmetric news-impact curves),egarch11.
5. Estimation
Shared custom MLE (CustomModel.fit, custom.py): negative log-likelihood $-\sum_t[\log f(z_t) - \tfrac12\log\sigma_t^2]$ on the unconstrained θ; L-BFGS-B (maxiter 2000, ftol 1e-10, gtol 1e-6) from up to three starts (ω, α₁, α₂, γ, β) ∈ {(0.05v, 0.03, 0.08, 1.0, 0.88), (0.03v, 0.08, 0, 0.5, 0.88), (0.1v, 0.02, 0.12, 3.0, 0.8)}, v = sample variance of the demeaned window, μ start = sample mean, ν start 6; the loop stops after the second start if it converged; Nelder–Mead polish (maxiter 4000) followed by a final L-BFGS-B pass when L-BFGS-B failed or stalled; A-05 likelihood floor: if the optimum is more than 50 log-likelihood units below GARCH(1,1) with the same law, two perturbed restarts are tried and the fit is flagged degenerate (not converged) if the gap persists. Backcast $s_0$ = exponentially weighted mean (75 lags, decay 0.94) of the first squared demeaned returns. Point estimates only.
6. Forecasting
STGARCH11.step_forecast (method simulation): $\hat\sigma^2_{t+1|t} = \omega + [\alpha_1 + \alpha_2 F(\varepsilon_t)]\varepsilon_t^2 + \beta\sigma_t^2$ (deterministic); for k ≥ 2, 2,000 paths with $\varepsilon = \sigma z$, z drawn from the fitted law (rvs, seeded default_rng(seed), seed 46 + origin index in the driver), path recursion with floor 1e-12, forecast = cross-path mean of $\sigma^2_{t+k}$. Cumulative h-day variance = sum of the first h steps. Note: for the symmetric laws scored here an exact recursion exists ($E_t[\sigma^2_{t+k}] = \omega + (\alpha_1 + \alpha_2/2 + \beta),E_t[\sigma^2_{t+k-1}]$, by the identity of §3 and iterated expectations), so the simulation only adds Monte Carlo noise at k ≥ 2 (_discrepancies.md, E-01).
7. Implementation and verification
src/wp46/models/extensions.py::STGARCH11, numbarec_stgarch; dispatched byrolling.make_modelthroughEXTENSIONS.- Tests (
tests/unit/test_extensions.py):test_fiaparch_nests_figarch_and_stgarch_nests_garch(fit on the simulated GARCH-t fixtureR: converged, admissible, log-likelihood ≥GARCH11custom − 1.0),test_no_lookahead_extensions(5-step forecast from the first 2,000 observations unchanged when later returns are scaled ×5). - No external-package cross-check (no smooth-transition GARCH in arch 8.0.0 or rugarch 1.5-6), no seeded simulation-recovery test, no likelihood identity test. Among the seven extensions the only external identity is HYGARCH(amp = 1) vs arch's FIGARCH likelihood (
hygarch11.md§7). The verification rule of CLAUDE.md (rule 6) is therefore not met in full — hence theextensionstatus and the separate reporting.
8. Known limitations / failure modes
Post-registration, exploratory. γ is weakly identified (flat likelihood when α₂ ≈ 0, or once γ|ε| is large enough for F to be a step) and depends on the return scale; the transition has no location parameter; the GARCH(1,1) nest differs from garch11_custom in the first observation only; multi-step forecasts carry simulation noise although an exact recursion exists; persistence/admissibility are defined for symmetric laws; a GJR-like optimum will often sit at a large γ with L-BFGS-B reporting convergence on a flat ridge.
9. Computational footprint
One O(T) numba recursion (one exponential per step) per likelihood evaluation — same order as garch11_custom, with two more parameters and a 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
gonzalezrivera1998smooth and hagerud1997smooth document smooth (rather than threshold) asymmetry; terasvirta2009introduction notes that the smooth-transition and GJR fits are usually close. Under pre-registered H1 (asymmetry), gains relative to garch11 are expected where gjr11/egarch11 gain (equity indices and single stocks, stressed regimes under H6) and not for FX; hansen2005forecast find leverage-type models matter for IBM returns but not for DM–$. No large cross-asset forecasting benchmark of ST-GARCH is in the literature matrix.