拓端tecdat:R語言GARCH建模常用軟件包比較、擬合標(biāo)準(zhǔn)普爾SP 500指數(shù)波動(dòng)率時(shí)間序列和
原文鏈接:http://tecdat.cn/?p=24441
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
我們研究波動(dòng)聚集,以及使用單變量 GARCH(1,1) 模型對(duì)其進(jìn)行建模。
波動(dòng)聚集
波動(dòng)聚集——存在相對(duì)平穩(wěn)時(shí)期和高波動(dòng)時(shí)期的現(xiàn)象——是市場(chǎng)數(shù)據(jù)的一個(gè)看似普遍的屬性。對(duì)此沒有普遍接受的解釋。GARCH(廣義自回歸條件異方差)模型?波動(dòng)聚集。圖 1 是波動(dòng)率的 garch 模型的示例。
圖 1:根據(jù) garch(1,1) 模型估計(jì)的 2011 年底之前的標(biāo)準(zhǔn)普爾 500 指數(shù)波動(dòng)率

顯然,波動(dòng)性隨時(shí)間變化。圖 1 是波動(dòng)率模型,而不是真正的波動(dòng)率。但如果我們有一張真實(shí)波動(dòng)率的圖片,它看起來會(huì)非常像圖 1。
數(shù)據(jù)需求
提供給 garch 估計(jì)的數(shù)據(jù)是每日數(shù)據(jù)。你可以使用每周或每月的數(shù)據(jù),但這將使數(shù)據(jù)中的一些波動(dòng)變得平滑。
你可以用garch處理日內(nèi)數(shù)據(jù),但這變得很復(fù)雜。 一天中的波動(dòng)有季節(jié)性。 季節(jié)性在很大程度上取決于交易發(fā)生的特定市場(chǎng),也可能取決于特定資產(chǎn)。 一個(gè)例子是看盤中的風(fēng)險(xiǎn)值。
圖1沒有顯示真實(shí)的波動(dòng)性,因?yàn)槲覀儚膩頉]有觀察過波動(dòng)性。 波動(dòng)性曾經(jīng)只是間接地暴露在我們面前。 所以我們?cè)噲D估計(jì)一些未知的東西。
圖 2 是一個(gè)原型 garch 模型圖。
圖 2:“無噪音”garch 模型圖

garch 的觀點(diǎn)是波動(dòng)率上升然后衰減,直到出現(xiàn)另一個(gè)峰值。很難在圖 1 中看到這種行為,因?yàn)闀r(shí)間軸太緊湊了,因此在圖 3 中更加明顯。
圖 3:由 garch(1,1) 模型估計(jì)的 MMM 波動(dòng)率。

當(dāng)然,在真實(shí)數(shù)據(jù)中,有各種規(guī)模的沖擊,而不僅僅是大的沖擊。
請(qǐng)注意,來自公告的波動(dòng)性(與沖擊相反)是反過來的--波動(dòng)性隨著公告時(shí)間的臨近而增加,然后在公告結(jié)果出來后消失。
對(duì)Garch模型的估計(jì)主要是對(duì)衰減速度的估計(jì)。 它所看到的衰減是非常嘈雜的,所以它希望看到大量的數(shù)據(jù)。 大量的數(shù)據(jù)是指它希望有數(shù)以萬計(jì)的每日觀測(cè)數(shù)據(jù)。
有兩個(gè)原因不能給它大量的觀測(cè)數(shù)據(jù)。
?
你沒有那么多觀察數(shù)據(jù)
市場(chǎng)隨時(shí)間變化
所以有一個(gè)折中的方法。每天 2000 次觀察往往不無道理。
如果你每天的觀測(cè)值少于1000個(gè),那么估計(jì)就不可能給你提供很多關(guān)于參數(shù)的真實(shí)信息。 最好是選擇一個(gè) "合理的 "模型。 這將是一個(gè)具有大約正確的持久性的模型(見下文),α1參數(shù)在0和0.1之間,β1參數(shù)在0.9和1之間。
估計(jì)
我們使用 GARCH(1,1) 模型;不是因?yàn)樗亲詈玫?,因?yàn)樗亲畛S玫摹?/p>
Garch 模型幾乎總是通過最大似然估計(jì)。結(jié)果證明這是一個(gè)非常難的優(yōu)化問題。假設(shè)你有足夠重要的數(shù)據(jù),即使是最好的 garch 實(shí)現(xiàn)也需要關(guān)注優(yōu)化。
我們知道,收益率沒有正態(tài)分布,它們有長(zhǎng)尾。 假設(shè)長(zhǎng)尾完全是由于arch效應(yīng)造成的,這是完全合理的,在這種情況下,在arch模型中使用正態(tài)分布將是正確的做法。 然而,使用長(zhǎng)尾分布的可能性,結(jié)果是給出一個(gè)更好的擬合(幾乎總是如此)。 t分布似乎做得很好。
?
自相關(guān)
如果模型正確解釋了波動(dòng)聚集,則平方標(biāo)準(zhǔn)化殘差將不存在自相關(guān)。通常進(jìn)行 Ljung-Box 檢驗(yàn)來檢驗(yàn)這種自相關(guān)性。
下面是假設(shè) MMM 收益率正態(tài)分布的擬合輸出(在本例中實(shí)際上是 Box-Pierce):

