cal(daily) 1993 1 11 all 2001:11:23 compute stock_nr = 6 COMPUTE GSTART=3, GEND=2001:11:23 com GSTART2=(GEND-GSTART-6)/2 open data index_returns.xls data(format=xls,org=cols) dec vect[series] y(stock_nr) do i=1,stock_nr set y(i) = i{0} end do ************************************************************************************* ************************************************************************************* ************************ SET OF UNIVARIATE GARCH MODELS ************************ ************************************************************************************* ************************************************************************************* dec vect ALPHA(stock_nr) dec vect ALPHA1(stock_nr) dec vect ALPHA2(stock_nr) dec vect ALPHA3(stock_nr) dec frml resid dec vect[series] v(stock_nr) set yh = 0 set uh = 0 set hh = 0 compute a0 = 0.00 NONLIN(parmset=UNIMEANPARMS) b1 NONLIN(parmset=UNIGARCHPARMS) a1 a2 a3 a3=0.00 FRML RESID = yh - b1 FRML h = a0*(1-a1-a2-a3) + a1*%ovcheck(hh{1}) + a2*uh{1}**2 + a3*%if(uh{1}<0,uh{1}*uh{1},0.00) FRML L = (hh(t)=h(t)),(uh(t)=resid(t)),-0.5*(log(hh(t))+uh(t)**2/hh(t)) do i=1,stock_nr { set yh = y(i) LINREG(NOPRINT) yh / uh # CONSTANT COMPUTE B1 = %BETA(1) VCV(MATRIX=RR,NOPRINT) # uh compute a0 = rr(1,1) compute a1=0.95 compute a2=0.03 compute a3=0.00 set hh = rr(1,1) MAXIMIZE(parmset=UNIGARCHPARMS+UNIMEANPARMS,METHOD=SIMPLEX,ITERS=10,noprint) L GSTART GEND MAXIMIZE(parmset=UNIGARCHPARMS+UNIMEANPARMS,METHOD=Bfgs,ITERS=50) L GSTART GEND set v(i) = hh compute alpha(i) = a0 compute alpha1(i) = a1 compute alpha2(i) = a2 compute alpha3(i) = a3 } end do ************************************************************************************* ************************************************************************************* ************************ MULTIVARIATE DCC-GARCH ******************************* ************************************************************************************* dec vec[series] sty(stock_nr) dec vec[series] stu(stock_nr) dec vec[series] nstu(stock_nr) dec vec stb(stock_nr) dec vec styx(stock_nr) dec vec UX(stock_nr) dec vec UL(stock_nr) dec symm HX(stock_nr,stock_nr) dec symm IUL(stock_nr,stock_nr) dec symm IDENTITY(stock_nr,stock_nr) dec symm[series] q(stock_nr,stock_nr) dec symm[series] corr(stock_nr,stock_nr) dec frml[vec] STRESID dec frml[symm] HF set trend = t compute IDENTITY = %identity(stock_nr) dec symm ones(stock_nr,stock_nr) com ones = %CONST(1.0) com TRENDCOEFF = ones-identity NONLIN(parmset=STMEANPARMS) stb nonlin(parmset=garchparms) B1 B2 B3 B4 B4=0.0 nonlin(parmset=garchparmstrend) B1 B2 B3 B4 B1>=0.0 B2>=0.0 B3>=0 do i=1,stock_nr set sty(i) = y(i)/(v(i)**0.5) set stu(i) = 0 end do do i=1,stock_nr LINREG(NOPRINT) STY(i) gstart gend STU(i) # CONSTANT COMPUTE STB(i) = %BETA(1) end do VCV(MATRIX=STRR,NOPRINT) # STU do i=1,stock_nr set nstu(i) = 0.00 set nstu(i) = %if(stu(i)<0,stu(i),0.00) end do VCV(MATRIX=STRRN,noprint) # NSTU compute B1 = 0.01 compute B2 = 0.80 compute B3 = 0.04 compute B4 = 0.04 do i=1,stock_nr do j=1,i set q(i,j) = strr(i,j) end do j end do i FRML STRESID = $ styx=%xt(sty,t), $ styx-stb FRML LOGL = $ HX = HF(T), $ UX = STRESID(T), $ %PT(Q,T,HX),$ %PT(STU,T,UX),$ %LOGDENSITY(HX,UX) FRML HF = $ (HX=%XT(Q,T-1)),(UL=%XT(STU,T-1)),IUL=((UL-%abs(UL))*0.5)*tr((UL-%abs(UL))*0.5), $ STRR*(1-B1-B2) - STRRN*B3 - TRENDCOEFF*GSTART2*B4 + B1*UL*tr(UL) + B2*HX + B3*IUL + B4*trend*TRENDCOEFF *MAXIMIZE(parmset=stmeanparms+garchparms,METHOD=SIMPLEX,ITERS=10,noprint) LOGL GSTART+3 GEND *MAXIMIZE(parmset=stmeanparms+garchparms,METHOD=Bfgs,robusterrors,ITERS=50,trace) LOGL GSTART+3 GEND MAXIMIZE(parmset=stmeanparms+garchparmstrend,METHOD=SIMPLEX,ITERS=10,PRINT) LOGL GSTART+3 GEND MAXIMIZE(parmset=stmeanparms+garchparmstrend,METHOD=Bfgs,robusterrors,ITERS=50,trace) LOGL GSTART+3 GEND ******************************************************************* ****************** AVERAGE CORRELATION ****************** ******************************************************************* do i=1,stock_nr do j=1,i set corr(i,j) = q(i,j)/((q(i,i)*q(j,j))**0.5) end do j end do i set av_ccorr = 0 do i=1,stock_nr do j=1,stock_nr set av_ccorr = av_ccorr + corr(i,j)/stock_nr**2 end do j end do i ******************************************************************* ******************************************************************* ****************** OUTPUT ***************************** ******************************************************************* graph(header='Average Equally Weighted Conditional Correlation') 1 # av_ccorr gstart gend open copy ADCC_trend_output.rat copy(format=rats) gstart gend av_ccorr v corr dec vec[series] ASTUtrend(stock_nr) DO i=1,stock_nr set ASTUtrend(i) = stu(i) end do open copy residuals_adcc_trend.rat copy(format=rats) gstart gend ASTUtrend(1) to ASTUtrend(stock_nr) ******************************************************************* ******************************************************************* display %avg(strr) /* do i=1,stock_nr do j=1,i set corr(i,j) = q(i,j)/((q(i,i)**0.5)*(q(j,j)**0.5)) end do j end do i */