SPB Git

spb/wp46_uqo

Public

WP46: extension fixes from the card audit (ST-GARCH analytic multi-step, HYGARCH amp<1 flag, GARCH-MIDAS tau_t), D-16, extension model cards

Simon-Pierre Boucher committed (Nov 9, 2026) parent e1cd474 Browse files

19 changed files +1,954 −108

added docs/genealogy_notes.md +252 −0
@@ -0,0 +1,252 @@
1 +# WP46 — Genealogy notes: nomenclature traps, package naming, unverified items
2 +
3 +**Status:** companion to `results/manifests/garch_genealogy.yaml` (64 architectures, 1982–2026), `paper/tables/tab_encyclopedia.tex`
4 +(generated by `scripts/make_encyclopedia.py`) and `paper/figures/fig_genealogy.pdf` (generated by `scripts/make_genealogy_figure.py`).
5 +Written 2026-11-09. Bibkeys in backticks are entries of `paper/references.bib`; references given with a DOI but no bibkey were resolved
6 +through the Crossref REST API on 2026-11-09 and are listed in `results/metrics/references_candidates_genealogy.json` — they are
7 +**not** cited in the manuscript until they have gone through `scripts/build_references.py`. Software naming statements refer to the
8 +version-locked libraries of the project (`arch` 8.0.0 `sheppard2025arch`, `rugarch` 1.5-6 `galanos2011rugarch`, `rmgarch`
9 +`galanos2013rmgarch`, `MSGARCH` `ardia2019markov`) and to their documentation; EViews naming is quoted as common usage without a
10 +bibliographic record. Nothing here states a WP46 benchmark result.
11 +
12 +Notation of the paper: $r_t=\mu+\varepsilon_t$, $\varepsilon_t=\sigma_t z_t$, $z_t\sim$ i.i.d. $D(0,1)$, daily log returns in percent.
13 +
14 +---
15 +
16 +## 1. Nomenclature traps
17 +
18 +### 1.1 TGARCH ≠ GJR (and both are called "TARCH")
19 +
20 +| Name | Definition | Source |
21 +|---|---|---|
22 +| GJR-GARCH | $\sigma_t^2=\omega+\alpha\varepsilon_{t-1}^2+\gamma\varepsilon_{t-1}^2\mathbb{1}[\varepsilon_{t-1}<0]+\beta\sigma_{t-1}^2$ — indicator on the **variance** (power 2) | `glosten1993relation` |
23 +| TGARCH (Zakoïan) | $\sigma_t=\omega+\alpha^+\varepsilon_{t-1}^+-\alpha^-\varepsilon_{t-1}^-+\beta\sigma_{t-1}$ — threshold on the **standard deviation** (power 1), two slopes | `zakoian1994threshold`; first as "threshold ARCH" in Rabemananjara & Zakoïan (1993), *J. Applied Econometrics* 8(1), 31–49, DOI 10.1002/jae.3950080104 |
24 +
25 +- Persistence: GJR $\alpha+\gamma\kappa+\beta$ with $\kappa=\mathbb{E}[z^2\mathbb{1}(z<0)]$ ($1/2$ for symmetric laws); Zakoïan's model has a
26 + *strict*-stationarity condition $\mathbb{E}\log(\alpha^+z^+-\alpha^-z^-+\beta)<0$ and $\alpha+\beta<1$ is not the relevant condition.
27 +- APARCH (`ding1993long`) nests both: $\delta=2$ gives GJR (with $\gamma$ re-parameterised), $\delta=1$ gives Zakoïan's TGARCH.
28 +- Packages: `arch` has no Zakoïan class — `GARCH(p, o, q)` with `o>0` is GJR (power 2) and the same class with `power=1` is Zakoïan's TGARCH
29 + (this is what WP46's `tarch11` uses, see `model_cards/tarch11.md`); `rugarch` `fGARCH(submodel="TGARCH")` is Zakoïan and `gjrGARCH` is GJR;
30 + `MSGARCH` offers `gjrGARCH` and `tGARCH` (Zakoïan) as regime components; EViews' "TARCH" and many textbooks mean GJR.
31 +- WP46 rule (C1, `docs/literature_matrix.md`): "TGARCH" is reserved for Zakoïan's model; never silently equate the two.
32 +
33 +### 1.2 NGARCH vs NAGARCH vs AGARCH vs VGARCH
34 +
35 +| Name | Definition | Source |
36 +|---|---|---|
37 +| NARCH / "NGARCH" (Higgins–Bera) | power (Box–Cox) transform of the ARCH recursion, $\sigma_t^{\delta}=\omega+\sum\alpha_i|\varepsilon_{t-i}|^{\delta}(+\sum\beta_j\sigma_{t-j}^{\delta})$ | `higgins1992class` |
38 +| NAGARCH / "NGARCH" (Engle–Ng) | $\sigma_t^2=\omega+\alpha(\varepsilon_{t-1}-\theta\sigma_{t-1})^2+\beta\sigma_{t-1}^2$ — shifted news-impact curve in units of $\sigma_{t-1}$ | `engle1993measuring` |
39 +| AGARCH (Engle 1990) | $\sigma_t^2=\omega+\alpha(\varepsilon_{t-1}-\theta)^2+\beta\sigma_{t-1}^2$ — shift in return units | Engle (1990), *RFS* 3(1), 103–106, DOI 10.1093/rfs/3.1.103 (Crossref title field: "Discussion") |
40 +| VGARCH (Engle–Ng) | $\sigma_t^2=\omega+\alpha(z_{t-1}+\theta)^2+\beta\sigma_{t-1}^2$ — news impact in standardized units | `engle1993measuring` |
41 +| QGARCH (Sentana) | $\sigma_t^2=\omega+\alpha\varepsilon_{t-1}^2+\psi\varepsilon_{t-1}+\beta\sigma_{t-1}^2$ — AGARCH with the constant absorbed is the special case $\psi=-2\alpha\theta$ | `sentana1995quadratic` |
42 +
43 +- "NGARCH" is used for *both* Higgins–Bera's power form and Engle–Ng's asymmetric form (the option-pricing literature usually means
44 + Engle–Ng). `rugarch` `fGARCH` keeps them apart as submodels `NGARCH` (power) and `NAGARCH` (shift). WP46 uses NAGARCH for Engle–Ng
45 + (`nagarch11`) and never calls it NGARCH.
46 +- Engle–Ng's NAGARCH is scale-free (persistence $\alpha(1+\theta^2)+\beta$); Engle's 1990 AGARCH is not, which is why the genealogy
47 + marks AGARCH as a parent of NAGARCH and QGARCH but out of scope.
48 +
49 +### 1.3 EGARCH parameterizations
50 +
51 +Nelson's definition (`nelson1991conditional`): $\log\sigma_t^2=\omega+\sum_j\beta_j\log\sigma_{t-j}^2+\sum_i\alpha_i g(z_{t-i})$ with
52 +$g(z)=\theta z+\gamma(|z|-\mathbb{E}|z|)$, GED innovations in the original paper.
53 +
54 +| Implementation | Form | Trap |
55 +|---|---|---|
56 +| `arch` 8.0.0 `EGARCH(p,o,q)` | $\log\sigma_t^2=\omega+\alpha(|z_{t-1}|-\sqrt{2/\pi})+\gamma z_{t-1}+\beta\log\sigma_{t-1}^2$ | centring constant $\sqrt{2/\pi}$ (Gaussian $\mathbb{E}|z|$) is used for **every** innovation law and absorbed by $\omega$; $\alpha$ = size, $\gamma$ = sign (`paper/appendices/formulas.tex`, `model_cards/egarch11.md`) |
57 +| `rugarch` `eGARCH` | $\log\sigma_t^2=\omega+\alpha z_{t-1}+\gamma(|z_{t-1}|-\mathbb{E}|z_{t-1}|)+\beta\log\sigma_{t-1}^2$ | labels **swapped** relative to `arch` ($\alpha$ = sign, $\gamma$ = size); $\mathbb{E}|z|$ computed from the fitted law |
58 +| Nelson (1991) | $g(z)=\theta z+\gamma(|z|-\mathbb{E}|z|)$ | $\mathbb{E}|z|$ depends on the GED shape, so the intercept is distribution-specific |
59 +| EViews-style | $\log\sigma_t^2=\omega+\beta\log\sigma_{t-1}^2+\alpha|z_{t-1}|+\gamma z_{t-1}$ | no centring at all (absorbed by $\omega$) |
60 +
61 +- Stationarity is $|\beta|<1$ (roots of $1-\sum\beta_jL^j$), **not** $\alpha+\beta<1$.
62 +- Multi-step variance forecasts need $\mathbb{E}[\exp(\cdot)]$, which has no closed form for $k\ge2$ under $t$/GED; WP46 simulates
63 + (`paper/sections/taxonomy.tex`). Cross-package checks must compare log-likelihoods, not coefficient labels.
64 +- FIEGARCH (`bollerslev1996modeling`) and Beta-$t$-EGARCH (`harvey2008beta`, `harvey2013dynamic`) inherit the log-variance form but the
65 + driver differs: $g(z)$ with fractional lag polynomial vs. the bounded Student-$t$ score $u_t$.
66 +
67 +### 1.4 "APARCH" vs "PARCH"/"PGARCH"/"power GARCH" — and "PGARCH" = periodic GARCH
68 +
69 +- APARCH is the name in `ding1993long` ("asymmetric power ARCH"): $\sigma_t^{\delta}=\omega+\sum\alpha_i(|\varepsilon_{t-i}|-\gamma_i\varepsilon_{t-i})^{\delta}+\sum\beta_j\sigma_{t-j}^{\delta}$.
70 + `arch` calls it `APARCH`, `rugarch` `apARCH`, EViews "PARCH"; "power GARCH" without asymmetry ($\gamma=0$) is the Higgins–Bera / `rugarch`
71 + `fGARCH(NGARCH)` form.
72 +- **"PGARCH" also denotes *periodic* GARCH** — Bollerslev & Ghysels (1996), *JBES* 14(2), 139–151, DOI 10.1080/07350015.1996.10524640 —
73 + where the coefficients vary with the stage of a deterministic cycle. The two have nothing in common; the genealogy uses the full
74 + names ("APARCH", "Periodic GARCH").
75 +- APARCH with $\delta=1,\gamma=0$ is AVGARCH (Taylor 1986 / `schwert1989why`), with $\delta=2,\gamma=0$ GARCH, with $\delta=1$ Zakoïan's TGARCH,
76 + with $\delta=2$ GJR. The multi-step forecast of $\sigma^2$ has no closed form for $\delta\ne2$ (simulation in WP46).
77 +- Hentschel's family GARCH (Hentschel 1995, *JFE* 39(1), 71–104, DOI 10.1016/0304-405X(94)00821-H) and Duan's augmented GARCH
78 + (Duan 1997, *J. Econometrics* 79(1), 97–127, DOI 10.1016/S0304-4076(97)00009-2) are two *different* encompassing nests of the same
79 + members (Box–Cox in $\sigma_t$ with a shifted/rotated absolute-value news function vs. Box–Cox in $\sigma_t^2$ with Box–Cox news
80 + functions); `rugarch` `fGARCH` implements Hentschel's family (submodels GARCH, TGARCH, AVGARCH, NGARCH, NAGARCH, APARCH, GJRGARCH, ALLGARCH).
81 +
82 +### 1.5 Component vs. spline vs. MIDAS vs. multiplicative component
83 +
84 +| Name | Low-frequency component | Source | Trap |
85 +|---|---|---|---|
86 +| Component GARCH (CGARCH) | stochastic permanent component $q_t=\omega+\rho q_{t-1}+\phi(\varepsilon_{t-1}^2-\sigma_{t-1}^2)$ | `engle1999long` (circulated 1993 as "A permanent and transitory component model…", UCSD WP — not verified) | additive decomposition; reduced form is a GARCH(2,2); `rugarch` `csGARCH` writes the constraints differently but the forecasts coincide; EViews "Component ARCH (1,1)" with the optional "asymmetric" (GJR-type) term in the transitory equation |
87 +| Spline-GARCH | deterministic exponential quadratic spline of calendar time $\tau_t$ | `engle2008spline` | multiplicative $\sigma_t^2=\tau_t g_t$; no out-of-sample extrapolation rule → out of scope |
88 +| GARCH-MIDAS | $\log\tau_t$ = MIDAS polynomial of lagged monthly RV or macro series | `engle2013stock`; MIDAS weights `ghysels2006predicting`, `ghysels2007midas` | multiplicative; needs a low-frequency series; `arch`'s `MIDASHyperbolic` is a MIDAS-weighted **ARCH**, not GARCH-MIDAS |
89 +| Multiplicative component GARCH (intraday) | daily $h_t$ × diurnal $s_i$ × intraday GARCH $q_{t,i}$ | `engle2011forecasting` (JFEC 9(1), 2011, not 2012) | `rugarch` `mcsGARCH`; intraday targets only |
90 +| Long-memory ARCH by aggregation | $N$ EWMA-type components with heterogeneous decay | `ding1996modeling` | the ancestor of RM2006 (`zumbach2009riskmetrics`), which fixes the weights |
91 +
92 +### 1.6 Markov-switching GARCH: four different models under one name
93 +
94 +| Model | How the lagged variance is handled | Source | Package |
95 +|---|---|---|---|
96 +| SWARCH | regime-dependent scale on an ARCH($q$) (no GARCH term) | `hamilton1994autoregressive` | — |
97 +| MS-ARCH (Cai) | switching intercept of an ARCH($q$) | `cai1994markov` | — |
98 +| MS-GARCH (Gray) | lagged variance collapsed with the regime probabilities | `gray1996modeling` | — |
99 +| MS-GARCH (Klaassen) | collapsed conditional on the current regime | `klaassen2002improving` | — |
100 +| MS-GARCH (Haas–Mittnik–Paolella) | $K$ parallel GARCH recursions, one per regime | `haas2004new` | `MSGARCH` (`ardia2019markov`), WP46 `msgarch2` |
101 +| path-dependent MS-GARCH | literal switching GARCH, likelihood over $K^t$ paths | `bauwens2010theory`, ML in `augustyniak2014maximum` | — |
102 +
103 +WP46 "MS-GARCH" always means the HMP form (C1 caveat 6 of the literature matrix).
104 +
105 +### 1.7 Smooth transition: ST-ARCH vs ST-GARCH vs "threshold" models
106 +
107 +- Hagerud (1997, `hagerud1997smooth`; actual title "A Smooth Transition ARCH Model for Asset Returns") introduces logistic (LSTARCH)
108 + and exponential (ESTARCH) transitions in the ARCH coefficients; González-Rivera (1998, `gonzalezrivera1998smooth`) gives the GARCH
109 + form in which the GJR indicator is replaced by a logistic function of $\varepsilon_{t-1}$ with estimated speed $\theta$ (GJR is the
110 + limit $\theta\to\infty$). The registry entry `stgarch` refers to the latter.
111 +- "Threshold GARCH" can also mean the double-threshold ARCH of Li & Li (1996), *J. Applied Econometrics* 11(3), 253–274,
112 + DOI 10.1002/(SICI)1099-1255(199605)11:3<253::AID-JAE393>3.0.CO;2-8, where the regime is selected by a lagged *return* crossing a
113 + threshold (a SETAR-type model); this is neither GJR nor Zakoïan.
114 +
115 +### 1.8 Score-driven: GAS = DCS; Beta-t-GARCH = GAS-t up to scaling
116 +
117 +- `creal2013generalized` (GAS) and `harvey2013dynamic` (DCS, "dynamic conditional score") are the same idea; the model depends on the
118 + **scaling** of the score (identity, inverse information, inverse square-root information). With a Gaussian density and inverse-information
119 + scaling GAS(1,1) *is* GARCH(1,1); with a Student-$t$ density it is Beta-$t$-GARCH (`harvey2008beta`), the form scored as `gas_t11`.
120 +- Beta-$t$-EGARCH drives $\log\sigma_t^2$ with the bounded score $u_t=\frac{(\nu+1)\varepsilon_t^2}{\nu\sigma_t^2+\varepsilon_t^2}-1$;
121 + `harvey2014egarch` adds skewness and leverage. The `GAS` R package (`ardia2019generalized`) uses its own scaling conventions.
122 +
123 +### 1.9 Realized-measure models: GARCH-X vs HEAVY vs Realized GARCH vs MEM
124 +
125 +| Model | Return-variance equation | Second equation | Source |
126 +|---|---|---|---|
127 +| GARCH-X | $\sigma_t^2=\omega+\alpha\varepsilon_{t-1}^2+\gamma x_{t-1}+\beta\sigma_{t-1}^2$ | none (the forecast of $x$ for $k\ge2$ is the implementer's choice) | `engle2002new` |
128 +| HEAVY | $\sigma_t^2=\omega+\alpha x_{t-1}+\beta\sigma_{t-1}^2$ (no $\varepsilon^2$) | MEM for $x_t$ | `shephard2010realising`; MEM `engle2002new`, `engle2006multiple` |
129 +| Realized GARCH (log-linear) | $\log\sigma_t^2=\omega+\beta\log\sigma_{t-1}^2+\gamma\log x_{t-1}$ | measurement $\log x_t=\xi+\varphi\log\sigma_t^2+\tau(z_t)+u_t$ **inside the likelihood** | `hansen2012realized` |
130 +| Realized EGARCH | $\log\sigma_t^2=\omega+\beta\log\sigma_{t-1}^2+\tau(z_{t-1})+\gamma u_{t-1}$ | same measurement equation, several measures | `hansen2016exponential` |
131 +
132 +- Realized GARCH also exists in a *linear* version; WP46 scores the log-linear one. Its likelihood includes the measurement equation and is
133 + not comparable with GARCH likelihoods (C1 caveat 7).
134 +- HAR (`corsi2009simple`) is a regression of the realized measure on itself, not a GARCH model; HAR-CJ (`andersen2007roughing`),
135 + HAR-RS (`patton2015good`) and HARQ (`bollerslev2016exploiting`) need extra realized inputs.
136 +- ACD (Engle & Russell 1998, *Econometrica* 66(5), 1127–1162, DOI 10.2307/2999632) is the MEM for durations; it is a relative, not a
137 + volatility model.
138 +
139 +### 1.10 Multivariate: DCC vs cDCC vs aDCC vs DECO; BEKK restrictions
140 +
141 +- DCC (`engle2002dynamic`, theory `engle2001theoretical`): $Q_t=(1-a-b)\bar Q+az_{t-1}z_{t-1}'+bQ_{t-1}$ with $\bar Q$ the sample correlation
142 + of the standardized residuals. Aielli (`aielli2013dynamic`) shows the two-step estimator is inconsistent in general and proposes cDCC,
143 + $Q_t=(1-a-b)\bar S+aQ_{t-1}^{*1/2}z_{t-1}z_{t-1}'Q_{t-1}^{*1/2}+bQ_{t-1}$. `rmgarch` estimates cDCC by default (literature matrix, caveat 8);
144 + WP46's custom Tier C code implements Engle's original recursion (`paper/appendices/formulas.tex`). Report which one.
145 +- aDCC (`cappiello2006asymmetric`) adds $g\,n_{t-1}n_{t-1}'$ with $n_t=z_t\odot\mathbb{1}(z_t<0)$; DECO (Engle & Kelly 2012, *JBES* 30(2),
146 + 212–228, DOI 10.1080/07350015.2011.652048) forces all pairwise correlations to be equal at each date; DCC-NL (`engle2019large`) and the
147 + composite likelihood (`pakel2021fitting`) are large-$N$ estimators of the same recursion.
148 +- BEKK (`engle1995multivariate`): "full" ($A_i,B_j$ unrestricted), "diagonal", "scalar"; WP46 scores the **scalar BEKK with covariance
149 + targeting** $H_t=(1-a-b)\bar\Sigma+a\varepsilon_{t-1}\varepsilon_{t-1}'+bH_{t-1}$ (the targeting device is usually attributed to Engle &
150 + Mezrich 1996, not in the bibliography and not cited). The EWMA covariance is the scalar BEKK with $a+b=1$ and no intercept.
151 +- VEC (Bollerslev, Engle & Wooldridge 1988, *JPE* 96(1), 116–131, DOI 10.1086/261527) is the first MGARCH; the model actually estimated
152 + there is the *diagonal* VEC. Factor-ARCH (Engle, Ng & Rothschild 1990, *J. Econometrics* 45(1–2), 213–237, DOI 10.1016/0304-4076(90)90099-F)
153 + and GO-GARCH (`vanderweide2002gogarch`) are factor restrictions; O-GARCH (Alexander 2001) is the principal-components special case of
154 + GO-GARCH (not verified, not cited).
155 +- Tse & Tsui's VC-GARCH (`tse2002multivariate`) is a *different* correlation recursion (on sample correlations of the last $M$ residuals), not
156 + a DCC variant; multivariate GAS (`creal2011dynamic`), multivariate HEAVY (`noureldin2012multivariate`), Realized Beta GARCH
157 + (`hansen2014realized`) and the multivariate Realized GARCH (`archakov2026multivariate`) are the realized/score-driven analogues.
158 +
159 +### 1.11 Filters that are not estimated models
160 +
161 +- EWMA / RiskMetrics: $\lambda=0.94$ daily, zero intercept, i.e. IGARCH(1,1) without estimation; the verified record is the 4th edition of
162 + the Technical Document (`jpmorgan1996riskmetrics`, 1996) although the method dates from 1994 — the registry label says "RiskMetrics 1994".
163 +- RiskMetrics 2006 (`zumbach2009riskmetrics`): a fixed-weight mixture of EWMAs over geometrically spaced horizons (logarithmic weights);
164 + the RiskMetrics Group document is from 2007, the verified record is the SSRN posting of 2009. Not the same object as the 1994 EWMA.
165 +- IGARCH (`engle1986modelling`) has an estimated intercept; it is strictly but not covariance stationary (`nelson1990stationarity`); FIGARCH
166 + (`baillie1996fractionally`) is also strictly but not covariance stationary for any $d>0$; HYGARCH (`davidson2004moment`) restores
167 + covariance stationarity for amplitude $\tau<1$.
168 +
169 +### 1.12 Order conventions
170 +
171 +- Bollerslev (1986) writes GARCH($p,q$) with $p$ = number of lagged variances and $q$ = number of lagged squared shocks. `arch` writes
172 + `GARCH(p, o, q)` with `p` = ARCH lags, `o` = asymmetric lags, `q` = GARCH lags; `rugarch`'s `garchOrder = c(q, p)` is (ARCH, GARCH).
173 + WP46's labels "GARCH(2,1)" and "GARCH(1,2)" follow `arch` (first = ARCH lags), see `paper/appendices/formulas.tex`.
174 +- FIGARCH($p,d,q$) in `baillie1996fractionally` and `arch`'s `FIGARCH(p, q)` (with `truncation`) count lags differently again; the registry
175 + label "FIGARCH(1,d,1)" means one $\phi$ and one $\beta$ lag.
176 +
177 +### 1.13 Stochastic volatility is "stochastic" in a different sense
178 +
179 +GARCH variances are $\mathcal{F}_{t-1}$-measurable (observation-driven); in SV (Taylor 1986, cited through the 2008 edition
180 +`taylor2008modelling`; review `taylor1994modeling`) the log variance has its own innovation (parameter-driven), so the likelihood requires
181 +integration (QML on $\log\varepsilon_t^2$: `harvey1994multivariate`; Bayesian MCMC: `jacquier1994bayesian`; mixture-offset MCMC and
182 +comparison with ARCH: `kim1998stochastic`). Older papers sometimes call GARCH "stochastic volatility"; the genealogy keeps the two
183 +families apart.
184 +
185 +---
186 +
187 +## 2. Which package calls what (version-locked libraries)
188 +
189 +| Architecture (genealogy id) | `arch` 8.0.0 | `rugarch` 1.5-6 | other |
190 +|---|---|---|---|
191 +| `garch` | `GARCH(p,0,q)` | `sGARCH` | `MSGARCH` `sGARCH` (regime component) |
192 +| `igarch` | fixed constraint (custom wrapper in WP46) | `iGARCH` | — |
193 +| `ewma` | `EWMAVariance(0.94)` | — | — |
194 +| `rm2006` | `RiskMetrics2006` | — | — |
195 +| `garch_m` | custom in WP46 | `archm = TRUE` in the mean spec | — |
196 +| `gjr` | `GARCH(p,o,q)`, `o>0` | `gjrGARCH`; `fGARCH(GJRGARCH)` | `MSGARCH` `gjrGARCH`; EViews "TARCH" |
197 +| `tgarch_zakoian` | `GARCH(p,o,q, power=1)` | `fGARCH(TGARCH)` | `MSGARCH` `tGARCH` |
198 +| `egarch` | `EGARCH(p,o,q)` (labels: $\alpha$ size, $\gamma$ sign) | `eGARCH` (labels: $\alpha$ sign, $\gamma$ size) | `MSGARCH` `eGARCH` |
199 +| `nagarch` | custom in WP46 | `fGARCH(NAGARCH)` | often "NGARCH" in option-pricing papers |
200 +| `narch` | — | `fGARCH(NGARCH)` | — |
201 +| `qgarch` | custom in WP46 | — | — |
202 +| `avgarch` | `GARCH(p,0,q, power=1)` | `fGARCH(AVGARCH)` | — |
203 +| `aparch` | `APARCH` | `apARCH`; `fGARCH(APARCH)` | EViews "PARCH" |
204 +| `hentschel_family` | — | `fGARCH(ALLGARCH)` | — |
205 +| `figarch` | `FIGARCH(p,q, truncation=1000)` | `fiGARCH` | — |
206 +| `fiegarch`, `fiaparch`, `hygarch` | — | — | WP46 custom extensions in progress |
207 +| `cgarch` | — | `csGARCH` | EViews "Component ARCH" |
208 +| `garch_midas` | — (`MIDASHyperbolic` is MIDAS-ARCH) | — | WP46 custom extension in progress |
209 +| `mc_garch_intraday` | — | `mcsGARCH` | — |
210 +| `ms_garch_haas` | — | — | `MSGARCH` (`ardia2019markov`); WP46 custom `msgarch2` |
211 +| `st_garch` | — | — | WP46 custom extension in progress |
212 +| `gas` / `beta_t_egarch` | — | — | `GAS` R package (`ardia2019generalized`); WP46 custom `gas_t11` |
213 +| `garch_x` | `GARCH` with exogenous `x` (custom in WP46) | `external.regressors` in `variance.model` | — |
214 +| `heavy` | — | — | `highfrequency::HEAVYmodel` (`boudt2012highfrequency`); WP46 custom |
215 +| `realized_garch` | — | `realGARCH` | WP46 custom (log-linear) |
216 +| `realized_egarch` | — | — | WP46 custom extension in progress |
217 +| `har` | — | — | `highfrequency::HARmodel`; WP46 OLS |
218 +| `ccc`, `dcc`, `adcc`, `cdcc`, `go_garch` | — | — | `rmgarch` (`dccspec` with `model = "DCC"/"aDCC"`, cDCC default estimator; `gogarchspec`); WP46 custom Tier C (CCC, DCC, aDCC, scalar BEKK) |
219 +
220 +---
221 +
222 +## 3. Entries whose seminal reference is not in `paper/references.bib`
223 +
224 +Resolved by DOI on 2026-11-09 (Crossref), stored in `results/metrics/references_candidates_genealogy.json`, cited in the table as
225 +"see note" and **not** cited in the manuscript text until ingested:
226 +
227 +| Genealogy id | Reference | DOI |
228 +|---|---|---|
229 +| `log_garch` | Geweke (1986), Comment, *Econometric Reviews* 5(1), 57–61 (Crossref title field misspelt "Commet"); Pantula (1986), Comment, *Econometric Reviews* 5(1), 71–74 | 10.1080/07474938608800097; 10.1080/07474938608800099 |
230 +| `agarch` | Engle (1990), Discussion [Stock volatility and the crash of '87], *RFS* 3(1), 103–106 | 10.1093/rfs/3.1.103 |
231 +| `hentschel_family` | Hentschel (1995), *JFE* 39(1), 71–104 | 10.1016/0304-405X(94)00821-H |
232 +| `duan_augmented` | Duan (1997), *J. Econometrics* 79(1), 97–127 | 10.1016/S0304-4076(97)00009-2 |
233 +| `vec` | Bollerslev, Engle & Wooldridge (1988), *JPE* 96(1), 116–131 | 10.1086/261527 |
234 +| `factor_arch` | Engle, Ng & Rothschild (1990), *J. Econometrics* 45(1–2), 213–237 | 10.1016/0304-4076(90)90099-F |
235 +| `deco` | Engle & Kelly (2012), *JBES* 30(2), 212–228 | 10.1080/07350015.2011.652048 |
236 +| `periodic_garch` | Bollerslev & Ghysels (1996), *JBES* 14(2), 139–151 | 10.1080/07350015.1996.10524640 |
237 +| `garch_jump` | Maheu & McCurdy (2004), *J. Finance* 59(2), 755–793 | 10.1111/j.1540-6261.2004.00648.x |
238 +| (notes only) | Rabemananjara & Zakoïan (1993) JAE 8(1); Engle & Russell (1998) Econometrica 66(5); Li & Li (1996) JAE 11(3) | 10.1002/jae.3950080104; 10.2307/2999632; 10.1002/(SICI)1099-1255(199605)11:3<253::AID-JAE393>3.0.CO;2-8 |
239 +
240 +## 4. Items that could not be verified (not cited, flagged in the YAML notes)
241 +
242 +| Item | Status |
243 +|---|---|
244 +| Taylor (1986), *Modelling Financial Time Series*, Wiley, 1st ed. | no registry record (Wiley page 404, see literature matrix); `avgarch` and `sv` carry `year: 1986` with bibkey `taylor2008modelling` (2nd ed.) |
245 +| Engle & Lee (1993), "A permanent and transitory component model of stock return volatility", UCSD WP | working paper, not searched for a DOI; the chapter `engle1999long` is cited |
246 +| Chung (1999) FIGARCH re-parameterization | unverified (`results/metrics/references_unverified.json`); mentioned in the `figarch` note only |
247 +| Zumbach (2007) RiskMetrics 2006 technical document | only the 2009 SSRN posting is verified (`zumbach2009riskmetrics`); `rm2006` carries `year: 2007` |
248 +| Alexander (2001) O-GARCH; Jorion (1988) ARCH-jump; Engle & Mezrich (1996) covariance targeting | mentioned in notes only, not verified, not cited |
249 +| Exact index structure of Duan's augmented GARCH($p,q$) | the YAML states the (1,1) case ($\phi_t=\omega+\xi_{1,t-1}\phi_{t-1}+\xi_{2,t-1}$ with Box–Cox news functions) as transcribed from memory of Section 2 of the article; to be checked against the fetched article before the table is used in print |
250 +| Multivariate Realized GARCH (`archakov2026multivariate`) | equation given schematically (log variances + matrix-log correlation); exact parameterization to be copied from the article |
251 +| Stationarity statements for Gray (1996), Haas et al. (2004) and Hagerud (1997) | given qualitatively; the exact matrix condition of `haas2004new` (Prop. on covariance stationarity) should be quoted verbatim if the table is extended with a "stationarity" column |
252 +| EViews naming ("TARCH", "PARCH", "Component ARCH") | common usage quoted from software documentation; no bibliographic record |
modified docs/methodology_decisions.md +1 −0
@@ -19,3 +19,4 @@ Each decision is dated, motivated, and tied to evidence. "Before freeze" = taken
19 19 | D-13 | 2026-11-09 | Validation period 2012-01-03 → 2015-12-31 (design checks, pilot, failure accounting); test period 2016-01-04 → 2026-10-30, untouched until the protocol freeze. | FX starts in 2010 (+1,000-day window → 2014), crypto later: validation checks use the instruments available. |
20 20 | D-14 | 2026-11-09 | Cross-check policy: every arch-backed and custom model is compared with rugarch 1.5-6 on a shared fixture (`results/metrics/rugarch_crosscheck.json`); FIGARCH differs by 1.47 log-likelihood units (different truncation/constraints between arch and rugarch) and is reported as an implementation caveat. | Verified 2026-11-09. |
21 21 | D-15 | 2026-11-09 | Smoke tests of the forecasting machinery were run on SPY 2024 forecasts (values only, no losses) before the freeze; the pilot uses the validation period only. | Disclosure of what was seen before the pre-registration. |
22 +| D-16 | 2026-11-09 (evening, post-freeze) | Seven architectures listed as `unsupported` in D-11 (ST-GARCH, GARCH-MIDAS, HYGARCH, FIAPARCH, FIEGARCH, Realized EGARCH) plus Beta-t-EGARCH are implemented as **post-registration extensions** (status `extension`, exploratory): same protocol, same losses, reported in a separate section and never in the confirmatory tables. | Author's instruction that the paper be a synthesis of the whole GARCH family; D-11 is superseded for these seven; verification = nesting tests and the HYGARCH(amp = 1)–FIGARCH identity, no external package cross-check (`model_cards/_discrepancies.md` §Extensions). |
modified model_cards/README.md +9 −8
@@ -1,6 +1,6 @@
1 1 # WP46 model cards — index
2 2
3 −One card per architecture of the binding registry `configs/model_registry.yaml` (36 entries: 29 implemented, 7 unsupported). Each card follows the same ten sections: 1 Identity · 2 Definition · 3 Parameter space and admissibility · 4 Nesting and relations · 5 Estimation · 6 Forecasting · 7 Implementation (file/class, library, cross-check evidence, tests) · 8 Known limitations / failure modes · 9 Computational footprint · 10 Literature expectations. Equations are those **implemented in the code** (`src/wp46/models/{arch_models,custom,baselines,distributions}.py`, `src/wp46/estimation/rolling.py`, arch 8.0.0 internals), not the textbook forms when they differ; such differences are listed in `_discrepancies.md`. Bibkeys refer to `paper/references.bib` only; references that would be needed but are absent are listed in `_missing_references.md`. **No card reports a WP46 benchmark result** (the benchmark has not been run); the only numbers quoted are the rugarch cross-check (`results/metrics/rugarch_crosscheck.json`), unit/simulation test tolerances, and pilot fit timings on the validation period (`results/metrics/pilot/pilot_report.json`, currently CL and EURUSD).
3 +One card per architecture of the binding registry `configs/model_registry.yaml` (37 entries: 29 implemented, 1 unsupported, 7 post-registration `extension` entries added 2026-11-09 — E-01, `src/wp46/models/extensions.py`; scored with the frozen protocol, reported separately as exploratory). Each card follows the same ten sections: 1 Identity · 2 Definition · 3 Parameter space and admissibility · 4 Nesting and relations · 5 Estimation · 6 Forecasting · 7 Implementation (file/class, library, cross-check evidence, tests) · 8 Known limitations / failure modes · 9 Computational footprint · 10 Literature expectations. Equations are those **implemented in the code** (`src/wp46/models/{arch_models,custom,extensions,baselines,distributions}.py`, `src/wp46/estimation/rolling.py`, arch 8.0.0 internals), not the textbook forms when they differ; such differences are listed in `_discrepancies.md`. Bibkeys refer to `paper/references.bib` only; references that would be needed but are absent are listed in `_missing_references.md`. **No card reports a WP46 benchmark result** (the benchmark has not been run); the only numbers quoted are the rugarch cross-check (`results/metrics/rugarch_crosscheck.json`), unit/simulation test tolerances, and pilot fit timings on the validation period (`results/metrics/pilot/pilot_report.json`, currently CL and EURUSD).
4 4
5 5 Common conventions: daily log returns in percent, variances in percent²; $r_t = \mu + \varepsilon_t$, $\varepsilon_t = \sigma_t z_t$; innovation laws standardised to unit variance (normal; Student-t `bollerslev1987conditionally`; GED `nelson1991conditional`; Hansen skew-t `hansen1994autoregressive`, arch parameterisations); rolling window 1,000 days, refit every 5 days, daily filtering with fixed parameters; per-step forecasts $E[\sigma^2_{t+k}\mid\mathcal F_t]$, k = 1..22, cumulative h-day variance = sum of the first h steps (h = 1, 5, 22); seed 46 + origin index for simulation forecasts (2,000 paths); only point estimates are used (no standard errors enter the benchmark).
6 6
@@ -26,14 +26,15 @@ Common conventions: daily log returns in percent, variances in percent²; $r_t =
26 26 | `avgarch11` | power | A | arch 8.0.0 `GARCH(1,0,1, power=1)` | normal, t, ged, skewt | implemented | [avgarch11.md](avgarch11.md) |
27 27 | `aparch11` | power | A | arch 8.0.0 `APARCH(1,1,1)` | normal, t, ged, skewt | implemented | [aparch11.md](aparch11.md) |
28 28 | `figarch11` | fractional | A | arch 8.0.0 `FIGARCH(1,1)` (truncation 1000) | normal, t, ged, skewt | implemented | [figarch11.md](figarch11.md) |
29 −| `fiegarch11` | fractional | A | none | — | unsupported | [fiegarch11.md](fiegarch11.md) |
30 −| `fiaparch11` | fractional | A | none | — | unsupported | [fiaparch11.md](fiaparch11.md) |
31 −| `hygarch11` | fractional | A | none | — | unsupported | [hygarch11.md](hygarch11.md) |
29 +| `fiegarch11` | fractional | A | custom `FIEGARCH11` (truncation 1000) | normal, t | extension | [fiegarch11.md](fiegarch11.md) |
30 +| `fiaparch11` | fractional | A | custom `FIAPARCH11` (truncation 1000) | normal, t | extension | [fiaparch11.md](fiaparch11.md) |
31 +| `hygarch11` | fractional | A | custom `HYGARCH11` (truncation 1000) | normal, t | extension | [hygarch11.md](hygarch11.md) |
32 32 | `cgarch11` | component | A | custom `CGARCH11` | normal, t, ged, skewt | implemented | [cgarch11.md](cgarch11.md) |
33 33 | `msgarch2` | regime-switching | A | custom `MSGARCH2` (Haas–Mittnik–Paolella) | normal, t | implemented | [msgarch2.md](msgarch2.md) |
34 −| `stgarch` | regime-switching | A | none | — | unsupported | [stgarch.md](stgarch.md) |
35 −| `garch_midas` | component | A | none | — | unsupported | [garch_midas.md](garch_midas.md) |
34 +| `stgarch11` | regime-switching | A | custom `STGARCH11` (logistic) | normal, t | extension | [stgarch11.md](stgarch11.md) |
35 +| `garch_midas` | component | A | custom `GARCHMIDAS` (own monthly RV, K = 24) | normal, t | extension | [garch_midas.md](garch_midas.md) |
36 36 | `gas_t11` | score-driven | A | custom `GAST11` | t | implemented | [gas_t11.md](gas_t11.md) |
37 +| `betategarch11` | score-driven | A | custom `BetaTEGARCH11` | t | extension | [betategarch11.md](betategarch11.md) |
37 38 | `sv` | score-driven (registry grouping) | A | none | — | unsupported | [sv.md](sv.md) |
38 39 | `rm_rw` | realized | B | parameter-free (`baselines.RMRandomWalk`) | empirical | implemented | [rm_rw.md](rm_rw.md) |
39 40 | `har_rv` | realized | B | OLS (`baselines.HARRV`) | empirical | implemented | [har_rv.md](har_rv.md) |
@@ -41,8 +42,8 @@ Common conventions: daily log returns in percent, variances in percent²; $r_t =
41 42 | `realgarch11` | realized | B | custom `RealGARCH11` | normal, t | implemented | [realgarch11.md](realgarch11.md) |
42 43 | `heavy11` | realized | B | custom `HEAVY11` | normal, t | implemented | [heavy11.md](heavy11.md) |
43 44 | `garchx_rv11` | realized | B | custom `GARCHXRV11` | normal, t | implemented | [garchx_rv11.md](garchx_rv11.md) |
44 −| `realegarch11` | realized | B | none | — | unsupported | [realegarch11.md](realegarch11.md) |
45 +| `realegarch11` | realized | B | custom `RealEGARCH11` | normal, t | extension | [realegarch11.md](realegarch11.md) |
45 46
46 47 Companion files: `_discrepancies.md` (registry ↔ code ↔ literature differences found while writing the cards), `_missing_references.md` (references needed by the cards but absent from `paper/references.bib`).
47 48
48 −Cross-check coverage at a glance (`results/metrics/rugarch_crosscheck.json`, rugarch 1.5-6, shared GJR-t fixture, log-likelihood difference ours − rugarch): garch11-t +0.041, garch11-skewt +0.039 (different skew-t families), gjr11-t +0.037, egarch11-t +0.013, aparch11-t +0.090, figarch11-t **−1.471**, igarch11-t +0.050, cgarch11-t +0.300, nagarch11-t +0.038; realgarch11 — rugarch did not converge (no comparison); tarch11 — rugarch fitted but no arch counterpart computed (no comparison). No library cross-check exists for `garchm11`, `qgarch11`, `gas_t11`, `msgarch2`, `heavy11`, `garchx_rv11`, `arch5`, `garch21`, `garch12`, `avgarch11`, the baselines and the HAR models.
49 +Cross-check coverage at a glance (`results/metrics/rugarch_crosscheck.json`, rugarch 1.5-6, shared GJR-t fixture, log-likelihood difference ours − rugarch): garch11-t +0.041, garch11-skewt +0.039 (different skew-t families), gjr11-t +0.037, egarch11-t +0.013, aparch11-t +0.090, figarch11-t **−1.471**, igarch11-t +0.050, cgarch11-t +0.300, nagarch11-t +0.038; realgarch11 — rugarch did not converge (no comparison); tarch11 — rugarch fitted but no arch counterpart computed (no comparison). No library cross-check exists for `garchm11`, `qgarch11`, `gas_t11`, `msgarch2`, `heavy11`, `garchx_rv11`, `arch5`, `garch21`, `garch12`, `avgarch11`, the baselines and the HAR models. The seven `extension` entries have **no external-package cross-check** either, except the likelihood identity HYGARCH(amp = 1) = arch FIGARCH (`tests/unit/test_extensions.py`, tolerance 5.0); see `_discrepancies.md`, section "Extensions (E-01)".
modified model_cards/_discrepancies.md +26 −0
@@ -53,3 +53,29 @@ Factual observations from reading `configs/model_registry.yaml`, `src/wp46/model
53 53 23. **`CustomModel.fit` start-vector loop:** `max_restarts = 3` but only three starting vectors are defined and the loop breaks after the second start if it succeeds; `n_restarts` records the index of the last start tried (0–2), not the number of restarts. Harmless, but the fits-table column semantics differ from the arch path (`n_restarts` = number of extra fits).
54 54
55 55 24. **HAR `_har_X` uses the 22-day average ending at t (inclusive)** and the h-step target is the *average* daily variance over t+1..t+h (then multiplied by h in the forecast) — consistent with Corsi's normalisation; the per-step allocation (even split within 2–5 and 6–22) is a WP46 convention needed only because the driver stores per-step variances; it does not affect the h = 1, 5, 22 cumulative forecasts.
56 +
57 +## Extensions (E-01)
58 +
59 +Observations from reading `src/wp46/models/extensions.py`, `tests/unit/test_extensions.py`, the `extension` entries of `configs/model_registry.yaml` and `src/wp46/estimation/rolling.py` (model-card pass for the seven post-registration architectures, 2026-11-09). Registry keys `gonzalezrivera1998smooth` and `hansen2016exponential` are now correct (item A.1 is resolved for `stgarch11` and `realegarch11`; `zumbach2007riskmetrics` remains). The stubs `stgarch.md` (id renamed to `stgarch11`) and the unsupported `garch_midas.md`, `hygarch11.md`, `fiaparch11.md`, `fiegarch11.md`, `realegarch11.md` were replaced.
60 +
61 +25. **"Exact re-implementation" vs test tolerance.** The module docstring states that HYGARCH(amp = 1) and FIAPARCH(δ = 2, γ = 0) are "exact re-implementations of FIGARCH", but the only identity test (`test_hygarch_amp1_matches_arch_figarch_likelihood`) accepts |Δ log-likelihood| < **5.0** at arch's optimum, and FIAPARCH has only the nesting inequality (fit ≥ arch FIGARCH − 1.0), no evaluation at the FIGARCH point. With the same weights, truncation and backcast the difference should be ≈ 0; the tolerance should be tightened (or the residual gap explained) before the identity is cited as a cross-check. None of the other six extensions has any external check (CLAUDE.md rule 6 and D-11 are not satisfied — consistent with the `extension` label, but D-11's text still calls these architectures `unsupported`).
62 +
63 +26. **ST-GARCH has an exact analytic multi-step recursion for symmetric laws that the code replaces by simulation.** Since $F(e) + F(-e) = 1$, $E[F(\varepsilon)\varepsilon^2 \mid \sigma^2] = \sigma^2/2$ for symmetric $z$, hence $E_t[\sigma^2_{t+k}] = \omega + (\alpha_1 + \alpha_2/2 + \beta)E_t[\sigma^2_{t+k-1}]$ exactly; the docstring's justification ("the transition is nonlinear in eps") does not apply to the normal/t pairs that are scored, and the 2,000-path simulation only adds Monte Carlo noise at k ≥ 2. Also: no location parameter c (the former stub card and part of the literature allow one); γ is in percent⁻¹ (scale-dependent) and unidentified under α₂ = 0; the recursion initialises $\sigma_0^2 = s_0$ whereas `garch11_custom` uses $\omega + (\alpha+\beta)s_0$, so the GARCH(1,1) nest differs in the first observation.
64 +
65 +27. **Beta-t-EGARCH score and parameter mapping.** The docstring calls $u_t$ "the score of the t density w.r.t. log sigma2"; it is twice that score (the score w.r.t. $\log\sigma$, Harvey's λ), and $u_t \in [-1, \nu)$ rather than "(−1, ν]". Relative to `harvey2008beta` (unstandardised $t_\nu$, log-scale λ): β = φ, α = 2κ, γ = 2κ*, ω = 2δ + (1−φ) log(ν/(ν−2)). α > 0 is imposed (the literature leaves κ free); β ∈ (−1, 1) is allowed (the literature uses 0 < φ < 1). Closed-form multi-step moments exist (`harvey2013dynamic`) but simulation is used. The ν → ∞ limit is not GARCH(1,1), yet the A-05 floor (GARCH(1,1)-t − 50) is applied to this model.
66 +
67 +28. **Realized EGARCH clipping asymmetry:** in-sample $\log\sigma^2$ is clipped at ±50, the multi-step simulation at ±30 (same inconsistency as `realgarch11`, item 14). Single realized measure (the paper allows several); joint likelihood excluded from the A-05 floor (correct) and not comparable with Tier A fits.
68 +
69 +29. **GARCH-MIDAS deviations from `engle2013stock`:** (a) monthly RV is the sum of squared **demeaned** returns (window mean), the paper uses raw squared returns; (b) $g_t$ divides $\varepsilon_{t-1}^2$ by $\tau_{t-1}$ (previous day) rather than the paper's $\tau_t$ — identical except on the first trading day of each month; (c) $g_0 = 1$ and the backcast $s_0$ is computed but unused; (d) short-history rules at the window start: months 6–23 use renormalised weights over the available months, months 0–5 use the plain mean of available monthly RVs, and **month 0 uses its own contemporaneous RV** (within-window look-ahead confined to the first month of in-sample filtering; forecasts, issued ≥ 47 months into the 1,000-day window, are unaffected and `test_no_lookahead_extensions` does not cover `garch_midas`); (e) θ > 0 and w > 1 by construction (the paper leaves θ's sign free), so GARCH(1,1) is a limit (θ → 0) where w is unidentified; (f) $\varphi_K = 0$ exactly for w > 1, so 23 of the 24 lags carry weight; (g) τ is frozen over the 22-day horizon. The former registry/D-11 objection ("needs a low-frequency series outside the information set") no longer applies: the long-run component is built from the window's own daily returns (Tier A).
70 +
71 +30. **HYGARCH admissibility and identification:** the flag checks ω > 0 and the 1,000 truncated weights ≥ −1e-10 (numerical, not Conrad–Haag/Conrad analytic conditions) and **ignores Davidson's covariance-stationarity condition amp < 1** (explosive amp > 1 optima are recorded as `ok`); inadmissible proposals return the 1e10 penalty inside the likelihood (a discontinuous wall for L-BFGS-B); amp = e^θ excludes amp = 0 (GARCH) and makes amp = 1 (FIGARCH) an interior point reached only numerically; the discarded tail mass of the 1,000-lag truncation ($O(1000^{-d})$) is observationally similar to amp < 1 inside a 1,000-day window (amp, d and ω/(1−β) trade off). `step_forecast` pads lags older than the window with $\sigma_0^2$ (first in-sample variance) whereas the in-sample recursion uses the backcast $s_0$ — a difference only for windows shorter than 1,000 days. arch's sufficient constraints (φ ≤ (1−d)/2, β ≤ d + φ) are not imposed, so HYGARCH(amp = 1) can reach FIGARCH parameter sets that `figarch11` cannot.
72 +
73 +31. **FIAPARCH:** δ ∈ (0.5, 4) and |γ| < 0.99 by construction (literature: δ > 0, |γ| < 1); d, φ, β ∈ (0, 1) exclude the APARCH (d = 0) limit; the pre-sample value $s_0^{\delta/2}$ assumes $E(|z| - \gamma z)^\delta = 1$ (arch's APARCH convention, not exact); no stationarity flag; the FIGARCH identity is not tested at the (δ = 2, γ = 0) point (item 25).
74 +
75 +32. **FIEGARCH:** (a) `rec_fiegarch` receives a backcast argument `ls0` that it never uses — pre-sample $g = 0$, so $\log\sigma_0^2 = \omega$ (the unconditional mean), contrary to the base-class "backcast" contract and the `fit.aux["backcast"]` plumbing; (b) $d = 0.499\,\sigma(\theta) \in (0, 0.499)$ **by construction**, so the admissibility flag (d < 0.5, |φ|, |ψ| < 1) is vacuous, d ≥ ½ cannot be estimated (the literature only requires d < ½ for covariance stationarity of $\log\sigma^2$, not at estimation) and the d = 0 EGARCH point is excluded; (c) γ = e^θ > 0 is imposed (not in `bollerslev1996modeling`); (d) $E|z|$ is the exact value for the fitted law (unlike arch's EGARCH, item 15), so `omega` is not comparable with `egarch11`'s; (e) $\log\sigma^2$ clipped at ±50 in-sample and in simulation; (f) no test of `fiegarch_weights` against an ARFIMA reference.
76 +
77 +33. **Registry `dists` narrower than the class `supports`:** `stgarch11`, `garch_midas`, `hygarch11`, `fiaparch11`, `fiegarch11` inherit `supports = (normal, t, ged, skewt)` but the registry lists `[normal, t]`, so GED/skew-t pairs are neither scored nor reported as unsupported; `betategarch11` (t) and `realegarch11` (normal, t) are consistent. For the fractional models the admissibility/persistence logic does not depend on the law, so the restriction is a scope decision, not a technical one; for `stgarch11` the persistence condition is only exact for symmetric laws.
78 +
79 +34. **Rolling driver special case:** `rolling.py` passes the calendar months only when `job.model_id == "garch_midas"` (string match); any future MIDAS variant must repeat the special case, and the unit tests use 21-day blocks instead of calendar months (the two calendars give different monthly RV series and therefore different fits).
80 +
81 +35. **D-11 wording is stale:** `docs/methodology_decisions.md` D-11 still lists FIEGARCH, FIAPARCH, HYGARCH, smooth-transition GARCH, GARCH-MIDAS and Realized EGARCH as `unsupported`/not scored; the registry now labels them `extension` and scores them (`progress.md`, E-01). A decision entry recording the post-registration status change (and its separate reporting) is missing from the decisions log.
added model_cards/betategarch11.md +43 −0
@@ -0,0 +1,43 @@
1 +# Model card — `betategarch11` (Beta-t-EGARCH(1,1), score-driven log-variance with leverage) — post-registration extension
2 +
3 +## 1. Identity
4 +- **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`)
5 +- **Label:** Beta-t-EGARCH · **distributions:** t only (the model is defined by the Student-t score)
6 +- **Seminal citation:** `harvey2008beta`
7 +- **Other references:** `harvey2013dynamic` (dynamic conditional score models, closed-form moments, robustness), `harvey2014egarch` (Beta-t-EGARCH with skewness and leverage), `creal2013generalized` (GAS framework; `gas_t11` is the level-variance twin), `blasques2015information` (optimality of score updates), `nelson1991conditional` (EGARCH, the model it is designed to replace).
8 +
9 +## 2. Definition (as coded, unit-variance Student-t)
10 +$$r_t = \mu + \varepsilon_t,\quad \varepsilon_t = \sigma_t z_t,\quad z_t \sim t_\nu\ \text{standardised to unit variance},\qquad
11 +\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),$$
12 +$$u_t = \frac{(\nu+1)\,z_t^2}{\nu - 2 + z_t^2} - 1,\qquad z_t = \varepsilon_t/\sigma_t .$$
13 +$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].
14 +
15 +## 3. Parameter space and admissibility
16 +- Parameters: `mu, omega, alpha, gamma, beta, nu`.
17 +- Reparameterisation: ω free; $\alpha = e^{\theta_1} > 0$; γ free; $\beta = \tanh(\theta_3) \in (-1, 1)$; $\nu = 2.05 + e^{\theta_4}$.
18 +- 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.
19 +
20 +## 4. Nesting and relations
21 +- **vs `gas_t11` (GAS-t / Beta-t-GARCH):** same score $u_t$; `gas_t11` updates 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.
22 +- **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 of `harvey2008beta`/`harvey2013dynamic`. The two models are not nested.
23 +- $\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`).
24 +
25 +## 5. Estimation
26 +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`.)
27 +
28 +## 6. Forecasting
29 +`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.
30 +
31 +## 7. Implementation and verification
32 +- `src/wp46/models/extensions.py::BetaTEGARCH11`, numba `rec_betategarch`; dispatched through `EXTENSIONS`.
33 +- 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.
34 +- **No external-package cross-check** (Beta-t-EGARCH is not in arch 8.0.0 or rugarch 1.5-6; the R package `betategarch` is 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 — hence `extension` status.
35 +
36 +## 8. Known limitations / failure modes
37 +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.
38 +
39 +## 9. Computational footprint
40 +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.
41 +
42 +## 10. Literature expectations
43 +`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.
modified model_cards/fiaparch11.md +35 −12
@@ -1,20 +1,43 @@
1 −# Model card — `fiaparch11` (FIAPARCH) — UNSUPPORTED, not scored
1 +# Model card — `fiaparch11` (FIAPARCH(1,d,1), fractionally integrated APARCH) — post-registration extension
2 2
3 3 ## 1. Identity
4 −- **model_id:** `fiaparch11` · **family:** fractional · **tier:** A · **status:** unsupported · **impl:** none · **distributions:** [] (registry note: "no vetted implementation; not scored")
5 −- **Seminal citation:** `tse1998conditional` (Tse 1998). Related: `ding1993long` (APARCH), `baillie1996fractionally` (FIGARCH).
4 +- **model_id:** `fiaparch11` · **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::FIAPARCH11`)
5 +- **Label:** FIAPARCH(1,d,1) · **distributions:** normal, t (registry `dists`; the class also accepts ged/skewt but those pairs are not scored)
6 +- **Seminal citation:** `tse1998conditional`
7 +- **Other references:** `ding1993long` (APARCH, scored as `aparch11`), `baillie1996fractionally` (FIGARCH, the δ = 2, γ = 0 case, scored as `figarch11`), `conrad2006inequality` (positivity of FIGARCH weights), `davidson2004moment` (HYGARCH, same weight machinery), `sheppard2025arch` (truncation convention). This card replaces the former unsupported stub.
6 8
7 −## 2. Definition (literature)
8 −Fractionally integrated APARCH: $\sigma_t^\delta = \omega + \big[1 - (1-\beta L)^{-1}(1-\phi L)(1-L)^d\big]\,(|\varepsilon_t| - \gamma\varepsilon_t)^\delta$, combining the FIGARCH ARCH(∞) truncation with the APARCH power/asymmetry transform.
9 +## 2. Definition (as coded)
10 +$$r_t = \mu + \varepsilon_t,\quad \varepsilon_t = \sigma_t z_t,\qquad \sigma_t^{\delta} = \frac{\omega}{1-\beta} + \sum_{k=1}^{1000}\lambda_k\,\big(|\varepsilon_{t-k}| - \gamma\,\varepsilon_{t-k}\big)^{\delta},\qquad
11 +\lambda(L) = 1 - (1-\beta L)^{-1}(1-\phi L)(1-L)^{d},$$
12 +i.e. `tse1998conditional` written as $(1-\beta L)\sigma_t^\delta = \omega + [(1-\beta L) - (1-\phi L)(1-L)^d]\,(|\varepsilon_t| - \gamma\varepsilon_t)^\delta$ and expanded into the truncated ARCH(∞) form with the FIGARCH weights of `figarch_weights(d, φ, β, amp = 1, 1000)` (`hygarch11.md` §2). Recursion `rec_fiaparch`: pre-sample $(|\varepsilon| - \gamma\varepsilon)^\delta$ replaced by $s_0^{\delta/2}$ (the backcast raised to δ/2, as arch's APARCH `backcast_transform`) for all 1,000 lags; $\sigma_t^\delta$ floored at 1e-12; the variance returned is $(\sigma_t^\delta)^{2/\delta}$. Innovations: standardised normal or Student-t.
9 13
10 −## 3–6. Parameter space, estimation, forecasting
11 −Not implemented in WP46. Would require the FIGARCH truncated weights on $(|\varepsilon| - \gamma\varepsilon)^\delta$ and simulation-based multi-step forecasts (δ ≠ 2).
14 +## 3. Parameter space and admissibility
15 +- Parameters: `mu, omega, d, phi, beta, gamma, delta` (+ `nu` for t).
16 +- Reparameterisation: $\omega = e^{\theta_0}$; $d, \phi, \beta = \sigma(\cdot) \in (0,1)$; $\gamma = 0.99\tanh(\theta_4) \in (-0.99, 0.99)$; $\delta = 0.5 + 3.5\,\sigma(\theta_5) \in (0.5, 4)$.
17 +- Admissibility: $\omega > 0$ and all 1,000 truncated weights $\lambda_k \ge -10^{-10}$ (numerical check; a negative weight inside the likelihood returns the 1e10 penalty, a hard wall — see `hygarch11.md` §3). Positivity of $\sigma_t^\delta$ then follows from $(|\varepsilon| - \gamma\varepsilon)^\delta \ge 0$ for $|\gamma| < 1$. No stationarity flag: like FIGARCH, the process has an infinite unconditional variance for d > 0.
12 18
13 −## 7. Implementation / why not scored
14 −Not in arch 8.0.0 (its `FIGARCH(power=…)` is a symmetric power FIGARCH, not FIAPARCH) nor in rugarch 1.5-6; no authoritative cross-check available → `unsupported` (D-11). Reported as unsupported for every distribution.
19 +## 4. Nesting and relations
20 +- δ = 2, γ = 0: FIGARCH(1,d,1) exactly (same weights; `figarch11` is the registry twin) — inequality-tested, §7.
21 +- d → 0: APARCH(1,1) with $\alpha = \phi - \beta$ (`aparch11`; the limit is excluded by $d = \sigma(\theta)$).
22 +- δ = 1: a fractionally integrated TARCH/AVGARCH (`tarch11`, `avgarch11` are the d = 0 analogues); γ > 0 raises the response to negative shocks (`ding1993long` sign convention).
23 +- `hygarch11` shares the weight machinery (with the amplitude parameter); `fiegarch11` is the log-variance analogue.
15 24
16 −## 8–9. Limitations / footprint
17 −Not applicable. The matrix notes it is "heavy to estimate".
25 +## 5. Estimation
26 +Shared custom MLE (`CustomModel.fit`): L-BFGS-B (maxiter 2000, ftol 1e-10, gtol 1e-6) from up to three starts (ω, d, φ, β, γ, δ) ∈ {(0.1v, 0.4, 0.2, 0.5, 0.1, 2.0), (0.1v^{0.75}, 0.5, 0.1, 0.4, 0.2, 1.5), (0.2v, 0.3, 0.3, 0.6, 0.0, 2.0)}, v = sample variance of the demeaned window; μ 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). Backcast $s_0$ = exponentially weighted mean (75 lags, 0.94) of the first squared demeaned returns. Each likelihood evaluation recomputes the 1,000 weights and the O(T × 1000) convolution of the power-transformed innovations. Point estimates only.
27 +
28 +## 6. Forecasting
29 +`FIAPARCH11.step_forecast` (method `simulation`): future $(|\varepsilon| - \gamma\varepsilon)^\delta$ are not linear in $\sigma^2$, so 2,000 paths are simulated: each path keeps the last 1,000 transformed innovations (pre-window lags padded with $\sigma_0^{\delta}$), computes $\sigma^\delta_{t+k} = \omega/(1-\beta) + \sum_i\lambda_i g_{t+k-i}$ (floor 1e-12), $\sigma^2 = (\sigma^\delta)^{2/\delta}$, draws $z$ from the fitted law (`rvs`, seeded), forms $\varepsilon = \sigma z$ and shifts $(|\varepsilon| - \gamma\varepsilon)^\delta$ into the history; forecast = cross-path mean of $\sigma^2_{t+k}$ (the k = 1 value is deterministic). Cumulative h-day variance = sum of the first h steps. Same treatment as `aparch11` (arch simulates), extended to the 1,000-lag memory.
30 +
31 +## 7. Implementation and verification
32 +- `src/wp46/models/extensions.py::FIAPARCH11`, `figarch_weights`, numba `rec_fiaparch`; dispatched through `EXTENSIONS`.
33 +- Tests (`tests/unit/test_extensions.py::test_fiaparch_nests_figarch_and_stgarch_nests_garch`): the FIAPARCH-t fit on the simulated GARCH-t fixture converges with log-likelihood ≥ arch's FIGARCH-t log-likelihood − 1.0 (nesting inequality only; **no evaluation of the FIAPARCH likelihood at the FIGARCH point** — the amp = 1 identity is tested for `hygarch11` only, and FIAPARCH(δ = 2, γ = 0) uses the same weights and recursion up to the power transform). Not covered by `test_no_lookahead_extensions`.
34 +- **No external-package cross-check** (FIAPARCH is not in arch 8.0.0 — arch's `FIGARCH(power=…)` is a symmetric power FIGARCH — nor in rugarch 1.5-6), no simulation-recovery test. CLAUDE.md rule 6 is not met — hence `extension` status.
35 +
36 +## 8. Known limitations / failure modes
37 +Post-registration, exploratory. Seven to eight parameters with a 1,000-lag memory in a 1,000-day window: δ, γ, d and ω trade off (the literature matrix calls it "heavy to estimate"); the positivity wall makes the likelihood discontinuous; the pre-sample backcast $s_0^{\delta/2}$ implicitly assumes $E(|z| - \gamma z)^\delta = 1$ (as arch's APARCH); δ ∈ (0.5, 4) and |γ| < 0.99 are imposed by construction (literature: δ > 0, |γ| < 1); d, φ, β ∈ (0,1) exclude the APARCH/GARCH limits; simulation noise at h ≥ 2; infinite unconditional variance makes long-horizon forecasts grow slowly without bound; the FIGARCH arch-vs-rugarch gap of −1.47 (D-14) is inherited by the weight convention.
38 +
39 +## 9. Computational footprint
40 +O(T × 1000) per likelihood evaluation plus the O(1000) weight construction and a power transform per observation; simulation forecasts are O(2000 × 22 × 1000) per origin — qualitatively **10–30× slower than GARCH(1,1)** for the fit and the most expensive forecast of the extension set. Not timed in the pilot.
18 41
19 42 ## 10. Literature expectations
20 −`tse1998conditional` applied it to the yen–dollar rate; no cross-asset benchmark evidence in the literature matrix.
43 +`tse1998conditional` applied FIAPARCH to the yen–dollar rate (long memory and asymmetry jointly significant); `ding1993long` motivate the power transform; `conrad2006inequality` and `lamoureux1990persistence`/`hillebrand2005neglecting` qualify long-memory evidence; `hansen2005forecast` find no gain of FIGARCH-type models over GARCH(1,1) at h = 1. Under H1 and H4 the expectation is a gain limited to equity instruments at h = 22, if any, and under H5 one of the highest failure rates in the benchmark.
modified model_cards/fiegarch11.md +34 −12
@@ -1,20 +1,42 @@
1 −# Model card — `fiegarch11` (FIEGARCH) — UNSUPPORTED, not scored
1 +# Model card — `fiegarch11` (FIEGARCH(1,d,1), fractionally integrated EGARCH) — post-registration extension
2 2
3 3 ## 1. Identity
4 −- **model_id:** `fiegarch11` · **family:** fractional · **tier:** A · **status:** unsupported · **impl:** none · **distributions:** [] (registry note: "no vetted implementation in arch 8.0.0 / rugarch 1.5-6; not scored")
5 −- **Seminal citation:** `bollerslev1996modeling` (Bollerslev & Mikkelsen 1996). Related: `nelson1991conditional` (EGARCH), `baillie1996fractionally` (FIGARCH).
4 +- **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`)
5 +- **Label:** FIEGARCH(1,d,1) · **distributions:** normal, t (registry `dists`; the class also accepts ged/skewt but those pairs are not scored)
6 +- **Seminal citation:** `bollerslev1996modeling`
7 +- **Other references:** `nelson1991conditional` (EGARCH, the d = 0 limit, scored as `egarch11`), `baillie1996fractionally` (FIGARCH), `ding1996modeling` (long memory in volatility), `straumann2006quasi` (EGARCH QMLE theory). This card replaces the former unsupported stub.
6 8
7 −## 2. Definition (literature)
8 −Fractionally integrated EGARCH: $\ln\sigma_t^2 = \omega + \phi(L)^{-1}(1-L)^{-d}\,[1+\psi(L)]\,g(z_{t-1})$ with $g(z) = \theta z + \gamma(|z| - E|z|)$, $0 < d < 1$; the log-variance has long memory (stationary for $d < 1/2$).
9 +## 2. Definition (as coded)
10 +$$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),$$
11 +$$\lambda(L) = (1-\phi L)^{-1}(1-L)^{-d}(1+\psi L),$$
12 +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.
9 13
10 −## 3–6. Parameter space, estimation, forecasting
11 −Not implemented; no parameter space, estimation or forecast recursion is defined in WP46. Multi-step variance forecasts would require simulation (literature matrix §a.3).
14 +## 3. Parameter space and admissibility
15 +- Parameters: `mu, omega, d, phi, psi, theta, gamma` (+ `nu` for t).
16 +- 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$.
17 +- 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).
12 18
13 −## 7. Implementation / why not scored
14 −No implementation in arch 8.0.0 or rugarch 1.5-6; a custom implementation without an authoritative cross-check would violate CLAUDE.md rule 6 / D-11 (`docs/methodology_decisions.md`). Recorded in the registry as `unsupported`; every FIEGARCH × distribution pair is reported as "unsupported", not as a failure (rule 5).
19 +## 4. Nesting and relations
20 +- 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 `egarch11` with $\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.
21 +- 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.
22 +- `figarch11`/`hygarch11`/`fiaparch11` are the level-variance fractional models; `betategarch11` is the score-driven log-variance relative (bounded forcing instead of $|z|$).
15 23
16 −## 8–9. Limitations / footprint
17 −Not applicable (not run). The literature matrix lists it as "custom (phase 3, optional)".
24 +## 5. Estimation
25 +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.
26 +
27 +## 6. Forecasting
28 +`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.
29 +
30 +## 7. Implementation and verification
31 +- `src/wp46/models/extensions.py::FIEGARCH11`, `fiegarch_weights`, numba `rec_fiegarch`; dispatched through `EXTENSIONS`.
32 +- 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 weights `fiegarch_weights` against an ARFIMA reference and no test of the d → 0 EGARCH limit.
33 +- **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 — hence `extension` status.
34 +
35 +## 8. Known limitations / failure modes
36 +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.
37 +
38 +## 9. Computational footprint
39 +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.
18 40
19 41 ## 10. Literature expectations
20 −`bollerslev1996modeling` report long memory in equity log-volatility; no large-scale forecasting evidence in the matrix; FIGARCH results (`hansen2005forecast`) suggest limited gains at h = 1.
42 +`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.
modified model_cards/garch_midas.md +37 −12
@@ -1,20 +1,45 @@
1 −# Model card — `garch_midas` (GARCH-MIDAS) — UNSUPPORTED, not scored
1 +# Model card — `garch_midas` (GARCH-MIDAS, fixed-span, own monthly realized variance, K = 24) — post-registration extension
2 2
3 3 ## 1. Identity
4 −- **model_id:** `garch_midas` · **family:** component · **tier:** A · **status:** unsupported · **impl:** none · **distributions:** [] (registry note: "requires a low-frequency explanatory series outside the pre-registered information set; not scored")
5 −- **Seminal citation:** `engle2013stock` (Engle, Ghysels & Sohn 2013). Related: `ghysels2006predicting`, `ghysels2007midas` (MIDAS regressions), `engle1999long` (component GARCH, scored as `cgarch11`).
4 +- **model_id:** `garch_midas` · **family:** component · **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::GARCHMIDAS`)
5 +- **Label:** GARCH-MIDAS (own monthly RV, 24 months) · **distributions:** normal, t (registry `dists`; the class also accepts ged/skewt but those pairs are not scored) · **information set:** the instrument's own daily returns only (Tier A) — the former registry note "requires a low-frequency series outside the pre-registered information set" no longer applies because the long-run component is built from the window's own returns.
6 +- **Seminal citation:** `engle2013stock`
7 +- **Other references:** `ghysels2006predicting`, `ghysels2007midas` (MIDAS weighting), `engle2008spline` (Spline-GARCH, the other multiplicative low-frequency component), `engle1999long` (additive component GARCH, scored as `cgarch11`), `andersen2003modeling` (realized variance as the low-frequency regressor). This card replaces the former unsupported stub (same id).
6 8
7 −## 2. Definition (literature)
8 −$r_t = \mu + \sqrt{\tau_t g_t}\,z_t$ with a short-run unit-mean GARCH(1,1) component $g_t = (1-\alpha-\beta) + \alpha\,\varepsilon_{t-1}^2/\tau_{t-1} + \beta g_{t-1}$ and a long-run component $\tau_t = m + \theta\sum_{k=1}^{K}\varphi_k(w)\,X_{t-k}$ driven by a low-frequency variable $X$ (monthly realized variance or macro series) through Beta-lag MIDAS weights.
9 +## 2. Definition (as coded)
10 +Day t belongs to calendar month $m(t)$ (from the dates in `rolling.py`: `datetime64[M]`; the unit tests use 21-day blocks when no calendar is supplied).
11 +$$r_t = \mu + \varepsilon_t,\quad \varepsilon_t = \sqrt{\tau_t g_t}\,z_t,\qquad g_t = (1 - \alpha - \beta) + \alpha\,\frac{\varepsilon_{t-1}^2}{\tau_{t-1}} + \beta\,g_{t-1},\qquad g_0 = 1,$$
12 +$$\tau_t = m + \theta\sum_{k=1}^{K}\varphi_k(w)\,RV^{(m)}_{m(t)-k},\qquad RV^{(m)}_j = \sum_{s:\,m(s)=j}(r_s - \bar r)^2,\qquad \varphi_k(w) = \frac{(1 - k/K)^{w-1}}{\sum_{j=1}^{K}(1 - j/K)^{w-1}},\quad K = 24,$$
13 +i.e. the fixed-span (rolling-window) GARCH-MIDAS of `engle2013stock` with the **own monthly realized variance** as the low-frequency variable and the Beta-polynomial weights with $w_1 = 1$ fixed (one free weight parameter $w \equiv w_2$; $\varphi_K = 0$ exactly for w > 1, so 23 lags carry weight). $\tau_t$ is constant within a month and uses only the K **completed** months before $m(t)$; $\bar r$ is the sample mean of the window; $\tau$ is floored at 1e-10. **Short histories at the start of the window** (`_tau`): months with index $6 \le m < K$ use the available months with renormalised weights $(1 - k/K)^{w-1}$, k = 1..m; months $m < 6$ use $m + \theta\times$ (plain mean of the available monthly RVs, and for the first month its own RV). Innovations: standardised normal or Student-t.
9 14
10 −## 3–6. Parameter space, estimation, forecasting
11 −Not implemented. Note that arch's `MIDASHyperbolic` is a MIDAS-weighted ARCH on daily squared returns, **not** GARCH-MIDAS (literature matrix §a.4).
15 +## 3. Parameter space and admissibility
16 +- Parameters: `mu, m, theta, w, alpha, beta` (+ `nu` for t).
17 +- Reparameterisation: $m = e^{\theta_0} > 0$; $\theta = e^{\theta_1} > 0$; $w = 1 + e^{\theta_2} > 1$ (monotonically decreasing weights); persistence $s = \sigma(\theta_3)$ and share $\sigma(\theta_4)$ give $\alpha = s\,\sigma(\theta_4)$, $\beta = s(1 - \sigma(\theta_4))$, so $\alpha, \beta \ge 0$, $\alpha + \beta < 1$ and $g$ has unit unconditional mean.
18 +- Admissibility flag: $m > 0$, $\theta \ge 0$, $w \ge 1$, $\alpha, \beta \ge 0$, $\alpha + \beta < 1$ — all by construction. $\tau_t > 0$ follows from $m > 0$, $\theta \ge 0$, $RV \ge 0$. `engle2013stock` leave the sign of θ free (needed for macro regressors); with a variance regressor θ ≥ 0 is the economically meaningful region and is imposed here.
12 19
13 −## 7. Implementation / why not scored
14 −The long-run component needs an explanatory series outside the pre-registered Tier A/B information sets (daily returns; lagged realized measure); D-11 and the registry note exclude it. A realized-variance MIDAS variant was considered "conditional on data" in the matrix and not adopted.
20 +## 4. Nesting and relations
21 +- θ → 0: $\tau_t = m$ and $\sigma_t^2 = m\,g_t$ is GARCH(1,1) with $\omega = m(1-\alpha-\beta)$ — reached only in the limit ($\theta = e^{\theta_1}$), and w is then unidentified. The nesting test allows a 2.0 log-likelihood slack (§7).
22 +- `cgarch11` (Engle–Lee) is the additive two-component analogue with a daily-updated long-run component; `engle2008spline` the deterministic-spline analogue; `histvar252`/`rm2006` are parameter-free long-memory proxies.
23 +- Relation to Tier B: the long-run regressor is the sum of squared **daily** returns, not an intraday realized measure, so the model stays in Tier A.
15 24
16 −## 8–9. Limitations / footprint
17 −Not applicable.
25 +## 5. Estimation
26 +Shared custom MLE (`CustomModel.fit`; `GARCHMIDAS.fit` first builds the day→month map and the monthly RV series from the window): L-BFGS-B (maxiter 2000, ftol 1e-10, gtol 1e-6) from up to three starts (m, θ, w, α, β) ∈ {(0.5v, 0.5, 3, 0.06, 0.90), (0.8v, 0.2, 5, 0.04, 0.93), (0.3v, 0.8, 2, 0.08, 0.85)}, v = sample variance of the demeaned window; μ 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 ($g_0 = 1$, $\tau_0$ from the first month's own RV). `fit.aux["months"]` stores the calendar so that `filter`/`forecast` rebuild the same monthly RVs. Point estimates only.
27 +
28 +## 6. Forecasting
29 +`GARCHMIDAS.step_forecast` (method `analytic`), with $\tau$ **frozen** at the last in-sample value $\tau_t$ (the next month's $\tau$ would require the current month's completed RV):
30 +$$\hat g_{t+1|t} = (1-\alpha-\beta) + \alpha\,\varepsilon_t^2/\tau_t + \beta g_t,\qquad \hat g_{t+k|t} = (1-\alpha-\beta) + (\alpha+\beta)\,\hat g_{t+k-1|t},\qquad \hat\sigma^2_{t+k|t} = \tau_t\,\hat g_{t+k|t}.$$
31 +Exact under $E z^2 = 1$ for the short-run component; the frozen $\tau$ is an approximation whenever the 22-day horizon crosses a month end. Cumulative h-day variance = sum of the first h steps.
32 +
33 +## 7. Implementation and verification
34 +- `src/wp46/models/extensions.py::GARCHMIDAS`, numba `rec_garch_midas`, pure-numpy `_tau`/`_month_rv`; `rolling.py` passes `months` = calendar months of the window dates (special-cased on `job.model_id == "garch_midas"`).
35 +- Tests (`tests/unit/test_extensions.py::test_garch_midas_nests_garch_with_calendar_months`): fit (normal) on the GARCH-t fixture with 21-day months converges with log-likelihood ≥ `GARCH11` custom − 2.0; 22-step forecast positive and finite. Not covered by `test_no_lookahead_extensions`.
36 +- **No external-package cross-check** (no GARCH-MIDAS in arch 8.0.0 — arch's `MIDASHyperbolic` is a MIDAS-weighted ARCH on daily squared returns — nor in rugarch 1.5-6; the R package `mfGARCH` is 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 — hence `extension` status.
37 +
38 +## 8. Known limitations / failure modes
39 +Post-registration, exploratory. A 1,000-day window holds ≈ 47 calendar months, so with K = 24 the first half of every window uses the shortened-history rules of §2 (renormalised weights for months 6–23; plain means before; **the first month uses its own, contemporaneous RV** — an in-sample initialisation artefact confined to the first month, with no effect on the forecasts, which are issued ≥ 47 months into the window). $g_t$ divides by $\tau_{t-1}$ rather than $\tau_t$, which differs from `engle2013stock` only on the first trading day of each month. Monthly RV uses demeaned returns (the paper uses raw squared returns). θ and w are weakly identified when the long-run component is flat (θ small); w is unidentified at θ = 0; $\tau$ frozen over the horizon; no data-driven choice of K (fixed at 24 months). Rolling windows of unequal month counts (holidays, missing days) are handled through the calendar map, not by trading-day counts.
40 +
41 +## 9. Computational footprint
42 +O(T) GARCH recursion plus an O(n_months × K) weight convolution per likelihood evaluation — comparable to `cgarch11`, i.e. a small multiple of `garch11_custom`; analytic forecasts are O(22). Far below the fractional extensions. Not timed in the pilot.
18 43
19 44 ## 10. Literature expectations
20 −`engle2013stock` report that macro-driven long-run components improve long-horizon volatility forecasts; this is outside WP46's pre-registered design, so no expectation is tested.
45 +`engle2013stock` find that a realized-variance MIDAS component already captures most of the long-run movement and that macro components add at long horizons; `ghysels2006predicting` show the value of mixed-frequency variance regressors; `engle1999long`/`engle2008spline` document gains of two-component models mainly at long horizons. Under H4 (persistence structure) the expectation is no gain at h = 1 and a possible gain at h = 22 relative to `garch11`, comparable to `cgarch11`; under H6 the frozen long-run component should hurt in stressed regimes when the level shifts within the month.
modified model_cards/hygarch11.md +37 −12
@@ -1,20 +1,45 @@
1 −# Model card — `hygarch11` (HYGARCH) — UNSUPPORTED, not scored
1 +# Model card — `hygarch11` (HYGARCH(1,d,1), hyperbolic GARCH) — post-registration extension
2 2
3 3 ## 1. Identity
4 −- **model_id:** `hygarch11` · **family:** fractional · **tier:** A · **status:** unsupported · **impl:** none · **distributions:** [] (registry note: "no vetted implementation; not scored")
5 −- **Seminal citation:** `davidson2004moment`. Related: `baillie1996fractionally`, `conrad2006inequality` (positivity; Conrad 2007 on HYGARCH constraints is not in the .bib — literature matrix).
4 +- **model_id:** `hygarch11` · **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::HYGARCH11`)
5 +- **Label:** HYGARCH(1,d,1) · **distributions:** normal, t (registry `dists`; the class also accepts ged/skewt but those pairs are not scored)
6 +- **Seminal citation:** `davidson2004moment`
7 +- **Other references:** `baillie1996fractionally` (FIGARCH, the amp = 1 case, scored as `figarch11`), `conrad2006inequality` (positivity of FIGARCH ARCH(∞) weights), `ding1996modeling` (long memory in volatility), `sheppard2025arch` (the FIGARCH truncation convention reproduced here). Conrad's HYGARCH positivity conditions are not in the .bib (`_missing_references.md`). This card replaces the former unsupported stub.
6 8
7 −## 2. Definition (literature)
8 −Hyperbolic GARCH: $\sigma_t^2 = \omega + \big[1 - (1-\beta L)^{-1}(1-\phi L)\{1 + \alpha[(1-L)^d - 1]\}\big]\varepsilon_t^2$; the amplitude parameter α nests GARCH (α = 0) and FIGARCH (α = 1).
9 +## 2. Definition (as coded)
10 +$$r_t = \mu + \varepsilon_t,\quad \varepsilon_t = \sigma_t z_t,\qquad \sigma_t^2 = \frac{\omega}{1-\beta} + \sum_{k=1}^{1000}\lambda_k\,\varepsilon_{t-k}^2,\qquad
11 +\lambda(L) = 1 - (1-\beta L)^{-1}(1-\phi L)\big[1 + \mathrm{amp}\,\big((1-L)^d - 1\big)\big],$$
12 +the ARCH(∞) form of `davidson2004moment` truncated at 1,000 lags (arch's FIGARCH convention). `figarch_weights` builds the weights by polynomial arithmetic: $\pi_0 = 1$, $\pi_k = \pi_{k-1}(k-1-d)/k$ (coefficients of $(1-L)^d$); $c_0 = 1$, $c_k = \mathrm{amp}\,\pi_k$ (k ≥ 1); $a(L) = (1-\phi L)\,c(L)$; $b_k = a_k + \beta b_{k-1}$ (division by $1-\beta L$); $\lambda_k = -b_k$, k = 1..1000 (so $\lambda_1 = \mathrm{amp}\,d + \phi - \beta$, and for amp = 1 the weights coincide with arch's $\lambda_j = \beta\lambda_{j-1} + \delta_j - \phi\delta_{j-1}$). Recursion `rec_archinf`: pre-sample $\varepsilon_{t-k}^2$ (t − k < 0) replaced by the backcast $s_0$ for all 1,000 lags, as in arch's `figarch_recursion`. Innovations: standardised normal or Student-t.
9 13
10 −## 3–6. Parameter space, estimation, forecasting
11 −Not implemented in WP46; positivity constraints are non-trivial (matrix §a.3).
14 +## 3. Parameter space and admissibility
15 +- Parameters: `mu, omega, d, phi, beta, amp` (+ `nu` for t).
16 +- Reparameterisation: $\omega = e^{\theta_0}$; $d = \sigma(\theta_1) \in (0,1)$; $\phi = \sigma(\theta_2) \in (0,1)$; $\beta = \sigma(\theta_3) \in (0,1)$; $\mathrm{amp} = e^{\theta_4} > 0$. arch's sufficient constraints ($\phi \le (1-d)/2$, $\beta \le d + \phi$) are **not** imposed.
17 +- Admissibility (`admissible`, and inside the likelihood): $\omega > 0$ and all 1,000 truncated weights $\lambda_k \ge -10^{-10}$, checked numerically; a proposal with a negative weight raises `FloatingPointError` in `sigma2`, which `_negll` turns into the penalty value 1e10 (a hard, non-differentiable wall for L-BFGS-B — the Nelder–Mead fallback handles stalls). Davidson's covariance-stationarity condition amp < 1 is **not** part of the flag: amp > 1 (explosive hyperbolic memory) is admissible as long as the weights are non-negative.
12 18
13 −## 7. Implementation / why not scored
14 −Not in arch 8.0.0 or rugarch 1.5-6; no authoritative cross-check → `unsupported` (D-11).
19 +## 4. Nesting and relations
20 +- amp = 1: FIGARCH(1,d,1) exactly (same truncation; the identity is tested, §7); `figarch11` (arch) is the registry twin.
21 +- amp → 0: $\lambda(L) = (\phi-\beta)L/(1-\beta L)$, i.e. GARCH(1,1) with $\alpha = \phi - \beta$ (reached only in the limit since amp = e^θ).
22 +- d → 0: GARCH(1,1) for any amp (same reduction).
23 +- amp < 1: covariance-stationary hyperbolic memory (finite unconditional variance $\frac{\omega}{1-\beta}\big/\big(1 - \sum_k\lambda_k\big)$ in the truncated representation); amp > 1: explosive. `fiaparch11` shares the amp = 1 weights with a power/asymmetry transform; `fiegarch11` is the log-variance analogue.
15 24
16 −## 8–9. Limitations / footprint
17 −Not applicable.
25 +## 5. Estimation
26 +Shared custom MLE (`CustomModel.fit`): L-BFGS-B (maxiter 2000, ftol 1e-10, gtol 1e-6) from up to three starts (ω, d, φ, β, amp) ∈ {(0.1v, 0.4, 0.2, 0.5, 1.0), (0.05v, 0.6, 0.1, 0.4, 0.9), (0.2v, 0.3, 0.3, 0.6, 1.1)}, v = sample variance of the demeaned window; μ 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). Backcast $s_0$ = exponentially weighted mean (75 lags, 0.94) of the first squared demeaned returns. Each likelihood evaluation recomputes the 1,000 weights (O(1000)) and the O(T × 1000) convolution. Point estimates only.
27 +
28 +## 6. Forecasting
29 +`HYGARCH11.step_forecast` (method `analytic`): the ARCH(∞) recursion iterated forward with future squared innovations replaced by their forecasts, exactly as arch's `FIGARCH._analytic_forecast`:
30 +$$\hat\sigma^2_{t+k|t} = \frac{\omega}{1-\beta} + \sum_{i=1}^{1000}\lambda_i\,\widetilde{\varepsilon^2}_{t+k-i},\qquad \widetilde{\varepsilon^2}_s = \varepsilon_s^2\ (s \le t),\quad = \hat\sigma^2_{s|t}\ (s > t),$$
31 +floor 1e-12; exact under $E z^2 = 1$. Lags older than the window are padded with $\sigma_0^2$ (the first in-sample variance; this only matters for windows shorter than 1,000 days, where it differs from the backcast used in-sample). Cumulative h-day variance = sum of the first h steps.
32 +
33 +## 7. Implementation and verification
34 +- `src/wp46/models/extensions.py::HYGARCH11`, `figarch_weights`, `frac_diff_coefs`, numba `rec_archinf`; dispatched through `EXTENSIONS`.
35 +- Tests (`tests/unit/test_extensions.py`): `test_frac_diff_coefficients` (binomial coefficients of $(1-L)^{0.4}$; $\lambda_k = -\pi_k$ when φ = β = 0); **`test_hygarch_amp1_matches_arch_figarch_likelihood`** — the only external identity in the extension set: with amp = 1 and arch's FIGARCH-t optimum (same backcast), our log-likelihood equals arch's within **5.0** units, and the HYGARCH fit attains at least arch's FIGARCH log-likelihood − 1.0 (nesting); `test_no_lookahead_extensions` (5-step forecast unchanged when post-window returns are scaled ×5).
36 +- **No external cross-check of amp ≠ 1** (HYGARCH is not in arch 8.0.0 or rugarch 1.5-6), no simulation-recovery test; the ±5.0 tolerance of the identity test is loose for a claimed "exact re-implementation" (`_discrepancies.md`, E-01). CLAUDE.md rule 6 is partially met (identity at the FIGARCH point only) — hence `extension` status. The arch-vs-rugarch FIGARCH gap of −1.47 (D-14) carries over to this implementation.
37 +
38 +## 8. Known limitations / failure modes
39 +Post-registration, exploratory. **Identification of amp:** amp and the truncation interact — the discarded tail mass $\sum_{k>1000}\lambda_k$ (of order $1000^{-d}$) is observationally similar to amp < 1, and amp, d and $\omega/(1-\beta)$ trade off within a 1,000-day window (every in-sample variance already uses the backcast for its oldest lags); expect amp estimates near 1 with flat likelihoods. The positivity wall makes the likelihood discontinuous at the boundary; d ∈ (0,1) and φ, β ∈ (0,1) exclude the GARCH/IGARCH limits; no covariance-stationarity flag (amp > 1 fits are `ok`); long-horizon forecasts grow slowly without bound when amp ≥ 1; ω is small and poorly identified (as for `figarch11`).
40 +
41 +## 9. Computational footprint
42 +O(T × 1000) per likelihood evaluation plus the O(1000) weight construction, over six to seven parameters: qualitatively **10–30× slower than GARCH(1,1)** (same order as arch's FIGARCH, which is the heaviest analytic Tier A model); analytic forecasts O(22 × 1000). Not timed in the pilot.
18 43
19 44 ## 10. Literature expectations
20 −`davidson2004moment` introduced it for Asian-crisis exchange rates; no large-scale forecasting evidence in the matrix. The FIGARCH/GARCH end points are scored (`figarch11`, `garch11`).
45 +`davidson2004moment` introduced HYGARCH to reconcile hyperbolic memory with finite variance (Asian-crisis exchange rates); `baillie1996fractionally`/`ding1996modeling` document hyperbolic autocorrelation decay; `lamoureux1990persistence`/`hillebrand2005neglecting` warn that structural breaks mimic long memory; `hansen2005forecast` include FIGARCH among models that do not beat GARCH(1,1) at h = 1. Under H4 the expectation is no gain at h = 1 and, at most, a small gain at h = 22 that is unlikely to exceed `figarch11`'s; under H5 the model should show the highest failure/inadmissibility rate of the fractional block.
modified model_cards/realegarch11.md +35 −12
@@ -1,20 +1,43 @@
1 −# Model card — `realegarch11` (Realized EGARCH) — UNSUPPORTED, not scored
1 +# Model card — `realegarch11` (Realized EGARCH(1,1), Hansen–Huang) — post-registration extension
2 2
3 3 ## 1. Identity
4 −- **model_id:** `realegarch11` · **family:** realized (Tier B) · **tier:** B · **status:** unsupported · **impl:** none · **distributions:** [] (registry note: "not implemented in this version (deferred)")
5 −- **Seminal citation:** registry gives `hansen2016realized`, **which is not a key of `paper/references.bib`**; the verified key is `hansen2016exponential` (Hansen & Huang 2016, JBES 34(2)) — see `_discrepancies.md`. Related: `hansen2012realized` (Realized GARCH, scored as `realgarch11`), `nelson1991conditional`.
4 +- **model_id:** `realegarch11` · **family:** realized (Tier B) · **tier:** B · **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::RealEGARCH11`)
5 +- **Label:** Realized EGARCH(1,1) · **distributions:** normal, t (for $z_t$; the measurement error $u_t$ is always Gaussian) · **input:** lagged/contemporaneous realized measure `rv5ss_on` (percent², `forecast_protocol.yaml: tier_b_input`)
6 +- **Seminal citation:** `hansen2016exponential` (the registry key was corrected from the non-existent `hansen2016realized`; `_discrepancies.md` A.1 is resolved for this entry)
7 +- **Other references:** `hansen2012realized` (Realized GARCH, scored as `realgarch11`), `hansen2014realized` (Realized Beta GARCH), `shephard2010realising` (HEAVY), `engle2002new` (GARCH-X), `nelson1991conditional` (EGARCH); literature-matrix caveat #7 (joint likelihood with the measurement equation → not comparable with return-only models). This card replaces the former unsupported stub.
6 8
7 −## 2. Definition (literature)
8 −$r_t = \mu + \sigma_t z_t$; $\log\sigma_t^2 = \omega + \beta\log\sigma_{t-1}^2 + \tau(z_{t-1}) + \gamma\,u_{t-1}$; measurement $\log x_t = \xi + \varphi\log\sigma_t^2 + \delta(z_t) + u_t$, with leverage functions $\tau(\cdot), \delta(\cdot)$ (quadratic in z) and possibly several realized measures; the measurement error $u_t$ feeds back into the log-variance.
9 +## 2. Definition (as coded)
10 +With $x_t$ the realized measure observed at the **end** of day t:
11 +$$r_t = \mu + \sigma_t z_t,\qquad \log\sigma_t^2 = \omega + \beta\log\sigma_{t-1}^2 + \tau_1 z_{t-1} + \tau_2(z_{t-1}^2 - 1) + \gamma\,u_{t-1},$$
12 +$$\log x_t = \xi + \varphi\log\sigma_t^2 + \delta_1 z_t + \delta_2(z_t^2 - 1) + u_t,\qquad u_t \sim \text{N}(0, \sigma_u^2),$$
13 +i.e. `hansen2016exponential` with one realized measure and quadratic leverage functions $\tau(z) = \tau_1 z + \tau_2(z^2-1)$, $\delta(z) = \delta_1 z + \delta_2(z^2-1)$ (both mean-zero). The **measurement error $u_{t-1}$ enters the volatility equation directly** (in `realgarch11` it is $\log x_{t-1}$ that enters): $u_{t-1} = \log x_{t-1} - \xi - \varphi\log\sigma_{t-1}^2 - \delta(z_{t-1})$ is $\mathcal F_{t-1}$-measurable, so there is no look-ahead. Recursion `rec_realegarch`: $\log\sigma_0^2 = \log s_0$ (backcast), $\log\sigma_t^2$ clipped to [−50, 50], $x_t$ floored at 1e-8 before the log. Joint log-likelihood $\sum_t[\log f(z_t) - \tfrac12\log\sigma_t^2] + \sum_t[-\tfrac12\log(2\pi\sigma_u^2) - u_t^2/(2\sigma_u^2)]$ (`extra_loglik`).
9 14
10 −## 3–6. Parameter space, estimation, forecasting
11 −Not implemented in WP46.
15 +## 3. Parameter space and admissibility
16 +- Parameters: `mu, omega, beta, tau1, tau2, gamma, xi, phi, delta1, delta2, log_sigma_u` (+ `nu` for t).
17 +- Reparameterisation: all free except $\beta = \tanh(\theta_1) \in (-1, 1)$; $\sigma_u = e^{\texttt{log\_sigma\_u}} > 0$.
18 +- Admissibility flag: $|\beta| < 1$ (stationarity of $\log\sigma^2$ given i.i.d. $u_t$ and $z_t$; `hansen2016exponential`). Holds by construction. No constraint on φ (≈ 1 in the literature) or on the leverage coefficients.
12 19
13 −## 7. Implementation / why not scored
14 −No implementation in arch 8.0.0 or rugarch 1.5-6; deferred (registry, D-11). The log-linear Realized GARCH is the scored representative of the family.
20 +## 4. Nesting and relations
21 +- `realgarch11` (log-linear Realized GARCH) is not nested: substituting the measurement equation into Realized GARCH's $\gamma\log x_{t-1}$ gives $\gamma[\xi + \varphi\log\sigma_{t-1}^2 + \delta(z_{t-1}) + u_{t-1}]$, so Realized GARCH imposes proportionality between the $\log\sigma^2$, leverage and $u$ loadings that Realized EGARCH frees (`hansen2016exponential`, their eq. for the "Realized GARCH as a special case" argument); persistence is β here vs $\beta + \varphi\gamma$ there.
22 +- γ = 0 removes the realized-measure feedback: an EGARCH-type model in $z_{t-1}$ and $z_{t-1}^2 - 1$ (quadratic rather than Nelson's $|z| - E|z|$) with a detached measurement equation — related to, but not identical to, `egarch11`.
23 +- Relatives: `heavy11`, `garchx_rv11`, `har_rv`/`loghar_rv` (Tier B, same realized measure).
15 24
16 −## 8–9. Limitations / footprint
17 −Not applicable.
25 +## 5. Estimation
26 +Shared custom MLE on the **joint** likelihood (`CustomModel.fit` with `extra_loglik`; `maxiter` 3000): L-BFGS-B (ftol 1e-10, gtol 1e-6) from up to three starts (ω, β, τ₁, τ₂, γ, ξ, φ, δ₁, δ₂, log σ_u) ∈ {(0.02ℓ, 0.98, −0.03, 0.03, 0.1, 0, 1.0, −0.05, 0.05, log 0.4), (0.05ℓ, 0.95, −0.05, 0.05, 0.2, 0, 0.9, −0.05, 0.05, log 0.5), (0.01ℓ, 0.99, −0.02, 0.02, 0.05, 0, 1.0, −0.02, 0.02, log 0.35)}, ℓ = mean of $\log x_t$ over the window; μ 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. The **A-05 floor is not applied** (`needs_rm = True`: the joint likelihood is not comparable with GARCH(1,1)). Backcast $s_0$ = exponentially weighted mean (75 lags, 0.94) of the first squared demeaned returns. Point estimates only.
27 +
28 +## 6. Forecasting
29 +`RealEGARCH11.step_forecast` (method `simulation`): $\log\hat\sigma^2_{t+1|t} = \omega + \beta\log\sigma_t^2 + \tau(z_t) + \gamma u_t$ is deterministic ($u_t$ is known once $x_t$ is observed); for k ≥ 2, 2,000 paths with $z \sim$ fitted law (`rvs`, seeded) and $u \sim \text{N}(0, \sigma_u^2)$ (`rng.standard_normal`), path update of $\log\sigma^2$ **clipped to [−30, 30]** (the in-sample recursion clips at ±50, as in `realgarch11`), forecast = cross-path mean of $\exp(\log\sigma^2_{t+k})$. Cumulative h-day variance = sum of the first h steps. The realized measure itself is not forecast (not needed: only $u$ enters, and future $u$ are i.i.d. Gaussian).
30 +
31 +## 7. Implementation and verification
32 +- `src/wp46/models/extensions.py::RealEGARCH11`, numba `rec_realegarch`; `fit()` stores the realized measure in `self._x` for the starting values; `sigma2()` stores $u_t$ in `self._u` for `extra_loglik`. Dispatched through `EXTENSIONS` with `needs_rm`.
33 +- Tests (`tests/unit/test_extensions.py::test_betategarch_fiegarch_realegarch_fit_and_forecast`): fit (normal) on the GARCH-t fixture with a synthetic realized measure $(r-\bar r)^2\cdot\text{lognormal}(0, 0.3) + 0.05$ converges; 22-step forecasts positive, finite and seed-reproducible.
34 +- **No external-package cross-check** (Realized EGARCH is not in arch 8.0.0; rugarch 1.5-6 has `realGARCH` only, which did not converge on the fixture even for `realgarch11`), 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 — hence `extension` status.
35 +
36 +## 8. Known limitations / failure modes
37 +Post-registration, exploratory. Eleven parameters in a 1,000-day window (ξ, φ and ω are weakly separately identified when φ ≈ 1; δ₂/τ₂ trade off with σ_u); Gaussian measurement error by construction; single realized measure (the paper allows several); clipping of $\log\sigma^2$ at ±50 in-sample and ±30 in the simulation; in-sample log-likelihood includes the measurement equation and cannot be ranked against Tier A models; a bad realized measure (zeros, floor 1e-8) feeds a large $u$ straight into next day's variance through γ. Failures are recorded as failures (rule 5).
38 +
39 +## 9. Computational footprint
40 +One O(T) numba recursion per likelihood evaluation over 11–12 parameters (more gradient evaluations than `realgarch11`), one 2,000 × 22 vectorised simulation per origin; qualitatively a few times `garch11_custom`, well below the fractional extensions. Not timed in the pilot.
18 41
19 42 ## 10. Literature expectations
20 −`hansen2016exponential` report improvements over Realized GARCH in-sample and in forecasting on US equities; no large cross-asset benchmark in the matrix.
43 +`hansen2016exponential` report better in-sample fit and forecasting than Realized GARCH on US equities, attributing the gain to the free loading of the measurement error and to the richer leverage function. Under H3 (realized information) Realized EGARCH is expected to match or beat `realgarch11`/`heavy11` at h = 1 and to beat `garch11` on instruments with a clean realized measure (index futures, large caps), with smaller gains at h = 22 and for instruments with noisy overnight-adjusted measures; under H6 the realized models should gain most in stressed regimes. No large cross-asset benchmark of Realized EGARCH is in the literature matrix.
deleted model_cards/stgarch.md +0 −20
@@ -1,20 +0,0 @@
1 −# Model card — `stgarch` (smooth-transition GARCH) — UNSUPPORTED, not scored
2 −
3 −## 1. Identity
4 −- **model_id:** `stgarch` · **family:** regime-switching · **tier:** A · **status:** unsupported · **impl:** none · **distributions:** [] (registry note: "not implemented (no vetted library; deferred)")
5 −- **Seminal citation:** registry gives `gonzalez1998smooth`, **which is not a key of `paper/references.bib`**; the verified key is `gonzalezrivera1998smooth` (González-Rivera 1998) — see `_discrepancies.md`. Related: `hagerud1997smooth` (ST-ARCH), `haas2004new` (MS-GARCH, the discrete-regime model that is scored).
6 −
7 −## 2. Definition (literature)
8 −$\sigma_t^2 = \omega + \alpha_1\varepsilon_{t-1}^2 + \alpha_2\varepsilon_{t-1}^2\,F(\varepsilon_{t-1}; \gamma, c) + \beta\sigma_{t-1}^2$ with a logistic transition $F(x) = [1 + \exp(-\gamma(x - c))]^{-1}$ (other transition functions exist, e.g. exponential); GJR is the limit γ → ∞, c = 0.
9 −
10 −## 3–6. Parameter space, estimation, forecasting
11 −Not implemented. Multi-step forecasts would need numerical integration or simulation of the transition.
12 −
13 −## 7. Implementation / why not scored
14 −Not in arch 8.0.0 or rugarch 1.5-6; no authoritative cross-check → `unsupported` (D-11), deferred.
15 −
16 −## 8–9. Limitations / footprint
17 −Not applicable.
18 −
19 −## 10. Literature expectations
20 −`gonzalezrivera1998smooth` and `hagerud1997smooth` document smooth asymmetry; the matrix lists several ST forms and no large-scale forecasting benchmark; `msgarch2` covers the regime block in WP46.
added model_cards/stgarch11.md +42 −0
@@ -0,0 +1,42 @@
1 +# Model card — `stgarch11` (logistic smooth-transition GARCH(1,1)) — post-registration extension
2 +
3 +## 1. Identity
4 +- **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`)
5 +- **Label:** Smooth-transition GARCH (logistic) · **distributions:** normal, t (registry `dists`; the class also accepts ged/skewt but those pairs are not scored)
6 +- **Seminal citation:** `gonzalezrivera1998smooth`
7 +- **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 stub `stgarch.md` (the id changed to `stgarch11`).
8 +
9 +## 2. Definition (as coded)
10 +$$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 .$$
11 +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`).
12 +
13 +## 3. Parameter space and admissibility
14 +- Parameters: `mu, omega, alpha1, alpha2, gamma, beta` (+ `nu` for t).
15 +- 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}$.
16 +- 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$.
17 +- 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).
18 +
19 +## 4. Nesting and relations
20 +- $\alpha_2 = 0$: GARCH(1,1) ($\omega, \alpha_1, \beta$); γ is then unidentified (nuisance parameter absent under the null).
21 +- $\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) — `gjr11` is the limit, not a special case.
22 +- Relatives in the registry: `msgarch2` (discrete, latent regimes instead of a smooth observed-shock transition), `nagarch11`/`qgarch11` (other smooth asymmetric news-impact curves), `egarch11`.
23 +
24 +## 5. Estimation
25 +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.
26 +
27 +## 6. Forecasting
28 +`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).
29 +
30 +## 7. Implementation and verification
31 +- `src/wp46/models/extensions.py::STGARCH11`, numba `rec_stgarch`; dispatched by `rolling.make_model` through `EXTENSIONS`.
32 +- Tests (`tests/unit/test_extensions.py`): `test_fiaparch_nests_figarch_and_stgarch_nests_garch` (fit on the simulated GARCH-t fixture `R`: converged, admissible, log-likelihood ≥ `GARCH11` custom − 1.0), `test_no_lookahead_extensions` (5-step forecast from the first 2,000 observations unchanged when later returns are scaled ×5).
33 +- **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 the `extension` status and the separate reporting.
34 +
35 +## 8. Known limitations / failure modes
36 +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.
37 +
38 +## 9. Computational footprint
39 +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.
40 +
41 +## 10. Literature expectations
42 +`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.
added paper/figures/fig_genealogy.pdf +0 −0

Binary file not shown.

added paper/tables/tab_encyclopedia.tex +118 −0
@@ -0,0 +1,118 @@
1 +% Generated by scripts/make_encyclopedia.py from results/manifests/garch_genealogy.yaml -- do not edit by hand.
2 +{\footnotesize\setlength{\tabcolsep}{3pt}\renewcommand{\arraystretch}{1.05}
3 +\begin{longtable}{@{}>{\raggedright\arraybackslash}p{2.15cm}>{\raggedright\arraybackslash}p{0.75cm}>{\raggedright\arraybackslash}p{2.0cm}>{\raggedright\arraybackslash}p{6.25cm}>{\raggedright\arraybackslash}p{2.85cm}>{\raggedright\arraybackslash}p{1.45cm}@{}}
4 +\caption{Encyclopedia of the ARCH/GARCH family and its closest relatives, 1982--2026.}\label{tab:encyclopedia}\\
5 +\toprule
6 +Model & Year & Reference & Variance equation & Adds & Status \\
7 +\midrule
8 +\endfirsthead
9 +\multicolumn{6}{l}{\footnotesize\textit{Table~\ref{tab:encyclopedia} (continued)}}\\
10 +\toprule
11 +Model & Year & Reference & Variance equation & Adds & Status \\
12 +\midrule
13 +\endhead
14 +\midrule
15 +\multicolumn{6}{r}{\footnotesize\textit{continued on next page}}\\
16 +\endfoot
17 +\bottomrule
18 +\addlinespace[2pt]
19 +\multicolumn{6}{@{}p{\dimexpr\textwidth-2pt\relax}@{}}{\scriptsize \emph{Notes.} One line per materially distinct architecture; orders and innovation laws are not separate entries. Notation: $r_t=\mu+\varepsilon_t$, $\varepsilon_t=\sigma_tz_t$, $z_t\sim$ i.i.d.\ $D(0,1)$; $x_t$ is a realized measure, $H_t$ a conditional covariance matrix, $S_t$ a Markov chain, $L$ the lag operator. Status: \emph{scored} = in the binding registry (or the Tier~C set) and evaluated; \emph{extension} = being implemented, registry status \emph{unsupported}; \emph{unsupported} = no feasible implementation at the benchmark cadence; \emph{out of scope} = not in the registry (reason in \texttt{results/manifests/garch\_genealogy.yaml}). Registry identifiers in brackets. Year = year of the seminal reference as verified (EWMA: 4th edition of the Technical Document, method of 1994; RiskMetrics 2006: 2007 document, verified SSRN record 2009; AVGARCH and SV: Taylor's 1986 book, verified record = 2008 edition). Seminal references absent from the bibliography (verified by DOI on 2026-11-09, listed in \texttt{results/metrics/references\_candidates\_genealogy.json}): (1) log-GARCH: Geweke, J. (1986), Comment [on Engle and Bollerslev], Econometric Reviews 5(1), 57--61; Pantula, S. G. (1986), Comment, Econometric Reviews 5(1), 71--74. (2) AGARCH (Engle 1990): Engle, R. F. (1990), Discussion: Stock volatility and the crash of '87, Review of Financial Studies 3(1), 103--106. (3) Family GARCH (Hentschel): Hentschel, L. (1995), All in the family: Nesting symmetric and asymmetric GARCH models, Journal of Financial Economics 39(1), 71--104. (4) Augmented GARCH (Duan): Duan, J.-C. (1997), Augmented GARCH(p,q) process and its diffusion limit, Journal of Econometrics 79(1), 97--127. (5) VEC-GARCH (Bollerslev--Engle--Wooldridge): Bollerslev, T., Engle, R. F. and Wooldridge, J. M. (1988), A capital asset pricing model with time-varying covariances, Journal of Political Economy 96(1), 116--131. (6) Factor-ARCH (Engle--Ng--Rothschild): Engle, R. F., Ng, V. K. and Rothschild, M. (1990), Asset pricing with a factor-ARCH covariance structure: Empirical estimates for Treasury bills, Journal of Econometrics 45(1--2), 213--237. (7) DECO (dynamic equicorrelation): Engle, R. F. and Kelly, B. (2012), Dynamic equicorrelation, Journal of Business \& Economic Statistics 30(2), 212--228. (8) Periodic GARCH: Bollerslev, T. and Ghysels, E. (1996), Periodic autoregressive conditional heteroscedasticity, Journal of Business \& Economic Statistics 14(2), 139--151. (9) GARCH-jump (ARJI, Maheu--McCurdy): Maheu, J. M. and McCurdy, T. H. (2004), News arrival, jump dynamics, and volatility components for individual stock returns, Journal of Finance 59(2), 755--793.}\\
20 +\endlastfoot
21 +\midrule
22 +\multicolumn{6}{l}{\textit{Classical ARCH/GARCH and filters}}\\
23 +\addlinespace[1pt]
24 +ARCH($q$) {\scriptsize[\texttt{arch5}]} & 1982 & \citet{engle1982autoregressive} & $\sigma_t^2=\omega+\sum_{i=1}^{q}\alpha_i\varepsilon_{t-i}^2$ & conditional variance as an autoregression in squared shocks & scored \\
25 +GARCH($p,q$) {\scriptsize[\texttt{garch11}]} & 1986 & \citet{bollerslev1986generalized} & $\sigma_t^2=\omega+\sum_{i=1}^{p}\alpha_i\varepsilon_{t-i}^2+\sum_{j=1}^{q}\beta_j\sigma_{t-j}^2$ & lagged conditional variances: parsimonious ARMA-type dynamics (ARCH($\infty$)) & scored \\
26 +IGARCH {\scriptsize[\texttt{igarch11}]} & 1986 & \citet{engle1986modelling} & $\sigma_t^2=\omega+\sum_{i}\alpha_i\varepsilon_{t-i}^2+\sum_{j}\beta_j\sigma_{t-j}^2$ with $\sum_i\alpha_i+\sum_j\beta_j=1$ & unit persistence: shocks to the variance never die out & scored \\
27 +log-GARCH & 1986 & see note~1 & $\log\sigma_t^2=\omega+\sum_{i=1}^{p}\alpha_i\log\varepsilon_{t-i}^2+\sum_{j=1}^{q}\beta_j\log\sigma_{t-j}^2$ & multiplicative (log-linear) variance dynamics; no positivity constraints; $\log\varepsilon_t^2$ is an ARMA & out of scope \\
28 +ARCH-M / GARCH-M {\scriptsize[\texttt{garchm11}]} & 1987 & \citet{engle1987estimating} & $r_t=\mu+\delta\,g(\sigma_t^2)+\varepsilon_t$ with $g(\sigma_t^2)\in\{\sigma_t^2,\sigma_t,\log\sigma_t^2\}$ \newline $\sigma_t^2$ as GARCH & conditional variance enters the conditional mean (time-varying risk premium) & scored \\
29 +EWMA / RiskMetrics (1994) {\scriptsize[\texttt{ewma094}]} & 1996 & \citet{jpmorgan1996riskmetrics} & $\sigma_t^2=(1-\lambda)\varepsilon_{t-1}^2+\lambda\sigma_{t-1}^2$, $\lambda=0.94$ (daily) & zero-intercept IGARCH(1,1) with a fixed decay; no estimation & scored \\
30 +RiskMetrics 2006 {\scriptsize[\texttt{rm2006}]} & 2007 & \citet{zumbach2009riskmetrics} & $\sigma_t^2=\sum_{k=1}^{K}w_k\sigma_{k,t}^2$, $\sigma_{k,t}^2=\mu_k\sigma_{k,t-1}^2+(1-\mu_k)\varepsilon_{t-1}^2$, $\mu_k=e^{-1/\tau_k}$, $\tau_k=\tau_1\rho^{k-1}$, $w_k\propto1-\log\tau_k/\log\tau_0$ & mixture of EWMAs over geometrically spaced horizons with logarithmic weights (long-memory-like kernel, no estimation) & scored \\
31 +\midrule
32 +\multicolumn{6}{l}{\textit{Asymmetric (news-impact) GARCH}}\\
33 +\addlinespace[1pt]
34 +AGARCH (Engle 1990) & 1990 & see note~2 & $\sigma_t^2=\omega+\alpha(\varepsilon_{t-1}-\theta)^2+\beta\sigma_{t-1}^2$ & additive shift of the news-impact curve in return units (asymmetric GARCH) & out of scope \\
35 +EGARCH {\scriptsize[\texttt{egarch11}]} & 1991 & \citet{nelson1991conditional} & $\log\sigma_t^2=\omega+\sum_{j}\beta_j\log\sigma_{t-j}^2+\sum_{i}\alpha_i\,g(z_{t-i})$, $g(z)=\theta z+\gamma(|z|-\E|z|)$ & log variance driven by sign and size of the standardized shock; no positivity constraints & scored \\
36 +GJR-GARCH {\scriptsize[\texttt{gjr11}]} & 1993 & \citet{glosten1993relation} & $\sigma_t^2=\omega+\alpha\varepsilon_{t-1}^2+\gamma\varepsilon_{t-1}^2\ind{\varepsilon_{t-1}<0}+\beta\sigma_{t-1}^2$ & indicator on negative shocks in the variance (leverage effect, power 2) & scored \\
37 +NAGARCH (Engle--Ng) {\scriptsize[\texttt{nagarch11}]} & 1993 & \citet{engle1993measuring} & $\sigma_t^2=\omega+\alpha(\varepsilon_{t-1}-\theta\sigma_{t-1})^2+\beta\sigma_{t-1}^2$ & nonlinear asymmetric GARCH: news-impact curve shifted by $\theta\sigma_{t-1}$ (scale-free); sign/size bias tests & scored \\
38 +VGARCH (Engle--Ng) & 1993 & \citet{engle1993measuring} & $\sigma_t^2=\omega+\alpha(z_{t-1}+\theta)^2+\beta\sigma_{t-1}^2$, $z_{t-1}=\varepsilon_{t-1}/\sigma_{t-1}$ & news impact in standardized-shock units, independent of the variance level & out of scope \\
39 +TGARCH (Zakoïan) {\scriptsize[\texttt{tarch11}]} & 1994 & \citet{zakoian1994threshold} & $\sigma_t=\omega+\alpha^{+}\varepsilon_{t-1}^{+}-\alpha^{-}\varepsilon_{t-1}^{-}+\beta\sigma_{t-1}$, $\varepsilon^{+}=\max(\varepsilon,0)$, $\varepsilon^{-}=\min(\varepsilon,0)$ & threshold on the conditional standard deviation (power 1) with separate slopes for positive and negative shocks & scored \\
40 +QGARCH (Sentana) {\scriptsize[\texttt{qgarch11}]} & 1995 & \citet{sentana1995quadratic} & $\sigma_t^2=\omega+\alpha\varepsilon_{t-1}^2+\psi\varepsilon_{t-1}+\beta\sigma_{t-1}^2$ & general quadratic form in lagged shocks; linear term gives a parabola-shifting asymmetry & scored \\
41 +\midrule
42 +\multicolumn{6}{l}{\textit{Power / absolute-value / Box--Cox}}\\
43 +\addlinespace[1pt]
44 +AVGARCH / Taylor--Schwert {\scriptsize[\texttt{avgarch11}]} & 1986 & \citet{taylor2008modelling} & $\sigma_t=\omega+\alpha|\varepsilon_{t-1}|+\beta\sigma_{t-1}$ & dynamics in the conditional standard deviation (absolute-value GARCH) & scored \\
45 +NARCH / NGARCH (Higgins--Bera) & 1992 & \citet{higgins1992class} & $\sigma_t^{\delta}=\omega+\sum_{i}\alpha_i|\varepsilon_{t-i}|^{\delta}+\sum_{j}\beta_j\sigma_{t-j}^{\delta}$ (power-GARCH form \newline Higgins--Bera's original is the Box--Cox ARCH case) & estimated power transformation of the ARCH recursion (nonlinear ARCH) & out of scope \\
46 +APARCH {\scriptsize[\texttt{aparch11}]} & 1993 & \citet{ding1993long} & $\sigma_t^{\delta}=\omega+\sum_{i}\alpha_i(|\varepsilon_{t-i}|-\gamma_i\varepsilon_{t-i})^{\delta}+\sum_{j}\beta_j\sigma_{t-j}^{\delta}$ & estimated power $\delta$ and asymmetry $\gamma$; nests GARCH, AVGARCH, GJR, TGARCH (Zakoïan), NGARCH & scored \\
47 +Family GARCH (Hentschel) & 1995 & see note~3 & $\dfrac{\sigma_t^{\lambda}-1}{\lambda}=\omega+\alpha\sigma_{t-1}^{\lambda}f^{\nu}(z_{t-1})+\beta\dfrac{\sigma_{t-1}^{\lambda}-1}{\lambda}$, $f(z)=|z-b|-c(z-b)$ & Box--Cox transform of $\sigma_t$ with a shifted and rotated absolute-value news-impact function: one nest for the asymmetric family & out of scope \\
48 +Augmented GARCH (Duan) & 1997 & see note~4 & $\phi_t=\omega+\xi_{1,t-1}\phi_{t-1}+\xi_{2,t-1}$, $\sigma_t^2=|\lambda\phi_t-\lambda+1|^{1/\lambda}$ ($\lambda\ne0$), $\xi_{1,t}=\alpha_1+\alpha_2|z_t-c|^{\delta}+\alpha_3\max(0,c-z_t)^{\delta}$, $\xi_{2,t}=\alpha_4\dfrac{|z_t-c|^{\delta}-1}{\delta}+\alpha_5\dfrac{\max(0,c-z_t)^{\delta}-1}{\delta}$ ((1,1) case) & Box--Cox transform of the variance driven by Box--Cox functions of the shock; nests GARCH, EGARCH, GJR, TGARCH, APARCH, NAGARCH, VGARCH and the Hentschel family; diffusion limit & out of scope \\
49 +\midrule
50 +\multicolumn{6}{l}{\textit{Fractional persistence}}\\
51 +\addlinespace[1pt]
52 +FIEGARCH {\scriptsize[\texttt{fiegarch11}]} & 1996 & \citet{bollerslev1996modeling} & $\log\sigma_t^2=\omega+\phi(L)^{-1}(1-L)^{-d}\,[1+\psi(L)]\,g(z_{t-1})$, $g(z)=\theta z+\gamma(|z|-\E|z|)$ & fractional integration in the log variance with EGARCH asymmetry & extension \\
53 +FIGARCH {\scriptsize[\texttt{figarch11}]} & 1996 & \citet{baillie1996fractionally} & $\sigma_t^2=\omega+\big[1-\beta L-(1-\phi L)(1-L)^{d}\big]\varepsilon_t^2+\beta\sigma_{t-1}^2$ (ARCH($\infty$) weights truncated in practice) & fractional differencing: hyperbolic decay of shocks to the variance between GARCH ($d=0$) and IGARCH ($d=1$) & scored \\
54 +FIAPARCH {\scriptsize[\texttt{fiaparch11}]} & 1998 & \citet{tse1998conditional} & $\sigma_t^{\delta}=\omega+\big\{1-[1-\beta(L)]^{-1}\phi(L)(1-L)^{d}\big\}(|\varepsilon_t|-\gamma\varepsilon_t)^{\delta}$ & fractional persistence combined with the APARCH power and asymmetry & extension \\
55 +HYGARCH {\scriptsize[\texttt{hygarch11}]} & 2004 & \citet{davidson2004moment} & $\sigma_t^2=\omega+\big\{1-[1-\beta(L)]^{-1}\phi(L)\big[1+\tau\big((1-L)^{d}-1\big)\big]\big\}\varepsilon_t^2$ & amplitude parameter $\tau$ interpolating GARCH ($\tau=0$) and FIGARCH ($\tau=1$): hyperbolic GARCH & extension \\
56 +\midrule
57 +\multicolumn{6}{l}{\textit{Component and multiplicative}}\\
58 +\addlinespace[1pt]
59 +Long-memory ARCH by aggregation (Ding--Granger) & 1996 & \citet{ding1996modeling} & $\sigma_t^2=\sum_{k=1}^{N}w_k\sigma_{k,t}^2$, $\sigma_{k,t}^2=(1-\alpha_k)\varepsilon_{t-1}^2+\alpha_k\sigma_{k,t-1}^2$, $\sum_k w_k=1$ & aggregation of EWMA-type components with heterogeneous decay rates produces hyperbolic autocorrelations of $\varepsilon_t^2$ & out of scope \\
60 +Asymmetric component GARCH & 1999 & \citet{engle1999long} & $\sigma_t^2-q_t=\alpha(\varepsilon_{t-1}^2-q_{t-1})+\gamma(\varepsilon_{t-1}^2-q_{t-1})\ind{\varepsilon_{t-1}<0}+\beta(\sigma_{t-1}^2-q_{t-1})$, $q_t$ as in CGARCH & leverage (GJR-type indicator) in the transitory component & out of scope \\
61 +Component GARCH (Engle--Lee) {\scriptsize[\texttt{cgarch11}]} & 1999 & \citet{engle1999long} & $\sigma_t^2=q_t+\alpha(\varepsilon_{t-1}^2-q_{t-1})+\beta(\sigma_{t-1}^2-q_{t-1})$, $q_t=\omega+\rho q_{t-1}+\phi(\varepsilon_{t-1}^2-\sigma_{t-1}^2)$ & permanent (slowly mean-reverting) and transitory variance components & scored \\
62 +Spline-GARCH & 2008 & \citet{engle2008spline} & $\sigma_t^2=\tau_t g_t$, $g_t=(1-\alpha-\beta)+\alpha\dfrac{\varepsilon_{t-1}^2}{\tau_{t-1}}+\beta g_{t-1}$, $\tau_t=c\exp\!\big(w_0t+\sum_{k=1}^{K}w_k\,((t-t_{k-1})_+)^2\big)$ & multiplicative low-frequency component as a deterministic exponential quadratic spline of time & out of scope \\
63 +Multiplicative component GARCH (intraday) & 2011 & \citet{engle2011forecasting} & $\sigma_{t,i}^2=h_t\,s_i\,q_{t,i}$, $q_{t,i}=\omega+\alpha\dfrac{\varepsilon_{t,i-1}^2}{h_t s_{i-1}}+\beta q_{t,i-1}$ (day $t$, intraday bin $i$) & daily component $h_t$ $\times$ diurnal pattern $s_i$ $\times$ intraday GARCH $q_{t,i}$ & out of scope \\
64 +GARCH-MIDAS {\scriptsize[\texttt{garch\_midas}]} & 2013 & \citet{engle2013stock} & $\sigma_t^2=\tau_t g_t$, $g_t=(1-\alpha-\beta)+\alpha\dfrac{\varepsilon_{t-1}^2}{\tau_t}+\beta g_{t-1}$, $\log\tau_t=m+\theta\sum_{k=1}^{K}\varphi_k(w)X_{t-k}$ (MIDAS weights on a low-frequency series $X$) & long-run component driven by lagged low-frequency realized variance or macroeconomic variables through a MIDAS polynomial & extension \\
65 +\midrule
66 +\multicolumn{6}{l}{\textit{Regime switching and smooth transition}}\\
67 +\addlinespace[1pt]
68 +MS-ARCH (Cai) & 1994 & \citet{cai1994markov} & $\sigma_t^2=\omega_{S_t}+\sum_{i=1}^{q}\alpha_i\varepsilon_{t-i}^2$, $S_t\in\{1,2\}$ Markov (switching in the intercept) & regime-switching ARCH intercept (switching in the level of the variance) & out of scope \\
69 +SWARCH (Hamilton--Susmel) & 1994 & \citet{hamilton1994autoregressive} & $\varepsilon_t=\sqrt{g_{S_t}}\,u_t$, $u_t=\sigma_t z_t$, $\sigma_t^2=\omega+\sum_{i=1}^{q}\alpha_i u_{t-i}^2$ ($+\xi\,u_{t-1}^2\ind{u_{t-1}<0}$), $S_t$ a $K$-state Markov chain & Markov-switching scale factor on an ARCH process (ARCH only, to avoid path dependence) & out of scope \\
70 +MS-GARCH (Gray, collapsing) & 1996 & \citet{gray1996modeling} & $\sigma_t^2=\omega_{S_t}+\alpha_{S_t}\varepsilon_{t-1}^2+\beta_{S_t}\tilde\sigma_{t-1}^2$, $\tilde\sigma_{t-1}^2=\sum_k p_{k,t-1}(\mu_k^2+\sigma_{k,t-1}^2)-\big(\sum_k p_{k,t-1}\mu_k\big)^2$ & first tractable MS-GARCH: the lagged variance is collapsed across regimes with the regime probabilities (removes path dependence) & out of scope \\
71 +Smooth-transition ARCH (Hagerud) & 1997 & \citet{hagerud1997smooth} & $\sigma_t^2=\omega+\sum_{i=1}^{q}\big[\alpha_i+\gamma_iF(\varepsilon_{t-i})\big]\varepsilon_{t-i}^2$, $F$ logistic (LSTARCH) or exponential (ESTARCH) & smooth logistic/exponential transition between two ARCH regimes indexed by the lagged shock & out of scope \\
72 +Smooth-transition GARCH (González-Rivera) {\scriptsize[\texttt{stgarch}]} & 1998 & \citet{gonzalezrivera1998smooth} & $\sigma_t^2=\omega+\alpha\varepsilon_{t-1}^2+\beta\sigma_{t-1}^2+(\delta_0+\delta_1\varepsilon_{t-1}^2)\,F(\varepsilon_{t-1})$, $F(x)=[1+\exp(-\theta x)]^{-1}$ & smooth (logistic) version of the GJR indicator: the speed $\theta$ of the transition is estimated; GJR is the limit $\theta\to\infty$ & extension \\
73 +MS-GARCH (Klaassen) & 2002 & \citet{klaassen2002improving} & $\sigma_t^2=\omega_{S_t}+\alpha_{S_t}\varepsilon_{t-1}^2+\beta_{S_t}\,\E\!\big[\sigma_{S_{t-1},t-1}^2\,\big|\,\F_{t-1},S_t\big]$ & collapses the lagged variance conditional on the current regime; analytic multi-step forecasts & out of scope \\
74 +MS-GARCH (Haas--Mittnik--Paolella) {\scriptsize[\texttt{msgarch2}]} & 2004 & \citet{haas2004new} & $\sigma_{k,t}^2=\omega_k+\alpha_k\varepsilon_{t-1}^2+\beta_k\sigma_{k,t-1}^2$ for each regime $k$ \newline $r_t\,|\,S_t=k\sim D(\mu_k,\sigma_{k,t}^2)$ \newline $S_t$ Markov with $P=(p_{ij})$ & $K$ parallel GARCH recursions driven by the common shock; analytic likelihood (Hamilton filter), stationarity conditions and forecasts & scored \\
75 +Path-dependent MS-GARCH & 2010 & \citet{bauwens2010theory} & $\sigma_t^2=\omega_{S_t}+\alpha_{S_t}\varepsilon_{t-1}^2+\beta_{S_t}\sigma_{t-1}^2$, with $\sigma_{t-1}^2$ depending on the whole regime path $\{S_{t-1},S_{t-2},\dots\}$ & the literal regime-switching GARCH; likelihood integrates over $K^{t}$ paths (Bayesian MCMC, later EM/particle methods) & out of scope \\
76 +\midrule
77 +\multicolumn{6}{l}{\textit{Score-driven (GAS / DCS)}}\\
78 +\addlinespace[1pt]
79 +Beta-$t$-EGARCH (DCS) & 2008 & \citet{harvey2008beta} & $\log\sigma_t^2=\omega+\phi\log\sigma_{t-1}^2+\kappa u_{t-1}$, $u_t=\dfrac{(\nu+1)\varepsilon_t^2}{\nu\sigma_t^2+\varepsilon_t^2}-1$ ($u_t+1$ Beta-distributed) & log variance driven by the bounded Student-$t$ score; closed-form moments and multi-step forecasts & extension \\
80 +GAS / score-driven volatility {\scriptsize[\texttt{gas\_t11}]} & 2013 & \citet{creal2013generalized} & $f_t=\omega+\alpha s_{t-1}+\beta f_{t-1}$, $s_t=S_t\,\partial\log p(r_t\,|\,f_t)/\partial f_t$ \newline Student-$t$, $f_t=\sigma_t^2$: $s_t=\dfrac{\nu+3}{\nu}\Big[\dfrac{(\nu+1)\varepsilon_t^2}{(\nu-2)+\varepsilon_t^2/f_t}-f_t\Big]$ & the update is the scaled score of the conditional density: GARCH for the normal, outlier-robust (Beta-$t$-GARCH) for the Student-$t$ & scored \\
81 +\midrule
82 +\multicolumn{6}{l}{\textit{Realized-measure models and HAR}}\\
83 +\addlinespace[1pt]
84 +GARCH-X (realized regressor) {\scriptsize[\texttt{garchx\_rv11}]} & 2002 & \citet{engle2002new} & $\sigma_t^2=\omega+\alpha\varepsilon_{t-1}^2+\gamma x_{t-1}+\beta\sigma_{t-1}^2$ & lagged realized measure enters the GARCH variance additively & scored \\
85 +MEM (multiplicative error model) & 2002 & \citet{engle2002new} & $x_t=\mu_t\eta_t$, $\mu_t=\omega+\alpha x_{t-1}+\beta\mu_{t-1}$, $\eta_t\ge0$ i.i.d., $\E\eta_t=1$ & GARCH-type dynamics for a positive-valued series (realized variance, range, duration); ACD is the duration case & out of scope \\
86 +HAR-RV {\scriptsize[\texttt{har\_rv}]} & 2009 & \citet{corsi2009simple} & $x_{t+1}=\beta_0+\beta_d x_t+\beta_w\bar x_t^{(5)}+\beta_m\bar x_t^{(22)}+e_{t+1}$, $\bar x_t^{(n)}=n^{-1}\sum_{k=0}^{n-1}x_{t-k}$ & heterogeneous autoregression of realized variance on daily, weekly and monthly averages (approximate long memory by OLS) & scored \\
87 +HEAVY {\scriptsize[\texttt{heavy11}]} & 2010 & \citet{shephard2010realising} & $\sigma_t^2=\omega+\alpha x_{t-1}+\beta\sigma_{t-1}^2$ \newline $\mu_t=\E[x_t\,|\,\F_{t-1}]=\omega_R+\alpha_Rx_{t-1}+\beta_R\mu_{t-1}$ & the realized measure replaces the squared return in the return-variance equation; a second MEM equation forecasts the measure & scored \\
88 +Realized GARCH {\scriptsize[\texttt{realgarch11}]} & 2012 & \citet{hansen2012realized} & $\log\sigma_t^2=\omega+\beta\log\sigma_{t-1}^2+\gamma\log x_{t-1}$ \newline $\log x_t=\xi+\varphi\log\sigma_t^2+\tau_1z_t+\tau_2(z_t^2-1)+u_t$ & joint model of returns and the realized measure with a measurement equation and a leverage function $\tau(z)$ & scored \\
89 +HARQ (and HAR-CJ, HAR-RS) & 2016 & \citet{bollerslev2016exploiting} & $x_{t+1}=\beta_0+(\beta_d+\beta_q\,RQ_t^{1/2})x_t+\beta_w\bar x_t^{(5)}+\beta_m\bar x_t^{(22)}+e_{t+1}$ ($RQ_t$ = realized quarticity) & measurement-error-adjusted persistence; HAR-CJ splits continuous and jump variation, HAR-RS uses realized semivariances & out of scope \\
90 +Realized EGARCH {\scriptsize[\texttt{realegarch11}]} & 2016 & \citet{hansen2016exponential} & $\log\sigma_t^2=\omega+\beta\log\sigma_{t-1}^2+\tau(z_{t-1})+\gamma u_{t-1}$ \newline $\log x_t=\xi+\varphi\log\sigma_t^2+\delta(z_t)+u_t$ & EGARCH-type leverage from the return shock plus the measurement innovation $u_t$ in the variance; several realized measures at once & extension \\
91 +\midrule
92 +\multicolumn{6}{l}{\textit{Multivariate}}\\
93 +\addlinespace[1pt]
94 +VEC-GARCH (Bollerslev--Engle--Wooldridge) & 1988 & see note~5 & $\mathrm{vech}(H_t)=C+\sum_{i}A_i\,\mathrm{vech}(\varepsilon_{t-i}\varepsilon_{t-i}')+\sum_{j}B_j\,\mathrm{vech}(H_{t-j})$ (diagonal $A_i,B_j$ in the original) & first multivariate GARCH: every covariance is a linear function of lagged cross-products and covariances & out of scope \\
95 +CCC-GARCH {\scriptsize[\texttt{ccc\_garch11}]} & 1990 & \citet{bollerslev1990modelling} & $H_t=D_tRD_t$, $D_t=\mathrm{diag}(\sigma_{1,t},\dots,\sigma_{N,t})$, $R$ constant & univariate GARCH margins with a constant correlation matrix & scored \\
96 +Factor-ARCH (Engle--Ng--Rothschild) & 1990 & see note~6 & $H_t=\Omega+\sum_{k=1}^{K}\beta_k\beta_k'\,\sigma_{k,t}^2$, $\sigma_{k,t}^2$ a univariate GARCH of the factor portfolio $\phi_k'r_t$ & time-varying covariances through a few GARCH factors (reduced rank); positive definite if $\Omega$ is & out of scope \\
97 +BEKK (full / diagonal) & 1995 & \citet{engle1995multivariate} & $H_t=CC'+\sum_{i}A_i'\varepsilon_{t-i}\varepsilon_{t-i}'A_i+\sum_{j}B_j'H_{t-j}B_j$ & quadratic form guaranteeing positive definiteness; nests the diagonal VEC and factor-ARCH & out of scope \\
98 +Scalar BEKK (covariance targeting) {\scriptsize[\texttt{scalar\_bekk11}]} & 1995 & \citet{engle1995multivariate} & $H_t=(1-a-b)\bar\Sigma+a\,\varepsilon_{t-1}\varepsilon_{t-1}'+b\,H_{t-1}$ & two dynamic parameters; EWMA covariance is the case $a+b=1$, $\bar\Sigma$-term dropped & scored \\
99 +DCC {\scriptsize[\texttt{dcc11}]} & 2002 & \citet{engle2002dynamic} & $H_t=D_tR_tD_t$ \newline $Q_t=(1-a-b)\bar Q+a\,z_{t-1}z_{t-1}'+b\,Q_{t-1}$ \newline $R_t=\mathrm{diag}(Q_t)^{-1/2}Q_t\,\mathrm{diag}(Q_t)^{-1/2}$ & scalar GARCH-type dynamics for the correlation of the standardized residuals; two-step estimation & scored \\
100 +GO-GARCH & 2002 & \citet{vanderweide2002gogarch} & $\varepsilon_t=Zf_t$, $H_t=ZV_tZ'$, $V_t=\mathrm{diag}(\sigma_{1,t}^2,\dots,\sigma_{N,t}^2)$ with univariate GARCH for each factor \newline $Z=P\Lambda^{1/2}U$, $U$ orthogonal & generalized orthogonal factors (an estimated rotation of the principal components) with independent univariate GARCH & out of scope \\
101 +Asymmetric DCC {\scriptsize[\texttt{adcc11}]} & 2006 & \citet{cappiello2006asymmetric} & $Q_t=(1-a-b)\bar Q-g\bar N+a\,z_{t-1}z_{t-1}'+g\,n_{t-1}n_{t-1}'+b\,Q_{t-1}$, $n_t=z_t\odot\ind{z_t<0}$ & correlations respond more to joint negative shocks (GJR logic in the correlation recursion) & scored \\
102 +DECO (dynamic equicorrelation) & 2012 & see note~7 & $R_t=(1-\rho_t)I_N+\rho_t\iota\iota'$, $\rho_t=\dfrac{1}{N(N-1)}\big(\iota'R_t^{\mathrm{DCC}}\iota-N\big)$ & all pairwise correlations equal at each date; closed-form inverse and determinant for large $N$ & out of scope \\
103 +Multivariate HEAVY & 2012 & \citet{noureldin2012multivariate} & $H_t=C_H+a_H\,RC_{t-1}+b_H\,H_{t-1}$ \newline $M_t=\E[RC_t\,|\,\F_{t-1}]=C_M+a_M\,RC_{t-1}+b_M\,M_{t-1}$ (scalar form \newline $RC_t$ = realized covariance) & realized covariance drives both the return covariance and its own (Wishart-type) measurement equation & out of scope \\
104 +Corrected DCC (cDCC) & 2013 & \citet{aielli2013dynamic} & $Q_t=(1-a-b)\bar S+a\,Q_{t-1}^{*1/2}z_{t-1}z_{t-1}'Q_{t-1}^{*1/2}+b\,Q_{t-1}$, $Q_t^{*}=\mathrm{diag}(Q_t)$ & rescales the outer product so that $\bar S$ is the unconditional mean of $Q_t$: consistent two-step estimation & out of scope \\
105 +DCC-NL (nonlinear shrinkage) & 2019 & \citet{engle2019large} & DCC/cDCC recursion with $\bar Q$ replaced by the nonlinear-shrinkage estimator of the unconditional correlation matrix and composite-likelihood estimation of $(a,b)$ & large-$N$ DCC: nonlinear shrinkage of the targeting matrix and composite-likelihood estimation & out of scope \\
106 +Multivariate Realized GARCH & 2026 & \citet{archakov2026multivariate} & $v_t=\omega+\beta v_{t-1}+\gamma u_{t-1}$ with $v_t=(\log h_{1,t},\dots,\log h_{N,t},\mathrm{vecl}[\log C_t]')'$ and realized-measure equation $x_t=\xi+\varphi v_t+\tau(z_t)+u_t$ (schematic \newline see reference) & realized-GARCH structure on the log variances and the matrix-logarithm of the correlation matrix (unconstrained parametrization) & out of scope \\
107 +\midrule
108 +\multicolumn{6}{l}{\textit{Stochastic volatility (parameter-driven)}}\\
109 +\addlinespace[1pt]
110 +Stochastic volatility (log-SV, Taylor) {\scriptsize[\texttt{sv}]} & 1986 & \citet{taylor2008modelling} & $\varepsilon_t=\sigma_tz_t$, $\log\sigma_t^2=\omega+\phi\log\sigma_{t-1}^2+\sigma_\eta\eta_t$, $\eta_t\sim N(0,1)$ independent of $z_t$ & latent (parameter-driven) log variance with its own innovation; the variance is not $\F_{t-1}$-measurable & unsup\-ported \\
111 +Multivariate SV, QML (Harvey--Ruiz--Shephard) & 1994 & \citet{harvey1994multivariate} & $\log\varepsilon_{i,t}^2=\log\sigma_{i,t}^2+\log z_{i,t}^2$, $\log\sigma_t^2=\omega+\Phi\log\sigma_{t-1}^2+\eta_t$ (linear state space \newline Kalman-filter QML) & multivariate SV with common factors; quasi-maximum likelihood on $\log\varepsilon^2$ & out of scope \\
112 +SV by MCMC (Kim--Shephard--Chib) & 1998 & \citet{kim1998stochastic} & log-SV as above \newline $\log z_t^2$ approximated by a seven-component normal mixture \newline MCMC with an offset mixture and particle-filter likelihood for model comparison with ARCH & exact-likelihood (Bayesian) inference for SV and a formal comparison with GARCH & unsup\-ported \\
113 +\midrule
114 +\multicolumn{6}{l}{\textit{Other relatives (jumps, periodicity)}}\\
115 +\addlinespace[1pt]
116 +Periodic GARCH & 1996 & see note~8 & $\sigma_t^2=\omega_{s(t)}+\alpha_{s(t)}\varepsilon_{t-1}^2+\beta_{s(t)}\sigma_{t-1}^2$, $s(t)\in\{1,\dots,S\}$ the stage of a known periodic cycle & GARCH coefficients that vary deterministically with the calendar (day of the week, intraday season) & out of scope \\
117 +GARCH-jump (ARJI, Maheu--McCurdy) & 2004 & see note~9 & $r_t=\mu+\sigma_tz_t+\sum_{k=1}^{n_t}Y_{t,k}$, $n_t\,|\,\F_{t-1}\sim\mathrm{Poisson}(\lambda_t)$, $\lambda_t=\lambda_0+\rho\lambda_{t-1}+\gamma\xi_{t-1}$, $\sigma_t^2$ GARCH/GJR on $\varepsilon_{t-1}=r_{t-1}-\mu$ & autoregressive conditional jump intensity on top of a GARCH diffusion component; total variance $\sigma_t^2+\lambda_t(\mu_J^2+\sigma_J^2)$ & out of scope \\
118 +\end{longtable}}
added results/manifests/garch_genealogy.yaml +1023 −0
@@ -0,0 +1,1023 @@
1 +# WP46 — genealogy of the ARCH/GARCH family and its closest relatives, 1982–2026.
2 +# One entry per materially distinct architecture (orders and innovation laws are not separate entries).
3 +# Notation: r_t = mu + eps_t, eps_t = sigma_t z_t, z_t ~ i.i.d. D(0,1); daily log returns in percent, sigma_t^2 in percent^2;
4 +# x_t = realized measure of day t; H_t = conditional covariance matrix (multivariate rows).
5 +# bibkey: a key of paper/references.bib (Crossref/arXiv/OpenAlex-verified) or null; null entries carry `reference` (text) and
6 +# their verified DOI is listed in results/metrics/references_candidates_genealogy.json so the record can be fetched into the .bib.
7 +# status_in_wp46: scored (configs/model_registry.yaml status implemented, or a Tier C model of configs/study.yaml) | extension
8 +# (being implemented now; registry status unsupported) | unsupported | out-of-scope (not in the registry; one-line reason).
9 +# No entry states a WP46 benchmark result.
10 +version: 1
11 +generated: "2026-11-09"
12 +sources: ["paper/references.bib", "configs/model_registry.yaml", "configs/study.yaml", "docs/literature_matrix.md", "paper/appendices/formulas.tex"]
13 +families:
14 + classical: "Classical ARCH/GARCH and filters"
15 + asymmetric: "Asymmetric (news-impact) GARCH"
16 + power: "Power / absolute-value / Box--Cox"
17 + fractional: "Fractional persistence"
18 + component: "Component and multiplicative"
19 + regime: "Regime switching and smooth transition"
20 + score-driven: "Score-driven (GAS / DCS)"
21 + realized: "Realized-measure models and HAR"
22 + multivariate: "Multivariate"
23 + stochastic-volatility: "Stochastic volatility (parameter-driven)"
24 + other: "Other relatives (jumps, periodicity)"
25 +entries:
26 +
27 +# ---------------------------------------------------------------- classical
28 +- id: arch
29 + name: "ARCH($q$)"
30 + short: "ARCH"
31 + year: 1982
32 + family: classical
33 + bibkey: engle1982autoregressive
34 + parents: []
35 + equation: >-
36 + $\sigma_t^2=\omega+\sum_{i=1}^{q}\alpha_i\varepsilon_{t-i}^2$
37 + key_property: "conditional variance as an autoregression in squared shocks"
38 + stationarity: >-
39 + $\omega>0$, $\alpha_i\ge0$; covariance stationary iff $\sum_i\alpha_i<1$
40 + status_in_wp46: scored
41 + registry_id: arch5
42 +
43 +- id: garch
44 + name: "GARCH($p,q$)"
45 + short: "GARCH"
46 + year: 1986
47 + family: classical
48 + bibkey: bollerslev1986generalized
49 + parents: [arch]
50 + equation: >-
51 + $\sigma_t^2=\omega+\sum_{i=1}^{p}\alpha_i\varepsilon_{t-i}^2+\sum_{j=1}^{q}\beta_j\sigma_{t-j}^2$
52 + key_property: "lagged conditional variances: parsimonious ARMA-type dynamics (ARCH($\\infty$))"
53 + stationarity: >-
54 + $\omega>0$, $\alpha_i,\beta_j\ge0$ (sufficient); covariance stationary iff $\sum\alpha_i+\sum\beta_j<1$; strict stationarity via $\E\log(\alpha z^2+\beta)<0$
55 + status_in_wp46: scored
56 + registry_id: garch11
57 + note: "Benchmark of WP46 (orders (1,1), (2,1), (1,2) scored). Bollerslev writes the orders as (GARCH lags, ARCH lags); arch writes p = ARCH lags, q = GARCH lags."
58 +
59 +- id: igarch
60 + name: "IGARCH"
61 + short: "IGARCH"
62 + year: 1986
63 + family: classical
64 + bibkey: engle1986modelling
65 + parents: [garch]
66 + equation: >-
67 + $\sigma_t^2=\omega+\sum_{i}\alpha_i\varepsilon_{t-i}^2+\sum_{j}\beta_j\sigma_{t-j}^2$ with $\sum_i\alpha_i+\sum_j\beta_j=1$
68 + key_property: "unit persistence: shocks to the variance never die out"
69 + stationarity: >-
70 + strictly stationary, not covariance stationary (no unconditional variance); $k$-step forecasts grow linearly in $k$
71 + status_in_wp46: scored
72 + registry_id: igarch11
73 +
74 +- id: garch_m
75 + name: "ARCH-M / GARCH-M"
76 + short: "GARCH-M"
77 + year: 1987
78 + family: classical
79 + bibkey: engle1987estimating
80 + parents: [garch]
81 + equation: >-
82 + $r_t=\mu+\delta\,g(\sigma_t^2)+\varepsilon_t$ with $g(\sigma_t^2)\in\{\sigma_t^2,\sigma_t,\log\sigma_t^2\}$; $\sigma_t^2$ as GARCH
83 + key_property: "conditional variance enters the conditional mean (time-varying risk premium)"
84 + stationarity: "as the underlying variance recursion"
85 + status_in_wp46: scored
86 + registry_id: garchm11
87 + note: "WP46 uses g = sigma_t^2; variance forecasts coincide with GARCH(1,1)."
88 +
89 +- id: ewma
90 + name: "EWMA / RiskMetrics (1994)"
91 + short: "EWMA / RiskMetrics"
92 + year: 1996
93 + family: classical
94 + bibkey: jpmorgan1996riskmetrics
95 + parents: [igarch]
96 + equation: >-
97 + $\sigma_t^2=(1-\lambda)\varepsilon_{t-1}^2+\lambda\sigma_{t-1}^2$, $\lambda=0.94$ (daily)
98 + key_property: "zero-intercept IGARCH(1,1) with a fixed decay; no estimation"
99 + stationarity: "integrated; flat variance term structure"
100 + status_in_wp46: scored
101 + registry_id: ewma094
102 + note: "The verified record is the 4th edition of the Technical Document (1996); the method dates from the 1994 first release."
103 +
104 +- id: rm2006
105 + name: "RiskMetrics 2006"
106 + short: "RM2006"
107 + year: 2007
108 + family: classical
109 + bibkey: zumbach2009riskmetrics
110 + parents: [ewma, ding_granger_lm]
111 + equation: >-
112 + $\sigma_t^2=\sum_{k=1}^{K}w_k\sigma_{k,t}^2$, $\sigma_{k,t}^2=\mu_k\sigma_{k,t-1}^2+(1-\mu_k)\varepsilon_{t-1}^2$, $\mu_k=e^{-1/\tau_k}$, $\tau_k=\tau_1\rho^{k-1}$, $w_k\propto1-\log\tau_k/\log\tau_0$
113 + key_property: "mixture of EWMAs over geometrically spaced horizons with logarithmic weights (long-memory-like kernel, no estimation)"
114 + stationarity: "integrated filter (fixed weights sum to one)"
115 + status_in_wp46: scored
116 + registry_id: rm2006
117 + note: "RiskMetrics Group technical document (2007); the verified record is the SSRN posting of 2009 (bibkey year)."
118 +
119 +- id: log_garch
120 + name: "log-GARCH"
121 + short: "log-GARCH"
122 + year: 1986
123 + family: classical
124 + bibkey: null
125 + reference: "Geweke, J. (1986), Comment [on Engle and Bollerslev], Econometric Reviews 5(1), 57–61; Pantula, S. G. (1986), Comment, Econometric Reviews 5(1), 71–74."
126 + parents: [garch]
127 + equation: >-
128 + $\log\sigma_t^2=\omega+\sum_{i=1}^{p}\alpha_i\log\varepsilon_{t-i}^2+\sum_{j=1}^{q}\beta_j\log\sigma_{t-j}^2$
129 + key_property: "multiplicative (log-linear) variance dynamics; no positivity constraints; $\\log\\varepsilon_t^2$ is an ARMA"
130 + stationarity: >-
131 + stationary iff the ARMA roots of $\log\varepsilon_t^2$ lie outside the unit circle; $\log\varepsilon_t^2$ undefined at zero returns
132 + status_in_wp46: out-of-scope
133 + reason: "zero returns make the recursion undefined (needs ad hoc treatment); no implementation in arch 8.0.0 / rugarch 1.5-6"
134 +
135 +# ---------------------------------------------------------------- asymmetric
136 +- id: egarch
137 + name: "EGARCH"
138 + short: "EGARCH"
139 + year: 1991
140 + family: asymmetric
141 + bibkey: nelson1991conditional
142 + parents: [garch, log_garch]
143 + equation: >-
144 + $\log\sigma_t^2=\omega+\sum_{j}\beta_j\log\sigma_{t-j}^2+\sum_{i}\alpha_i\,g(z_{t-i})$, $g(z)=\theta z+\gamma(|z|-\E|z|)$
145 + key_property: "log variance driven by sign and size of the standardized shock; no positivity constraints"
146 + stationarity: >-
147 + stationary iff the roots of $1-\sum_j\beta_jL^j$ lie outside the unit circle ($|\beta|<1$ for (1,1)); $\E|z|$ depends on the innovation law
148 + status_in_wp46: scored
149 + registry_id: egarch11
150 + note: "Parameterizations differ across Nelson, arch and rugarch (see docs/genealogy_notes.md)."
151 +
152 +- id: gjr
153 + name: "GJR-GARCH"
154 + short: "GJR"
155 + year: 1993
156 + family: asymmetric
157 + bibkey: glosten1993relation
158 + parents: [garch]
159 + equation: >-
160 + $\sigma_t^2=\omega+\alpha\varepsilon_{t-1}^2+\gamma\varepsilon_{t-1}^2\ind{\varepsilon_{t-1}<0}+\beta\sigma_{t-1}^2$
161 + key_property: "indicator on negative shocks in the variance (leverage effect, power 2)"
162 + stationarity: >-
163 + $\alpha+\gamma\kappa+\beta<1$ with $\kappa=\E[z^2\ind{z<0}]$ ($=1/2$ for symmetric $z$); positivity $\alpha+\gamma\ge0$
164 + status_in_wp46: scored
165 + registry_id: gjr11
166 + note: "Called TARCH in EViews and in several textbooks; WP46 reserves TGARCH for Zakoian's model."
167 +
168 +- id: tgarch_zakoian
169 + name: "TGARCH (Zakoïan)"
170 + short: "TGARCH (Zakoïan)"
171 + year: 1994
172 + family: asymmetric
173 + bibkey: zakoian1994threshold
174 + parents: [avgarch]
175 + equation: >-
176 + $\sigma_t=\omega+\alpha^{+}\varepsilon_{t-1}^{+}-\alpha^{-}\varepsilon_{t-1}^{-}+\beta\sigma_{t-1}$, $\varepsilon^{+}=\max(\varepsilon,0)$, $\varepsilon^{-}=\min(\varepsilon,0)$
177 + key_property: "threshold on the conditional standard deviation (power 1) with separate slopes for positive and negative shocks"
178 + stationarity: >-
179 + strict stationarity via $\E\log(\alpha^{+}z^{+}-\alpha^{-}z^{-}+\beta)<0$ (Zakoïan 1994); not $\alpha+\beta<1$
180 + status_in_wp46: scored
181 + registry_id: tarch11
182 + note: "First proposed in Rabemananjara and Zakoïan (1993, JAE 8(1)) as threshold ARCH; APARCH with delta = 1 reproduces it."
183 +
184 +- id: agarch
185 + name: "AGARCH (Engle 1990)"
186 + short: "AGARCH"
187 + year: 1990
188 + family: asymmetric
189 + bibkey: null
190 + reference: "Engle, R. F. (1990), Discussion: Stock volatility and the crash of '87, Review of Financial Studies 3(1), 103–106."
191 + parents: [garch]
192 + equation: >-
193 + $\sigma_t^2=\omega+\alpha(\varepsilon_{t-1}-\theta)^2+\beta\sigma_{t-1}^2$
194 + key_property: "additive shift of the news-impact curve in return units (asymmetric GARCH)"
195 + stationarity: >-
196 + $\alpha+\beta<1$; positivity $\omega>0$, $\alpha,\beta\ge0$
197 + status_in_wp46: out-of-scope
198 + reason: "shift in return units is not scale-free; superseded by the NAGARCH form of Engle and Ng (1993), which is scored; no vetted implementation"
199 +
200 +- id: nagarch
201 + name: "NAGARCH (Engle–Ng)"
202 + short: "NAGARCH"
203 + year: 1993
204 + family: asymmetric
205 + bibkey: engle1993measuring
206 + parents: [garch, agarch]
207 + equation: >-
208 + $\sigma_t^2=\omega+\alpha(\varepsilon_{t-1}-\theta\sigma_{t-1})^2+\beta\sigma_{t-1}^2$
209 + key_property: "nonlinear asymmetric GARCH: news-impact curve shifted by $\\theta\\sigma_{t-1}$ (scale-free); sign/size bias tests"
210 + stationarity: >-
211 + persistence $\alpha(1+\theta^2)+\beta<1$
212 + status_in_wp46: scored
213 + registry_id: nagarch11
214 + note: "Not the NGARCH of Higgins and Bera (1992) (power form); rugarch fGARCH has both as distinct submodels."
215 +
216 +- id: vgarch
217 + name: "VGARCH (Engle–Ng)"
218 + short: "VGARCH"
219 + year: 1993
220 + family: asymmetric
221 + bibkey: engle1993measuring
222 + parents: [garch]
223 + equation: >-
224 + $\sigma_t^2=\omega+\alpha(z_{t-1}+\theta)^2+\beta\sigma_{t-1}^2$, $z_{t-1}=\varepsilon_{t-1}/\sigma_{t-1}$
225 + key_property: "news impact in standardized-shock units, independent of the variance level"
226 + stationarity: >-
227 + $\beta<1$ (the ARCH term is bounded in expectation: $\E(z+\theta)^2=1+\theta^2$)
228 + status_in_wp46: out-of-scope
229 + reason: "news impact does not scale with the variance level; dominated by NAGARCH in Engle and Ng's own comparison; no vetted implementation"
230 +
231 +- id: qgarch
232 + name: "QGARCH (Sentana)"
233 + short: "QGARCH"
234 + year: 1995
235 + family: asymmetric
236 + bibkey: sentana1995quadratic
237 + parents: [garch, agarch]
238 + equation: >-
239 + $\sigma_t^2=\omega+\alpha\varepsilon_{t-1}^2+\psi\varepsilon_{t-1}+\beta\sigma_{t-1}^2$
240 + key_property: "general quadratic form in lagged shocks; linear term gives a parabola-shifting asymmetry"
241 + stationarity: >-
242 + $\alpha+\beta<1$; positivity iff $\psi^2\le4\alpha\omega$
243 + status_in_wp46: scored
244 + registry_id: qgarch11
245 + note: "AGARCH is the special case psi = -2 alpha theta with the constant absorbed; the general QARCH has cross terms."
246 +
247 +# ---------------------------------------------------------------- power
248 +- id: avgarch
249 + name: "AVGARCH / Taylor–Schwert"
250 + short: "AVGARCH"
251 + year: 1986
252 + family: power
253 + bibkey: taylor2008modelling
254 + parents: [garch]
255 + equation: >-
256 + $\sigma_t=\omega+\alpha|\varepsilon_{t-1}|+\beta\sigma_{t-1}$
257 + key_property: "dynamics in the conditional standard deviation (absolute-value GARCH)"
258 + stationarity: >-
259 + $\alpha\E|z|+\beta<1$ for the mean of $\sigma_t$; second moment needs $\E(\alpha|z|+\beta)^2<1$
260 + status_in_wp46: scored
261 + registry_id: avgarch11
262 + note: "Taylor (1986, Wiley, 1st ed.; cited in the 2008 2nd ed., the only verified record) and Schwert (1989, schwert1989why)."
263 +
264 +- id: narch
265 + name: "NARCH / NGARCH (Higgins–Bera)"
266 + short: "NARCH (Higgins–Bera)"
267 + year: 1992
268 + family: power
269 + bibkey: higgins1992class
270 + parents: [arch, avgarch]
271 + equation: >-
272 + $\sigma_t^{\delta}=\omega+\sum_{i}\alpha_i|\varepsilon_{t-i}|^{\delta}+\sum_{j}\beta_j\sigma_{t-j}^{\delta}$ (power-GARCH form; Higgins–Bera's original is the Box–Cox ARCH case)
273 + key_property: "estimated power transformation of the ARCH recursion (nonlinear ARCH)"
274 + stationarity: >-
275 + $\delta>0$; moment conditions of the APARCH type (ling2002necessary) with $\gamma=0$
276 + status_in_wp46: out-of-scope
277 + reason: "nested in APARCH with gamma = 0 (scored); rugarch fGARCH(NGARCH) only; the name collides with NAGARCH"
278 +
279 +- id: aparch
280 + name: "APARCH"
281 + short: "APARCH"
282 + year: 1993
283 + family: power
284 + bibkey: ding1993long
285 + parents: [garch, avgarch, gjr, tgarch_zakoian, narch]
286 + equation: >-
287 + $\sigma_t^{\delta}=\omega+\sum_{i}\alpha_i(|\varepsilon_{t-i}|-\gamma_i\varepsilon_{t-i})^{\delta}+\sum_{j}\beta_j\sigma_{t-j}^{\delta}$
288 + key_property: "estimated power $\\delta$ and asymmetry $\\gamma$; nests GARCH, AVGARCH, GJR, TGARCH (Zakoïan), NGARCH"
289 + stationarity: >-
290 + $\delta>0$, $|\gamma_i|<1$; $\sum_i\alpha_i\E(|z|-\gamma_iz)^{\delta}+\sum_j\beta_j<1$ (ding1993long; moments in ling2002necessary)
291 + status_in_wp46: scored
292 + registry_id: aparch11
293 + note: "Also called PGARCH (EViews) or power GARCH; APARCH is the Ding–Granger–Engle name."
294 +
295 +- id: hentschel_family
296 + name: "Family GARCH (Hentschel)"
297 + short: "Family GARCH"
298 + year: 1995
299 + family: power
300 + bibkey: null
301 + reference: "Hentschel, L. (1995), All in the family: Nesting symmetric and asymmetric GARCH models, Journal of Financial Economics 39(1), 71–104."
302 + parents: [aparch, egarch, nagarch, gjr, tgarch_zakoian, avgarch]
303 + equation: >-
304 + $\dfrac{\sigma_t^{\lambda}-1}{\lambda}=\omega+\alpha\sigma_{t-1}^{\lambda}f^{\nu}(z_{t-1})+\beta\dfrac{\sigma_{t-1}^{\lambda}-1}{\lambda}$, $f(z)=|z-b|-c(z-b)$
305 + key_property: "Box–Cox transform of $\\sigma_t$ with a shifted and rotated absolute-value news-impact function: one nest for the asymmetric family"
306 + stationarity: >-
307 + family-specific (each nested member's condition); for $\lambda=\nu$ the recursion is a random-coefficient AR(1) in $\sigma_t^{\lambda}$, strictly stationary iff $\E\log(\lambda\alpha f^{\lambda}(z)+\beta)<0$
308 + status_in_wp46: out-of-scope
309 + reason: "an encompassing nest, not a forecasting model: each nested member is scored separately; the free (lambda, nu) case is weakly identified; rugarch fGARCH is this family"
310 +
311 +- id: duan_augmented
312 + name: "Augmented GARCH (Duan)"
313 + short: "Augmented GARCH"
314 + year: 1997
315 + family: power
316 + bibkey: null
317 + reference: "Duan, J.-C. (1997), Augmented GARCH(p,q) process and its diffusion limit, Journal of Econometrics 79(1), 97–127."
318 + parents: [hentschel_family, aparch, egarch]
319 + equation: >-
320 + $\phi_t=\omega+\xi_{1,t-1}\phi_{t-1}+\xi_{2,t-1}$, $\sigma_t^2=|\lambda\phi_t-\lambda+1|^{1/\lambda}$ ($\lambda\ne0$), $\xi_{1,t}=\alpha_1+\alpha_2|z_t-c|^{\delta}+\alpha_3\max(0,c-z_t)^{\delta}$, $\xi_{2,t}=\alpha_4\dfrac{|z_t-c|^{\delta}-1}{\delta}+\alpha_5\dfrac{\max(0,c-z_t)^{\delta}-1}{\delta}$ ((1,1) case)
321 + key_property: "Box–Cox transform of the variance driven by Box–Cox functions of the shock; nests GARCH, EGARCH, GJR, TGARCH, APARCH, NAGARCH, VGARCH and the Hentschel family; diffusion limit"
322 + stationarity: >-
323 + strict stationarity via $\E\log\xi_{1,t}<0$ (random-coefficient AR(1) in $\phi_t$)
324 + status_in_wp46: out-of-scope
325 + reason: "encompassing nest (eight free shape parameters); no implementation in arch/rugarch; members scored individually"
326 +
327 +# ---------------------------------------------------------------- fractional
328 +- id: figarch
329 + name: "FIGARCH"
330 + short: "FIGARCH"
331 + year: 1996
332 + family: fractional
333 + bibkey: baillie1996fractionally
334 + parents: [garch, igarch]
335 + equation: >-
336 + $\sigma_t^2=\omega+\big[1-\beta L-(1-\phi L)(1-L)^{d}\big]\varepsilon_t^2+\beta\sigma_{t-1}^2$ (ARCH($\infty$) weights truncated in practice)
337 + key_property: "fractional differencing: hyperbolic decay of shocks to the variance between GARCH ($d=0$) and IGARCH ($d=1$)"
338 + stationarity: >-
339 + strictly but not covariance stationary for $0<d\le1$ (no unconditional variance); positivity conditions in conrad2006inequality
340 + status_in_wp46: scored
341 + registry_id: figarch11
342 + note: "arch truncates at 1,000 lags; the Chung (1999) re-parameterization is unverified and not cited."
343 +
344 +- id: fiegarch
345 + name: "FIEGARCH"
346 + short: "FIEGARCH"
347 + year: 1996
348 + family: fractional
349 + bibkey: bollerslev1996modeling
350 + parents: [egarch, figarch]
351 + equation: >-
352 + $\log\sigma_t^2=\omega+\phi(L)^{-1}(1-L)^{-d}\,[1+\psi(L)]\,g(z_{t-1})$, $g(z)=\theta z+\gamma(|z|-\E|z|)$
353 + key_property: "fractional integration in the log variance with EGARCH asymmetry"
354 + stationarity: >-
355 + covariance stationary (in $\log\sigma_t^2$) iff $d<1/2$; invertible for $d>-1/2$
356 + status_in_wp46: extension
357 + registry_id: fiegarch11
358 + reason: "no vetted implementation in arch 8.0.0 / rugarch 1.5-6; custom implementation under way"
359 +
360 +- id: fiaparch
361 + name: "FIAPARCH"
362 + short: "FIAPARCH"
363 + year: 1998
364 + family: fractional
365 + bibkey: tse1998conditional
366 + parents: [aparch, figarch]
367 + equation: >-
368 + $\sigma_t^{\delta}=\omega+\big\{1-[1-\beta(L)]^{-1}\phi(L)(1-L)^{d}\big\}(|\varepsilon_t|-\gamma\varepsilon_t)^{\delta}$
369 + key_property: "fractional persistence combined with the APARCH power and asymmetry"
370 + stationarity: >-
371 + as FIGARCH for $d$ (strict, not covariance stationary); $\delta>0$, $|\gamma|<1$
372 + status_in_wp46: extension
373 + registry_id: fiaparch11
374 + reason: "no vetted implementation; custom implementation under way"
375 +
376 +- id: hygarch
377 + name: "HYGARCH"
378 + short: "HYGARCH"
379 + year: 2004
380 + family: fractional
381 + bibkey: davidson2004moment
382 + parents: [garch, figarch]
383 + equation: >-
384 + $\sigma_t^2=\omega+\big\{1-[1-\beta(L)]^{-1}\phi(L)\big[1+\tau\big((1-L)^{d}-1\big)\big]\big\}\varepsilon_t^2$
385 + key_property: "amplitude parameter $\\tau$ interpolating GARCH ($\\tau=0$) and FIGARCH ($\\tau=1$): hyperbolic GARCH"
386 + stationarity: >-
387 + covariance stationary iff $\tau<1$ (Davidson 2004); positivity conditions non-trivial
388 + status_in_wp46: extension
389 + registry_id: hygarch11
390 + reason: "no vetted implementation; custom implementation under way"
391 +
392 +# ---------------------------------------------------------------- component
393 +- id: cgarch
394 + name: "Component GARCH (Engle–Lee)"
395 + short: "CGARCH"
396 + year: 1999
397 + family: component
398 + bibkey: engle1999long
399 + parents: [garch]
400 + equation: >-
401 + $\sigma_t^2=q_t+\alpha(\varepsilon_{t-1}^2-q_{t-1})+\beta(\sigma_{t-1}^2-q_{t-1})$, $q_t=\omega+\rho q_{t-1}+\phi(\varepsilon_{t-1}^2-\sigma_{t-1}^2)$
402 + key_property: "permanent (slowly mean-reverting) and transitory variance components"
403 + stationarity: >-
404 + $0<\alpha+\beta<\rho<1$, $0<\phi<\min(\alpha,\beta)$; a GARCH(2,2) in reduced form
405 + status_in_wp46: scored
406 + registry_id: cgarch11
407 + note: "Circulated as Engle and Lee (1993), 'A permanent and transitory component model...' (UCSD WP); rugarch csGARCH uses an equivalent parameterization."
408 +
409 +- id: acgarch
410 + name: "Asymmetric component GARCH"
411 + short: "Asym. CGARCH"
412 + year: 1999
413 + family: component
414 + bibkey: engle1999long
415 + parents: [cgarch, gjr]
416 + equation: >-
417 + $\sigma_t^2-q_t=\alpha(\varepsilon_{t-1}^2-q_{t-1})+\gamma(\varepsilon_{t-1}^2-q_{t-1})\ind{\varepsilon_{t-1}<0}+\beta(\sigma_{t-1}^2-q_{t-1})$, $q_t$ as in CGARCH
418 + key_property: "leverage (GJR-type indicator) in the transitory component"
419 + stationarity: >-
420 + as CGARCH with $\alpha+\gamma\kappa+\beta<\rho<1$
421 + status_in_wp46: out-of-scope
422 + reason: "component and leverage effects are each scored separately (CGARCH, GJR); no vetted implementation of the combination (rugarch csGARCH has no leverage term)"
423 +
424 +- id: ding_granger_lm
425 + name: "Long-memory ARCH by aggregation (Ding–Granger)"
426 + short: "LM-ARCH (Ding–Granger)"
427 + year: 1996
428 + family: component
429 + bibkey: ding1996modeling
430 + parents: [ewma, garch]
431 + equation: >-
432 + $\sigma_t^2=\sum_{k=1}^{N}w_k\sigma_{k,t}^2$, $\sigma_{k,t}^2=(1-\alpha_k)\varepsilon_{t-1}^2+\alpha_k\sigma_{k,t-1}^2$, $\sum_k w_k=1$
433 + key_property: "aggregation of EWMA-type components with heterogeneous decay rates produces hyperbolic autocorrelations of $\\varepsilon_t^2$"
434 + stationarity: >-
435 + each component integrated; the $N$-component model with Beta-distributed $\alpha_k$ has long memory as $N\to\infty$
436 + status_in_wp46: out-of-scope
437 + reason: "motivational construction; its fixed-weight practical descendant RM2006 is scored and its estimated two-component descendant is the CGARCH"
438 +
439 +- id: spline_garch
440 + name: "Spline-GARCH"
441 + short: "Spline-GARCH"
442 + year: 2008
443 + family: component
444 + bibkey: engle2008spline
445 + parents: [garch]
446 + equation: >-
447 + $\sigma_t^2=\tau_t g_t$, $g_t=(1-\alpha-\beta)+\alpha\dfrac{\varepsilon_{t-1}^2}{\tau_{t-1}}+\beta g_{t-1}$, $\tau_t=c\exp\!\big(w_0t+\sum_{k=1}^{K}w_k\,((t-t_{k-1})_+)^2\big)$
448 + key_property: "multiplicative low-frequency component as a deterministic exponential quadratic spline of time"
449 + stationarity: >-
450 + $g_t$ unit-mean GARCH ($\alpha+\beta<1$); $\tau_t$ deterministic, so the process is not stationary
451 + status_in_wp46: out-of-scope
452 + reason: "the spline is an in-sample fit of calendar time with no extrapolation rule for out-of-sample forecasts; not in arch/rugarch"
453 +
454 +- id: garch_midas
455 + name: "GARCH-MIDAS"
456 + short: "GARCH-MIDAS"
457 + year: 2013
458 + family: component
459 + bibkey: engle2013stock
460 + parents: [spline_garch, cgarch]
461 + equation: >-
462 + $\sigma_t^2=\tau_t g_t$, $g_t=(1-\alpha-\beta)+\alpha\dfrac{\varepsilon_{t-1}^2}{\tau_t}+\beta g_{t-1}$, $\log\tau_t=m+\theta\sum_{k=1}^{K}\varphi_k(w)X_{t-k}$ (MIDAS weights on a low-frequency series $X$)
463 + key_property: "long-run component driven by lagged low-frequency realized variance or macroeconomic variables through a MIDAS polynomial"
464 + stationarity: >-
465 + $\alpha+\beta<1$ for $g_t$; $\tau_t$ inherits the properties of $X$
466 + status_in_wp46: extension
467 + registry_id: garch_midas
468 + reason: "needs a low-frequency explanatory series; being implemented with the realized-variance driver (Tier B information set)"
469 + note: "arch's MIDASHyperbolic is a MIDAS-weighted ARCH, not GARCH-MIDAS."
470 +
471 +- id: mc_garch_intraday
472 + name: "Multiplicative component GARCH (intraday)"
473 + short: "MC-GARCH (intraday)"
474 + year: 2011
475 + family: component
476 + bibkey: engle2011forecasting
477 + parents: [garch, spline_garch]
478 + equation: >-
479 + $\sigma_{t,i}^2=h_t\,s_i\,q_{t,i}$, $q_{t,i}=\omega+\alpha\dfrac{\varepsilon_{t,i-1}^2}{h_t s_{i-1}}+\beta q_{t,i-1}$ (day $t$, intraday bin $i$)
480 + key_property: "daily component $h_t$ $\\times$ diurnal pattern $s_i$ $\\times$ intraday GARCH $q_{t,i}$"
481 + stationarity: >-
482 + $\alpha+\beta<1$ for $q_{t,i}$; $h_t$ from a daily model
483 + status_in_wp46: out-of-scope
484 + reason: "intraday variance targets; WP46 forecasts daily and multi-day variances (rugarch mcsGARCH)"
485 +
486 +# ---------------------------------------------------------------- regime switching / smooth transition
487 +- id: swarch
488 + name: "SWARCH (Hamilton–Susmel)"
489 + short: "SWARCH"
490 + year: 1994
491 + family: regime
492 + bibkey: hamilton1994autoregressive
493 + parents: [arch]
494 + equation: >-
495 + $\varepsilon_t=\sqrt{g_{S_t}}\,u_t$, $u_t=\sigma_t z_t$, $\sigma_t^2=\omega+\sum_{i=1}^{q}\alpha_i u_{t-i}^2$ ($+\xi\,u_{t-1}^2\ind{u_{t-1}<0}$), $S_t$ a $K$-state Markov chain
496 + key_property: "Markov-switching scale factor on an ARCH process (ARCH only, to avoid path dependence)"
497 + stationarity: >-
498 + ARCH condition within regimes; regime scales $g_k$ with $g_1=1$
499 + status_in_wp46: out-of-scope
500 + reason: "ARCH-only components (no GARCH term); superseded by the Haas–Mittnik–Paolella MS-GARCH, which is scored"
501 +
502 +- id: ms_arch_cai
503 + name: "MS-ARCH (Cai)"
504 + short: "MS-ARCH (Cai)"
505 + year: 1994
506 + family: regime
507 + bibkey: cai1994markov
508 + parents: [arch, swarch]
509 + equation: >-
510 + $\sigma_t^2=\omega_{S_t}+\sum_{i=1}^{q}\alpha_i\varepsilon_{t-i}^2$, $S_t\in\{1,2\}$ Markov (switching in the intercept)
511 + key_property: "regime-switching ARCH intercept (switching in the level of the variance)"
512 + stationarity: "ARCH condition; regimes in the intercept only"
513 + status_in_wp46: out-of-scope
514 + reason: "ARCH-only; superseded by MS-GARCH (Haas et al.), which is scored"
515 +
516 +- id: ms_garch_gray
517 + name: "MS-GARCH (Gray, collapsing)"
518 + short: "MS-GARCH (Gray)"
519 + year: 1996
520 + family: regime
521 + bibkey: gray1996modeling
522 + parents: [garch, swarch]
523 + equation: >-
524 + $\sigma_t^2=\omega_{S_t}+\alpha_{S_t}\varepsilon_{t-1}^2+\beta_{S_t}\tilde\sigma_{t-1}^2$, $\tilde\sigma_{t-1}^2=\sum_k p_{k,t-1}(\mu_k^2+\sigma_{k,t-1}^2)-\big(\sum_k p_{k,t-1}\mu_k\big)^2$
525 + key_property: "first tractable MS-GARCH: the lagged variance is collapsed across regimes with the regime probabilities (removes path dependence)"
526 + stationarity: >-
527 + no simple closed-form condition; depends on the collapsing rule (regime-wise $\alpha_k+\beta_k<1$ is not the relevant condition)
528 + status_in_wp46: out-of-scope
529 + reason: "collapsing approximation with a different likelihood from the HMP form; not implemented in MSGARCH or in WP46"
530 +
531 +- id: ms_garch_klaassen
532 + name: "MS-GARCH (Klaassen)"
533 + short: "MS-GARCH (Klaassen)"
534 + year: 2002
535 + family: regime
536 + bibkey: klaassen2002improving
537 + parents: [ms_garch_gray]
538 + equation: >-
539 + $\sigma_t^2=\omega_{S_t}+\alpha_{S_t}\varepsilon_{t-1}^2+\beta_{S_t}\,\E\!\big[\sigma_{S_{t-1},t-1}^2\,\big|\,\F_{t-1},S_t\big]$
540 + key_property: "collapses the lagged variance conditional on the current regime; analytic multi-step forecasts"
541 + stationarity: "as Gray's model, with the modified conditioning"
542 + status_in_wp46: out-of-scope
543 + reason: "collapsing variant; not the HMP definition used by WP46 and MSGARCH"
544 +
545 +- id: ms_garch_haas
546 + name: "MS-GARCH (Haas–Mittnik–Paolella)"
547 + short: "MS-GARCH (HMP)"
548 + year: 2004
549 + family: regime
550 + bibkey: haas2004new
551 + parents: [garch, ms_garch_gray]
552 + equation: >-
553 + $\sigma_{k,t}^2=\omega_k+\alpha_k\varepsilon_{t-1}^2+\beta_k\sigma_{k,t-1}^2$ for each regime $k$; $r_t\,|\,S_t=k\sim D(\mu_k,\sigma_{k,t}^2)$; $S_t$ Markov with $P=(p_{ij})$
554 + key_property: "$K$ parallel GARCH recursions driven by the common shock; analytic likelihood (Hamilton filter), stationarity conditions and forecasts"
555 + stationarity: >-
556 + covariance stationary iff the spectral radius of a matrix built from $P$ and $\{\alpha_k,\beta_k\}$ is below one (haas2004new); regime-wise $\alpha_k+\beta_k<1$ is not necessary
557 + status_in_wp46: scored
558 + registry_id: msgarch2
559 + note: "The definition implemented in the MSGARCH R package (ardia2019markov)."
560 +
561 +- id: ms_garch_pathdep
562 + name: "Path-dependent MS-GARCH"
563 + short: "path-dep. MS-GARCH"
564 + year: 2010
565 + family: regime
566 + bibkey: bauwens2010theory
567 + parents: [garch, ms_garch_gray]
568 + equation: >-
569 + $\sigma_t^2=\omega_{S_t}+\alpha_{S_t}\varepsilon_{t-1}^2+\beta_{S_t}\sigma_{t-1}^2$, with $\sigma_{t-1}^2$ depending on the whole regime path $\{S_{t-1},S_{t-2},\dots\}$
570 + key_property: "the literal regime-switching GARCH; likelihood integrates over $K^{t}$ paths (Bayesian MCMC, later EM/particle methods)"
571 + stationarity: >-
572 + geometric ergodicity conditions in bauwens2010theory
573 + status_in_wp46: out-of-scope
574 + reason: "simulation-based likelihood incompatible with the rolling re-estimation cadence of the benchmark (ML by augustyniak2014maximum)"
575 +
576 +- id: st_arch_hagerud
577 + name: "Smooth-transition ARCH (Hagerud)"
578 + short: "ST-ARCH"
579 + year: 1997
580 + family: regime
581 + bibkey: hagerud1997smooth
582 + parents: [arch, gjr]
583 + equation: >-
584 + $\sigma_t^2=\omega+\sum_{i=1}^{q}\big[\alpha_i+\gamma_iF(\varepsilon_{t-i})\big]\varepsilon_{t-i}^2$, $F$ logistic (LSTARCH) or exponential (ESTARCH)
585 + key_property: "smooth logistic/exponential transition between two ARCH regimes indexed by the lagged shock"
586 + stationarity: >-
587 + $\sum_i(\alpha_i+\gamma_i\sup F)<1$ (sufficient)
588 + status_in_wp46: out-of-scope
589 + reason: "ARCH-only precursor; the GARCH form of González-Rivera (1998) is the extension being implemented"
590 +
591 +- id: st_garch
592 + name: "Smooth-transition GARCH (González-Rivera)"
593 + short: "ST-GARCH"
594 + year: 1998
595 + family: regime
596 + bibkey: gonzalezrivera1998smooth
597 + parents: [garch, gjr, st_arch_hagerud]
598 + equation: >-
599 + $\sigma_t^2=\omega+\alpha\varepsilon_{t-1}^2+\beta\sigma_{t-1}^2+(\delta_0+\delta_1\varepsilon_{t-1}^2)\,F(\varepsilon_{t-1})$, $F(x)=[1+\exp(-\theta x)]^{-1}$
600 + key_property: "smooth (logistic) version of the GJR indicator: the speed $\\theta$ of the transition is estimated; GJR is the limit $\\theta\\to\\infty$"
601 + stationarity: >-
602 + sufficient: $\alpha+\max(0,\delta_1)+\beta<1$; positivity needs $\omega+\min(0,\delta_0)>0$
603 + status_in_wp46: extension
604 + registry_id: stgarch
605 + reason: "no vetted library implementation; custom implementation under way"
606 +
607 +# ---------------------------------------------------------------- score-driven
608 +- id: gas
609 + name: "GAS / score-driven volatility"
610 + short: "GAS"
611 + year: 2013
612 + family: score-driven
613 + bibkey: creal2013generalized
614 + parents: [garch]
615 + equation: >-
616 + $f_t=\omega+\alpha s_{t-1}+\beta f_{t-1}$, $s_t=S_t\,\partial\log p(r_t\,|\,f_t)/\partial f_t$; Student-$t$, $f_t=\sigma_t^2$: $s_t=\dfrac{\nu+3}{\nu}\Big[\dfrac{(\nu+1)\varepsilon_t^2}{(\nu-2)+\varepsilon_t^2/f_t}-f_t\Big]$
617 + key_property: "the update is the scaled score of the conditional density: GARCH for the normal, outlier-robust (Beta-$t$-GARCH) for the Student-$t$"
618 + stationarity: >-
619 + $|\beta|<1$ (the score is a martingale difference, $\E s_t=0$)
620 + status_in_wp46: scored
621 + registry_id: gas_t11
622 + note: "Labelled a non-GARCH comparator; GAS-t(1,1) with inverse-information scaling coincides with Harvey's Beta-t-GARCH up to scaling."
623 +
624 +- id: beta_t_egarch
625 + name: "Beta-$t$-EGARCH (DCS)"
626 + short: "Beta-t-EGARCH"
627 + year: 2008
628 + family: score-driven
629 + bibkey: harvey2008beta
630 + parents: [egarch, gas]
631 + equation: >-
632 + $\log\sigma_t^2=\omega+\phi\log\sigma_{t-1}^2+\kappa u_{t-1}$, $u_t=\dfrac{(\nu+1)\varepsilon_t^2}{\nu\sigma_t^2+\varepsilon_t^2}-1$ ($u_t+1$ Beta-distributed)
633 + key_property: "log variance driven by the bounded Student-$t$ score; closed-form moments and multi-step forecasts"
634 + stationarity: >-
635 + $|\phi|<1$; $u_t$ i.i.d. with $\E u_t=0$
636 + status_in_wp46: extension
637 + reason: "custom implementation under way (Harvey 2013 book harvey2013dynamic; leverage/skewness version harvey2014egarch)"
638 +
639 +# ---------------------------------------------------------------- realized-measure models and HAR
640 +- id: garch_x
641 + name: "GARCH-X (realized regressor)"
642 + short: "GARCH-X"
643 + year: 2002
644 + family: realized
645 + bibkey: engle2002new
646 + parents: [garch]
647 + equation: >-
648 + $\sigma_t^2=\omega+\alpha\varepsilon_{t-1}^2+\gamma x_{t-1}+\beta\sigma_{t-1}^2$
649 + key_property: "lagged realized measure enters the GARCH variance additively"
650 + stationarity: >-
651 + $\alpha+\beta<1$, $\gamma\ge0$; the long-run level depends on the dynamics of $x_t$
652 + status_in_wp46: scored
653 + registry_id: garchx_rv11
654 +
655 +- id: mem
656 + name: "MEM (multiplicative error model)"
657 + short: "MEM"
658 + year: 2002
659 + family: realized
660 + bibkey: engle2002new
661 + parents: [garch]
662 + equation: >-
663 + $x_t=\mu_t\eta_t$, $\mu_t=\omega+\alpha x_{t-1}+\beta\mu_{t-1}$, $\eta_t\ge0$ i.i.d., $\E\eta_t=1$
664 + key_property: "GARCH-type dynamics for a positive-valued series (realized variance, range, duration); ACD is the duration case"
665 + stationarity: >-
666 + $\alpha+\beta<1$
667 + status_in_wp46: out-of-scope
668 + reason: "not a model of r_t; its realized-measure equation is the second equation of the scored HEAVY model (multiple-indicator version: engle2006multiple; ACD: Engle and Russell 1998)"
669 +
670 +- id: heavy
671 + name: "HEAVY"
672 + short: "HEAVY"
673 + year: 2010
674 + family: realized
675 + bibkey: shephard2010realising
676 + parents: [garch_x, mem]
677 + equation: >-
678 + $\sigma_t^2=\omega+\alpha x_{t-1}+\beta\sigma_{t-1}^2$; $\mu_t=\E[x_t\,|\,\F_{t-1}]=\omega_R+\alpha_Rx_{t-1}+\beta_R\mu_{t-1}$
679 + key_property: "the realized measure replaces the squared return in the return-variance equation; a second MEM equation forecasts the measure"
680 + stationarity: >-
681 + $\beta<1$ and $\alpha_R+\beta_R<1$
682 + status_in_wp46: scored
683 + registry_id: heavy11
684 +
685 +- id: realized_garch
686 + name: "Realized GARCH"
687 + short: "Realized GARCH"
688 + year: 2012
689 + family: realized
690 + bibkey: hansen2012realized
691 + parents: [garch_x, egarch]
692 + equation: >-
693 + $\log\sigma_t^2=\omega+\beta\log\sigma_{t-1}^2+\gamma\log x_{t-1}$; $\log x_t=\xi+\varphi\log\sigma_t^2+\tau_1z_t+\tau_2(z_t^2-1)+u_t$
694 + key_property: "joint model of returns and the realized measure with a measurement equation and a leverage function $\\tau(z)$"
695 + stationarity: >-
696 + $|\beta+\varphi\gamma|<1$
697 + status_in_wp46: scored
698 + registry_id: realgarch11
699 + note: "Log-linear form scored; the likelihood includes the measurement equation and is not comparable with GARCH likelihoods."
700 +
701 +- id: realized_egarch
702 + name: "Realized EGARCH"
703 + short: "Realized EGARCH"
704 + year: 2016
705 + family: realized
706 + bibkey: hansen2016exponential
707 + parents: [realized_garch, egarch]
708 + equation: >-
709 + $\log\sigma_t^2=\omega+\beta\log\sigma_{t-1}^2+\tau(z_{t-1})+\gamma u_{t-1}$; $\log x_t=\xi+\varphi\log\sigma_t^2+\delta(z_t)+u_t$
710 + key_property: "EGARCH-type leverage from the return shock plus the measurement innovation $u_t$ in the variance; several realized measures at once"
711 + stationarity: >-
712 + $|\beta|<1$
713 + status_in_wp46: extension
714 + registry_id: realegarch11
715 + reason: "custom implementation under way"
716 +
717 +- id: har
718 + name: "HAR-RV"
719 + short: "HAR-RV"
720 + year: 2009
721 + family: realized
722 + bibkey: corsi2009simple
723 + parents: []
724 + equation: >-
725 + $x_{t+1}=\beta_0+\beta_d x_t+\beta_w\bar x_t^{(5)}+\beta_m\bar x_t^{(22)}+e_{t+1}$, $\bar x_t^{(n)}=n^{-1}\sum_{k=0}^{n-1}x_{t-k}$
726 + key_property: "heterogeneous autoregression of realized variance on daily, weekly and monthly averages (approximate long memory by OLS)"
727 + stationarity: >-
728 + AR(22) with restricted coefficients; stationary iff its characteristic roots lie outside the unit circle
729 + status_in_wp46: scored
730 + registry_id: har_rv
731 + note: "Levels and log (smearing-corrected) versions scored, one direct regression per horizon; working paper 2004."
732 +
733 +- id: harq
734 + name: "HARQ (and HAR-CJ, HAR-RS)"
735 + short: "HARQ"
736 + year: 2016
737 + family: realized
738 + bibkey: bollerslev2016exploiting
739 + parents: [har]
740 + equation: >-
741 + $x_{t+1}=\beta_0+(\beta_d+\beta_q\,RQ_t^{1/2})x_t+\beta_w\bar x_t^{(5)}+\beta_m\bar x_t^{(22)}+e_{t+1}$ ($RQ_t$ = realized quarticity)
742 + key_property: "measurement-error-adjusted persistence; HAR-CJ splits continuous and jump variation, HAR-RS uses realized semivariances"
743 + note: "HAR-CJ: andersen2007roughing; HAR-RS: patton2015good; HARQ: bollerslev2016exploiting (all in references.bib)."
744 + stationarity: "as HAR with time-varying daily coefficient"
745 + status_in_wp46: out-of-scope
746 + reason: "needs realized quarticity / bipower variation / semivariances as additional inputs; the pre-registered realized tier uses the plain HAR"
747 +
748 +# ---------------------------------------------------------------- multivariate
749 +- id: vec
750 + name: "VEC-GARCH (Bollerslev–Engle–Wooldridge)"
751 + short: "VEC"
752 + year: 1988
753 + family: multivariate
754 + bibkey: null
755 + reference: "Bollerslev, T., Engle, R. F. and Wooldridge, J. M. (1988), A capital asset pricing model with time-varying covariances, Journal of Political Economy 96(1), 116–131."
756 + parents: [garch]
757 + equation: >-
758 + $\mathrm{vech}(H_t)=C+\sum_{i}A_i\,\mathrm{vech}(\varepsilon_{t-i}\varepsilon_{t-i}')+\sum_{j}B_j\,\mathrm{vech}(H_{t-j})$ (diagonal $A_i,B_j$ in the original)
759 + key_property: "first multivariate GARCH: every covariance is a linear function of lagged cross-products and covariances"
760 + stationarity: >-
761 + eigenvalues of $\sum A_i+\sum B_j$ inside the unit circle; positive definiteness not guaranteed
762 + status_in_wp46: out-of-scope
763 + reason: "O(N^4) parameters and no positive-definiteness guarantee; the BEKK and DCC descendants are scored"
764 +
765 +- id: factor_arch
766 + name: "Factor-ARCH (Engle–Ng–Rothschild)"
767 + short: "Factor-ARCH"
768 + year: 1990
769 + family: multivariate
770 + bibkey: null
771 + reference: "Engle, R. F., Ng, V. K. and Rothschild, M. (1990), Asset pricing with a factor-ARCH covariance structure: Empirical estimates for Treasury bills, Journal of Econometrics 45(1–2), 213–237."
772 + parents: [vec, garch]
773 + equation: >-
774 + $H_t=\Omega+\sum_{k=1}^{K}\beta_k\beta_k'\,\sigma_{k,t}^2$, $\sigma_{k,t}^2$ a univariate GARCH of the factor portfolio $\phi_k'r_t$
775 + key_property: "time-varying covariances through a few GARCH factors (reduced rank); positive definite if $\\Omega$ is"
776 + stationarity: "factor GARCH conditions"
777 + status_in_wp46: out-of-scope
778 + reason: "requires factor-portfolio choice; Tier C baskets have N <= 5 where full correlation models are feasible"
779 +
780 +- id: ccc
781 + name: "CCC-GARCH"
782 + short: "CCC"
783 + year: 1990
784 + family: multivariate
785 + bibkey: bollerslev1990modelling
786 + parents: [garch]
787 + equation: >-
788 + $H_t=D_tRD_t$, $D_t=\mathrm{diag}(\sigma_{1,t},\dots,\sigma_{N,t})$, $R$ constant
789 + key_property: "univariate GARCH margins with a constant correlation matrix"
790 + stationarity: "univariate conditions; $H_t$ PD iff $R$ PD"
791 + status_in_wp46: scored
792 + registry_id: ccc_garch11
793 +
794 +- id: bekk
795 + name: "BEKK (full / diagonal)"
796 + short: "BEKK"
797 + year: 1995
798 + family: multivariate
799 + bibkey: engle1995multivariate
800 + parents: [vec, factor_arch]
801 + equation: >-
802 + $H_t=CC'+\sum_{i}A_i'\varepsilon_{t-i}\varepsilon_{t-i}'A_i+\sum_{j}B_j'H_{t-j}B_j$
803 + key_property: "quadratic form guaranteeing positive definiteness; nests the diagonal VEC and factor-ARCH"
804 + stationarity: >-
805 + eigenvalues of $\sum_i(A_i\otimes A_i)'+\sum_j(B_j\otimes B_j)'$ inside the unit circle
806 + status_in_wp46: out-of-scope
807 + reason: "O(N^2) parameters per matrix; the scalar restriction with covariance targeting is the scored Tier C member"
808 +
809 +- id: bekk_scalar
810 + name: "Scalar BEKK (covariance targeting)"
811 + short: "scalar BEKK"
812 + year: 1995
813 + family: multivariate
814 + bibkey: engle1995multivariate
815 + parents: [bekk, ewma]
816 + equation: >-
817 + $H_t=(1-a-b)\bar\Sigma+a\,\varepsilon_{t-1}\varepsilon_{t-1}'+b\,H_{t-1}$
818 + key_property: "two dynamic parameters; EWMA covariance is the case $a+b=1$, $\\bar\\Sigma$-term dropped"
819 + stationarity: >-
820 + $a,b\ge0$, $a+b<1$
821 + status_in_wp46: scored
822 + registry_id: scalar_bekk11
823 +
824 +- id: dcc
825 + name: "DCC"
826 + short: "DCC"
827 + year: 2002
828 + family: multivariate
829 + bibkey: engle2002dynamic
830 + parents: [ccc, bekk_scalar]
831 + equation: >-
832 + $H_t=D_tR_tD_t$; $Q_t=(1-a-b)\bar Q+a\,z_{t-1}z_{t-1}'+b\,Q_{t-1}$; $R_t=\mathrm{diag}(Q_t)^{-1/2}Q_t\,\mathrm{diag}(Q_t)^{-1/2}$
833 + key_property: "scalar GARCH-type dynamics for the correlation of the standardized residuals; two-step estimation"
834 + stationarity: >-
835 + $a,b\ge0$, $a+b<1$; the two-step estimator with $\bar Q$ = sample correlation is not consistent in general (aielli2013dynamic)
836 + status_in_wp46: scored
837 + registry_id: dcc11
838 + note: "Theoretical companion: engle2001theoretical (NBER WP 8554)."
839 +
840 +- id: adcc
841 + name: "Asymmetric DCC"
842 + short: "aDCC"
843 + year: 2006
844 + family: multivariate
845 + bibkey: cappiello2006asymmetric
846 + parents: [dcc, gjr]
847 + equation: >-
848 + $Q_t=(1-a-b)\bar Q-g\bar N+a\,z_{t-1}z_{t-1}'+g\,n_{t-1}n_{t-1}'+b\,Q_{t-1}$, $n_t=z_t\odot\ind{z_t<0}$
849 + key_property: "correlations respond more to joint negative shocks (GJR logic in the correlation recursion)"
850 + stationarity: >-
851 + $a+b+g\,\delta<1$ with $\delta$ the largest eigenvalue of $\bar Q^{-1/2}\bar N\bar Q^{-1/2}$
852 + status_in_wp46: scored
853 + registry_id: adcc11
854 +
855 +- id: cdcc
856 + name: "Corrected DCC (cDCC)"
857 + short: "cDCC"
858 + year: 2013
859 + family: multivariate
860 + bibkey: aielli2013dynamic
861 + parents: [dcc]
862 + equation: >-
863 + $Q_t=(1-a-b)\bar S+a\,Q_{t-1}^{*1/2}z_{t-1}z_{t-1}'Q_{t-1}^{*1/2}+b\,Q_{t-1}$, $Q_t^{*}=\mathrm{diag}(Q_t)$
864 + key_property: "rescales the outer product so that $\\bar S$ is the unconditional mean of $Q_t$: consistent two-step estimation"
865 + stationarity: "as DCC"
866 + status_in_wp46: out-of-scope
867 + reason: "the scored DCC uses Engle's original recursion with correlation targeting; cDCC (rmgarch default) is not implemented"
868 +
869 +- id: go_garch
870 + name: "GO-GARCH"
871 + short: "GO-GARCH"
872 + year: 2002
873 + family: multivariate
874 + bibkey: vanderweide2002gogarch
875 + parents: [factor_arch, ccc]
876 + equation: >-
877 + $\varepsilon_t=Zf_t$, $H_t=ZV_tZ'$, $V_t=\mathrm{diag}(\sigma_{1,t}^2,\dots,\sigma_{N,t}^2)$ with univariate GARCH for each factor; $Z=P\Lambda^{1/2}U$, $U$ orthogonal
878 + key_property: "generalized orthogonal factors (an estimated rotation of the principal components) with independent univariate GARCH"
879 + stationarity: "univariate factor conditions"
880 + status_in_wp46: out-of-scope
881 + reason: "identification of the rotation (ML/ICA) is implementation-specific; not part of the pre-registered Tier C set"
882 + note: "Precursor: Alexander's O-GARCH (principal components, U = I; not verified, not cited)."
883 +
884 +- id: deco
885 + name: "DECO (dynamic equicorrelation)"
886 + short: "DECO"
887 + year: 2012
888 + family: multivariate
889 + bibkey: null
890 + reference: "Engle, R. F. and Kelly, B. (2012), Dynamic equicorrelation, Journal of Business & Economic Statistics 30(2), 212–228."
891 + parents: [dcc]
892 + equation: >-
893 + $R_t=(1-\rho_t)I_N+\rho_t\iota\iota'$, $\rho_t=\dfrac{1}{N(N-1)}\big(\iota'R_t^{\mathrm{DCC}}\iota-N\big)$
894 + key_property: "all pairwise correlations equal at each date; closed-form inverse and determinant for large $N$"
895 + stationarity: "as the underlying DCC; $-1/(N-1)<\\rho_t<1$"
896 + status_in_wp46: out-of-scope
897 + reason: "designed for large N; Tier C baskets have N <= 5"
898 +
899 +- id: dcc_nl
900 + name: "DCC-NL (nonlinear shrinkage)"
901 + short: "DCC-NL"
902 + year: 2019
903 + family: multivariate
904 + bibkey: engle2019large
905 + parents: [dcc, cdcc]
906 + equation: >-
907 + DCC/cDCC recursion with $\bar Q$ replaced by the nonlinear-shrinkage estimator of the unconditional correlation matrix and composite-likelihood estimation of $(a,b)$
908 + key_property: "large-$N$ DCC: nonlinear shrinkage of the targeting matrix and composite-likelihood estimation"
909 + note: "Composite likelihood for vast DCC: pakel2021fitting."
910 + stationarity: "as DCC"
911 + status_in_wp46: out-of-scope
912 + reason: "large-N estimator; unnecessary for N <= 5"
913 +
914 +- id: mv_heavy
915 + name: "Multivariate HEAVY"
916 + short: "MV-HEAVY"
917 + year: 2012
918 + family: multivariate
919 + bibkey: noureldin2012multivariate
920 + parents: [heavy, bekk_scalar]
921 + equation: >-
922 + $H_t=C_H+a_H\,RC_{t-1}+b_H\,H_{t-1}$; $M_t=\E[RC_t\,|\,\F_{t-1}]=C_M+a_M\,RC_{t-1}+b_M\,M_{t-1}$ (scalar form; $RC_t$ = realized covariance)
923 + key_property: "realized covariance drives both the return covariance and its own (Wishart-type) measurement equation"
924 + stationarity: >-
925 + $b_H<1$, $a_M+b_M<1$
926 + status_in_wp46: out-of-scope
927 + reason: "needs synchronized intraday data for realized covariances (hansen2014realized, archakov2026multivariate are the realized-GARCH analogues); Tier C is daily-only"
928 +
929 +- id: mv_realized_garch
930 + name: "Multivariate Realized GARCH"
931 + short: "MV Realized GARCH"
932 + year: 2026
933 + family: multivariate
934 + bibkey: archakov2026multivariate
935 + parents: [realized_garch, mv_heavy]
936 + equation: >-
937 + $v_t=\omega+\beta v_{t-1}+\gamma u_{t-1}$ with $v_t=(\log h_{1,t},\dots,\log h_{N,t},\mathrm{vecl}[\log C_t]')'$ and realized-measure equation $x_t=\xi+\varphi v_t+\tau(z_t)+u_t$ (schematic; see reference)
938 + key_property: "realized-GARCH structure on the log variances and the matrix-logarithm of the correlation matrix (unconstrained parametrization)"
939 + stationarity: >-
940 + $|\mathrm{eig}(\beta+\gamma\varphi)|<1$ (vector form)
941 + status_in_wp46: out-of-scope
942 + reason: "needs realized covariances; 2026 Journal of Econometrics article, outside the pre-registered Tier C set"
943 +
944 +# ---------------------------------------------------------------- stochastic volatility
945 +- id: sv
946 + name: "Stochastic volatility (log-SV, Taylor)"
947 + short: "SV (Taylor)"
948 + year: 1986
949 + family: stochastic-volatility
950 + bibkey: taylor2008modelling
951 + parents: []
952 + equation: >-
953 + $\varepsilon_t=\sigma_tz_t$, $\log\sigma_t^2=\omega+\phi\log\sigma_{t-1}^2+\sigma_\eta\eta_t$, $\eta_t\sim N(0,1)$ independent of $z_t$
954 + key_property: "latent (parameter-driven) log variance with its own innovation; the variance is not $\\F_{t-1}$-measurable"
955 + stationarity: >-
956 + $|\phi|<1$
957 + status_in_wp46: unsupported
958 + registry_id: sv
959 + reason: "simulation-based (MCMC/particle) likelihood not feasible at the rolling re-estimation cadence; registry reference kim1998stochastic (MCMC with mixture offset) and taylor1994modeling (review); Bayesian analysis in jacquier1994bayesian"
960 + note: "Taylor (1986, Wiley 1st ed.); the verified record is the 2008 2nd edition."
961 +
962 +- id: msv
963 + name: "Multivariate SV, QML (Harvey–Ruiz–Shephard)"
964 + short: "MSV (Harvey–Ruiz–Shephard)"
965 + year: 1994
966 + family: stochastic-volatility
967 + bibkey: harvey1994multivariate
968 + parents: [sv]
969 + equation: >-
970 + $\log\varepsilon_{i,t}^2=\log\sigma_{i,t}^2+\log z_{i,t}^2$, $\log\sigma_t^2=\omega+\Phi\log\sigma_{t-1}^2+\eta_t$ (linear state space; Kalman-filter QML)
971 + key_property: "multivariate SV with common factors; quasi-maximum likelihood on $\\log\\varepsilon^2$"
972 + stationarity: >-
973 + eigenvalues of $\Phi$ inside the unit circle
974 + status_in_wp46: out-of-scope
975 + reason: "parameter-driven multivariate model; outside the GARCH-based Tier C set"
976 +
977 +- id: sv_ksc
978 + name: "SV by MCMC (Kim–Shephard–Chib)"
979 + short: "SV (Kim–Shephard–Chib)"
980 + year: 1998
981 + family: stochastic-volatility
982 + bibkey: kim1998stochastic
983 + parents: [sv]
984 + equation: >-
985 + log-SV as above; $\log z_t^2$ approximated by a seven-component normal mixture; MCMC with an offset mixture and particle-filter likelihood for model comparison with ARCH
986 + key_property: "exact-likelihood (Bayesian) inference for SV and a formal comparison with GARCH"
987 + stationarity: "as log-SV"
988 + status_in_wp46: unsupported
989 + reason: "same architecture as sv; estimation method only (registry reference for the unsupported SV entry)"
990 +
991 +# ---------------------------------------------------------------- other relatives
992 +- id: periodic_garch
993 + name: "Periodic GARCH"
994 + short: "Periodic GARCH"
995 + year: 1996
996 + family: other
997 + bibkey: null
998 + reference: "Bollerslev, T. and Ghysels, E. (1996), Periodic autoregressive conditional heteroscedasticity, Journal of Business & Economic Statistics 14(2), 139–151."
999 + parents: [garch]
1000 + equation: >-
1001 + $\sigma_t^2=\omega_{s(t)}+\alpha_{s(t)}\varepsilon_{t-1}^2+\beta_{s(t)}\sigma_{t-1}^2$, $s(t)\in\{1,\dots,S\}$ the stage of a known periodic cycle
1002 + key_property: "GARCH coefficients that vary deterministically with the calendar (day of the week, intraday season)"
1003 + stationarity: >-
1004 + periodic stationarity: $\prod_{s=1}^{S}(\alpha_s+\beta_s)<1$ (second order, symmetric case)
1005 + status_in_wp46: out-of-scope
1006 + reason: "calendar effects are not part of the pre-registered information set; no implementation in arch/rugarch"
1007 +
1008 +- id: garch_jump
1009 + name: "GARCH-jump (ARJI, Maheu–McCurdy)"
1010 + short: "GARCH-jump (ARJI)"
1011 + year: 2004
1012 + family: other
1013 + bibkey: null
1014 + reference: "Maheu, J. M. and McCurdy, T. H. (2004), News arrival, jump dynamics, and volatility components for individual stock returns, Journal of Finance 59(2), 755–793."
1015 + parents: [garch, gjr]
1016 + equation: >-
1017 + $r_t=\mu+\sigma_tz_t+\sum_{k=1}^{n_t}Y_{t,k}$, $n_t\,|\,\F_{t-1}\sim\mathrm{Poisson}(\lambda_t)$, $\lambda_t=\lambda_0+\rho\lambda_{t-1}+\gamma\xi_{t-1}$, $\sigma_t^2$ GARCH/GJR on $\varepsilon_{t-1}=r_{t-1}-\mu$
1018 + key_property: "autoregressive conditional jump intensity on top of a GARCH diffusion component; total variance $\\sigma_t^2+\\lambda_t(\\mu_J^2+\\sigma_J^2)$"
1019 + stationarity: >-
1020 + $\rho<1$ for $\lambda_t$; GARCH condition for $\sigma_t^2$
1021 + status_in_wp46: out-of-scope
1022 + reason: "jump-intensity filter requires the full compound-Poisson likelihood; variance forecasts mix two components; no vetted implementation"
1023 + note: "Earlier ARCH-jump mixture: Jorion (1988, RFS 1(4)) (not verified, not cited)."
added results/metrics/references_candidates_genealogy.json +26 −0
Large diff (26 lines) is not loaded by default to keep the page fast.Load diff
added scripts/make_encyclopedia.py +96 −0
Large diff (96 lines) is not loaded by default to keep the page fast.Load diff
added scripts/make_genealogy_figure.py +124 −0
Large diff (124 lines) is not loaded by default to keep the page fast.Load diff
modified src/wp46/models/extensions.py +16 −20
Large diff (69 lines) is not loaded by default to keep the page fast.Load diff
Menu

Theme