2016-06-30 28 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和家人?