ARMAFIGARCHResult#

class cultivars.univariate.conditional_variance.ARMAFIGARCHResult(*, endog, fittedvalues, resid, llf, nobs, n_params, mean, const, omega, conditional_variance, truncation, phi, d, beta, mean_order, ar_params, ma_params)[source]

Bases: FIGARCHResult, _StationarityMixin, _InvertibilityMixin

A fractionally integrated variance model under an ARMA conditional mean.

The mean is

\[y_t = c + \sum_{i=1}^{p} \phi_i\, y_{t-i} + \varepsilon_t + \sum_{j=1}^{q} \theta_j\, \varepsilon_{t-j}, \qquad \varepsilon_t = \sigma_t z_t,\]

with \(\sigma_t^2\) the FIGARCH(1, d, 1) recursion of FIGARCHResult, estimated jointly. Two long-memory-adjacent objects live in one model here and they are not the same object. The mean has an ARMA structure whose shocks decay geometrically; the variance is fractionally integrated and its shocks decay hyperbolically. is_stationary speaks only to the first, is_covariance_stationary only to the second, and the latter is False by construction for any d > 0. const is the recursion intercept \(c\), not the unconditional mean.

Everything on the variance side – persistence, half_life, has_long_memory, the refusal to simulate – is inherited unchanged from FIGARCHResult; what is added is the mean block and its stationarity and invertibility verdicts, whose meaning depends on how the mean was searched (see is_structurally_constrained).

Variables:
  • mean_order – The conditional-mean order (ar_lags, ma_lags).

  • ar_params – Autoregressive coefficients of the mean; empty when ar_lags == 0.

  • ma_params – Moving-average coefficients of 1 + theta_1 L + ...; empty when ma_lags == 0.

Note

fittedvalues, resid and conditional_variance are aligned with the last nobs = len(endog) - max(ar_lags, ma_lags) observations. stability and invertibility hold the companion eigenvalues (the inverse roots), so their max_modulus is below one for a stationary or invertible block. A fit with mean_order == (0, 0) is a FIGARCH under another label.

See also

  • ARMAFIGARCH – the specification that produces this.

  • FIGARCHResult – the same variance under a constant or zero mean, and the source of every variance property here.

  • ARMAGARCHResult – the same mean over a geometric-decay variance, where a half-life exists.

Example

An ARMA(1, 1) mean over a persistent variance, with the two verdicts kept apart:

>>> rng = np.random.default_rng(0)
>>> n = 1500
>>> h, e, y = np.ones(n), np.zeros(n), np.zeros(n)
>>> for t in range(1, n):
...     h[t] = 0.05 + 0.1 * e[t - 1] ** 2 + 0.85 * h[t - 1]
...     e[t] = np.sqrt(h[t]) * rng.standard_normal()
...     y[t] = 0.2 + 0.5 * y[t - 1] + e[t] + 0.3 * e[t - 1]
>>> res = ARMAFIGARCH(y, ar_lags=1, ma_lags=1).fit()
>>> list(res.params), res.nobs
(['const', 'ar.L1', 'ma.L1', 'omega', 'phi', 'd', 'beta'], 1499)
>>> bool(abs(res.ar_params[0] - 0.5) < 0.1), bool(abs(res.ma_params[0] - 0.3) < 0.1)
(True, True)
>>> res.is_stationary, res.is_covariance_stationary, res.half_life
(True, False, inf)

Private methods#

_comparison_label()

Specification label used when this result appears in a ranking.

_from_fit(fit, model)

Assemble the public result from a raw fit and its specification.

_summary_table()

Structured summary rendered by every display path.