拓端tecdat|R語言多元?jiǎng)討B(tài)條件相關(guān)DCC-MVGARCH、常相關(guān)CCC-MVGARCH模型進(jìn)行多變量股市
原文鏈接:http://tecdat.cn/?p=23287?
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
引言
當(dāng)從單變量波動(dòng)率預(yù)測(cè)跳到多變量波動(dòng)率預(yù)測(cè)時(shí),我們需要明白,現(xiàn)在我們不僅要預(yù)測(cè)單變量波動(dòng)率元素,還要預(yù)測(cè)協(xié)方差元素。假設(shè)你有兩個(gè)序列,那么這個(gè)協(xié)方差元素就是2乘2方差-協(xié)方差矩陣的對(duì)角線。我們應(yīng)該使用的準(zhǔn)確術(shù)語是 "方差-協(xié)方差矩陣",因?yàn)樵摼仃囉蓪?duì)角線上的方差元素和非對(duì)角線上的協(xié)方差元素組成。但是由于讀 "方差-協(xié)方差矩陣 "非常累人,所以通常被稱為協(xié)方差矩陣,或者有時(shí)不太正式地稱為var-covar矩陣。
如果你還在讀這篇文章,說明你在建立相關(guān)關(guān)系模型方面有一些經(jīng)驗(yàn)。鑒于你知道各個(gè)序列的方差

,相關(guān)和協(xié)方差之間的聯(lián)系是直接的。?
??

所以當(dāng)我第一次研究這個(gè)問題時(shí),我不明白為什么我們不單獨(dú)建立所有非對(duì)角線的模型,例如使用樣本成對(duì)相關(guān)的滾動(dòng)窗口呢?你想有一個(gè)有效的相關(guān)矩陣,這意味著對(duì)稱(很容易施加)和正負(fù)無限。
首先,為什么非負(fù)定屬性很重要,其次,為什么它不容易施加。把非負(fù)定屬性看作是多變量的,相當(dāng)于單變量情況下對(duì)波動(dòng)率的正向施加。你不會(huì)想讓你的模型生成負(fù)的波動(dòng)率吧?在單變量的情況下,

乘以任何平方數(shù),我們都可以保持在正數(shù)的范圍內(nèi)。在更高的維度上,確保協(xié)方差的 "正性 "涉及到乘法,不是乘以一個(gè)平方的標(biāo)量,而是乘以一個(gè) "平方 "的矢量。
?
將XC表示為居中的隨機(jī)變量X,所以

??,F(xiàn)在根據(jù)定義

是一個(gè)協(xié)方差矩陣,顯然是非負(fù)定的。現(xiàn)在,如果我們用矩陣乘以一個(gè) "平方 "向量,

我們可以將向量 "插入 "期望值中(因?yàn)椋?)向量不是隨機(jī)變量,以及(2)期望算子的線性)。我們(應(yīng)該)仍然得到非負(fù)定矩陣

。??你用哪個(gè)向量