如果你習(xí)慣于看擬合度檢驗(yàn)的p值,你可能會(huì)注意到一些奇怪的東西。 檢驗(yàn)表明,我們用4個(gè)參數(shù)過度擬合了1547個(gè)觀測(cè)值。? 我不這么認(rèn)為。
更好的解釋是,盡管檢驗(yàn)是非常穩(wěn)健的,但對(duì)這種極端的數(shù)據(jù)來說,檢驗(yàn)并不穩(wěn)健。 這樣檢驗(yàn)平方殘差可能會(huì)產(chǎn)生反作用。 一個(gè)有信息量的檢驗(yàn)是關(guān)于平方標(biāo)準(zhǔn)化殘差的行列。
持久性
garch模型的持久性與沖擊后大的波動(dòng)率衰減的速度有關(guān)。對(duì)于garch(1,1)模型來說,關(guān)鍵的統(tǒng)計(jì)數(shù)字是兩個(gè)主要參數(shù)(alpha1和beta1,我們?cè)谶@里使用的符號(hào))的總和。
α1和β1的總和應(yīng)該小于1。 如果總和等于1,那么我們就有一個(gè)指數(shù)衰減模型。
可以用半衰期來表示持久性。 半衰期是log(0.5)/log(alpha1 + beta1),其中的單位將是收益率的頻率。 當(dāng)α1+β1達(dá)到1時(shí),半衰期就變成了無限。
為什么我們會(huì)得到具有無限持久性的估計(jì)? 持久性是通過觀察在樣本期間衰減的速度來估計(jì)的。 如果在樣本期間波動(dòng)率有一個(gè)趨勢(shì),那么估計(jì)者就會(huì) "認(rèn)為 "它從未看到完全的衰減。 樣本期越短,越有可能出現(xiàn)欺騙估計(jì)的趨勢(shì)。
無論參數(shù)估計(jì)值是多少,波動(dòng)率的樣本內(nèi)估計(jì)值看起來都很相似。 如果我們改變各自模型的參數(shù)估計(jì)值,圖 1 和圖 3 不會(huì)有太大變化。 但是當(dāng)我們?cè)跇颖就膺M(jìn)行預(yù)測(cè)時(shí),參數(shù)就很重要了。
使用Garch
Garch 模型之所以有用,是因?yàn)橐韵聝牲c(diǎn):
你可以使用 garch 模型進(jìn)行預(yù)測(cè)
你可以使用 garch 模型進(jìn)行模擬
預(yù)測(cè)
你預(yù)測(cè)的越遠(yuǎn),你的模型就越接近完美。Garch 模型并不是特別接近完美。如果你在一個(gè)月或更長(zhǎng)時(shí)間的時(shí)間范圍內(nèi)進(jìn)行預(yù)測(cè),那么效果可能不好。 如果你預(yù)測(cè)的是未來幾天,那么Garch應(yīng)該是相當(dāng)有用的。
模型的持久性是預(yù)測(cè)的關(guān)鍵驅(qū)動(dòng)因素——它決定了預(yù)測(cè)進(jìn)入無條件波動(dòng)的速度。如果波動(dòng)率確實(shí)存在很多持久性,并且你的模型準(zhǔn)確地捕捉到了這種持久性,那么你將在很遠(yuǎn)的地方獲得良好的預(yù)測(cè)。
有兩種不同的事情可以預(yù)測(cè):
預(yù)測(cè)期各時(shí)間點(diǎn)的波動(dòng)率
從周期開始到周期中每個(gè)時(shí)間點(diǎn)的平均波動(dòng)率
例如,期權(quán)價(jià)格的波動(dòng)率是到期前的平均波動(dòng)率,而不是到期日的波動(dòng)率。
因此,在預(yù)測(cè)時(shí)你需要了解兩件事:
你想要哪個(gè)預(yù)測(cè)
你得到哪個(gè)預(yù)測(cè)
模擬
garch 模擬需要:
garch 模型(包括參數(shù)值)
模型的波動(dòng)狀態(tài)
標(biāo)準(zhǔn)化(方差 1)的分布
我們想要的波動(dòng)狀態(tài)幾乎總是數(shù)據(jù)末尾的狀態(tài)。我們想利用當(dāng)前的波動(dòng)狀態(tài)并展望未來。
使用經(jīng)驗(yàn)分布——擬合模型的標(biāo)準(zhǔn)化殘差——通常是分布的最佳選擇。即使在使用經(jīng)驗(yàn)分布時(shí),擬合模型時(shí)的分布假設(shè)也會(huì)產(chǎn)生影響。
估計(jì)程序“試圖”使殘差符合假設(shè)的分布。假設(shè)正態(tài)分布的模型的標(biāo)準(zhǔn)化殘差將比假設(shè)分布相同數(shù)據(jù)的模型的殘差更接近正態(tài)分布。
模擬依賴于估計(jì)的參數(shù),但不像預(yù)測(cè)那樣嚴(yán)重。 當(dāng)我們模擬到更遠(yuǎn)的未來時(shí),模型誤差會(huì)加重。
?
R包
R 中的 garch 建模有多種選擇。沒有一種是完美的,使用哪種可能取決于你想要實(shí)現(xiàn)的目標(biāo)。然而,rugarch
?對(duì)于許多人來說,?它可能是最好的選擇。
rugarch
這具有擬合(即估計(jì)參數(shù))、預(yù)測(cè)和模擬的功能。
以下是使用 Student t 分布進(jìn)行擬合的示例:
ugarchspec(mean.modl, distriuion)
ugarchfit(ru, ret)
coef

