arch.univariate.NGARCH¶
-
class arch.univariate.NGARCH(p: int =
1, o: int =1, q: int =1)[source]¶ Nonlinear asymmetric GARCH (NGARCH) volatility process.
The process of Engle and Ng [1], which is called NAGARCH in the rugarch package for R.
- Parameters:¶
- p: int =
1¶ Order of the symmetric innovation. Must satisfy p>=o and be positive.
- o: int =
1¶ Number of innovations that have a shift (an asymmetry parameter). Must satisfy o<=p and be non-negative. The first
oof thepinnovations are shifted.- q: int =
1¶ Order of the lagged conditional variance. Must be non-negative.
- p: int =
- Raises:¶
TypeError – If
p,oorqis not an integer.ValueError – If
pis smaller than 1,oorqis negative, orois larger thanp.
Notes
In this class of processes, the variance dynamics are
\[\sigma_{t}^{2}=\omega +\sum_{i=1}^{p}\alpha_{i} \left(\epsilon_{t-i}-\theta_{i}I_{[o\geq i]}\sigma_{t-i}\right)^{2} +\sum_{j=1}^{q}\beta_{j}\sigma_{t-j}^{2}\]which is \(\sigma_{t-i}^2 (e_{t-i}-\theta_{i})^2\) in terms of the standardized shock \(e_{t}=\epsilon_{t}/\sigma_{t}\). The parameters are named
omega,alpha[i],theta[i]andbeta[j].The shift \(\theta\) is the position of the minimum of the news impact curve in units of the lagged volatility. The sign convention is that of the rugarch package and of most textbooks: a positive \(\theta\) is the leverage effect, since a negative shock then raises the variance more than a positive shock of the same size. Engle and Ng [1] write the shift as \((\epsilon_{t-1}+\gamma\sigma_{t-1})^2\) and expect \(\gamma<0\), so that \(\theta=-\gamma\).
The name NGARCH is also used for the nonlinear ARCH model of Higgins and Bera [2], which is a different model and is not available here.
The expected value of \((e_{t}-\theta)^2\) is \(1+\theta^2\) for any standardized distribution, since \(e_t\) has mean 0 and variance 1. The process is covariance stationary if the persistence
\[\phi=\sum_{i=1}^{p}\alpha_{i}\left(1+\theta_{i}^{2}\right) +\sum_{j=1}^{q}\beta_{j}\]is smaller than 1, and then the unconditional variance of \(\epsilon_t\) is \(\omega/(1-\phi)\). Analytic forecasts are exact at every horizon. When \(p=q=1\), they satisfy \(f_h=\omega+\phi f_{h-1}\).
Estimation uses the linear constraints \(\omega,\alpha_i,\beta_j\geq 0\) and \(\sum\alpha_i+\sum\beta_j<1\), as for
APARCH, and bounds of -5 and 5 for \(\theta\). The stationarity condition \(\phi<1\) is not imposed during estimation, since it is not linear in the parameters, and a model with \(\theta\neq 0\) can be estimated with a persistence of 1 or more.fitthen issues aValueWarning.With
o=0there is no shift and the process is a GARCH process, soGARCHshould be used instead. AValueWarningis issued in this case.Before the start of the sample, the variance and the squared residual are both replaced by the backcast of the variance, so that each shock term is \(\alpha_i(1+\theta_i^2)\) times the backcast.
References
Examples
>>> from arch.univariate import NGARCHStandard NGARCH(1,1)
>>> ngarch = NGARCH(p=1, o=1, q=1)Two lags of the shock, with a shift on the first lag only
>>> ngarch = NGARCH(p=2, o=1, q=1)Methods
backcast(resids)Construct values for backcasting to start the recursion.
backcast_transform(backcast)Transform user-provided backcast values.
bounds(resids)Return bounds for parameters.
compute_variance(parameters, resids, sigma2, ...)Compute the variance for the ARCH model.
Construct parameter constraints arrays for parameter estimation.
forecast(parameters, resids, backcast, ...)Forecast volatility from the model.
Return the names of the model parameters.
simulate(parameters, nobs, rng[, burn, ...])Simulate data from the model.
starting_values(resids)Return starting values for the ARCH model.
update(index, parameters, resids, sigma2, ...)Compute the variance for a single observation.
variance_bounds(resids[, power])Construct loose bounds for conditional variances.
Properties
The name of the volatility process.
The number of parameters in the model.
Index to use to start variance subarray selection.
Index to use to stop variance subarray selection.
Flag indicating that the volatility process supports update.
Get the volatility updater associated with the volatility process.