FIGARCH#

class cultivars.univariate.conditional_variance.FIGARCH(endog, *, mean='constant', truncation=_DEFAULT_TRUNCATION)[source]#

FIGARCH(1, d, 1): long-memory volatility through a fractional filter.

The variance

\[\sigma_t^2 = \frac{\omega}{1 - \beta} + \Bigl[1 - \frac{(1 - \phi L)(1 - L)^d}{1 - \beta L}\Bigr]\varepsilon_t^2,\]

under a constant or zero mean. The order is fixed, so the only structural choice beyond the mean is how far the infinite-order representation is truncated. Weights beyond the available history are applied to the pre-sample variance rather than dropped, so the truncation tail contributes a constant instead of vanishing silently; at the default of 1000 lags the likelihood is insensitive to the choice for samples of a few hundred observations. Draws whose retained weights turn negative are rejected, which is the positivity condition on the ARCH(\(\infty\)) representation. A mean with lags is ARMAFIGARCH; this front does not accept one.

Variables:
  • _truncation – The retained number of weights.

  • _endog – The validated series.

  • _ar_lags – Conditional-mean AR order, always zero here.

  • _ma_lags – Conditional-mean MA order, always zero here.

  • _const – Whether the mean carries an intercept.

Parameters:
  • endog (ArrayLike) – The series, typically returns or residuals.

  • mean (str) – "constant" or "zero".

  • truncation (int) – Infinite-order truncation lag, at least 1.

Raises:
  • SpecificationError – If truncation is not a positive integer or mean is not one of the two choices.

  • DimensionError – If endog is not one-dimensional or has fewer than five observations.

  • NumericalError – If endog contains non-finite values.

See also

  • FIGARCHResult – what fit() returns.

  • ARMAFIGARCH – the same variance under an ARMA mean.

  • GARCH – the geometric-decay alternative, whose persistence pinned near one is the usual sign this model is wanted.

  • ARFIMA – long memory in the level rather than the variance.

References

Baillie, R. T., Bollerslev, T., & Mikkelsen, H. O. (1996). Fractionally integrated generalized autoregressive conditional heteroskedasticity. Journal of Econometrics, 74(1), 3-30.

Example

>>> import numpy as np
>>> rng = np.random.default_rng(0)
>>> y = rng.standard_normal(600)
>>> res = FIGARCH(y, truncation=200).fit()
>>> res.truncation, list(res.params)
(200, ['const', 'omega', 'phi', 'd', 'beta'])
>>> bool(abs(res.llf - FIGARCH(y).fit().llf) < 2.0)
True

Attributes#

ar_lags

The conditional-mean autoregressive order.

endog

The validated endogenous series.

has_constant_mean

Whether a mean intercept is estimated.

ma_lags

The conditional-mean moving-average order.

mean_order

The conditional-mean order (ar_lags, ma_lags).

truncation

The infinite-order truncation lag.

Methods#

fit()

Estimate mean and variance jointly by Gaussian maximum likelihood.