R語言Copula模型分析股票市場板塊相關性結構|附代碼數據

2023-11-07     tecdat拓端

原標題:R語言Copula模型分析股票市場板塊相關性結構|附代碼數據

原文連結:http://tecdat.cn/?p=25804

原文出處:拓端數據部落公眾號

最近我們被客戶要求撰寫關於Copula的研究報告,包括一些圖形和統計輸出。

這篇文章是關於 copulas 和重尾的。在全球金融危機之前,許多投資者是多元化的。

看看下面這張熟悉的圖:

黑線是近似正態的。紅線代表Cauchy分布,它是具有一個自由度的T分布的一個特殊情況。也許是因為Cauchy和t分布混在一起。我們總是可以計算出經驗方差。請看下圖。這是對1自由度的t分布(紅色的Cauchy分布)和5自由度的t分布(藍色)的模擬結果。

為了比較不同的尾部行為,我們有我們所謂的尾部指數。簡而言之,在幾乎任何分布中,某個閾值之後的觀測值(比如說最差的5%的情況下的觀測值)都是漸進式的帕累托分布。

其中x_m是截止點,α將決定尾巴的形狀。α也被稱為尾部指數。

現在大家都知道,金融收益呈現出厚尾。這使得保持投資組合為左尾事件做好準備變得更加重要,因為在那個區域,由於相關性的增加,你會同時受到所有資產的影響(正如金融危機所證明的那樣)。在這個討論中,copulas發揮了重要的作用。copulas的概念是相當巧妙的。copula這個詞起源於拉丁語,它的意思是捆綁。當我們有兩個(或更多)資產類別的收益,我們可以假設或模擬它們的分布。做完這些之後,我們可以把它們 "粘貼 "在一起,只對相關部分進行建模,而不考慮我們最初對它們各自分布的建模方式。怎麼做?

我們從英國統計學家 Ronald Fisher 開始,他在 1925 年證明了一個非常有用的性質,即任何連續隨機變量的累積分布函數都是均勻分布的。形式上,對於任何隨機變量 X,如果我們表示 作為 X 的累積分布,則 。請記住,當我們說 ,它僅意味著機率, 。這就是 [0,1] 的來源,因為它只是一個機率。從三種不同的分布進行模擬:指數、伽瑪和學生-t,變換它們並繪製直方圖:

par(mfrow=c(3,1)) # 分割螢幕

apply(tm, 2, hist,xlab="", col = "azue") # 繪製

您可以通過這種方式轉換任何連續分布。現在,將兩個變換後的隨機數表示為 和 . 我們可以將它們「綁定」(copula): . 其中, 是一些函數,並且因為原始變量是「不可見的」(當我們將其轉換為 Uniform 時消失了),所以我們現在只討論兩個變量之間的相關性。例如 可以是具有一些相關參數的二元正態分布。我不會在這裡寫出雙變量正態密度,但它只是一個密度,因此,它將說明在中心地帶觀察到兩個變量在一起的機率,和/或在尾部一起的機率。這是繞過原始變量的分布,只談相關結構的一種方式。

現在讓我們對金融和消費必需品之間的相關結構進行建模。從拉取數據開始:

da0 = (getSymbols(sym[1])

for (i in 1:l){

da0 = getSymbols

w <- dailyReturn

w0 <- cbind(w0,w1)

}

apply(rt0, 2, mean) # 定義平均數

apply(rt0, 2, var) # 和標準差

cor(et0) # 無條件的相關關係。

我們現在要做的是按照討論的方法對數據進行轉換(稱之為機率積分轉換),並將其繪製出來。同時,我們模擬兩個具有相同(量化-非條件)相關性的隨機常模,並比較這兩個數字。

desiy <- kde2d

contour

# 現在從兩個具有相同相關性進行模擬。

smnom <- rmvnorm

trnorim_rm <- appl

mdni_im <- kde2d

plot

contour

title

乍一看,這兩個數字看起來差不多。但更詳細的觀察發現,角落更快地收斂到(0,0)、(1,1)坐標。這也是由這些區域的深色等值線顏色表明的。請記住,模擬數據使用的是與真實數據相同的經驗相關性,所以我們在這裡討論的其實只是結構。

現在讓我們生成一個copula函數,我們可以用它來 "包裹 "或 "捆綁 "我們的轉換後的收益。我們定義了一個重尾(df=1)和一個輕尾(df=6)的copula。我們可以直觀地看到這個函數實際上是什麼樣子的。這樣做的方式與我們可視化正態密度的方式差不多,但現在因為它是一個雙變量函數,所以它是一個三維圖。

she <- 0.3

persp(colahevy)

接下來你可以看到通常的相關性度量是相同的,除了尾部指數,因為我們只討論結構,而不是大小。

tau(colight)

tau(coheavy)

rho(colight)

rho(copheavy)

tailIpulight)

tailIheavy)

上下尾不一定相同。這只是 t-copula 是對稱函數的一個特徵。在應用中,應該使用更真實的非對稱 copula。

現在我們定義邊緣,並估計 copula 參數。為簡單起見,我為收益定義了 Normal 邊緣分布,但 copula 仍然是 t-dist 且重尾:

# 用從數據中估計的參數來定義你的邊際。

copurmal <- mvdc

# 擬合copula。這個函數的默認值是隱藏警告,所以如果發生錯誤。

# 添加 "hideWarnings=FALSE",這樣它就會告訴你是否有什麼錯誤

coporm <- fitMvdc

該函數返回一個有那些可用的S4類。

copurm@mvc@cpla

coporm@estiat

[email protected]

[email protected]

print

summary

est <- coeffic # 我們自己的估計值

mycop <- mvdc

# 從擬合的copula進行模擬

simd <- rMvdc

plot

相關結構看起來還不錯--但你肯定可以看到正態邊緣是不夠的,有幾個黑點(真實數據)在紅色模擬簇之外。

順便提一下,現在我們也可以估計那些沒有預先指定形狀的copulas,比如正態或t,但它們本身就是估計。這屬於 "非參數copulas "這個更複雜的主題。

最受歡迎的見解

1.R語言基於ARMA-GARCH-VaR模型擬合和預測實證研究

2.r語言實現copula算法建模依賴性案例

3.R語言COPULAS和金融時間序列數據VaR分析

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

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

6.matlab使用Copula仿真優化市場風險數據分析

7.R語言實現向量自動回歸VAR模型

8.R語言隨機搜索變量選擇SSVS估計貝葉斯向量自回歸(BVAR)模型

9.R語言VAR模型的不同類型的脈衝響應分析

文章來源: https://twgreatdaily.com/274d59730e511ffe50d42061eaf8148e.html