并不重要,因?yàn)樗?"平方 "的。
如果我們對(duì)協(xié)方差條目進(jìn)行單獨(dú)建模,并將它們 "修補(bǔ) "成一個(gè)矩陣,將每個(gè)成對(duì)的協(xié)方差放在正確的位置(例如,變量1和變量3之間的協(xié)方差在條目

和?

,不能保證我們最終得到一個(gè)非負(fù)定的矩陣。由于不存在非負(fù)定的協(xié)方差矩陣,那么我們就有可能得到一個(gè)無效的協(xié)方差矩陣。
從業(yè)人員由于擺脫了繁瑣的學(xué)術(shù)判斷過程,可能會(huì)擺脫這個(gè)理論上的失誤。然而,還有其他問題,在本質(zhì)上是計(jì)算上的問題。一個(gè)非負(fù)的無限矩陣可以有零或負(fù)的行列式。在許多貝葉斯的應(yīng)用中,我們希望使用精確矩陣而不是協(xié)方差矩陣。為了計(jì)算精確矩陣,我們簡(jiǎn)單地反轉(zhuǎn)協(xié)方差矩陣,但這意味著我們要除以行列式,因此,行列式為零就會(huì)產(chǎn)生問題。
?
文獻(xiàn)中的主要構(gòu)建模塊是GARCH過程。假設(shè)我們有一個(gè)隨機(jī)變量

,我們可以用它的波動(dòng)率來建模。?
(1)?

很容易理解。對(duì)于今天的波動(dòng)率來說,重要的是昨天的波動(dòng)率

,特別強(qiáng)調(diào)的是昨天的沖擊,

。請(qǐng)記住,如果

,那么

僅僅是對(duì)方差

的估計(jì),而沒有考慮到t-1以前的任何情況。
?
提高維度
現(xiàn)在,添加另一個(gè)隨機(jī)變量
?。你現(xiàn)在有兩個(gè)波動(dòng)率和一個(gè)協(xié)方差項(xiàng)。但是,為什么不以向量自動(dòng)回歸(VAR)擴(kuò)展自動(dòng)回歸的同樣方式來擴(kuò)展這個(gè)過程?進(jìn)入VEC模型。
(2)?

這里

是一個(gè)矢量化運(yùn)算符,將一個(gè)矩陣作為一個(gè)矢量進(jìn)行堆疊。由于矩陣的對(duì)稱性,我們不需要所有的系數(shù),所以更好的表述:
?
(3)?

這個(gè)模型背后的直覺與VAR的基礎(chǔ)是一樣的。也許當(dāng)股票的波動(dòng)率高時(shí),債券的波動(dòng)率就低,也許當(dāng)債券的波動(dòng)率高時(shí),與股票的協(xié)方差就高,等等。
這個(gè)模型的一個(gè)潛在問題,也是與VAR相似的,就是波動(dòng)率是獨(dú)立的過程,這意味著只有A和B的對(duì)角線是重要的,在這種情況下,我們只是用不必要的估計(jì)噪音來干擾這個(gè)模型。之前提到的另一個(gè)計(jì)算問題是,由于我們沒有對(duì)矩陣過程本身進(jìn)行建模,而是對(duì)三個(gè)項(xiàng)逐一進(jìn)行建模,所以我們不能確保結(jié)果是一個(gè)有效的協(xié)方差矩陣,特別是沒有施加非負(fù)-無限約束。BEKK模型(Baba, Engle, Kraft and Kroner, 1990)取得了這一進(jìn)展。有一個(gè)很好的理由不詳細(xì)討論這些 "第一代 "模型。它們對(duì)于少數(shù)幾個(gè)變量來說是非常難以估計(jì)的。我沒有親自嘗試過那些模型。對(duì)于這些模型,即使人們成功地進(jìn)行了估計(jì),就實(shí)踐者而言,估計(jì)的復(fù)雜性給結(jié)果帶來了很大問題。
CCC 和DCC
恩格爾(2002)在其開創(chuàng)性的論文中提出了下一個(gè)重要的步驟,隨后文獻(xiàn)中出現(xiàn)了一個(gè)高潮。"Dynamic Conditional Correlation: 一類簡(jiǎn)單的多變量廣義自回歸條件異方差模型"。從摘要中可以看出:"這些(模型)具有單變量GARCH模型的靈活性,加上參數(shù)化的相關(guān)模型"。這類條件相關(guān)模型的關(guān)鍵切入點(diǎn)是要認(rèn)識(shí)到?
(4)?


是一個(gè)矩陣,對(duì)角線上是各個(gè)序列的波動(dòng)率(現(xiàn)在單獨(dú)估計(jì)),對(duì)角線外是零。這只是以矩陣形式對(duì)我們開始時(shí)的常規(guī)方程進(jìn)行了處理。

?,因?yàn)?/p>
?,F(xiàn)在具備幾個(gè)條件:
把

對(duì)角線和非對(duì)角線分開,你可以用通常的單變量GARCH估計(jì)值來 "填補(bǔ) "這個(gè)對(duì)角線。非對(duì)角線是由相關(guān)矩陣給出的,我們現(xiàn)在可以對(duì)其進(jìn)行決定。當(dāng)我們假設(shè)一個(gè)恒定的相關(guān)矩陣(CCC),也就是說

,我們可以自然地使用樣本相關(guān)矩陣。我們可以假設(shè)該矩陣

是時(shí)變的,并使用滾動(dòng)窗口或指數(shù)衰減權(quán)重或其他方式來估計(jì)它。
由于二次形式

,并且因?yàn)?/p>

