Я использую MSGARCH для получения прогнозов волатильности на основе скользящего окна.
Однако при подборе прогнозов на скользящем окне я получаю следующие сообщения об ошибках:
Error: $ operator is invalid for atomic vectors
Дополнительно:
Warning messages: 1: In sqrt(diag(mSandwitch)) : NaNs produced
И нулевые значения, начиная с некоторой точки прогнозируемой выработки.
Я пытался изменить диапазон используемых данных, но это приводит только к нулям, начиная с другой точки.
Если я изменю число прогнозирования на день вперед, в прогнозируемом выпуске будут НС и нули.
Я также изменил FitML
на FitMCMC
и не получил ошибок, однако прогнозируемый результат в основном включал большие числа, такие как 5e + 37, что совершенно нереально для волатильности и моих данных.
Более того, если я прогнозирую ту же модель без цикла для прогноза на n дней вперед (n = 1, 50, 400, ..), проблем не будет.
Если я использую случайно сгенерированные данные вместо моих с runif
функцией (min=-1,max=1)
, проблема остается той же.
#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 = window(FileAllData$Returns, start=(6850+d), end=(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
Как мой код можно изменить, чтобы он давал правильные прогнозные значения?
P.S. Я новичок в SO, поэтому наведите меня, если есть какая-то дополнительная информация, которую я могу предоставить, чтобы прояснить проблему.