拓端tecdat|R語言Copula模型分析股票市場板塊相關性結(jié)構
原文鏈接:http://tecdat.cn/?p=25804?
原文出處:拓端數(shù)據(jù)部落公眾號
?
這篇文章是關于 copulas 和重尾的。在全球金融危機之前,許多投資者是多元化的。
看看下面這張熟悉的圖:
?
黑線是近似正態(tài)的。紅線代表Cauchy分布,它是具有一個自由度的T分布的一個特殊情況。也許是因為Cauchy和t分布混在一起。我們總是可以計算出經(jīng)驗方差。請看下圖。這是對1自由度的t分布(紅色的Cauchy分布)和5自由度的t分布(藍色)的模擬結(jié)果。
為了比較不同的尾部行為,我們有我們所謂的尾部指數(shù)。簡而言之,在幾乎任何分布中,某個閾值之后的觀測值(比如說最差的5%的情況下的觀測值)都是漸進式的帕累托分布。
??
其中x_m是截止點,α將決定尾巴的形狀。α也被稱為尾部指數(shù)。
現(xiàn)在大家都知道,金融收益呈現(xiàn)出厚尾。這使得保持投資組合為左尾事件做好準備變得更加重要,因為在那個區(qū)域,由于相關性的增加,你會同時受到所有資產(chǎn)的影響(正如金融危機所證明的那樣)。在這個討論中,copulas發(fā)揮了重要的作用。copulas的概念是相當巧妙的。copula這個詞起源于拉丁語,它的意思是捆綁。當我們有兩個(或更多)資產(chǎn)類別的收益,我們可以假設或模擬它們的分布。做完這些之后,我們可以把它們 "粘貼 "在一起,只對相關部分進行建模,而不考慮我們最初對它們各自分布的建模方式。怎么做?
?
我們從英國統(tǒng)計學家 Ronald Fisher 開始,他在 1925 年證明了一個非常有用的性質(zhì),即任何連續(xù)隨機變量的累積分布函數(shù)都是均勻分布的。形式上,對于任何隨機變量 X,如果我們表示?
?作為 X 的累積分布,則?
。請記住,當我們說?
?,它僅意味著概率,?
。這就是 [0,1] 的來源,因為它只是一個概率。從三種不同的分布進行模擬:指數(shù)、伽瑪和學生-t,變換它們并繪制直方圖:
par(mfrow=c(3,1)) # 分割屏幕
apply(tm, 2, hist,xlab="", col = "azue") # 繪制
您可以通過這種方式轉(zhuǎn)換任何連續(xù)分布?,F(xiàn)在,將兩個變換后的隨機數(shù)表示為?
?和?
. 我們可以將它們“綁定”(copula):?
. 其中,?
?是一些函數(shù),并且因為原始變量是“不可見的”(當我們將其轉(zhuǎn)換為 Uniform 時消失了),所以我們現(xiàn)在只討論兩個變量之間的相關性。例如?
?可以是具有一些相關參數(shù)的二元正態(tài)分布。我不會在這里寫出雙變量正態(tài)密度,但它只是一個密度,因此,它將說明在中心地帶觀察到兩個變量在一起的概率,和/或在尾部一起的概率。這是繞過原始變量的分布,只談相關結(jié)構的一種方式。
現(xiàn)在讓我們對金融和消費必需品之間的相關結(jié)構進行建模。從拉取數(shù)據(jù)開始:
da0 = (getSymbols(sym[1])
for (i in 1:l){
da0 = getSymbols
w <- dailyReturn
w0 <- cbind(w0,w1)
}
apply(rt0, 2, mean) # 定義平均數(shù)
apply(rt0, 2, var) # 和標準差
cor(et0) # 無條件的相關關系。
我們現(xiàn)在要做的是按照討論的方法對數(shù)據(jù)進行轉(zhuǎn)換(稱之為概率積分轉(zhuǎn)換),并將其繪制出來。同時,我們模擬兩個具有相同(量化-非條件)相關性的隨機常模,并比較這兩個數(shù)字。?
desiy <- kde2d
contour
# 現(xiàn)在從兩個具有相同相關性進行模擬。
smnom <- rmvnorm
trnorim_rm <- appl
mdni_im <- kde2d
plot
contour
title
?
乍一看,這兩個數(shù)字看起來差不多。但更詳細的觀察發(fā)現(xiàn),角落更快地收斂到(0,0)、(1,1)坐標。這也是由這些區(qū)域的深色等值線顏色表明的。請記住,模擬數(shù)據(jù)使用的是與真實數(shù)據(jù)相同的經(jīng)驗相關性,所以我們在這里討論的其實只是結(jié)構。
現(xiàn)在讓我們生成一個copula函數(shù)
,我們可以用它來 "包裹 "或 "捆綁 "我們的轉(zhuǎn)換后的收益。我們定義了一個重尾(df=1)和一個輕尾(df=6)的copula。我們可以直觀地看到這個函數(shù)實際上是什么樣子的。這樣做的方式與我們可視化正態(tài)密度的方式差不多,但現(xiàn)在因為它是一個雙變量函數(shù),所以它是一個三維圖。
?
she <- 0.3
persp(colahevy)
接下來你可以看到通常的相關性度量是相同的,除了尾部指數(shù),因為我們只討論結(jié)構,而不是大小。
tau(colight)
tau(coheavy)
rho(colight)
?
rho(copheavy)
tailIpulight)
tailIheavy)
上下尾不一定相同。這只是 t-copula 是對稱函數(shù)的一個特征。在應用中,應該使用更真實的非對稱 copula。
現(xiàn)在我們定義邊緣,并估計 copula 參數(shù)。為簡單起見,我為收益定義了 Normal 邊緣分布,但 copula 仍然是 t-dist 且重尾:
# 用從數(shù)據(jù)中估計的參數(shù)來定義你的邊際。
copurmal <- mvdc
# 擬合copula。這個函數(shù)的默認值是隱藏警告,所以如果發(fā)生錯誤。
# 添加 "hideWarnings=FALSE",這樣它就會告訴你是否有什么錯誤
coporm <- fitMvdc
該函數(shù)返回一個有那些可用的S4類。
copurm@mvc@cpla
coporm@estiat
coporm@fittng.sas
coporm@va.st
print
summary
est <- coeffic # 我們自己的估計值
mycop <- mvdc
# 從擬合的copula進行模擬
simd <- rMvdc
plot
相關結(jié)構看起來還不錯--但你肯定可以看到正態(tài)邊緣是不夠的,有幾個黑點(真實數(shù)據(jù))在紅色模擬簇之外。
順便提一下,現(xiàn)在我們也可以估計那些沒有預先指定形狀的copulas,比如正態(tài)或t,但它們本身就是估計。這屬于 "非參數(shù)copulas "這個更復雜的主題。
最受歡迎的見解
1.R語言基于ARMA-GARCH-VaR模型擬合和預測實證研究
2.r語言實現(xiàn)copula算法建模依賴性案例
3.R語言COPULAS和金融時間序列數(shù)據(jù)VaR分析
4.R語言多元COPULA GARCH 模型時間序列預測
5.GARCH(1,1),MA以及歷史模擬法的VaR比較
6.matlab使用Copula仿真優(yōu)化市場風險數(shù)據(jù)分析
7.R語言實現(xiàn)向量自動回歸VAR模型
8.R語言隨機搜索變量選擇SSVS估計貝葉斯向量自回歸(BVAR)模型
9.R語言VAR模型的不同類型的脈沖響應分析