Introduction
The following is an example of implementing the garchmFit
procedure for estimating asymmetric garch-in-mean models. The example estimates the model
$$ Y = X_{1} + X_{2}$$
Setting up the estimation
GAUSS uses the internal sqpSolveMT
optimization routine for estimation of all GARCH models. In some cases, optimization performance can be enhanced by using the optimization parameters stored in the sqpsolvemtControl
structure. To avoid conflict with internal instances of the sqpsolveMTstructure
these parameters are set using a user-defined procedure:
new;
library tsmt;
// Declare 'ctl' to be a garchControl struct
// and fill with default settings
struct garchControl ctl;
ctl = garchControlCreate();
// Assign pointer to procedure which
// sets the desired options for the internal
// optimization procedre, sqpSolveMT
ctl.sqpsolvemtControlProc = &sqp;
// Procedure to set 'sqpSolveMT' control settings
proc sqp(struct sqpsolvemtControl c0);
c0.printiters = 1;
c0.trustRadius = 0;
c0.feasibletest = 0;
c0.gradproc = 0;
retp(c0);
endp;
Estimate the model
This example uses previously simulated data stored in the GAUSS dataset "garchx.dat". The model can be estimated in a single line using the GAUSS formula string syntax. Because parameters in garchControl
structure are changed from their default values, the control structure must be passed to the function:
new;
library tsmt;
// Get file name with full path
dataset = getGAUSSHome() $+ "pkgs/tsmt/examples/garchx.dat";
// Estimate the model
call garchMFit(dataset, "Y ~ X1 + X2", 1, 1, ctl);
Output
The output reads:
Normal Solution AIC 1040.0499 lrs 1026.0499 Coefficients lower cl upper cl beta0[1,1] 0.0292 -0.0307 0.0891 beta[1,1] 0.4028 0.3945 0.4111 beta[2,1] 0.5007 0.4922 0.5093 garch[1,1] 0.1153 -0.2116 0.4422 arch[1,1] 0.2582 0.1491 0.3673 delta[1,1] -0.0704 -0.4923 0.3515 omega[1,1] 0.0138 0.0071 0.0204