SPB Git

Repository Public Research preview

hygarch11.md 7.9 KB

# Model card — hygarch11 (HYGARCH(1,d,1), hyperbolic GARCH) — post-registration extension

# 1. Identity

  • 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)
  • Label: HYGARCH(1,d,1) · distributions: normal, t (registry dists; the class also accepts ged/skewt but those pairs are not scored)
  • Seminal citation: davidson2004moment
  • 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.

# 2. Definition (as coded)

$$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 \lambda(L) = 1 - (1-\beta L)^{-1}(1-\phi L)\big[1 + \mathrm{amp},\big((1-L)^d - 1\big)\big],$$ 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.

# 3. Parameter space and admissibility

  • Parameters: mu, omega, d, phi, beta, amp (+ nu for t).
  • 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.
  • 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.

# 4. Nesting and relations

  • amp = 1: FIGARCH(1,d,1) exactly (same truncation; the identity is tested, §7); figarch11 (arch) is the registry twin.
  • 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^θ).
  • d → 0: GARCH(1,1) for any amp (same reduction).
  • 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.

# 5. Estimation

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.

# 6. Forecasting

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: $$\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),$$ 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.

# 7. Implementation and verification

  • src/wp46/models/extensions.py::HYGARCH11, figarch_weights, frac_diff_coefs, numba rec_archinf; dispatched through EXTENSIONS.
  • 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).
  • 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.

# 8. Known limitations / failure modes

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

# 9. Computational footprint

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.

# 10. Literature expectations

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.

Files main
Menu

Theme