預測

使用 R 中的 stochvol 估計滾動隨機波動率預測

  • September 28, 2014

我想使用 R 包 stochvol 將 SV 模型擬合到 DAX 訓練集,並使用輸出來估計滾動單步預測:

DAX2log<- (logret(DAX, demean=TRUE))^2
trainset <- DAX2log[1:1912]

SV <- svsample(trainset, priormu = c(-10, 1), priorphi = 
        c(20, 1.1), priorsigma = .1, draws = 50000, burnin = 5000)

SVroll <- function(svsampleOBJ, NumofForecast, Data)
{
 mu <- summary(svsampleOBJ)$para[1]
     phi <- summary(svsampleOBJ)$para[2]
 sigma <- summary(svsampleOBJ)$para[3]
 HSV <- vector(mode=c("double"),length=NoF)

 for(i in 1:NumofForecast)
 {
   H <- mu + phi*(Data[i] - mu) + sigma
   HSV[i] <- exp(H/2)
 }
 return(HSV)  
}

HSV <- SVroll(svsampleOBJ = SV,NumofForecast = 2000,
            Data = DAX2log[1913:length(DAx2log)])

這段程式碼的主要問題是模型變得確定性,但我沒有設法從預測函式中提取更多的數據來進行滾動預測。

我怎樣才能從後驗分佈中得到這些平局,我的公式是否足夠?

此外,單位似乎有些混淆,因為 HSV 是每日收益的平方,而輸入是對數。

您可能想看看 stochvol 小插圖 ( http://cran.r-project.org/web/packages/stochvol/vignettes/article.pdf ),算法 1 中詳細描述了這個過程。特別是,如果我理解正確,您需要的是步驟 4b。

現在到您的程式碼:

  1. 這不是真正的滾動預測,因為您只估計模型一次。

2)預測時,在函式的前三行中,您只使用參數的後驗平均值(作為點估計)。為什麼不使用整個發行版?這樣,您還可以正確處理參數不確定性。

  1. 在 SV 模型(與 GARCH 型模型相反)中,波動率被假定為潛在隨機變數,因此在預測時(行 H <- …),您可能希望通過從相應的(正態)分佈而不是確定性更新。這正是 predict.svdraws 所做的。您可以查看那裡的程式碼並根據您的需要進行調整。

最好的,格雷戈爾

引用自:https://quant.stackexchange.com/questions/14360