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
