# Need help with my Code for complex GARCH (GJR-GARCH)

3 messages
Open this post in threaded view
|

## Need help with my Code for complex GARCH (GJR-GARCH)

 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