是相關(guān)矩陣,我們肯定會(huì)得到一個(gè)有效的協(xié)方差矩陣,即使我們使用恒定的相關(guān)矩陣,它也是時(shí)間變化的。
由于這種對(duì)角線與非對(duì)角線的分離,我們實(shí)際上可以處理許多變量,與 "第一代 "類模型非常不同。我認(rèn)為,這是該模型被接受和流行的主要原因。?
現(xiàn)在我們進(jìn)行估計(jì)。
使用R進(jìn)行估算
讓我們得到一些數(shù)據(jù)。我們提取三個(gè)ETF的過去幾年的數(shù)據(jù)。SPY(追蹤標(biāo)準(zhǔn)普爾500指數(shù)),TLT和IEF(分別追蹤長(zhǎng)期和中期債券)。
k <- 3 # 多少年數(shù)據(jù)
sym = c('SPY', 'TLT', "IEF") # ?標(biāo)準(zhǔn)普爾500指數(shù),長(zhǎng)期和中期債券,所有ETFs
for (i in 1:l)getSymbols(sym[i], src="yahoo", from=start, to=end)
ret <- na.omit(ret)# ?刪除第一個(gè)觀察值
現(xiàn)在來演示如何使用CCC和DCC模型構(gòu)建協(xié)方差矩陣。我們首先得到單變量波動(dòng)率。我們需要它們,它們位于對(duì)角線矩陣

的對(duì)角線上。我們用重尾的不對(duì)稱GARCH來估計(jì)它們。
garch(distribution="std") #std是學(xué)生t分布
volatilityfit # 用一個(gè)矩陣來保存三種資產(chǎn)的波動(dòng)率
for (i in 1:l)?model = ugarchfit(spec,ret[,i])
現(xiàn)在,一旦我們有了

,我們就能夠創(chuàng)建基于CCC和DCC的協(xié)方差矩陣。對(duì)于CCC(恒定條件相關(guān)),我們使用樣本相關(guān)矩陣,而對(duì)于DCC(動(dòng)態(tài)),我們使用基于例如3個(gè)月的移動(dòng)窗口估計(jì)的相關(guān)矩陣。
# 創(chuàng)建一個(gè)CCC模型的協(xié)方差
nassets <- l # ?為了提高可讀性,l看起來太像1了。
# 為不同時(shí)期的矩陣制作容器。
array(dim=c(n, nassets, TT))
# 計(jì)算樣本無條件的相關(guān)矩陣。
samp_cor <- cor(ret) # 在整個(gè)循環(huán)過程中會(huì)保持不變
wind <- 60 # 大概三個(gè)月的時(shí)間
for (i in (w+1):TT)
(volatilitfit[i,])*diag(assets)
cov_ccc
cor_tv
cov_dcc<- dt %*% cor_tv[,,i] %*% dt
結(jié)果
結(jié)果按年計(jì)算,并乘以100,轉(zhuǎn)為百分比,以提高可讀性。繪制它。
par()$mar # 邊距
plot(ann*cov_ccc[1,1,]~time
plot(ann*cov_ccc[1,2,]~time)
?

在上圖中,我們有協(xié)方差矩陣的對(duì)角線。我們看到(1)中期債券的波動(dòng)性最低,正如預(yù)期的那樣,(2)SPY的波動(dòng)性很大,方差也很高。(3) 曲線長(zhǎng)端的方差高于中期的方差,這是收益率曲線文獻(xiàn)中一個(gè)典型的事實(shí)。(4) 有趣的是,長(zhǎng)期債券的波動(dòng)性一直在上升,這可能是對(duì)即將提高政策利率的高度警覺。
在下圖中,我們有三個(gè)協(xié)方差項(xiàng),一次是假設(shè)CCC的估計(jì)(實(shí)線),一次是假設(shè)DCC的估計(jì)(虛線)。對(duì)于中期和長(zhǎng)期債券之間的協(xié)方差,如果你假設(shè)恒定或動(dòng)態(tài)相關(guān)矩陣,并不重要。然而,這對(duì)SPY與債券的協(xié)方差項(xiàng)確實(shí)很重要。例如,基于DCC的協(xié)方差矩陣認(rèn)為在2013年中期股票和債券之間的協(xié)方差幾乎為零,而基于CCC的協(xié)方差則表明在此期間的協(xié)方差為負(fù)。究竟是恒定的還是動(dòng)態(tài)的,對(duì)跨資產(chǎn)投資組合的構(gòu)建可能有很大的影響。

最受歡迎的見解
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交易策略