拓端tecdat|R語言多元動態條件相關DCC-MVGARCH、常相關CCC-MVGARCH模型進行多變量股市波動率預測

 引言

當從單變量波動率預測跳到多變量波動率預測時,咱們須要明白,如今咱們不只要預測單變量波動率元素,還要預測協方差元素。假設你有兩個序列,那麼這個協方差元素就是2乘2方差-協方差矩陣的對角線。咱們應該使用的準確術語是 "方差-協方差矩陣",由於該矩陣由對角線上的方差元素和非對角線上的協方差元素組成。可是因爲讀 "方差-協方差矩陣 "很是累人,因此一般被稱爲協方差矩陣,或者有時不太正式地稱爲var-covar矩陣。算法

若是你還在讀這篇文章,說明你在創建相關關係模型方面有一些經驗。鑑於你知道各個序列的方差,相關和協方差之間的聯繫是直接的。 網絡

  

因此當我第一次研究這個問題時,我不明白爲何咱們不單獨創建全部非對角線的模型,例如使用樣本成對相關的滾動窗口呢?你想有一個有效的相關矩陣,這意味着對稱(很容易施加)和正負無限。ide

首先,爲何非負定屬性很重要,其次,爲何它不容易施加。把非負定屬性看做是多變量的,至關於單變量狀況下對波動率的正向施加。你不會想讓你的模型生成負的波動率吧?在單變量的狀況下,乘以任何平方數,咱們均可以保持在正數的範圍內。在更高的維度上,確保協方差的 "正性 "涉及到乘法,不是乘以一個平方的標量,而是乘以一個 "平方 "的矢量。
 3d

將XC表示爲居中的隨機變量X,因此 。如今根據定義是一個協方差矩陣,顯然是非負定的。如今,若是咱們用矩陣乘以一個 "平方 "向量,咱們能夠將向量 "插入 "指望值中(由於(1)向量不是隨機變量,以及(2)指望算子的線性)。咱們(應該)仍然獲得非負定矩陣。  你用哪一個向量並不重要,由於它是 "平方 "的。blog

