- to estimate VARMA-MGARCH-in-mean model through the rolling windows where the fixed window size is 1250 and increment is 5.
- to generate 5-step ahead volatility forecasts in each window and save these series in hhat11 and hhat22 objects.
- this code also saves some of estimated coefficients from each regression in coef1, coef2, and coef3 objects.
I would be appreciated if anyone could check the code whether everything is OK. I suspect the mean model (i.e., VARMA) and var-cov model (i.e., MGARCH-M) use different sample periods.
Attached is the code file.
Many thanks
Code: Select all
*
set rvar1 = 100.0*(log(var1)-log(var1{1}))
set rvar2 = 100.0*(log(var2)-log(var2{1}))
set rvar3 = 100.0*(log(var3)-log(var3{1}))
*
source mvgarchfore.src
*
compute d=1250
*
dec series hhat11
dec series hhat22
dec series hhat33
*
dec series hhat12
dec series hhat13
dec series hhat23
*
clear hhat11
clear hhat22
clear hhat33
*
clear hhat12
clear hhat13
clear hhat23
*
clear coef1 coef2 coef3 coef4 coef5
clear tstat1 tstat2 tstat3 tstat4 tstat5
clear conv iter
*
dec vect[series] sqrth(3)
dec vect[series] eps(3)
dec symm[series] hhs(3,3)
clear(zeros) hhs
*
do regend = 2013:01:09, 2019:05:31, 5
*
equation oil_eq rvar1
# constant sqrth(1) sqrth(2) sqrth(3) rvar1{1} rvar2{1} rvar3{1}
equation rvar2_eq rvar2
# constant sqrth(1) sqrth(2) sqrth(3) rvar1{1} rvar2{1} rvar3{1}
equation rvar3_eq rvar3
# constant sqrth(1) sqrth(2) sqrth(3) rvar1{1} rvar2{1} rvar3{1}
*
group varmah oil_eq rvar2_eq rvar3_eq
*
clear(zeros) sqrth eps
*
do iters=1,3
estimate(model=varmah,resids=resids)
set eps(1) %regstart() * = resids(1)
set eps(2) %regstart() * = resids(2)
set eps(3) %regstart() * = resids(3)
end do iters
*
compute cv0=%sigma
*
garch(model=varmah, mv=bekk, robust, distrib=norm, rvectors=rv, hmatrices=hh, mvhseries=hhs, pmethod=simplex, piters=15, cvcrit=0.0001, iters=1000, presample=cv0,$
uadjust=%pt(eps,t,rv(t)),hadjust=%(sqrth(1)=sqrt(hhs(1,1)), sqrth(2)=sqrt(hhs(2,2)), sqrth(3)=sqrt(hhs(3,3)))) regend-d+1 regend rvar1 rvar2 rvar3
*
@MVGarchFore(MV=BEKK, steps=5) hh rv
*
do i=1,5
compute hhat11(regend+i) = hh(regend+i)(1,1)
compute hhat22(regend+i) = hh(regend+i)(2,2)
compute hhat33(regend+i) = hh(regend+i)(3,3)
end do i
*
compute coef1(regend) = %beta(9)
compute coef2(regend) = %beta(10)
compute coef3(regend) = %beta(11)
compute coef4(regend) = %beta(38)
compute coef5(regend) = %beta(44)
*
compute tstat1(regend) = %tstats(9)
compute tstat2(regend) = %tstats(10)
compute tstat3(regend) = %tstats(11)
compute tstat4(regend) = %tstats(38)
compute tstat5(regend) = %tstats(44)
*
compute conv(regend) = %converged
compute iter(regend) = %ITERS
*
end do regend
*
*
print / coef1 tstat1 coef2 tstat2 coef3 tstat3
*
print / coef4 tstat4 coef5 tstat5
*
print / hhat11 hhat22 hhat33
*
print / conv iter