SPB Git

spb/wp46_uqo

Public
5.2 KB

# Model card — heavy11 (HEAVY(1,1), Shephard–Sheppard)

# 1. Identity

  • model_id: heavy11 · family: realized (Tier B) · tier: B · status: implemented · impl: custom (src/wp46/models/custom.py::HEAVY11)
  • Label: HEAVY(1,1) · distributions: normal, t (return equation)
  • Seminal citation: shephard2010realising
  • Other references: noureldin2012multivariate (multivariate HEAVY), engle2002new (GARCH-X), engle2006multiple (MEM, the model class of the RM equation), hansen2012realized; boudt2012highfrequency (HEAVYmodel in R, not run).

# 2. Definition

With $RM_t = x_t$ (rv5ss_on, percent², end of day t): $$r_t = \mu + \varepsilon_t,\ \varepsilon_t = \sqrt{h_t},z_t,\qquad h_t = \omega + \alpha,RM_{t-1} + \beta,h_{t-1}\quad(\text{HEAVY-r: } \operatorname{Var}[r_t\mid\mathcal F_{t-1}]),$$ $$\mu_t = \omega_R + \alpha_R,RM_{t-1} + \beta_R,\mu_{t-1}\quad(\text{HEAVY-RM: } E[RM_t\mid\mathcal F_{t-1}]) .$$ The return-variance equation uses the lagged realized measure, not $\varepsilon_{t-1}^2$ (literature-matrix caveat #7). rec_heavy_r: $h_0 = s_0$ (backcast of $\varepsilon^2$), $\mu_0$ = mean of the first min(75, T) realized measures. Innovations: $z_t$ normal or standardised t(ν); the RM equation has no distributional assumption beyond the multiplicative-error QL.

# 3. Parameter space and admissibility

  • Parameters: mu, omega, alpha, beta, omega_r, alpha_r, beta_r (+ nu).
  • Reparameterisation: $\omega = e^{\theta}$, $\alpha = e^{\theta}$ (unbounded above), $\beta = \sigma(\theta) \in (0,1)$, $\omega_R = e^{\theta}$, $\alpha_R + \beta_R = \sigma(\theta) \in (0,1)$, $\alpha_R = (\alpha_R+\beta_R)\sigma(\theta')$.
  • Admissibility flag: $\omega > 0$, $\alpha \ge 0$, $0 \le \beta < 1$, $\omega_R > 0$, $\alpha_R \ge 0$, $\alpha_R + \beta_R < 1$ (stationarity of the RM equation; stationarity of $h_t$ given stationary $RM$).

# 4. Nesting and relations

Nests rm_rw in the return equation ($\alpha = 1$, $\omega = \beta = 0$); GARCH-X adds $\alpha_G\varepsilon_{t-1}^2$ to HEAVY-r (garchx_rv11 reuses the HEAVY-RM equation); Realized GARCH is the log-linear relative with a measurement equation; the HEAVY-RM equation is a MEM(1,1) for the realized measure (engle2006multiple).

# 5. Estimation

Quasi-maximum likelihood (CustomModel.fit with extra_loglik): objective $= -\sum_t\big[\log f_z(\varepsilon_t/\sqrt{h_t}) - \tfrac12\log h_t\big] + \sum_t\big[\log\mu_t + RM_t/\mu_t\big]$ — Gaussian (or t) QL for returns plus the multiplicative-error (exponential/Gamma, QLIKE-type) QL for the realized measure; the two equations share no parameters, so the joint maximisation is equivalent to the separate estimation described by Shephard & Sheppard, but the code performs it in one L-BFGS-B run (maxiter 2000) over all seven (eight) parameters from three starts (ω, α, β, ω_R, α_R, β_R) ∈ {(0.05 m, 0.4, 0.6, 0.05 m, 0.4, 0.55), (0.1 m, 0.3, 0.65, 0.1 m, 0.3, 0.6), (0.02 m, 0.5, 0.5, 0.02 m, 0.5, 0.48)} with $m$ = mean RM; Nelder–Mead polish on failure; μ start = sample mean. Point estimates only; the reported loglik is the joint QL (not comparable with GARCH).

# 6. Forecasting

HEAVY11.step_forecast (closed form, as in shephard2010realising): $$\hat h_{t+1} = \omega + \alpha RM_t + \beta h_t,\quad \hat\mu_{t+1} = \omega_R + \alpha_R RM_t + \beta_R\mu_t,\qquad \hat h_{t+k} = \omega + \alpha,\hat\mu_{t+k-1} + \beta,\hat h_{t+k-1},\quad \hat\mu_{t+k} = \omega_R + (\alpha_R + \beta_R),\hat\mu_{t+k-1},\ k \ge 2 .$$ Cumulative = sum over k ≤ h. Method: analytic.

# 7. Implementation

  • src/wp46/models/custom.py::HEAVY11 (numba rec_heavy_r for both equations).
  • Cross-check: none against a library (not in results/metrics/rugarch_crosscheck.json; highfrequency::HEAVYmodel not run).
  • Tests: tests/simulation/test_recovery.py::test_heavy_recovery (T = 4,000, Gamma(4, 0.25) multiplicative RM noise; α, β, α_R within 0.1 of (0.4, 0.55, 0.45)); tests/unit/test_custom_models.py::test_realized_models_fit_on_synthetic_measure; tests/integration/test_rolling_driver.py::test_driver_tier_b_and_failure_flags (heavy11, normal, Tier B input and failure flags).

# 8. Known limitations / failure modes

The return equation has no $\varepsilon^2$ term, so on days with invalid realized measures the imputed $r^2$ drives $h_t$ directly; α is unbounded above (large α with small β is admissible); μ_0 initialised by a 75-day mean of RM (not a backcast of the same form as $h_0$); the RM equation's multiplicative-error QL is consistent for $E[RM_t\mid\mathcal F_{t-1}]$ but the t option affects only the return equation; near-unit $\alpha_R + \beta_R$ makes long-horizon RM forecasts slow to revert.

# 9. Computational footprint

Analytic; 7–8 parameters; two cheap recursions per evaluation. Not in the pilot; cost order of garch11 custom to nagarch11.

# 10. Literature expectations

shephard2010realising: HEAVY beats GARCH in-sample and out-of-sample at short horizons and adapts faster after level shifts, with the gain decaying as the horizon grows (their multi-step results); noureldin2012multivariate extend this to covariances. Pre-registered H3 applies; the matrix lists HEAVY among the three likelihood-based Tier B models.

Files · main
Menu

Theme