Code: Select all
cal(irregular)
all 1734
open data I:\EAFIT\Tesis\GPRK\Accion_GPRK_diaria_Final.xls
data(format=xls, org=obs)
**print(win = 'datos')
***** Data transformed *****
set us10y = us_10y; set ca10y = ca_10y; set caus = cad_usd; set eurus = eur_usd
dofor i = us10y ca10y embi_col smb hml rf erm
set %s('r'+%l(i)) = i{0} / 252
end dofor
dofor i = gprk ecp gte pxt fec cne sp500 tsx brent vix us10y caus eurus copper
set %s('l'+%l(i)) = log(i{0})
end dofor
dofor i = lgprk lecp lgte lpxt lfec lcne lsp500 ltsx rembi_col lus10y lbrent lvix lcaus leurus lcopper
set %s('d'+%l(i)) = %if(%valid(i{0} - i{1}),(i{0} - i{1}),0)
end dofor
set dlptfw = wgprk*dlgprk+wecp*dlecp+wgte*dlgte+wpxt*(dlpxt - dlcaus)+wfec*(dlfec - dlcaus)+wcne*(dlcne - dlcaus)
set dlptfs 1 685 = (dlgprk + dlecp + dlgte + (dlpxt - dlcaus) + (dlcne - dlcaus)) / 5
set dlptfs 686 1734 = (dlgprk + dlecp + dlgte + (dlpxt - dlcaus) + (dlcne - dlcaus) + 1*(dlfec - dlcaus)) / 6
dofor i = dlpxt dlfec dlcne
set %s(%l(i)) = i{0} - dlcaus
end dofor
dofor i = dlgprk dlecp dlgte dlpxt dlfec dlcne dlsp500 dlbrent dlcopper dlptfw dlptfs
set %s('r'+%l(i)) = 100 * (i{0} - rf)
end dofor
dofor i = rsmb rhml rerm dlbrent drembi_col dleurus dlcopper dlus10y
set %s(%l(i)) = 100 * i{0}
end dofor
***** GARCH Factors - BRENT *****
dec symm[series] hsfac(4,4) hsptw1(5,5) hsptw2(3,3) dcb(4,1)
clear(zeros) hsfac hsptw1 hsptw2 dcb
set d1 = t>=1521.and.t<=1524; set d2 = t==595; set d3 = t==1404
system(model = eqfac)
variables rdlsp500 rsmb rhml rdlBrent
lags 1 to 2
det constant
end(system)
estimate(noprint, resids = rfac, noftest)
garch(noprint, model=eqfac, mv=DCC, DCC=CDCC, p=1, q=1, hmatrices=hmfac, pmethod=simplex, piters=50, robusterros, $
method=bhhh, iters=500, mvhseries=hsfac, distrib=t, asymm, stdresid=zfac, rvectors=r2fac, xreg) / $
rdlsp500 rsmb rhml rdlBrent
# d1 d2 d3
set mkptw1 = 0.0; set brptw1 = 0.0; set sbptw1 = 0.0; set hlptw1 = 0.0
set mkptw2 = 0.0; set brptw2 = 0.0
linreg(noprint, robust, define = eqptw1) rdlgprk / uptw1
# constant rdlsp500 mkptw1 rsmb sbptw1 rhml hlptw1 rdlBrent brptw1
group modpfw1 eqfac eqptw1
***** DCC *****
garch(model=modpfw1, mv=DCC, DCC=CDCC, p=1, q=1, hmatrices=hmptw1, pmethod=simplex, piters=50, robusterros, $
method=bhhh, iters=500, mvhseries=hsptw1, distrib=ged, asymm, stdresid=zptw1, rvectors=rptw, $
hadjust=%(hsptw1(1,1)=hsfac(1,1),hsptw1(1,2)=hsfac(1,2),hsptw1(1,3)=hsfac(1,3),hsptw1(1,4)=hsfac(1,4), $
hsptw1(2,2)=hsfac(2,2),hsptw1(2,3)=hsfac(2,3),hsptw1(2,4)=hsfac(2,4), $
hsptw1(3,3)=hsfac(3,3),hsptw1(3,4)=hsfac(3,4),hsptw1(4,4)=hsfac(4,4))) / $
rdlsp500 rsmb rhml rdlBrent rdlgprk
The first series of dcb would have in every row an updated value (for each t) for the first parameter, Second series would a series for second parameter and so on. After that, I would create 4 series in hadjust: mkptw1 = rdlsp500*dcb(1,1), sbptw1= rsmb*dcb(2,1), hlptw1=rhml*dcb(3,1), and brptw1=rdlBrent*dcb(4,1)
I don't know how to nclude that in hadjust. Could you please help me?
Regards,