Accelerating the pace of engineering and science

Documentation

Specify GARCH Models Using garch

Default GARCH Model

The default GARCH(P,Q) model in Econometrics Toolbox™ is of the form

${\epsilon }_{t}={\sigma }_{t}{z}_{t},$

with Gaussian innovation distribution and

${\sigma }_{t}^{2}=\kappa +{\gamma }_{1}{\sigma }_{t-1}^{2}+\dots +{\gamma }_{P}{\sigma }_{t-P}^{2}+{\alpha }_{1}{\epsilon }_{t-1}^{2}+\dots +{\alpha }_{Q}{\epsilon }_{t-Q}^{2}.$

The default model has no mean offset, and the lagged variances and squared innovations are at consecutive lags.

You can specify a model of this form using the shorthand syntax garch(P,Q). For the input arguments P and Q, enter the number of lagged conditional variances (GARCH terms), P, and lagged squared innovations (ARCH terms), Q, respectively. The following restrictions apply:

• P and Q must be nonnegative integers.

• If P is zero, the GARCH(P,Q) model reduces to an ARCH(Q) model.

• If P > 0, then you must also specify Q > 0.

When you use this shorthand syntax, garch creates a garch model with these default property values.

PropertyDefault Value
PNumber of GARCH terms, P
QNumber of ARCH terms, Q
Offset0
ConstantNaN
GARCHCell vector of NaNs
ARCHCell vector of NaNs
Distribution'Gaussian'

To assign nondefault values to any properties, you can modify the created model using dot notation.

To illustrate, consider specifying the GARCH(1,1) model

${\epsilon }_{t}={\sigma }_{t}{z}_{t},$

with Gaussian innovation distribution and

${\sigma }_{t}^{2}=\kappa +{\gamma }_{1}{\sigma }_{t-1}^{2}+{\alpha }_{1}{\epsilon }_{t-1}^{2}.$

```Mdl = garch(1,1)
```
```Mdl =

GARCH(1,1) Conditional Variance Model:
--------------------------------------
Distribution: Name = 'Gaussian'
P: 1
Q: 1
Constant: NaN
GARCH: {NaN} at Lags [1]
ARCH: {NaN} at Lags [1]
```

The created model, Mdl, has NaNs for all model parameters. A NaN value signals that a parameter needs to be estimated or otherwise specified by the user. All parameters must be specified to forecast or simulate the model.

To estimate parameters, input the model (along with data) to estimate. This returns a new fitted garch model. The fitted model has parameter estimates for each input NaN value.

Calling garch without any input arguments returns a GARCH(0,0) model specification with default property values:

```DefaultMdl = garch
```
```DefaultMdl =

GARCH(0,0) Conditional Variance Model:
--------------------------------------
Distribution: Name = 'Gaussian'
P: 0
Q: 0
Constant: NaN
GARCH: {}
ARCH: {}
```

Specify Name-Value Pairs

The most flexible way to specify GARCH models is using name-value pair arguments. You do not need, nor are you able, to specify a value for every model property. garch assigns default values to any properties you do not (or cannot) specify.

The general GARCH(P,Q) model is of the form

${y}_{t}=\mu +{\epsilon }_{t},$

where ${\epsilon }_{t}={\sigma }_{t}{z}_{t}$ and

${\sigma }_{t}^{2}=\kappa +{\gamma }_{1}{\sigma }_{t-1}^{2}+\dots +{\gamma }_{P}{\sigma }_{t-P}^{2}+{\alpha }_{1}{\epsilon }_{t-1}^{2}+\dots +{\alpha }_{Q}{\epsilon }_{t-Q}^{2}.$

The innovation distribution can be Gaussian or Student's t. The default distribution is Gaussian.

In order to estimate, forecast, or simulate a model, you must specify the parametric form of the model (e.g., which lags correspond to nonzero coefficients, the innovation distribution) and any known parameter values. You can set any unknown parameters equal to NaN, and then input the model to estimate (along with data) to get estimated parameter values.

garch (and estimate) returns a model corresponding to the model specification. You can modify models to change or update the specification. Input models (with no NaN values) to forecast or simulate for forecasting and simulation, respectively. Here are some example specifications using name-value arguments.

ModelSpecification
• ${y}_{t}={\epsilon }_{t}$

• ${\epsilon }_{t}={\sigma }_{t}{z}_{t}$

• zt Gaussian

• ${\sigma }_{t}^{2}=\kappa +{\gamma }_{1}{\sigma }_{t-1}^{2}+{\alpha }_{1}{\epsilon }_{t-1}^{2}$

garch('GARCH',NaN,'ARCH',NaN) or garch(1,1)
• ${y}_{t}=\mu +{\epsilon }_{t}$

• ${\epsilon }_{t}={\sigma }_{t}{z}_{t}$

• zt Student's t with unknown degrees of freedom