若是咱們對協方差條目進行單獨建模,並將它們 "修補 "成一個矩陣,將每一個成對的協方差放在正確的位置(例如,變量1和變量3之間的協方差在條目,不能保證咱們最終獲得一個非負定的矩陣。因爲不存在非負定的協方差矩陣,那麼咱們就有可能獲得一個無效的協方差矩陣。遞歸

從業人員因爲擺脫了繁瑣的學術判斷過程,可能會擺脫這個理論上的失誤。然而,還有其餘問題,在本質上是計算上的問題。一個非負的無限矩陣能夠有零或負的行列式。在許多貝葉斯的應用中,咱們但願使用精確矩陣而不是協方差矩陣。爲了計算精確矩陣,咱們簡單地反轉協方差矩陣,但這意味着咱們要除以行列式,所以,行列式爲零就會產生問題。
 get

 

文獻中的主要構建模塊是GARCH過程。假設咱們有一個隨機變量,咱們能夠用它的波動率來建模。 it

(1) io

很容易理解。對於今天的波動率來講,重要的是昨天的波動率,特別強調的是昨天的衝擊,。請記住,若是,那麼僅僅是對方差的估計,而沒有考慮到t-1之前的任何狀況。
 class

 

提升維度

如今,添加另外一個隨機變量 。你如今有兩個波動率和一個協方差項。可是,爲何不以向量自動迴歸(VAR)擴展自動迴歸的一樣方式來擴展這個過程?進入VEC模型。

(2) 

這裏是一個矢量化運算符,將一個矩陣做爲一個矢量進行堆疊。因爲矩陣的對稱性,咱們不須要全部的係數,因此更好的表述:
 

(3) 

 

這個模型背後的直覺與VAR的基礎是同樣的。也許當股票的波動率高時,債券的波動率就低,也許當債券的波動率高時,與股票的協方差就高,等等。

這個模型的一個潛在問題,也是與VAR類似的,就是波動率是獨立的過程,這意味着只有A和B的對角線是重要的,在這種狀況下,咱們只是用沒必要要的估計噪音來干擾這個模型。以前提到的另外一個計算問題是,因爲咱們沒有對矩陣過程自己進行建模,而是對三個項逐一進行建模,因此咱們不能確保結果是一個有效的協方差矩陣,特別是沒有施加非負-無限約束。BEKK模型(Baba, Engle, Kraft and Kroner, 1990)取得了這一進展。有一個很好的理由不詳細討論這些 "第一代 "模型。它們對於少數幾個變量來講是很是難以估計的。我沒有親自嘗試過那些模型。對於這些模型,即便人們成功地進行了估計,就實踐者而言,估計的複雜性給結果帶來了很大問題。

 

CCC 和DCC

恩格爾(2002)在其開創性的論文中提出了下一個重要的步驟,隨後文獻中出現了一個高潮。"Dynamic Conditional Correlation: 一類簡單的多變量廣義自迴歸條件異方差模型"。從摘要中能夠看出:"這些(模型)具備單變量GARCH模型的靈活性,加上參數化的相關模型"。這類條件相關模型的關鍵切入點是要認識到 

(4) 

是一個矩陣,對角線上是各個序列的波動率(如今單獨估計),對角線外是零。這只是以矩陣形式對咱們開始時的常規方程進行了處理。 ,由於。如今具有幾個條件:

  • 對角線和非對角線分開,你能夠用一般的單變量GARCH估計值來 "填補 "這個對角線。非對角線是由相關矩陣給出的,咱們如今能夠對其進行決定。當咱們假設一個恆定的相關矩陣(CCC),也就是說,咱們能夠天然地使用樣本相關矩陣。咱們能夠假設該矩陣是時變的,並使用滾動窗口或指數衰減權重或其餘方式來估計它。
  • 因爲二次形式,而且由於是相關矩陣,咱們確定會獲得一個有效的協方差矩陣,即便咱們使用恆定的相關矩陣,它也是時間變化的。
  • 因爲這種對角線與非對角線的分離,咱們實際上能夠處理許多變量,與 "第一代 "類模型很是不一樣。我認爲,這是該模型被接受和流行的主要緣由。 

如今咱們進行估計。

使用R進行估算

讓咱們獲得一些數據。咱們提取三個ETF的過去幾年的數據。SPY(追蹤標準普爾500指數),TLT和IEF(分別追蹤長期和中期債券)。

k <- 3 # 多少年數據
sym = c('SPY', 'TLT', "IEF") #  標準普爾500指數,長期和中期債券,全部ETFs
for (i in 1:l)getSymbols(sym[i], src="yahoo", from=start, to=end)
ret <- na.omit(ret)#  刪除第一個觀察值

如今來演示如何使用CCC和DCC模型構建協方差矩陣。咱們首先獲得單變量波動率。咱們須要它們,它們位於對角線矩陣的對角線上。咱們用重尾的不對稱GARCH來估計它們。

garch(distribution="std") #std是學生t分佈

volatilityfit # 用一個矩陣來保存三種資產的波動率

for (i in 1:l) model = ugarchfit(spec,ret[,i])

如今,一旦咱們有了,咱們就可以建立基於CCC和DCC的協方差矩陣。對於CCC(恆定條件相關),咱們使用樣本相關矩陣,而對於DCC(動態),咱們使用基於例如3個月的移動窗口估計的相關矩陣。

# 建立一個CCC模型的協方差

nassets <- l #  爲了提升可讀性,l看起來太像1了。

# 爲不一樣時期的矩陣製做容器。

array(dim=c(n, nassets, TT))

# 計算樣本無條件的相關矩陣。

samp_cor <- cor(ret) # 在整個循環過程當中會保持不變

wind <- 60 # 大概三個月的時間

for (i in (w+1):TT)
(volatilitfit[i,])*diag(assets)
cov_ccc
cor_tv 
cov_dcc<- dt %*% cor_tv[,,i] %*% dt

 

結果

結果按年計算,並乘以100,轉爲百分比,以提升可讀性。繪製它。

par()$mar # 邊距

plot(ann*cov_ccc[1,1,]~time

plot(ann*cov_ccc[1,2,]~time)

 

 

 

在上圖中,咱們有協方差矩陣的對角線。咱們看到(1)中期債券的波動性最低,正如預期的那樣,(2)SPY的波動性很大,方差也很高。(3) 曲線長端的方差高於中期的方差,這是收益率曲線文獻中一個典型的事實。(4) 有趣的是,長期債券的波動性一直在上升,這多是對即將提升政策利率的高度警覺。

在下圖中,咱們有三個協方差項,一次是假設CCC的估計(實線),一次是假設DCC的估計(虛線)。對於中期和長期債券之間的協方差,若是你假設恆定或動態相關矩陣,並不重要。然而,這對SPY與債券的協方差項確實很重要。例如,基於DCC的協方差矩陣認爲在2013年中期股票和債券之間的協方差幾乎爲零,而基於CCC的協方差則代表在此期間的協方差爲負。到底是恆定的仍是動態的,對跨資產投資組合的構建可能有很大的影響。


 

 

最受歡迎的看法

1.HAR-RV-J與遞歸神經網絡(RNN)混合模型預測和交易大型股票指數的高頻波動率

2.R語言中基於混合數據抽樣(MIDAS)迴歸的HAR-RV模型預測GDP增加

3.波動率的實現:ARCH模型與HAR-RV模型

4.R語言ARMA-EGARCH模型、集成預測算法對SPX實際波動率進行預測

5.GARCH(1,1),MA以及歷史模擬法的VaR比較

6.R語言多元COPULA GARCH 模型時間序列預測

7.R語言基於ARMA-GARCH過程的VAR擬合和預測

8.matlab預測ARMA-GARCH 條件均值和方差模型

9.R語言對S&P500股票指數進行ARIMA + GARCH交易策略

相關文章
相關標籤/搜索