Main Content

Specify Conditional Variance Model Innovation Distribution

In Econometrics Toolbox™, the general form of the innovation process εt is

εt=σtzt.

A conditional variance model specifies the parametric form of the conditional variance process σt2. The innovation distribution corresponds to the distribution of the iid process zt.

For the distribution of zt, you can choose a standardized Gaussian or standardized Student’s t distribution with ν>2 degrees of freedom. Note that if zt follows a standardized t distribution,

zt=ν-2νTν,

where Tν follows a Student’s ν distribution with ν>2 degrees of freedom.

The t distribution is useful for modeling time series with more extreme values than expected under a Gaussian distribution. Series with larger values than expected under normality are said to have excess kurtosis.

It is good practice to assess the distributional properties of model residuals to determine if a Gaussian innovation distribution (the default distribution) is appropriate for your data.

The property Distribution in a model stores the distribution name (and degrees of freedom for the t distribution). The data type of Distribution is a struct array. For a Gaussian innovation distribution, the data structure has only one field: Name. For a Student’s t distribution, the data structure must have two fields:

  • Name, with value "t"

  • DoF, with a scalar value larger than 2 (NaN is the default value)

If the innovation distribution is Gaussian, you do not need to assign a value to Distribution. garch, egarch, and gjr create the required data structure.

Specify GARCH Model with Gaussian Innovations

Specify a GARCH(1,1) model by using the shorthand syntax of the garch function.

Mdl = garch(1,1)
Mdl = 
  garch with properties:

     Description: "GARCH(1,1) Conditional Variance Model (Gaussian Distribution)"
      SeriesName: "Y"
    Distribution: Name = "Gaussian"
               P: 1
               Q: 1
        Constant: NaN
           GARCH: {NaN} at lag [1]
            ARCH: {NaN} at lag [1]
          Offset: 0

The model output shows that Distribution is a struct array containing the field Name with value "Gaussian".

When you specify a Student’s t innovation distribution, you can specify an unknown (NaN) or a real number greater than 2. If the degrees of freedom are unknown, you can assign Distribution the value "t". By default, Distribution is a structure array with field Name equal to "t", and field DoF equal to NaN. When you pass the model to the estimate function, MATLAB® estimates the degrees of freedom with all other unknown model parameters.

Specify GJR Model with Student's t Innovations

Specify a GJR(2,1) model with an iid Student’s t innovation distribution, with unknown degrees of freedom, by using the longhand syntax of the gjr function.

GJRMdl = gjr(GARCHLags=1:2,ARCHLags=1,LeverageLags=1,Distribution="t")
GJRMdl = 
  gjr with properties:

     Description: "GJR(2,1) Conditional Variance Model (t Distribution)"
      SeriesName: "Y"
    Distribution: Name = "t", DoF = NaN
               P: 2
               Q: 1
        Constant: NaN
           GARCH: {NaN NaN} at lags [1 2]
            ARCH: {NaN} at lag [1]
        Leverage: {NaN} at lag [1]
          Offset: 0

The output shows that Distribution is a structure array with two fields. Field Name has the value "t" and field DoF has the value NaN.

If the degrees of freedom parameter is known, and you want to set an equality constraint during estimation, assign a structure array to Distribution with fields Name and DoF. In this case, if you pass the model to estimate, MATLAB does not estimate the degrees of freedom parameter (in other words, estimate honors the equality constraint).

Specify GARCH Model with Student's t Innovations

Specify a GARCH(1,1) model with an iid Student’s t distribution, with eight degrees of freedom, by using the longhand syntax of garch.

tdist = struct("Name","t","DoF",8);
GARCHMdlT = garch(GARCHLags=1,ARCHLags=1,Distribution=tdist)
GARCHMdlT = 
  garch with properties:

     Description: "GARCH(1,1) Conditional Variance Model (t Distribution)"
      SeriesName: "Y"
    Distribution: Name = "t", DoF = 8
               P: 1
               Q: 1
        Constant: NaN
           GARCH: {NaN} at lag [1]
            ARCH: {NaN} at lag [1]
          Offset: 0

The output shows the specified innovation distribution.

Access or Change GARCH Model Innovation Distribution Values

When a model is in the workspace, you can modify its Distribution property using dot notation. You cannot modify the fields of the Distribution structure array directly. For example, GARCHMdl.Distribution.DoF = 8 is not a valid assignment. However, you can get the values of the individual fields.

Change the distribution of the innovation process of the GARCH model Mdl to a Student’s t distribution with unknown degrees of freedom.

Mdl.Distribution = "t"
Mdl = 
  garch with properties:

     Description: "GARCH(1,1) Conditional Variance Model (t Distribution)"
      SeriesName: "Y"
    Distribution: Name = "t", DoF = NaN
               P: 1
               Q: 1
        Constant: NaN
           GARCH: {NaN} at lag [1]
            ARCH: {NaN} at lag [1]
          Offset: 0

Change the distribution of the GARCH model Mdl to a t distribution with 8 degrees of freedom by setting a structure array to the Distribution property.

Mdl.Distribution = struct("Name","t","DoF",8)
Mdl = 
  garch with properties:

     Description: "GARCH(1,1) Conditional Variance Model (t Distribution)"
      SeriesName: "Y"
    Distribution: Name = "t", DoF = 8
               P: 1
               Q: 1
        Constant: NaN
           GARCH: {NaN} at lag [1]
            ARCH: {NaN} at lag [1]
          Offset: 0

Display the degrees of freedom of the innovation distribution of the GARCH model Mdl.

tDoF = Mdl.Distribution.DoF
tDoF = 
8

Change the distribution of the GARCH model Mdl back to Gaussian.

Mdl.Distribution = "Gaussian"
Mdl = 
  garch with properties:

     Description: "GARCH(1,1) Conditional Variance Model (Gaussian Distribution)"
      SeriesName: "Y"
    Distribution: Name = "Gaussian"
               P: 1
               Q: 1
        Constant: NaN
           GARCH: {NaN} at lag [1]
            ARCH: {NaN} at lag [1]
          Offset: 0

The Name field updates to "Gaussian", and DoF field does not exist.

See Also

Objects

Related Topics