> # ?繪制樣本內(nèi)波動(dòng)率估計(jì)值
> plot(sqrt(252) * sigma)
這個(gè)包中的優(yōu)化可能是我討論的包中最復(fù)雜和最值得信賴的。
fGarch
我們將擬合與上述相同的 Student t 模型:
garchFit(sp5, cod.dit="std")
coef
?

> # ?繪制樣本內(nèi)波動(dòng)率估計(jì)值
> plot(sqrt(252) * gfit.fg@sigma.t, type="l")
tseries
這個(gè)包是第一個(gè)在 R 中包含公開可用的 garch 函數(shù)的包。它僅限于正態(tài)分布。
garch(sp5)
coef

> # 繪制樣本內(nèi)波動(dòng)率估計(jì)值
> plot(sqrt(252) *fittedalus)
bayesGARCH
對(duì)Garch模型進(jìn)行貝葉斯估計(jì)。
這個(gè)包所做的唯一模型是具有t分布誤差的garch(1,1)。?
bayesGARCH(sp5)
但是,此命令失敗并出現(xiàn)錯(cuò)誤。如果我們以百分比形式給出收益率,則該命令確實(shí)有效:
bayesGARCH(sp5 * 100)
這也可能是最大似然估計(jì)的一個(gè)問題。 至少有一個(gè)Garch的實(shí)現(xiàn)在優(yōu)化百分比收益而不是自然比例的收益方面要好得多。 你可以對(duì)優(yōu)化做一個(gè)測(cè)試,就是在兩種規(guī)模的收益率上估計(jì)模型并比較結(jié)果。
不過,bayesGARCH函數(shù)并沒有給我們一個(gè)估計(jì)值。 它給我們的是一個(gè)矩陣,列對(duì)應(yīng)于參數(shù),行對(duì)應(yīng)于馬爾科夫鏈蒙特卡洛。 這可以說是參數(shù)的(后驗(yàn))分布的一個(gè)樣本。
如果我們對(duì)持久性施加一個(gè)約束,我們可以得到一個(gè)更有用的分析。 我們通過為約束條件創(chuàng)建一個(gè)函數(shù)來做到這一點(diǎn)。
?
????? pi[2] + pi[3] < .9986
這就是說超過兩年的半衰期是不合理的。然后我們使用該約束:
cotrl=list(adPrrdos=prieces))
現(xiàn)在我們從結(jié)果中進(jìn)行選擇并計(jì)算分布中的半衰期:
然后繪制結(jié)果。
圖 3:MMM 波動(dòng)率半衰期的貝葉斯估計(jì)

betategarch
該包擬合具有 t 分布誤差的 EGARCH 模型。
tegarch.est(sp5)
par

