2016-06-30 30 views
0

我试图用不同的模型(例如AR,HAR等)预测一些股票的波动性。现在即时在我不知道如何进行的一点。我的问题是以下。我试图用ARFIMA(2,d,0)模型和外部回归预测波动率。我正在使用包rugarch和命令arfimaroll。 这是ARFIMA规范的代码。arfimaroll and external regressor

specGT<- arfimaspec(mean.model = list(armaOrder = c(2, 0),arfima=T, external.regressors = TGT)) 

TGT是外部回归因子。它是具有1列和1359行(与我的数据集行数相同)的矩阵。这段代码起作用(至少它没有给出任何错误)。 现在我想用arfimaroll来预测波动率。以下是密码

forecastarfimaGT<-arfimaroll(specGT,lagRV_d,n.ahead=1,n.start=1014,refit.every=1,refit.window="recursive",solver="hybrid") 

这也不会给出错误。但是,如果我比较来自与来自同一型号ARFIMA的那些外部回归模型的天气预报无需外接回归它给我相同的价值观

forecastarfimaGT==forecastarfimarealized 

输出为TRUE每345个预测点。

关于预测的一些说明。 refit.window =“recursive”用于执行扩展窗口预测,其他参数不重要(如refit.every等)。

现在我的问题是我在这里做错了。有人能给我提示我的错误吗?

问候

编辑: 为了更清楚这里是一个虚构的例子。首先让使时间序列与所述数据

a<-abs(rnorm(600,0.1,0.1) 

然后使外接回归的矢量,并将其转换成一个矩阵

b<-abs(rnorm(600,1,1)) 
b1<-as.matrix(b,nrow=600,ncol=1) 

现在ARFIMA预测没有外部回归

spec<- arfimaspec(mean.model = list(armaOrder = c(2, 0),arfima=T)) 
forecastarfima<-arfimaroll(spec,a,n.ahead=1,n.start=500,refit.every=1,refit.window="recursive",solver="hybrid" 
forecastarfimadf<-as.data.frame(forecastarfima) 
forecastarfimarealized<-forecastarfimadf[,-c(1:5)] 

使用exernal regressor的预测

specGT<- arfimaspec(mean.model = list(armaOrder = c(2, 0),arfima=T, external.regressors = b1)) 
forecastarfimaGT<-arfimaroll(specGT,a,n.ahead=1,n.start=500,refit.every=1,refit.window="recursive",solver="hybrid" 
forecastarfimaGTdf<-as.data.frame(forecastarfimaGT) 
forecastarfimarealizedGT<-forecastarfimaGTdf[,-c(1:5)] 

现在,让我们这两个结果

forecastarfimarealized==forecastarfimarealizedGT 
    [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 
[37] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 
[73] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 

比较正如你可以看到展台矢量是相同的。这不应该是这种情况。即使外部回归因子没有影响,载体也不应该完全相同。我现在很困惑。我使用正确的方法吗?你能帮我解决我的问题吗?

回答

0

那是因为你正在寻找原始的系列:

cbind(forecastarfimarealized,forecastarfimarealizedGT,a[501:600]) 

看 “Mu”。尝试改为:

cbind(forecastarfimadf[,c(6,1)],forecastarfimaGTdf[,1]) 
plot.ts(cbind(forecastarfimadf[,c(6,1)],forecastarfimaGTdf[,1]),plot.type="single",col=2:4,ylab="x") 
legend("top",c("realized","forecast x","forecast x+GT"),lty=1,col=2:4,bty ="n") 

您确定您正在模拟波动吗?也许你必须看看“Sigma”。为什么不使用Garch和家人?