我正在使用MSGARCH来基于滚动窗口获得波动率预测。
但是,在滚动窗口上拟合预测时,出现以下错误消息:
temp
此外:
Error: $ operator is invalid for atomic vectors
从预测输出的某个点开始为零。
我试图更改所使用数据的范围,但它只会导致从不同点开始的零。
如果更改提前一天预测的次数,则预测输出中将有NA和零。
我也将Warning messages: 1: In sqrt(diag(mSandwitch)) : NaNs produced
更改为FitML
,并且没有错误,但是预测的输出大部分包括5e + 37之类的大数字,这对于波动率和我的数据来说是非常不现实的。
此外,如果我对n天的提前预测(n = 1、50、400,..)进行无循环预测相同的模型,则不会有问题。
如果我使用随机生成的数据代替FitMCMC
函数runif
的数据,问题将保持不变。
(min=-1,max=1)
如何修改我的代码,以便产生正确的预测值?
P.S。我是SO的新手,所以如果可以提供其他任何信息来使问题更明确,请引导我。
答案 0 :(得分:0)
错误必须在方法“窗口”中,该方法接受时间序列的日期作为参数。请尝试以下方式:
Create the forecasts vector to store the predictions
windowLength = 100
foreLength<-365
MSforecasts <- vector(length=foreLength)
for (d in 1:foreLength) {
# Obtain the rolling window
RollingWindow = FileAllData$Returns[(6850+d):(6850+windowLength+d)]
MSmodel<-CreateSpec(variance.spec = list(model = c("sGARCH", "gjrGARCH", "eGARCH")),
distribution.spec = list(distribution = c("snorm", "std", "sged")),
switch.spec = list(do.mix = FALSE))
MSmodel_est<-FitML(spec = MSmodel, data=RollingWindow)
#Forecasting
MSforecast<-predict(MSmodel_est, nahead = 1)
MSforecasts[d]<-MSforecast$vol
}
MSforecasts