>>>> "JL" == Johannes Lips <[email protected]> >>>> on Tue, 15 Feb 2011 16:07:50 +0100
JL> Hello, JL> JL> I'm quite new to R but tried to learn as much as possible in JL> the last JL> few months. JL> My problem is that I would like to estimate the model of Leon JL> et al. (2005). JL> I have shortly summarised the most important equations in JL> the following JL> pdf file: JL> http://hannes.fedorapeople.org/leon2005.pdf JL> JL> My main question is now how could I introduce these two JL> additional terms JL> into the Likelihood function of a(n) (existing) GARCH method. JL> JL> I looked into some GARCH packages but wasn't really sure where JL> to start. JL> I know that this is not really an easy task but I would be JL> very grateful JL> if you could help me out by giving me some hints on how to JL> solve this JL> problem. JL> JL> Thanks in advance! JL> JL> Johannes Lips Hi Johannes, You can start by implementing the simple GARCH(1,1) and then modify the objective function to your needs. You might want to add further constraints on the parameters. # ------------------------------------------------------------------------------ # load fGarch and a data set # ------------------------------------------------------------------------------ library(fGarch) data(dem2gbp) x <- dem2gbp[,1] # ------------------------------------------------------------------------------ # negative log likelihood function of garch11 with normal innovations # ------------------------------------------------------------------------------ llhGarch11N <- function(par, x) { mu <- par[1]; omega <- par[2]; alpha <- par[3]; beta <- par[4] e <- x - mu e2 <- e^2 ## slow loop # s2 = omega + alpha*mean(e2) + beta*mean(e2) # for ( t in 2:length(x)) # s2[t] = omega + alpha*e2[t-1] + beta*s2[t-1] # fast filter e2t <- omega + alpha*c(mean(e2),e2[-length(x)]) s2 <- filter(e2t, beta, "recursive", init = mean(e2)) -sum(log(dnorm(e, mean = 0, sd = sqrt(abs(s2))))) } # test llhGarch11N mu <- mean(x); omega <- 0.1*var(x); alpha <- 0.1; beta <- 0.8 parN <- c(mu, omega, alpha, beta) llhGarch11N(parN, x) # ------------------------------------------------------------------------------ # Fit parameters # ------------------------------------------------------------------------------ small <- 1e-6 lowN <- c(-10*abs(mu), small, small, small) upN <- c(10*abs(mu), 100*abs(mu), 1-small, 1-small) fitN <- nlminb(star=parN, objective=llhGarch11N, x = x, lower=lowN, upper=upN, control=list(x.tol = 1e-8,trace=1)) fitN$par <- round(fitN$par,6) names(fitN$par) <- c("mu", "omega", "alpha", "beta") fitN # ------------------------------------------------------------------------------ # compare with garchFit # ------------------------------------------------------------------------------ garchFit(~garch(1,1), x) # ------------------------------------------------------------------------------ HTH, Yohan -- PhD candidate Swiss Federal Institute of Technology Zurich www.ethz.ch ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.

