JMSLTM Numerical Library 6.1

com.imsl.stat
Class GARCH

java.lang.Object
  extended by com.imsl.stat.GARCH
All Implemented Interfaces:
Serializable, Cloneable

public class GARCH
extends Object
implements Serializable, Cloneable

Computes estimates of the parameters of a GARCH(p,q) model.

The Generalized Autoregressive Conditional Heteroskedastic (GARCH) model is defined as

y_t  = z_t sigma _t

sigma _t^2  = sigma ^2  + sumlimits_{i = 1}^p 
  {beta _i sigma _{t - i}^2  + } sumlimits_{i = 1}^q {alpha _i 
  y_{t - i}^2 }

where z_t's are independent and identically distributed standard normal random variables,

sigma > 0,beta _i  ge 0,alpha _i 
  ge 0{rm{ }}

and

sumlimits_{i = 1}^p {beta _i }  + 
  sumlimits_{i = 1}^q {alpha _i} lt 1

The above model is denoted as GARCH(p, q). The p is the autoregressive lag and the q is the moving average lag. When beta_i = 0, i = 1,2,ldots, p, the above model reduces to ARCH(q) which was proposed by Engle (1982). The nonnegativity conditions on the parameters implied a nonnegative variance and the condition on the sum of the beta_i's and alpha_i's is required for wide sense stationarity.

In the empirical analysis of observed data, GARCH(1,1) or GARCH(1,2) models have often found to appropriately account for conditional heteroskedasticity (Palm 1996). This finding is similar to linear time series analysis based on ARMA models.

It is important to notice that for the above models positive and negative past values have a symmetric impact on the conditional variance. In practice, many series may have strong asymmetric influence on the conditional variance. To take into account this phenomena, Nelson (1991) put forward Exponential GARCH (EGARCH). Lai (1998) proposed and studied some properties of a general class of models that extended linear relationship of the conditional variance in ARCH and GARCH into nonlinear fashion.

The maximal likelihood method is used in estimating the parameters in GARCH(p,q). The log-likelihood of the model for the observed series left{ {Y_t} right} with length m is

log (L) = frac{m}{2}log (2pi ) - 
  frac{1}{2}sumlimits_{t = 1}^m {y_t^2 /sigma _t^2  - 
  frac{1}{2}sumlimits_{t = 1}^m {log sigma _t^2 } } ,

{rm{where}} ,,, sigma _t^2  = sigma ^2  + 
  sumlimits_{i = 1}^p {beta _i sigma _{t - i}^2 }  + 
  sumlimits_{i = 1}^q {alpha _i y_{t - i}^2 } .

In the model, if q = 0, the model GARCH is singular such that the estimated Hessian matrix H is singular.

The initial values of the parameter array x[,,] entered in array xguess[ ] must satisfy certain constraints. The first element of xguess refers to sigma and must be greater than zero and less than maxSigma. The remaining p+q initial values must each be greater than or equal to zero but less than one.

To guarantee stationarity in model fitting,

sumlimits_{i = 1}^{p + q} {x(i)}  
  lt 1,

is checked internally. The initial values should be selected from the values between zero and one. The value of Akaike Information Criterion is computed by

{rm{  2 times log (L)  +  2 times 
  (p + q + 1),}}

where log(L) is the value of the log-likelihood function at the estimated parameters.

In fitting the optimal model, the class MinConGenLin, is modified to find the maximal likelihood estimates of the parameters in the model. Statistical inferences can be performed outside of the class GARCH based on the output of the log-likelihood function (getlogLikelihood method), the Akaike Information Criterion (getAkaike method), and the variance-covariance matrix (getVarCovarMatrix method).

See Also:
Example, Serialized Form

Nested Class Summary
static class GARCH.ConstrInconsistentException
          The equality constraints are inconsistent.
static class GARCH.EqConstrInconsistentException
          The equality constraints and the bounds on the variables are found to be inconsistent.
static class GARCH.NoVectorXException
          No vector X satisfies all of the constraints.
static class GARCH.TooManyIterationsException
          Number of function evaluations exceeded 1000.
static class GARCH.VarsDeterminedException
          The variables are determined by the equality constraints.
 
Constructor Summary
GARCH(int p, int q, double[] y, double[] xguess)
          Constructor for GARCH.
 
