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
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 | | 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. | | 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 | | 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. | | 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 | | 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. | | 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 | # WP46 model cards — index | 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 | 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). | 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 | | `avgarch11` | power | A | arch 8.0.0 `GARCH(1,0,1, power=1)` | normal, t, ged, skewt | implemented | [avgarch11.md](avgarch11.md) | | 26 | | `avgarch11` | power | A | arch 8.0.0 `GARCH(1,0,1, power=1)` | normal, t, ged, skewt | implemented | [avgarch11.md](avgarch11.md) | | ||
| 27 | | `aparch11` | power | A | arch 8.0.0 `APARCH(1,1,1)` | normal, t, ged, skewt | implemented | [aparch11.md](aparch11.md) | | 27 | | `aparch11` | power | A | arch 8.0.0 `APARCH(1,1,1)` | normal, t, ged, skewt | implemented | [aparch11.md](aparch11.md) | | ||
| 28 | | `figarch11` | fractional | A | arch 8.0.0 `FIGARCH(1,1)` (truncation 1000) | normal, t, ged, skewt | implemented | [figarch11.md](figarch11.md) | | 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) | | 29 | +| `fiegarch11` | fractional | A | custom `FIEGARCH11` (truncation 1000) | normal, t | extension | [fiegarch11.md](fiegarch11.md) | | ||
| 30 | −| `fiaparch11` | fractional | A | none | — | unsupported | [fiaparch11.md](fiaparch11.md) | | 30 | +| `fiaparch11` | fractional | A | custom `FIAPARCH11` (truncation 1000) | normal, t | extension | [fiaparch11.md](fiaparch11.md) | | ||
| 31 | −| `hygarch11` | fractional | A | none | — | unsupported | [hygarch11.md](hygarch11.md) | | 31 | +| `hygarch11` | fractional | A | custom `HYGARCH11` (truncation 1000) | normal, t | extension | [hygarch11.md](hygarch11.md) | | ||
| 32 | | `cgarch11` | component | A | custom `CGARCH11` | normal, t, ged, skewt | implemented | [cgarch11.md](cgarch11.md) | | 32 | | `cgarch11` | component | A | custom `CGARCH11` | normal, t, ged, skewt | implemented | [cgarch11.md](cgarch11.md) | | ||
| 33 | | `msgarch2` | regime-switching | A | custom `MSGARCH2` (Haas–Mittnik–Paolella) | normal, t | implemented | [msgarch2.md](msgarch2.md) | | 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) | | 34 | +| `stgarch11` | regime-switching | A | custom `STGARCH11` (logistic) | normal, t | extension | [stgarch11.md](stgarch11.md) | | ||
| 35 | −| `garch_midas` | component | A | none | — | unsupported | [garch_midas.md](garch_midas.md) | | 35 | +| `garch_midas` | component | A | custom `GARCHMIDAS` (own monthly RV, K = 24) | normal, t | extension | [garch_midas.md](garch_midas.md) | | ||
| 36 | | `gas_t11` | score-driven | A | custom `GAST11` | t | implemented | [gas_t11.md](gas_t11.md) | | 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 | | `sv` | score-driven (registry grouping) | A | none | — | unsupported | [sv.md](sv.md) | | 38 | | `sv` | score-driven (registry grouping) | A | none | — | unsupported | [sv.md](sv.md) | | ||
| 38 | | `rm_rw` | realized | B | parameter-free (`baselines.RMRandomWalk`) | empirical | implemented | [rm_rw.md](rm_rw.md) | | 39 | | `rm_rw` | realized | B | parameter-free (`baselines.RMRandomWalk`) | empirical | implemented | [rm_rw.md](rm_rw.md) | | ||
| 39 | | `har_rv` | realized | B | OLS (`baselines.HARRV`) | empirical | implemented | [har_rv.md](har_rv.md) | | 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 | | `realgarch11` | realized | B | custom `RealGARCH11` | normal, t | implemented | [realgarch11.md](realgarch11.md) | | 42 | | `realgarch11` | realized | B | custom `RealGARCH11` | normal, t | implemented | [realgarch11.md](realgarch11.md) | | ||
| 42 | | `heavy11` | realized | B | custom `HEAVY11` | normal, t | implemented | [heavy11.md](heavy11.md) | | 43 | | `heavy11` | realized | B | custom `HEAVY11` | normal, t | implemented | [heavy11.md](heavy11.md) | | ||
| 43 | | `garchx_rv11` | realized | B | custom `GARCHXRV11` | normal, t | implemented | [garchx_rv11.md](garchx_rv11.md) | | 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 | 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 | 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 | 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). | 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 | 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. | 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 | ## 1. Identity | 3 | ## 1. Identity | ||
| 4 | −- **model_id:** `fiaparch11` · **family:** fractional · **tier:** A · **status:** unsupported · **impl:** none · **distributions:** [] (registry note: "no vetted implementation; not scored") | 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 | −- **Seminal citation:** `tse1998conditional` (Tse 1998). Related: `ding1993long` (APARCH), `baillie1996fractionally` (FIGARCH). | 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) | 9 | +## 2. Definition (as coded) | ||
| 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. | 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 | 14 | +## 3. Parameter space and admissibility | ||
| 11 | −Not implemented in WP46. Would require the FIGARCH truncated weights on $(|\varepsilon| - \gamma\varepsilon)^\delta$ and simulation-based multi-step forecasts (δ ≠ 2). | 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 | 19 | +## 4. Nesting and relations | ||
| 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. | 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 | 25 | +## 5. Estimation | ||
| 17 | −Not applicable. The matrix notes it is "heavy to estimate". | 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 | ## 10. Literature expectations | 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 | ## 1. Identity | 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") | 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 | −- **Seminal citation:** `bollerslev1996modeling` (Bollerslev & Mikkelsen 1996). Related: `nelson1991conditional` (EGARCH), `baillie1996fractionally` (FIGARCH). | 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) | 9 | +## 2. Definition (as coded) | ||
| 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$). | 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 | 14 | +## 3. Parameter space and admissibility | ||
| 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). | 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 | 19 | +## 4. Nesting and relations | ||
| 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). | 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 | 24 | +## 5. Estimation | ||
| 17 | −Not applicable (not run). The literature matrix lists it as "custom (phase 3, optional)". | 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 | ## 10. Literature expectations | 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 | ## 1. Identity | 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") | 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 | −- **Seminal citation:** `engle2013stock` (Engle, Ghysels & Sohn 2013). Related: `ghysels2006predicting`, `ghysels2007midas` (MIDAS regressions), `engle1999long` (component GARCH, scored as `cgarch11`). | 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) | 9 | +## 2. Definition (as coded) | ||
| 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. | 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 | 15 | +## 3. Parameter space and admissibility | ||
| 11 | −Not implemented. Note that arch's `MIDASHyperbolic` is a MIDAS-weighted ARCH on daily squared returns, **not** GARCH-MIDAS (literature matrix §a.4). | 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 | 20 | +## 4. Nesting and relations | ||
| 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. | 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 | 25 | +## 5. Estimation | ||
| 17 | −Not applicable. | 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 | ## 10. Literature expectations | 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 | ## 1. Identity | 3 | ## 1. Identity | ||
| 4 | −- **model_id:** `hygarch11` · **family:** fractional · **tier:** A · **status:** unsupported · **impl:** none · **distributions:** [] (registry note: "no vetted implementation; not scored") | 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 | −- **Seminal citation:** `davidson2004moment`. Related: `baillie1996fractionally`, `conrad2006inequality` (positivity; Conrad 2007 on HYGARCH constraints is not in the .bib — literature matrix). | 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) | 9 | +## 2. Definition (as coded) | ||
| 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). | 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 | 14 | +## 3. Parameter space and admissibility | ||
| 11 | −Not implemented in WP46; positivity constraints are non-trivial (matrix §a.3). | 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 | 19 | +## 4. Nesting and relations | ||
| 14 | −Not in arch 8.0.0 or rugarch 1.5-6; no authoritative cross-check → `unsupported` (D-11). | 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 | 25 | +## 5. Estimation | ||
| 17 | −Not applicable. | 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 | ## 10. Literature expectations | 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 | ## 1. Identity | 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)") | 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 | −- **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`. | 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) | 9 | +## 2. Definition (as coded) | ||
| 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. | 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 | 15 | +## 3. Parameter space and admissibility | ||
| 11 | −Not implemented in WP46. | 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 | 20 | +## 4. Nesting and relations | ||
| 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. | 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 | 25 | +## 5. Estimation | ||
| 17 | −Not applicable. | 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 | ## 10. Literature expectations | 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