• ${\sigma }_{t}^{2}=\kappa +{\gamma }_{1}{\sigma }_{t-1}^{2}+{\alpha }_{1}{\epsilon }_{t-1}^{2}$

garch('Offset',NaN,'GARCH',NaN,'ARCH',NaN,...
'Distribution','t')
• ${y}_{t}={\epsilon }_{t}$

• ${\epsilon }_{t}={\sigma }_{t}{z}_{t}$

• zt Student's t with eight degrees of freedom

• ${\sigma }_{t}^{2}=0.1+0.6{\sigma }_{t-1}^{2}+0.3{\epsilon }_{t-1}^{2}$

garch('Constant',0.1,'GARCH',0.6,'ARCH',0.3,...
'Distribution',struct('Name','t','DoF',8))

Here is a full description of the name-value arguments you can use to specify GARCH models.

 Note:   You cannot assign values to the properties P and Q. garch sets these properties equal to the largest GARCH and ARCH lags, respectively.

Name-Value Arguments for GARCH Models

NameCorresponding GARCH Model Term(s)When to Specify
OffsetMean offset, μTo include a nonzero mean offset. For example, 'Offset',0.3. If you plan to estimate the offset term, specify 'Offset',NaN.
By default, Offset has value 0 (meaning, no offset).
ConstantConstant in the conditional variance model, κTo set equality constraints for κ. For example, if a model has known constant 0.1, specify 'Constant',0.1.
By default, Constant has value NaN.
GARCHGARCH coefficients, ${\gamma }_{1},\dots ,{\gamma }_{P}$To set equality constraints for the GARCH coefficients. For example, to specify the GARCH coefficient in the model

${\epsilon }_{t}=0.7{\sigma }_{t-1}^{2}+0.25{\epsilon }_{t-1}^{2},$

specify 'GARCH',0.7.

You only need to specify the nonzero elements of GARCH. If the nonzero coefficients are at nonconsecutive lags, specify the corresponding lags using GARCHLags.

Any coefficients you specify must satisfy all stationarity and positivity constraints.
GARCHLagsLags corresponding to nonzero GARCH coefficientsGARCHLags is not a model property.
Use this argument as a shortcut for specifying GARCH when the nonzero GARCH coefficients correspond to nonconsecutive lags. For example, to specify nonzero GARCH coefficients at lags 1 and 3, e.g.,

${\sigma }_{t}^{2}={\gamma }_{1}{\sigma }_{t-1}^{2}+{\gamma }_{3}{\sigma }_{t-3}^{2}+{\alpha }_{1}{\epsilon }_{t-1}^{2},$

specify 'GARCHLags',[1,3].

Use GARCH and GARCHLags together to specify known nonzero GARCH coefficients at nonconsecutive lags. For example, if in the given GARCH(3,1) model ${\gamma }_{1}=0.3$ and ${\gamma }_{3}=0.1,$ specify 'GARCH',{0.3,0.1},'GARCHLags',[1,3].
ARCHARCH coefficients, ${\alpha }_{1},\dots ,{\alpha }_{Q}$To set equality constraints for the ARCH coefficients. For example, to specify the ARCH coefficient in the model

${\epsilon }_{t}=0.7{\sigma }_{t-1}^{2}+0.25{\epsilon }_{t-1}^{2},$

specify 'ARCH',0.25.

You only need to specify the nonzero elements of ARCH. If the nonzero coefficients are at nonconsecutive lags, specify the corresponding lags using ARCHLags.

Any coefficients you specify must satisfy all stationarity and positivity constraints.
ARCHLagsLags corresponding to nonzero ARCH coefficientsARCHLags is not a model property.
Use this argument as a shortcut for specifying ARCH when the nonzero ARCH coefficients correspond to nonconsecutive lags. For example, to specify nonzero ARCH coefficients at lags 1 and 3, e.g.,

${\sigma }_{t}^{2}={\gamma }_{1}{\sigma }_{t-1}^{2}+{\alpha }_{1}{\epsilon }_{t-1}^{2}+{\alpha }_{3}{\epsilon }_{t-3}^{2},$

specify 'ARCHLags',[1,3].

Use ARCH and ARCHLags together to specify known nonzero ARCH coefficients at nonconsecutive lags. For example, if in the above model ${\alpha }_{1}=0.4$ and ${\alpha }_{3}=0.2,$ specify 'ARCH',{0.4,0.2},'ARCHLags',[1,3].
DistributionDistribution of the innovation processUse this argument to specify a Student's t innovation distribution. By default, the innovation distribution is Gaussian.
For example, to specify a t distribution with unknown degrees of freedom, specify 'Distribution','t'.
To specify a t innovation distribution with known degrees of freedom, assign Distribution a data structure with fields Name and DoF. For example, for a t distribution with nine degrees of freedom, specify 'Distribution',struct('Name','t','DoF',9).