GARCH(1,1) 找到了很好的擬合,如何預測未來一天的波動?
我使用 SPY 數據在我的模型中擬合 GARCH(1,1)。我的數據從 2000 年 1 月到 2013 年 12 月開始。我使用 21 滾動視窗上的 runSD 和 GARCH(1,1) 比較了波動率。到目前為止,它看起來很合身。
我的問題是如何預測 2013 年 12 月以後的未來波動?我應該只使用係數來計算第二天的波動率嗎?但是如果我想提前 10 天模擬呢?有沒有一種簡單的方法可以在 R 中做到這一點?我查看了 ugarchroll ,但我並不真正了解該功能。希望各位大神能多多指教!
謝謝!
以下是使用 tseries 包的 GARCH 的係數和摘要:
Call: garch(x = dailyreturn[, 1], order = c(1, 1)) Coefficient(s): a0 a1 b1 1.637e-06 8.857e-02 9.001e-01 Call: garch(x = dailyreturn[, 1], order = c(1, 1)) Model: GARCH(1,1) Residuals: Min 1Q Median 3Q Max -7.1755 -0.5418 0.0716 0.6266 4.0432 Coefficient(s): Estimate Std. Error t value Pr(>|t|) a0 1.637e-06 2.266e-07 7.223 5.1e-13 *** a1 8.857e-02 7.074e-03 12.520 < 2e-16 *** b1 9.001e-01 7.916e-03 113.703 < 2e-16 *** --- Signif. codes: 0 ?**?0.001 ?*?0.01 ??0.05 ??0.1 ??1 Diagnostic Tests: Jarque Bera Test data: Residuals X-squared = 358.7767, df = 2, p-value < 2.2e-16 Box-Ljung test data: Squared.Residuals X-squared = 7.8313, df = 1, p-value = 0.005135
啊,這正在成為一個常見的問題,現在就在 R 中。請看這個
$$ question $$(GARCH 模型和預測),它有 R 程式碼來做預測。 簡而言之,你一直在預測未來的一天。 $ \sigma_{t+k}^2 =w+\alpha u_{t+k-1}^2+\beta \sigma_{t+k-1}^2 $ . 你已經知道了 $ w,\space \alpha \space and \space \beta $ 起始值是當時返回時間序列和 Garch 變異數中的最後一個值。因此,第一個預測將變為 $ \sigma_{t+1}^2 =w+\alpha u_{t}^2+\beta \sigma_{t}^2 $ 第二天的預測將是 $ \sigma_{t+2}^2 =w+\alpha u_{t+1}^2+\beta \sigma_{t+1}^2 $ 等等…
你為什麼不使用
rugarch
包?您可以通過A short Introduction to the rugarch package參考作者的範例網頁。
## example forc1 = ugarchforecast(fit, n.ahead = 500) forc2 = ugarchforecast(spec, n.ahead = 500, data = sp500ret[1:1000, , drop = FALSE]) forc3 = ugarchforecast(spec, n.ahead = 1, n.roll = 499, data = sp500ret[1:1500, , drop = FALSE], out.sample = 500) f1 = as.data.frame(attributes(forc1)[[1]]$seriesFor[1]) f2 = as.data.frame(attributes(forc2)[[1]]$seriesFor[1]) f3 = t(as.data.frame(attributes(forc3)[[1]]$seriesFor[1], which = 'sigma', rollframe = 'all', aligned = FALSE)) U = uncvariance(fit)^0.5
n.ahead
是提前幾天預測的參數。請參閱使用 rugarch 包進行預測。