R語(yǔ)言GARCH模型對(duì)股市sp500收益率bootstrap、滾動(dòng)估計(jì)預(yù)測(cè)VaR、擬合診斷和蒙特卡羅模
原文鏈接:http://tecdat.cn/?p=26271
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
介紹
Box 等人的開創(chuàng)性工作(1994) 在自回歸移動(dòng)平均模型領(lǐng)域的相關(guān)工作為波動(dòng)率建模領(lǐng)域的相關(guān)工作鋪平了道路,分別由 Engle (1982) 和 Bollerslev (1986) 引入了 ARCH 和 GARCH 模型。這些模型的擴(kuò)展包括更復(fù)雜的動(dòng)力學(xué),例如閾值模型來捕捉新聞?dòng)绊懙牟粚?duì)稱性,以及除正態(tài)之外的分布來解釋實(shí)踐中觀察到的偏度和過度峰度。在進(jìn)一步的擴(kuò)展中,
本文旨在為單變量 GARCH 過程建模提供一套全面的方法,包括擬合、過濾、預(yù)測(cè)、模擬以及診斷工具,包括繪圖和各種測(cè)試。用于評(píng)估模型不確定性的其他方法(例如滾動(dòng)估計(jì)、引導(dǎo)預(yù)測(cè)和模擬參數(shù)密度)為這些過程的建模提供了豐富的環(huán)境。
示例
擬合對(duì)象屬于 uGARCHfit 類,可以傳遞給各種其他方法,例如 show (summary)、plot、ugarchsim、ugarchforecast 等。
> fit = ugarchfit(spec = spec)
擬合診斷
穩(wěn)健標(biāo)準(zhǔn)誤差基于 White (1982) 的方法,該方法通過計(jì)算參數(shù) (θ) 的協(xié)方差 (V) 來生成漸近有效的置信區(qū)間:
其中,
這是最佳分?jǐn)?shù)的Hessian和協(xié)方差。穩(wěn)健標(biāo)準(zhǔn)誤差是 V 的對(duì)角線的平方根。擬合或過濾對(duì)象上的 inforcriteria 方法返回 Akaike (AIC)、貝葉斯 (BIC)、Hannan-Quinn (HQIC) 和 Shibata (SIC) 信息標(biāo)準(zhǔn),以通過以不同速率懲罰過擬合來啟用模型選擇。形式上,它們可以定義為:
Q-statistics 和 ARCH-LM 檢驗(yàn)已被 Fisher 和 Gallagher (2012) 的 Weighted Ljung-Box 和 ARCH-LM 統(tǒng)計(jì)量取代,這更好地說明了來自估計(jì)模型。ARCH-LM 檢驗(yàn)現(xiàn)在是一個(gè)加權(quán)組合檢驗(yàn),用于檢驗(yàn)充分?jǐn)M合的 ARCH 過程的原假設(shè),而 Ljung-Box 是另一個(gè)組合檢驗(yàn),其 ARMA 擬合的充分性為零。signbias 計(jì)算 Engle 和 Ng (1993) 的 Sign Bias Test,也顯示在摘要中。這測(cè)試了標(biāo)準(zhǔn)化殘差中杠桿效應(yīng)的存在(以捕捉 GARCH 模型可能的錯(cuò)誤指定),
其中 I 是指標(biāo)函數(shù), ^t 是 GARCH 過程的估計(jì)殘差。原假設(shè)是 H0:ci = 0(對(duì)于 i = 1、2、3),并且聯(lián)合 H0:c1 = c2 = c3 = 0。從先前擬合的總結(jié)可以推斷,存在顯著的負(fù)和對(duì)沖擊的積極反應(yīng)。使用諸如 apARCH 之類的模型可能會(huì)減輕這些影響
gof 計(jì)算卡方擬合優(yōu)度檢驗(yàn),將標(biāo)準(zhǔn)化殘差的經(jīng)驗(yàn)分布與所選密度的理論分布進(jìn)行比較。該實(shí)現(xiàn)基于 Palm (1996) 的測(cè)試,該測(cè)試通過重新分類標(biāo)準(zhǔn)化殘差而不是根據(jù)它們的值(如在標(biāo)準(zhǔn)測(cè)試中),而是根據(jù)它們的大小,計(jì)算在存在非獨(dú)立同分布觀察的情況下的測(cè)試,計(jì)算觀察到小于標(biāo)準(zhǔn)化殘差的值的概率,該殘差應(yīng)該是相同的標(biāo)準(zhǔn)均勻分布。該函數(shù)必須采用 2 個(gè)參數(shù),即擬合對(duì)象以及用于對(duì)值進(jìn)行分類的箱數(shù)。在擬合摘要中,使用了 (20, 30, 40, 50) 個(gè) bin 的選擇,
nymblom 檢驗(yàn)計(jì)算了 Nyblom (1989) 的參數(shù)穩(wěn)定性檢驗(yàn),以及聯(lián)合檢驗(yàn)。顯示用于比較結(jié)果的臨界值,但在超過 20 個(gè)參數(shù)的情況下,這不適用于聯(lián)合測(cè)試。
最后,一些信息圖可以交互繪制(which = 'ask'),單獨(dú)繪制(which = 1:12),或者一次全部繪制(which = 'all'),如圖 2 所示。
過濾
有時(shí)希望使用一組預(yù)定義的參數(shù)簡(jiǎn)單地過濾一組數(shù)據(jù)。例如,當(dāng)新數(shù)據(jù)到達(dá)并且人們可能不希望重新擬合時(shí),可能就是這種情況。
> filt = ugarchfilter(spec = spe)
> show(filt)
?
預(yù)測(cè)和 GARCH?bootstrap程序
2 種類型的預(yù)測(cè)。一種滾動(dòng)方法,其中基于擬合例程中設(shè)置的 out.sample 選項(xiàng)創(chuàng)建連續(xù) 1-ahead 預(yù)測(cè),以及用于 n>1 超前預(yù)測(cè)的無(wú)條件方法。(也可以將兩者結(jié)合起來創(chuàng)建一個(gè)相當(dāng)復(fù)雜的對(duì)象)。在后一種情況下,也可以使用 Pascual 等人描述的 bootstrap程序。?bootstrap 方法基于從擬合模型的經(jīng)驗(yàn)分布中重新采樣標(biāo)準(zhǔn)化殘差,以生成序列和 sigma 的未來實(shí)現(xiàn)。實(shí)現(xiàn)了兩種方法:一種通過模擬和重新擬合建立參數(shù)的模擬分布來考慮參數(shù)不確定性,另一種只考慮分布不確定性,從而避免昂貴且冗長(zhǎng)的參數(shù)分布估計(jì)。在后一種情況下,1-ahead sigma 預(yù)測(cè)的預(yù)測(cè)區(qū)間將不可用,因?yàn)樵谶@種情況下,只有參數(shù)不確定性與 GARCH 類型模型相關(guān)。
> sec = ugrspc(are.e=list(model="csGARCH"),ititin="std")
> fi = grit(sc,sp5et)
bot(fit, mehod = c("Pl", "Full")[1],
?完整 GARCH bootstrap程序總結(jié)如下:
1. 從估計(jì)對(duì)象中提取標(biāo)準(zhǔn)化殘差。如果是具有固定參數(shù)的規(guī)范,首先使用提供的數(shù)據(jù)集進(jìn)行過濾,然后從過濾后的對(duì)象中提取標(biāo)準(zhǔn)化殘差。
2. 使用 spd 或基于內(nèi)核的方法從原始標(biāo)準(zhǔn)化殘差中采樣大小為 N 的 n.bootfit 集(原始數(shù)據(jù)集減去任何樣本周期外)。
模擬
模擬可以直接在擬合對(duì)象上進(jìn)行:
其中 n.sim 表示模擬的長(zhǎng)度,而 m.sim 表示獨(dú)立模擬的數(shù)量。出于速度的原因,當(dāng) n.sim 相對(duì)于 m.sim 較大時(shí),仿真代碼在 C 中執(zhí)行,而對(duì)于較大的 m.sim,使用了特殊用途的 C++ 代碼(使用 Rcpp 和 RcppArmadillo),發(fā)現(xiàn)這會(huì)導(dǎo)致速度顯著提高。
滾動(dòng)估計(jì)
對(duì)模型/數(shù)據(jù)集組合執(zhí)行滾動(dòng)估計(jì)和預(yù)測(cè),可選擇返回指定水平的 VaR。更重要的是,它返回計(jì)算預(yù)測(cè)密度所需的任何度量所必需的分布預(yù)測(cè)參數(shù)。以下示例說明了該方法的使用,其中還使用了并行功能并在 10 個(gè)內(nèi)核上運(yùn)行。
> cl = mkSluter(10)
> spec = uarpc(vaaneoel = list(model = "eGARCH"), ditrtonodel = "jsu")
> roll = ghrospe,se .at = 1000, ef.every= 10,
refit.windw =moing, calult.V= TRUE,
V.ha = c(0.01, 0.05), cser = c, eep.oef = TUE)
> report
蒙特卡羅實(shí)驗(yàn):模擬參數(shù)分布和RMSE
通過多次模擬和擬合模型并針對(duì)不同的“窗口”大小來執(zhí)行蒙特卡羅實(shí)驗(yàn)。這允許通過查看均方根誤差的下降率以及我們是否具有 √ N 一致性,在數(shù)據(jù)窗口增加時(shí)對(duì)參數(shù)估計(jì)的一致性有所了解。
> spec = urhprnmel = list(model = "gjrGARCH"),
+ distuto.el ?"ged")
> dist = ugacdsribton(fiOspec spec, n.sm = 2000),
+ user = cl)
> stopCluster(cl)
> show(dist)
?
?
常見問題解答和指南
問:我應(yīng)該使用多少數(shù)據(jù)對(duì) GARCH 過程進(jìn)行建模?
但是,使用 100 個(gè)數(shù)據(jù)點(diǎn)來嘗試擬合模型不太可能是一種合理的方法,因?yàn)槟惶赡塬@得非常有效的參數(shù)估計(jì)。提供了一種方法(ugarchdistribution),用于從預(yù)先指定的模型、不同大小的數(shù)據(jù)進(jìn)行模擬,將模型擬合到數(shù)據(jù),并推斷參數(shù)的分布以及作為數(shù)據(jù)長(zhǎng)度的 RMSE 變化率增加。這是檢查參數(shù)分布的一種計(jì)算成本非常高的方法(但在非貝葉斯世界中是唯一的方法),因此應(yīng)謹(jǐn)慎使用并在有足夠計(jì)算能力的情況下使用。
最受歡迎的見解
1.在python中使用lstm和pytorch進(jìn)行時(shí)間序列預(yù)測(cè)
2.python中利用長(zhǎng)短期記憶模型lstm進(jìn)行時(shí)間序列預(yù)測(cè)分析
3.使用r語(yǔ)言進(jìn)行時(shí)間序列(arima,指數(shù)平滑)分析
4.r語(yǔ)言多元copula-garch-模型時(shí)間序列預(yù)測(cè)
5.r語(yǔ)言copulas和金融時(shí)間序列案例
6.使用r語(yǔ)言隨機(jī)波動(dòng)模型sv處理時(shí)間序列中的隨機(jī)波動(dòng)
7.r語(yǔ)言時(shí)間序列tar閾值自回歸模型
8.r語(yǔ)言k-shape時(shí)間序列聚類方法對(duì)股票價(jià)格時(shí)間序列聚類
9.python3用arima模型進(jìn)行時(shí)間序列預(yù)測(cè)