I modify the replication RATS codes of Diebold and Yilmaz (2009, 2011) to extract the rolling spillover index (from others, to others, and the net spillover) using Structural Decomposition, but fail to gauge the results. Could you look at the codes and tell me why? Furthermore, if I constrain the error decomposition using the A-matrix estimated over the whole sample while calculate the rolling spillover indices, could you tell me how to?
The Code and Data are attached below:
Code: Select all
*
*
compute usegirf=0
*
OPEN DATA "C:\Users\irsyz\Dropbox\FR_JY03.xls"
CALENDAR(D) 1995:1:2
DATA(FORMAT=XLS,ORG=COLUMNS) 1995:01:02 2000:12:29 X1 X2 X3 X4 X5 X6 DX1 DX2 DX3 DX4 DX5 DX6
*
@varlagselect(lags=15,crit=aic)
# X1 X2 X3 X4 X5 X6
*
compute nlags=8
*
system(model=varmodel)
variables DX1 DX2 DX3 DX4 DX5 DX6
lags 1 to nlags
det constant
end(system)
*
estimate(noprint)
*
nonlin(parmset=svar) a21 a25 a26 a31 a34 a42 a65
*
dec frml[rect] afrml
frml afrml = ||1.0,0.0,0.0,0.0,0.0,0.0|$
a21,1.0,0.0,0.0,a25,a26|$
a31,0.0,1.0,a34,0.0,0.0|$
0.0,a42,0.0,1.0,0.0,0.0|$
0.0,0.0,0.0,0.0,1.0,0.0|$
0.0,0.0,0.0,0.0,a65,1.0||
*
compute a21=a25=a26=a31=a34=a42=a65=0.0
*
cvmodel(a=afrml,parmset=svar,method=bfgs,factor=fsvar) %sigma
*
compute shocklabels=||"SHA","SHB","SZA","SZB","HKH","HKR"||
compute varlabels=||"SHA","SHB","SZA","SZB","HKH","HKR"||
*
*errors(model=varmodel,steps=30,labels=shocklabels,factor=fsvar)
*
*
compute rstart=%regstart(),rend=%regend()
*
* Analyze the 3 step responses
*
compute nsteps=3
*********************************************************************
*
* Produce the appropriate "factor" matrix from structural decomposition
*
function FactorMatrix
type rect FactorMatrix
if usegirf
compute FactorMatrix=%sigma*inv(%diag(%sqrt(%xdiag(%sigma))))
else
compute FactorMatrix=fsvar
end
*********************************************************************
*
compute gfactor=FactorMatrix()
*
errors(model=varmodel,steps=nsteps,factor=gfactor,stderrs=gstderrs,noprint,results=gfevd)
compute gfevdx=%xt(gfevd,nsteps)
*
* These are for computing the contributions from others, to others and
* to others including own for each variable.
*
dec vect tovar(%nvar) fromvar(%nvar) tototal(%nvar)
ewise fromvar(i)=%sum(%xrow(gfevdx,i))-gfevdx(i,i)
ewise tovar(i)=%sum(%xcol(gfevdx,i))-gfevdx(i,i)
ewise tototal(i)=tovar(i)+1-fromvar(i)
compute spillover=100.0*%sum(tovar)/%nvar
*
* Rolling window analysis
*
compute nspan=200
dec vect[series] rfrom(%nvar) rto(%nvar)
*
do end=rstart+nspan-1,rend
estimate(model=varmodel,noprint) end-nspan+1 end
cvmodel(a=afrml,parmset=svar,method=bfgs,factor=fsvar,iterations=1000,noprint) %sigma
compute gfactor=FactorMatrix()
errors(model=varmodel,steps=nsteps,factor=gfactor,stderrs=gstderrs,noprint,results=gfevd)
compute gfevdx=%xt(gfevd,nsteps)
ewise fromvar(i)=%sum(%xrow(gfevdx,i))-gfevdx(i,i)
ewise tovar(i)=%sum(%xcol(gfevdx,i))-gfevdx(i,i)
compute %pt(rfrom,end,fromvar)
compute %pt(rto,end,tovar)
end do end
*
*Compute net spillover for each city
*
set SHAf = 100.0*rfrom(1)
set SHAt = 100.0*rto(1)
set SHAn = 100.0*(rto(1) - rfrom(1))
set SHBf = 100.0*rfrom(2)
set SHBt = 100.0*rto(2)
set SHBn = 100.0*(rto(2) - rfrom(2))
set SZAf = 100.0*rfrom(3)
set SZAt = 100.0*rto(3)
set SZAn = 100.0*(rto(3) - rfrom(3))
set SZBf = 100.0*rfrom(4)
set SZBt = 100.0*rto(4)
set SZBn = 100.0*(rto(4) - rfrom(4))
set HKHf = 100.0*rfrom(5)
set HKHt = 100.0*rto(5)
set HKHn = 100.0*(rto(5) - rfrom(5))
set HKRf = 100.0*rfrom(6)
set HKRt = 100.0*rto(6)
set HKRn = 100.0*(rto(6) - rfrom(6))
Best wishes
Ziliang