i use rollapplyin order to create 1-step ahead forecasts of a GARCH(1,1) model (garchFit). An example is provided below:
require(fGarch)
require(zoo)
data(EuStockMarkets)
dax <- diff(log(EuStockMarkets))[,"DAX"]
gfit <- function(df)
{
series <- df
capture.output(gf <- garchFit(formula=~arma(0,0) + garch(1,1), data=series), file='NUL')
g <- predict(gf, n.ahead=1)[,2]
attributes(g) <- NULL
return(g)
}
rolling <- rollapply(dax, width=250, FUN=gfit)
However, this takes a relatively long time. So my question is: Is there a method of speeding this up?
There was a bug in recent versions of
rollapply(such as zoo 1.7-6) that did not result in incorrect answers but did cause it to run much more slowly than need be. Try the development version (to become zoo 1.7-7) and see if that is sufficient for your needs:install.packages(“zoo”, repo = “http://r-forge.r-project.org”)
You can also try measuring the percentage of time taken up by your function (see
?Rprof) and if its large, i.e.total.pctforFUNis large, then its pointless to look forrollapplyalternatives.