Rolling Garch code in Eviews 9
Posted: Tue Jun 23, 2015 3:53 pm
Hi Eviews Gareth
I am estimating a Garch rolling regression with a moving window of 126 observations and a step size of 20.6. I have used the following code in Eviews 8 and I got some decent results, however when I use the same code in Eviews 9, I get the same value for each coefficient for the whole sample problem. Do you have any idea of what could be the problem with my code?
Thank you.
I am estimating a Garch rolling regression with a moving window of 126 observations and a step size of 20.6. I have used the following code in Eviews 8 and I got some decent results, however when I use the same code in Eviews 9, I get the same value for each coefficient for the whole sample problem. Do you have any idea of what could be the problem with my code?
Code: Select all
'run rolling regression
' set window size
!window = 126
' set step size
!step = 20.6
' get size of workfile
!length = @obsrange
' declare equation for estimation
equation eq1
'calculate number of rolls
!nrolls = @round((!length-!window)/!step)
'matrix to store coefficient estimates
matrix(9,!nrolls) coefmat ' where 9 is the number of coefficients
matrix(9,!nrolls) tmat
'variable keeping track of how many rolls we've done
!j=0
' move sample !step obs at a time
for !i = 1 to !length-!window+1-!step step !step
!j=!j+1
' set sample to estimation period
' estimate equation
sample s0 @first @first+1
sample s1 @first+2+!i-1 @first+!i-1+!window-2
smpl @all
' declare coef vectors to use in ARCH likelihood
coef(4) beta = 0
coef(3) alpha = 0
coef(1) dof = 0
coef(1) mu = 0
' get starting values
equation eq1.arch(1,1,ged,archm=sd,backcast=1) y c y(-1)
eq1.makegarch garchm
equation eq1.arch(1,1,ged,archm=sd,backcast=1) y c garchm*y(-1) y(-1)
beta(1) = eq1.c(1)
beta(2) = eq1.c(2)
beta(3) = eq1.c(3)
beta(4) = eq1.c(4)
alpha(1) = eq1.c(5)
alpha(2) = eq1.c(6)
alpha(3) = eq1.c(7)
dof(1) = eq1.c(8)
mu(1) = eq1.@se^2
' set presample values of expressions in logl
series sig2 = mu(1)
series resid = resid
' set up GARCH likelihood
logl ll1
ll1.append @logl logl
ll1.append @byeqn
ll1.append resid = y - beta(2) - beta(1)*sig2 - beta(3)*sig2*y(-1)- beta(4)*y(-1)
ll1.append sig2 = alpha(1)+ alpha(2)*resid(-1)^2 + alpha(3)*sig2(-1)
ll1.append z = resid/@sqrt(sig2)
ll1.append logl = log(@dged(z,dof(1))) - log(sig2)/2
' declare coef vectors to use in ARCH likelihood
coef(4) beta = 0
coef(1) thresh = 0
coef(3) alpha = 0
coef(1) dof = 0
coef(1) mu = 0
' get starting values
eq1.arch(1,1,thrsh=1,archm=sd,ged,backcast=1) y c y(-1)
eq1.makegarch garchm
eq1.arch(1,1,thrsh=1,archm=sd,ged,backcast=1) y c garchm*y(-1) y(-1)
beta(1) = eq1.c(1)
beta(2) = eq1.c(2)
beta(3) = eq1.c(3)
beta(4) = eq1.c(4)
alpha(1) = eq1.c(5)
alpha(2) = eq1.c(6)
thresh(1) = eq1.c(7)
alpha(3) = eq1.c(8)
dof(1) = eq1.c(9)
mu(1) = eq1.@se^2
' set presample values of expressions in logl
series sig2 = mu(1)
series resid = resid
' set up GARCH likelihood
logl ll1
ll1.append @logl logl
ll1.append @byeqn
ll1.append resid = y - beta(2) - beta(1)*sig2 - beta(3)*sig2*y(-1)- beta(4)*y(-1)
ll1.append sig2 = alpha(1)+ alpha(2)*resid(-1)^2 + alpha(3)*sig2(-1) + thresh(1)*resid(-1)^2*(resid(-1)<0)
ll1.append z = resid/@sqrt(sig2)
ll1.append logl = log(@dged(z,dof(1))) - log(sig2)/2
' estimate and display results
smpl s1
ll1.ml(showopts, m=1000, c=1e-5)
show ll1.output
delete s0 s1
'store coefficients
colplace(coefmat,ll1.@coefs,!j)
colplace(tmat,ll1.@tstats,!j)
next
show coefmat
show tmat