Method Summary
 void compute()
          Computes estimates of the parameters of a GARCH(p,q) model.
 double getAkaike()
          Returns the value of Akaike Information Criterion evaluated at the estimated parameter array.
 double[] getAR()
          Returns the estimated values of autoregressive (AR) parameters.
 double getLogLikelihood()
          Returns the value of Log-likelihood function evaluated at the estimated parameter array.
 double[] getMA()
          Returns the estimated values of moving average (MA) parameters.
 double getSigma()
          Returns the estimated value of sigma squared.
 double[][] getVarCovarMatrix()
          Returns the variance-covariance matrix.
 double[] getX()
          Returns the estimated parameter array, x.
 void setMaxSigma(double maxSigma)
          Sets the value of the upperbound on the first element (sigma) of the array of returned estimated coefficients.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GARCH

public GARCH(int p,
             int q,
             double[] y,
             double[] xguess)
Constructor for GARCH.

Parameters:
p - An int scalar containing the number of autoregressive (AR) parameters.
q - An int scalar containing the number of moving average (MA) parameters.
y - A double array containing the observed time series data.
xguess - A double array of length p + q + 1 containing the initial values for the parameter array.
Throws:
IllegalArgumentException - is thrown if the dimensions of y, and xguess are not consistent.
Method Detail

compute

public final void compute()
                   throws GARCH.ConstrInconsistentException,
                          GARCH.EqConstrInconsistentException,
                          GARCH.NoVectorXException,
                          GARCH.TooManyIterationsException,
                          GARCH.VarsDeterminedException
Computes estimates of the parameters of a GARCH(p,q) model.

Throws:
GARCH.EqConstrInconsistentException - is thrown if the equality constraints are inconsistent.
GARCH.EqConstrInconsistentException - is thrown if the equality constraints and the bounds on the variables are found to be inconsistent.
GARCH.NoVectorXException - is thrown if no vector X satisfies all of the constraints.
GARCH.TooManyIterationsException - is thrown if the number of function evaluations exceeded 1000.
GARCH.VarsDeterminedException - is thrown if the variables are determined by the equality constraints.
GARCH.ConstrInconsistentException

getAkaike

public double getAkaike()
Returns the value of Akaike Information Criterion evaluated at the estimated parameter array. Note that the compute method must be invoked first before invoking this method. Otherwise, the return value is 0.

Returns:
a double scalar containing the value of Akaike Information Criterion evaluated at the estimated parameter array.

getAR

public double[] getAR()
Returns the estimated values of autoregressive (AR) parameters. Note that the compute method must be invoked first before invoking this method. Otherwise, the method throws a NullPointerException exception.

Returns:
a double array of size p containing the estimated values of autoregressive (AR) parameters.

getLogLikelihood

public double getLogLikelihood()
Returns the value of Log-likelihood function evaluated at the estimated parameter array. Note that the compute method must be invoked first before invoking this method. Otherwise, the return value is 0.

Returns:
a double scalar containing the value of Log-likelihood function evaluated at the estimated parameter array.

getMA

public double[] getMA()
Returns the estimated values of moving average (MA) parameters. Note that the compute method must be invoked first before invoking this method. Otherwise, the method throws a NullPointerException exception.

Returns:
a double array of size q containing the estimated values of moving average (MA) parameters.

getSigma

public double getSigma()
Returns the estimated value of sigma squared. Note that the compute method must be invoked first before invoking this method. Otherwise, the return value is NaN.

Returns:
a double scalar containing the estimated value of sigma squared.

getVarCovarMatrix

public double[][] getVarCovarMatrix()
Returns the variance-covariance matrix. Note that the compute method must be invoked first before invoking this method. Otherwise, the method throws a NullPointerException exception.

Returns:
a double matrix of size p + q + 1 by p + q + 1 containing the variance-covariance matrix.

getX

public double[] getX()
Returns the estimated parameter array, x. Note that the compute method must be invoked first before invoking this method. Otherwise, the method throws a NullPointerException exception.

Returns:
a double array of size p + q + 1 containing the estimated values of sigma squared, the AR parameters, and the MA parameters.

setMaxSigma

public void setMaxSigma(double maxSigma)
Sets the value of the upperbound on the first element (sigma) of the array of returned estimated coefficients.

Parameters:
maxSigma - A double scalar containing the value of the upperbound on the first element (sigma) of the array of returned estimated coefficients. Default = 10.

JMSLTM Numerical Library 6.1

Copyright © 1970-2010 Visual Numerics, Inc.
Built July 30 2010.