I want to estimate a GARCH-GJR model and get the estimated parameters and their variance-covariance matrix. The main estimation part of the code is presentes below. I just specified a standard GJR model and estimated by "proc model" procedure, and get the varcov matrix in out1. However, although the model is succefully converged and there is not any warnings or errors in log (as posted), the variance-covvariance matrix in out1 has negative variance element. As show in the dateset screenshot, for the data of FX_Australia in 1970s, the variance of a1 is -6.648735E-6, which is negative. And there is not any warnings or errors in the log. I wonder what it means to have a non-positive definite var-cov matrix and how to deal with it? Thanks! %let ret=ret;
%let lv=long_run_var;
proc model data = local_inds noprint;
parms mu 0 a0 .05 a1 .04 g1 .9 a2 0.1;
/* mean model */
&ret. = mu ;
/* variance model */
if zlag(&ret.-mu) > 0 then
h.&ret. = a0 + a1*xlag((&ret.-mu)**2,mse.&ret.) + g1*xlag(h.&ret.,mse.&ret.);
else
h.&ret. = a0 + a1*xlag((&ret.-mu)**2,mse.&ret.) + g1*xlag(h.&ret.,mse.&ret.) + a2*xlag((&ret.-mu)**2,mse.&ret.);
/* fit the model */
/* fit &ret. start=(mu=0 a0=0.05 a1=0.04 g1=0.9 a2=0.1 -0.1) / startiter method = marquardt fiml outest=out outcov MAXITER=1000;*/
fit &ret. / method = marquardt fiml outest=out1 outcov MAXITER=1000;
restrict (a0/(1-a1-g1-0.5*a2))=%SYSEVALF(&lv.);
restrict a0>0;
restrict g1>0;
by decade;
run ;
quit ;
... View more