tegarch.fit(sp5, par)
plot(sqrt(252) * siga *
sd(epiln]))
?圖 4 將這個(gè)估計(jì)值與 garch(1,1)估計(jì)值進(jìn)行了比較(來自 rugarch,但它們看起來都非常相似)。
圖 4: 由 garch(1,1) 模型(藍(lán)色)和 beta-t EGARCH 模型(紅色)估計(jì)的 MMM 波動(dòng)率

dynamo
我認(rèn)為在這個(gè)包中估計(jì)一個(gè) garch 模型的方法是:
dm(sp~ garch(1,1))
AutoSEARCH
該包將為 ARCH 模型選擇最佳滯后。
rugarch 包中的 garch 模型
如何擬合和使用garch 模型。
模型
這模型通常比更常見的 garch(1,1) 模型效果更好。
圖 5 顯示了擬合標(biāo)準(zhǔn)普爾 500 指數(shù)的兩個(gè)模型對(duì)未來 20 天每天波動(dòng)率的預(yù)測(cè)。模型對(duì)波動(dòng)率的預(yù)測(cè)更為細(xì)致。
圖 5:使用模型(藍(lán)色)和具有方差目標(biāo)(紅色)的 garch(1,1) 對(duì)每天的波動(dòng)率預(yù)測(cè)

通常,你關(guān)心的是從現(xiàn)在到指定日期的平均波動(dòng)率。這被稱為期限結(jié)構(gòu)——圖 6 顯示了這一點(diǎn)。
圖 6:使用分量模型(藍(lán)色)和具有方差目標(biāo)(紅色)的 garch(1,1) 預(yù)測(cè)標(biāo)準(zhǔn)普爾 500 指數(shù)的波動(dòng)率期限結(jié)構(gòu)

創(chuàng)建這些圖的代碼如下所示。
R代碼
該?rugarch
?軟件包允許選擇擬合模型。
錯(cuò)誤
首先這是我遇到的一個(gè)問題:
?SET_VECTOR_ELT() can only be applied to a 'list', not a 'symbol'
更新這些包可以解決問題。
卸載包后,我更新了?Rcpp
?和?RcppArmadillo
?包。仍然不能正常工作。
再次安裝?Rcpp
?后,成功了。
模型被調(diào)用?"csGARCH"
?,?rugarch
?兩個(gè)額外的參數(shù)被稱為?eta11
?(我的符號(hào)中的ρ)和?eta21
?(φ)。它的分布和常數(shù)平均值是:
ugarchspec(mean.model, ditrbuton,
? vriane.moel)
用途如下:
Warning message:
In .makefitmodel
NaNs produced
警告信息似乎是關(guān)于:
fit$coH
[1] NaN
估計(jì)系數(shù)和半衰期為:
> coef

> halflife
?

具有方差目標(biāo)的 garch(1,1) 模型的規(guī)范是:
ugarchspec(mean.moel, isrition,
? varane.moel,
? vrince.tgtng=TRUE))
預(yù)測(cè)
一旦模型擬合好,你就可以進(jìn)行預(yù)測(cè)。
ugarchforecast()
一旦我們得到了預(yù)測(cè)的波動(dòng)率,我們就可以繪制它。生成圖5 的函數(shù)是:
??? plot(1:20, spf}
圖 6 的函數(shù)是:
??? plot(sqrt(cumsum(spe^2)/(1:20))

最受歡迎的見解
1.HAR-RV-J與遞歸神經(jīng)網(wǎng)絡(luò)(RNN)混合模型預(yù)測(cè)和交易大型股票指數(shù)的高頻波動(dòng)率
2.R語言中基于混合數(shù)據(jù)抽樣(MIDAS)回歸的HAR-RV模型預(yù)測(cè)GDP增長(zhǎng)
3.波動(dòng)率的實(shí)現(xiàn):ARCH模型與HAR-RV模型
4.R語言ARMA-EGARCH模型、集成預(yù)測(cè)算法對(duì)SPX實(shí)際波動(dòng)率進(jìn)行預(yù)測(cè)
5.GARCH(1,1),MA以及歷史模擬法的VaR比較
6.R語言多元COPULA GARCH 模型時(shí)間序列預(yù)測(cè)
7.R語言基于ARMA-GARCH過程的VAR擬合和預(yù)測(cè)
8.matlab預(yù)測(cè)ARMA-GARCH 條件均值和方差模型
9.R語言對(duì)S&P500股票指數(shù)進(jìn)行ARIMA + GARCH交易策略