Repository Public Research preview
1# Model card — `egarch11` (EGARCH(1,1))23## 1. Identity4- **model_id:** `egarch11` · **family:** asymmetric · **tier:** A · **status:** implemented · **impl:** arch 8.0.0 (`EGARCH(p=1, o=1, q=1)`)5- **Label:** EGARCH(1,1) · **distributions:** normal, t, ged, skewt6- **Seminal citation:** `nelson1991conditional`7- **Other references:** `straumann2006quasi` (EGARCH QMLE theory), `harvey2013dynamic`/`harvey2014egarch` (Beta-t-EGARCH, score-driven relative), `hansen2005forecast`, `brownlees2011practical`.89## 2. Definition (arch parameterisation)10$$r_t = \mu + \varepsilon_t,\ \varepsilon_t = \sigma_t z_t,\ e_t = \varepsilon_t/\sigma_t,\qquad \ln\sigma_t^2 = \omega + \alpha\big(|e_{t-1}| - \sqrt{2/\pi}\big) + \gamma\,e_{t-1} + \beta\,\ln\sigma_{t-1}^2 .$$11Here **arch's `alpha[1]` multiplies the magnitude term and `gamma[1]` the sign term** (Nelson writes $g(z) = \theta z + \gamma(|z| - E|z|)$; rugarch writes α on the sign and γ on the magnitude — the cross-check confirms the swap: our α = 0.1565 ↔ rugarch γ₁ = 0.1565, our γ = −0.0444 ↔ rugarch α₁ = −0.0444). The centring constant is $\sqrt{2/\pi} = E|z|$ for the normal only; for t/GED/skew-t $E|z| \ne \sqrt{2/\pi}$ and the difference $\alpha(E|z| - \sqrt{2/\pi})$ is absorbed by ω (observationally equivalent, but ω is not Nelson's ω). Pre-sample: $\ln\sigma_0^2 = \omega + \beta\cdot\ln(\text{backcast})$ (the α, γ terms are omitted at t = 0). $\ln\sigma_t^2$ is capped at `LNSIGMA_MAX` and $\sigma_t^2$ clamped to arch's variance bounds. Innovations: normal, t, GED, Hansen skew-t.1213## 3. Parameter space and admissibility14- Parameters: `mu, omega, alpha[1], gamma[1], beta[1]` (+ distribution).15- arch bounds: $\omega \in [\ln v - \ln 10^4, \ln v + \ln 10^4]$ ($v = \overline{\varepsilon^2}$), $\alpha, \gamma \in (-\infty, \infty)$, $\beta \in [0, 1]$; constraint $\beta < 1$. arch therefore excludes $\beta < 0$ (Nelson's condition is $|\beta| < 1$).16- Admissibility flag (`ArchModel.fit`): $|\beta| < 1$ (log-variance stationarity). No positivity constraints are needed (log specification). Note the literature matrix caveat: stationarity is $|\beta| < 1$, not $\alpha + \beta < 1$.1718## 4. Nesting and relations19Does not nest `garch11` (log vs level). γ = 0 gives a symmetric log-GARCH; the Beta-t-EGARCH of Harvey is the score-driven counterpart (not in the registry; `gas_t11` is the variance-level GAS). Exponential form of the asymmetry shared with `realegarch11` (unsupported).2021## 5. Estimation22arch `ConstantMean` + `EGARCH(1,1,1)` + distribution; SLSQP (`maxiter` 1000) with the bounds of §3; starting values from arch's grid (α ∈ {0.01, 0.05, 0.1, 0.2}, γ ∈ {−0.1, 0, 0.1}, β ∈ {0.5, 0.7, 0.9, 0.98}, ω = (1−β)·ln v̄; best Gaussian log-likelihood); backcast = log of the exponentially weighted mean of the first min(75, T) squared residuals; ≤ 2 restarts (`ArchModel.fit`). Point estimates only; daily filtering with `am.fix(params)`.2324## 6. Forecasting25h = 1: analytic, $\hat\sigma^2_{t+1|t} = \exp(\omega + \alpha(|e_t| - \sqrt{2/\pi}) + \gamma e_t + \beta\ln\sigma_t^2)$. **h > 1: simulation** (`SPECS["egarch11"]["analytic"] = False`; arch has no analytic EGARCH multi-step): 2,000 paths, $\ln\sigma^2_{t+k} = \omega + \alpha(|z_{t+k-1}| - \sqrt{2/\pi}) + \gamma z_{t+k-1} + \beta\ln\sigma^2_{t+k-1}$ with simulated standardised shocks, $\hat\sigma^2_{t+k|t}$ = path mean of $\exp(\ln\sigma^2_{t+k})$. Normal: seeded `default_rng(46 + origin).standard_normal`; t/GED/skew-t: arch's fitted-distribution simulator, **unseeded** (`_discrepancies.md`). Cumulative = sum over k ≤ h. Method: `simulation` (h > 1).2627## 7. Implementation28- `src/wp46/models/arch_models.py` (`SPECS["egarch11"]`), arch 8.0.0 (`sheppard2025arch`).29- Cross-check (`results/metrics/rugarch_crosscheck.json`, rugarch `eGARCH`, t): −3376.6704 (ours) vs −3376.6833 (rugarch), **difference +0.0129**; coefficients agree after the α/γ label swap (β 0.96868 vs 0.96871, ν 6.98 vs 6.99); ω differs (−0.0110 vs −0.0171) because rugarch uses the distribution-specific $E|z|$ in the centring (observational equivalence through ω).30- Tests: `tests/replication/test_rugarch.py` (fit recorded; no assertion on EGARCH beyond the JSON); pilot `egarch11__t` 1,032/1,032 forecasts `ok` on CL, 207/207 refits `ok`.3132## 8. Known limitations / failure modes33β frequently close to 1 (log-variance near unit root) → explosive multi-step simulations are bounded only by `LNSIGMA_MAX`/variance bounds; multi-step forecasts carry Monte-Carlo error and, for non-normal laws, are unseeded; $E[\sigma^2_{t+k}]$ is a mean of log-normal-like paths and is sensitive to tail draws (large variance of the path mean at h = 22); the centring constant mismatch for non-normal laws is harmless for the fit but makes `omega` non-comparable across distributions.3435## 9. Computational footprint36Estimation cheap (pilot median fit time per refit, t: 0.0088 s CL / 0.0095 s EURUSD); forecasting by simulation (22 × 2,000 draws per origin) is the dominant cost.3738## 10. Literature expectations39`hansen2005forecast`: EGARCH-type leverage models among those that beat GARCH(1,1) on IBM; `brownlees2011practical` rank EGARCH/asymmetric models best for US equities; `nelson1991conditional` originally with GED innovations. Expectation: strong at h = 1 on equities (H1), weaker at h = 22 where the simulation mean of exponentials inflates forecasts; no gain expected on FX (`hansen2005forecast`).40