Hello,

i want to estimate a complex GARCH-model (see below).

W stands for the Day of the Week Dummies. r stands for returns of stock market indices. I stands for the GJR-term.

I need some help with three problems:

1.) implementation of the GJR-term in the variance equation

2.) compute robust covariance matrix (Bollerslev/Wooldbridge,1992) for robust standard errors

3.) extract the residuals amd volatility of my estimation

First of all my GARCH-Code:

garch2<-function(par,x,Di,Mi,Do,Fr,y,z,d){

x<<-ts(x)

y<<-ts(y)

z<<-ts(z)

Di <<-ts(Di)

Mi<<-ts(Mi)

Do<<-ts(Do)

Fr<<-ts(Fr)

n<-length(x)

a <-par[1]

di <- par[2]

mi <- par[3]

do <- par[4]

fr <- par[5]

b1 <- par[6]

b2 <- par[7]

b3 <- par[8]

b4 <- par[9]

dum <- par[10]

alpha0<-par[11]

alpha<-par[12]

beta<-par[13]

res<-array(length(x))

hh<-array(length(x))

ll <-numeric(length(x))

res[1] <- x[1]-a

for (i in 2:n){

res[i]<-x[i]-a-di*Di[i]-mi*Mi[i]-do*Do[i]-fr*Fr[i]-b1*y[i]-b2*z[i-1]-b3*x[i-1]-b4*d[i]*x[i-1] #MEan Equation

}

res<-ts(res)

hh[1]<-var(res)

for (i in 2:n){

hh[i]<-(alpha0+alpha*res[i-1]^2+beta*(hh[i-1]-alpha0))*(1+dum*d[i]) #Variance Equation

ll[i] <- -1/2*log(2*pi*hh[i]) - 1/2*res[i]^2/hh[i] # LogLikelihood

}

hh<-ts(hh)

h<-sqrt(abs(hh))

ll <- sum(ll[i])

}

x <- dat2$r_csi

Mean = mean(x); Var = var(x); S = 1e-6

param = c(reg$coef, dum = 0, alpha0 = 0.1*Var,alpha = 0.1, beta = 0.8) # start values

lowerB = c(a = -10*abs(Mean),di = S-1, mi = S-1, do = S-1, fr = S-1, b1 = S-1, b2 = S-1, b3= S-1, b4= S-1, dum = S-1, alpha0 = S^2, alpha = S, beta = S)

upperB = c(a = 10*abs(Mean), di = 1-S, mi = 1-S, do = 1-S, fr =1-S, b1 = 1-S, b2 = 1-S,b3 = 1-S, b4 = 1-S, dum = 1-S, alpha0 = 100*Var, alpha = 1-S, beta = 1-S)

fitt<-maxLik(start=param, logLik=garch2,method="BHHH", x=dat2$r_csi,Di=dat2$Di,Mi=dat2$Mi,Do=dat2$Do,Fr=dat2$Fr,y=dat2$r_t,z=dat2$r_sp,d=dat2$f)

Note that optim always breaks down: finite-infinite error message

nlminb and the BFGS and BHHH algorithmus from the maxLik-package work fine. The estimated coefficients are similiar to those of the EVIEWS Estimation. So I guess, they are correct.

Is my Implementation of the Dummy-Variabel in the VAriance-Equation correct?

I failed to incorporate the GJR-term in the VAriance Equation. I tried to modify the Variance Equation:

I[1]=0

for(i in 2:n) {

I[i] <- if (res[i-1]<0){I[i] = 1}else{if(res[i-1]>=0){I[i] = 0}}

}

I<-ts(I)

hh[1]<-alpha0

for (i in 2:n){

hh[i]<-alpha0+alpha*res[i-1]^2+beta*(hh[i-1]-alpha0)+gjr*I[i]*res[i-1]^2

The estimation results are different from those that EVIEWS suggested. So I think I did something wrong here.

2.) Compute robust covariance (Bollerslev/Wooldbridge,1992). I need robust standard errors, because the real innovations in my data are not normally distributed. Is there a way to control for this aspect other than the robust covariance from Bollerslev/Wooldbridge?

V = H^(-1) G' G H^(-1),

where V denotes the variance-covariance matrix, H stands for the Hessian and G represents the matrix of contributions to the gradient, the elements of which are defined as

G_{t,i} = derivative of l_{t} w.r.t. zeta_{i},

where l_{t} is the log likelihood of the t-th observation and zeta_{i} is the i-th estimated parameter.

Thats a way to compute the robust covariance matrix. But how to I do this i R??? Only the maxLik-package reports the Hessian-matrix, but not the gradient.

When using nlminb for optimization I dont know how to extract the gradient and hessian.

3.) How can I extract the residuals of my GARCH-model and the volatility(hh)? So that I can plot them or do a Box-test.

I hope someone can help me. That would be awesome. Thanks in advance.

Lin23