[R] Need Help with my Code for complex GARCH (GJR)

Lin23 linusholtermann at gmx.de
Sun Nov 27 13:48:43 CET 2011


Hello,

i want to estimate a complex GARCH-model (see below).
http://r.789695.n4.nabble.com/file/n4112396/GJR_Garch.png 
 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: 
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


--
View this message in context: http://r.789695.n4.nabble.com/Need-Help-with-my-Code-for-complex-GARCH-GJR-tp4112396p4112396.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list