1# WP46 model registry — the BINDING list of architectures and specifications (C1). One entry per architecture;2# specifications = architecture x innovation distribution x order (orders other than (1,1) only where listed).3# status: implemented | unsupported (no vetted implementation in the version-locked libraries; not scored) | extension.4# impl: arch (Sheppard, arch 8.0.0) | custom (src/wp46/models/custom.py, validated vs arch/rugarch) | ols | none.5# dists: innovation laws that are formally valid for the architecture AND available in the implementation.6# tier: A = daily returns only; B = daily returns + lagged realized measure; C = multivariate (configs/study.yaml).7version: 18frozen_with_protocol: true9families:10 baseline: {label: "Baselines", color_key: 0}11 classical: {label: "Classical ARCH/GARCH", color_key: 1}12 asymmetric: {label: "Asymmetric", color_key: 2}13 power: {label: "Power / absolute", color_key: 3}14 fractional: {label: "Fractional persistence", color_key: 4}15 component: {label: "Component", color_key: 5}16 regime-switching: {label: "Regime switching", color_key: 6}17 score-driven: {label: "Score-driven (non-GARCH)", color_key: 7}18 realized: {label: "Realized-measure models (Tier B)", color_key: 8}19models:20 constvar: {family: baseline, tier: A, impl: arch, status: implemented, dists: [normal], label: "Constant variance (window mean)", ref: null, nested_in: garch11}21 histvar22: {family: baseline, tier: A, impl: ols, status: implemented, dists: [empirical], label: "Historical variance, 22 days", ref: null}22 histvar66: {family: baseline, tier: A, impl: ols, status: implemented, dists: [empirical], label: "Historical variance, 66 days", ref: null}23 histvar252: {family: baseline, tier: A, impl: ols, status: implemented, dists: [empirical], label: "Historical variance, 252 days", ref: null}24 ewma094: {family: baseline, tier: A, impl: arch, status: implemented, dists: [normal], label: "EWMA (RiskMetrics 1994, lambda = 0.94)", ref: jpmorgan1996riskmetrics, nested_in: igarch11}25 rm2006: {family: baseline, tier: A, impl: arch, status: implemented, dists: [normal], label: "RiskMetrics 2006", ref: zumbach2009riskmetrics}26 arch5: {family: classical, tier: A, impl: arch, status: implemented, dists: [normal, t, ged, skewt], label: "ARCH(5)", ref: engle1982autoregressive}27 garch11: {family: classical, tier: A, impl: arch, status: implemented, dists: [normal, t, ged, skewt], label: "GARCH(1,1)", ref: bollerslev1986generalized, benchmark: true}28 garch21: {family: classical, tier: A, impl: arch, status: implemented, dists: [normal, t, ged, skewt], label: "GARCH(2,1)", ref: bollerslev1986generalized}29 garch12: {family: classical, tier: A, impl: arch, status: implemented, dists: [normal, t, ged, skewt], label: "GARCH(1,2)", ref: bollerslev1986generalized}30 igarch11: {family: classical, tier: A, impl: custom, status: implemented, dists: [normal, t, ged, skewt], label: "IGARCH(1,1)", ref: engle1986modelling}31 garchm11: {family: classical, tier: A, impl: custom, status: implemented, dists: [normal, t, ged, skewt], label: "GARCH-M(1,1)", ref: engle1987estimating}32 gjr11: {family: asymmetric, tier: A, impl: arch, status: implemented, dists: [normal, t, ged, skewt], label: "GJR-GARCH(1,1)", ref: glosten1993relation}33 tarch11: {family: asymmetric, tier: A, impl: arch, status: implemented, dists: [normal, t, ged, skewt], label: "TGARCH(1,1) (Zakoian, threshold on sigma)", ref: zakoian1994threshold}34 egarch11: {family: asymmetric, tier: A, impl: arch, status: implemented, dists: [normal, t, ged, skewt], label: "EGARCH(1,1)", ref: nelson1991conditional}35 nagarch11: {family: asymmetric, tier: A, impl: custom, status: implemented, dists: [normal, t, ged, skewt], label: "NAGARCH(1,1) (Engle-Ng)", ref: engle1993measuring}36 qgarch11: {family: asymmetric, tier: A, impl: custom, status: implemented, dists: [normal, t, ged, skewt], label: "QGARCH(1,1) (Sentana)", ref: sentana1995quadratic}37 avgarch11: {family: power, tier: A, impl: arch, status: implemented, dists: [normal, t, ged, skewt], label: "AVGARCH(1,1) (Taylor-Schwert)", ref: taylor2008modelling}38 aparch11: {family: power, tier: A, impl: arch, status: implemented, dists: [normal, t, ged, skewt], label: "APARCH(1,1)", ref: ding1993long}39 figarch11: {family: fractional, tier: A, impl: arch, status: implemented, dists: [normal, t, ged, skewt], label: "FIGARCH(1,d,1)", ref: baillie1996fractionally, note: "arch truncates the ARCH(inf) representation at 1000 lags"}40 cgarch11: {family: component, tier: A, impl: custom, status: implemented, dists: [normal, t, ged, skewt], label: "Component GARCH (Engle-Lee)", ref: engle1999long}41 msgarch2: {family: regime-switching, tier: A, impl: custom, status: implemented, dists: [normal, t], label: "MS-GARCH(2) (Haas-Mittnik-Paolella)", ref: haas2004new, note: "common nu across regimes; regimes ordered by unconditional variance"}42 gas_t11: {family: score-driven, tier: A, impl: custom, status: implemented, dists: [t], label: "GAS-t(1,1) / Beta-t-GARCH (non-GARCH comparator)", ref: creal2013generalized}43 sv: {family: score-driven, tier: A, impl: none, status: unsupported, dists: [], label: "Stochastic volatility", ref: kim1998stochastic, note: "simulation-based estimation not feasible at the rolling re-estimation cadence of this benchmark; not scored"}44 rm_rw: {family: realized, tier: B, impl: ols, status: implemented, dists: [empirical], label: "Realized-measure random walk", ref: null}45 har_rv: {family: realized, tier: B, impl: ols, status: implemented, dists: [empirical], label: "HAR-RV (direct, levels)", ref: corsi2009simple}46 loghar_rv: {family: realized, tier: B, impl: ols, status: implemented, dists: [empirical], label: "log-HAR-RV (direct, smearing)", ref: corsi2009simple}47 realgarch11: {family: realized, tier: B, impl: custom, status: implemented, dists: [normal, t], label: "Realized GARCH(1,1), log-linear", ref: hansen2012realized}48 heavy11: {family: realized, tier: B, impl: custom, status: implemented, dists: [normal, t], label: "HEAVY(1,1)", ref: shephard2010realising}49 garchx_rv11: {family: realized, tier: B, impl: custom, status: implemented, dists: [normal, t], label: "GARCH-X(1,1) with lagged realized measure", ref: engle2002new}50 # ---- post-registration extensions (2026-11-09 evening; scored with the same protocol, reported separately as exploratory)51 stgarch11: {family: regime-switching, tier: A, impl: custom, status: extension, dists: [normal, t], label: "Smooth-transition GARCH (logistic)", ref: gonzalezrivera1998smooth}52 betategarch11: {family: score-driven, tier: A, impl: custom, status: extension, dists: [t], label: "Beta-t-EGARCH", ref: harvey2008beta}53 garch_midas: {family: component, tier: A, impl: custom, status: extension, dists: [normal, t], label: "GARCH-MIDAS (own monthly RV, 24 months)", ref: engle2013stock}54 hygarch11: {family: fractional, tier: A, impl: custom, status: extension, dists: [normal, t], label: "HYGARCH(1,d,1)", ref: davidson2004moment}55 fiaparch11: {family: fractional, tier: A, impl: custom, status: extension, dists: [normal, t], label: "FIAPARCH(1,d,1)", ref: tse1998conditional}56 fiegarch11: {family: fractional, tier: A, impl: custom, status: extension, dists: [normal, t], label: "FIEGARCH(1,d,1)", ref: bollerslev1996modeling}57 realegarch11: {family: realized, tier: B, impl: custom, status: extension, dists: [normal, t], label: "Realized EGARCH(1,1)", ref: hansen2016exponential}58 egarch11c: {family: asymmetric, tier: A, impl: arch, status: extension, dists: [normal, t, ged, skewt], label: "EGARCH(1,1), constrained (alpha >= 0, beta <= 0.995)", ref: nelson1991conditional, note: "A-06: constrained twin of egarch11 after the explosive-feedback diagnosis"}59