用ugarchfit对R中扩展窗口的Garch预测

时间:2014-09-17 16:28:56

标签: r prediction performanceanalytics volatility rollapply

我有S& P500的每日数据,并在 my_data $ Return 中存储近似收益。我的目标是在这段时间内每天重新安装一个GARCH(1,1)(所以从 startDate 开始,这是01/01/2004),然后计算30天的预测。 换句话说,我需要模拟在我使用的时间段内每个时间点的GARCH(1,1)30天预测。 为了做到这一点,我有功能 myFit 来校准模型并进行预测。然后, apply.fromstart 调用此函数,以便我可以每天从 startDate 开始应用它。

如果我发布这个,R抱怨因为 ugarchfit 需要运行至少100个数据点。

library(quantmod)
library(PerformanceAnalytics)
library(rugarch)

symbolLst <- c("^GSPC","^VIX")
startDate = as.Date("2004-01-01")
myForHorizon = 30

myData <- new.env() 
getSymbols(symbolLst, env = myData, src = "yahoo", from = startDate)

args = eapply(myData, 
              function(x){OHLC(x)})

my_data = do.call(cbind,
                  args,
                  envir = myData)

my_data$Return <- ClCl(myData$GSPC) 
my_data$Return[is.na(my_data$Return)] <- 0

spec = ugarchspec(
  variance.model=list(garchOrder=c(1,1)))

myFit <- function(myVector)
{
  myVec <- myVector
  fit = ugarchfit(spec=spec, data=myVec)
  forecast = ugarchforecast(fit, n.ahead=myForHorizon)
  myForecast = sigma(forecast)[myForHorizon,] * sqrt(252) * 100
  return(myForecast)
}

forecastVec <- apply.fromstart(my_data$Return, FUN=myFit)

我看到该函数至少需要100个数据但是如何更改函数以避免错误? 我也尝试用以下代码替换最后一行:

forecastVec <- rollapply(my_data$Return, width = 252, FUN=myFit)

但是 R 显示错误,因为解算器无法收敛。另外, rollapply 不允许我使用扩展窗口,这是我想要做的事情。事实上,我在这里申请了一年的滚动窗口。

关于如何在此期间每天获得预测的任何想法?

非常感谢你的帮助。

0 个答案:

没有答案