SPB Git

Repository Public Research preview

README.md 7.7 KB

# WP46 model cards — index

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).

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).

model_id family tier implementation distributions status card
constvar baseline A arch 8.0.0 ConstantVariance normal implemented constvar.md
histvar22 baseline A parameter-free (baselines.HistVar) empirical implemented histvar22.md
histvar66 baseline A parameter-free (baselines.HistVar) empirical implemented histvar66.md
histvar252 baseline A parameter-free (baselines.HistVar) empirical implemented histvar252.md
ewma094 baseline A arch 8.0.0 EWMAVariance(0.94) normal implemented ewma094.md
rm2006 baseline A arch 8.0.0 RiskMetrics2006 normal implemented rm2006.md
arch5 classical A arch 8.0.0 ARCH(5) normal, t, ged, skewt implemented arch5.md
garch11 classical A arch 8.0.0 GARCH(1,0,1) normal, t, ged, skewt implemented (benchmark) garch11.md
garch21 classical A arch 8.0.0 GARCH(2,0,1) normal, t, ged, skewt implemented garch21.md
garch12 classical A arch 8.0.0 GARCH(1,0,2) normal, t, ged, skewt implemented garch12.md
igarch11 classical A custom IGARCH11 normal, t, ged, skewt implemented igarch11.md
garchm11 classical A custom GARCHM11 normal, t, ged, skewt implemented garchm11.md
gjr11 asymmetric A arch 8.0.0 GARCH(1,1,1) normal, t, ged, skewt implemented gjr11.md
tarch11 asymmetric A arch 8.0.0 GARCH(1,1,1, power=1) (Zakoïan) normal, t, ged, skewt implemented tarch11.md
egarch11 asymmetric A arch 8.0.0 EGARCH(1,1,1) normal, t, ged, skewt implemented egarch11.md
nagarch11 asymmetric A custom NAGARCH11 normal, t, ged, skewt implemented nagarch11.md
qgarch11 asymmetric A custom QGARCH11 normal, t, ged, skewt implemented qgarch11.md
avgarch11 power A arch 8.0.0 GARCH(1,0,1, power=1) normal, t, ged, skewt implemented avgarch11.md
aparch11 power A arch 8.0.0 APARCH(1,1,1) normal, t, ged, skewt implemented aparch11.md
figarch11 fractional A arch 8.0.0 FIGARCH(1,1) (truncation 1000) normal, t, ged, skewt implemented figarch11.md
fiegarch11 fractional A custom FIEGARCH11 (truncation 1000) normal, t extension fiegarch11.md
fiaparch11 fractional A custom FIAPARCH11 (truncation 1000) normal, t extension fiaparch11.md
hygarch11 fractional A custom HYGARCH11 (truncation 1000) normal, t extension hygarch11.md
cgarch11 component A custom CGARCH11 normal, t, ged, skewt implemented cgarch11.md
msgarch2 regime-switching A custom MSGARCH2 (Haas–Mittnik–Paolella) normal, t implemented msgarch2.md
stgarch11 regime-switching A custom STGARCH11 (logistic) normal, t extension stgarch11.md
garch_midas component A custom GARCHMIDAS (own monthly RV, K = 24) normal, t extension garch_midas.md
gas_t11 score-driven A custom GAST11 t implemented gas_t11.md
betategarch11 score-driven A custom BetaTEGARCH11 t extension betategarch11.md
sv score-driven (registry grouping) A none — unsupported sv.md
rm_rw realized B parameter-free (baselines.RMRandomWalk) empirical implemented rm_rw.md
har_rv realized B OLS (baselines.HARRV) empirical implemented har_rv.md
loghar_rv realized B OLS (baselines.HARRV(log=True)) empirical implemented loghar_rv.md
realgarch11 realized B custom RealGARCH11 normal, t implemented realgarch11.md
heavy11 realized B custom HEAVY11 normal, t implemented heavy11.md
garchx_rv11 realized B custom GARCHXRV11 normal, t implemented garchx_rv11.md
realegarch11 realized B custom RealEGARCH11 normal, t extension realegarch11.md

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).

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)".

Files main
Menu

Theme