拓端tecdat|R語(yǔ)言Copula函數(shù)股市相關(guān)性建模:模擬Random Walk(隨機(jī)游走)
原文鏈接:http://tecdat.cn/?p=19688?
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
在引入copula時(shí),大家普遍認(rèn)為copula很有趣,因?yàn)樗鼈冊(cè)试S分別對(duì)邊緣分布和相依結(jié)構(gòu)進(jìn)行建模。
copula建模邊緣和相依關(guān)系
給定一些邊緣分布函數(shù)和一個(gè)copula,那么我們可以生成一個(gè)多元分布函數(shù),其中的邊緣是前面指定的。
考慮一個(gè)二元對(duì)數(shù)正態(tài)分布
> library(mnormt)
> set.seed(1)
> Z=exp(rmnorm(25,MU,SIGMA))
我們可以從邊緣分布開始。
meanlog ? ? ?sdlog
1.168 ? ? ? ? ?0.930
(0.186 ) ? ? ? (0.131 )
meanlog ? ? ?sdlog
2.218 ? ? ? ?1.168
(0.233 ) ? ? (0.165 )
基于這些邊緣分布,并考慮從該偽隨機(jī)樣本獲得的copula參數(shù)的最大似然估計(jì)值,從數(shù)值上講,我們得到
> library(copula)
> Copula() estimation based on 'maximum likelihood'
and a sample of size 25.
Estimate Std. Error z value Pr(>|z|)
rho.1 ?0.86530 ? ?0.03799 ? 22.77
但是,由于相依關(guān)系是邊緣分布的函數(shù),因此我們沒(méi)有對(duì)相依關(guān)系進(jìn)行單獨(dú)處理。如果考慮全局優(yōu)化問(wèn)題,則結(jié)果會(huì)有所不同。可以得出密度
> optim(par=c(0,0,1,1,0),fn=LogLik)$par
[1] 1.165 ?2.215 0.923 ?1.161 ?0.864
差別不大,但估計(jì)量并不相同。從統(tǒng)計(jì)的角度來(lái)看,我們幾乎無(wú)法分別處理邊緣和相依結(jié)構(gòu)。我們應(yīng)該記住的另一點(diǎn)是,邊際分布可能會(huì)錯(cuò)誤指定。例如,如果我們假設(shè)指數(shù)分布,
fitdistr(Z[,1],"exponential")
rate
0.222
(0.044 )
fitdistr(Z[,2],"exponential"
rate
0.065
(0.013 )
高斯copula的參數(shù)估計(jì)
Copula() estimation based on 'maximum likelihood'
and a sample of size 25.
Estimate Std. Error z value Pr(>|z|)
rho.1 ?0.87421 ? ?0.03617 ? 24.17 ? <2e-16 ***
---
Signif. codes: ?0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
The maximized loglikelihood is ?15.4
Optimization converged
?
由于我們錯(cuò)誤地指定了邊緣分布,因此我們無(wú)法獲得統(tǒng)一的邊緣。如果我們使用上述代碼生成大小為500的樣本,
barplot(counts, axes=FALSE,col="light blue"

如果邊緣分布被很好地設(shè)定時(shí),我們可以清楚地看到相依結(jié)構(gòu)依賴于邊緣分布,

copula模擬股市中相關(guān)隨機(jī)游走
接下來(lái)我們用copula函數(shù)模擬股市中的相關(guān)隨機(jī)游走
#*****************************************************************
# 載入歷史數(shù)據(jù)
#******************************************************************
load.packages('quantmod')
data$YHOO = getSymbol.intraday.google('YHOO', 'NASDAQ', 60, '15d')
data$FB = getSymbol.intraday.google('FB', 'NASDAQ', 60, '15d')
bt.prep(data, align='remove.na')
#*****************************************************************
# 生成模擬
#******************************************************************
rets = diff(log(prices))
# 繪制價(jià)格
matplot(exp(apply(rets,2,cumsum)), type='l')

# 可視化分布的輔助函數(shù)
# 檢查Copula擬合的Helper函數(shù)
# 模擬圖與實(shí)際圖
plot(rets[,1], rets[,2], xlab=labs[1], ylab=labs[2], col='blue', las=1)
points(fit.sim[,1], fit.sim[,2], col='red')
# 比較模擬和實(shí)際的統(tǒng)計(jì)數(shù)據(jù)
temp = matrix(0,nr=5,nc=2)
print(round(100*temp,2))
# 檢查收益率是否來(lái)自相同的分布
for (i in 1:2) {
print(labs[i])
print(ks.test(rets[,i], fit.sim[i]))
# 繪制模擬價(jià)格路徑
matplot(exp(apply(fit.sim,2,cumsum)), type='l', main='Simulated Price path')
# 擬合Copula
load.packages('copula')
# 通過(guò)組合擬合邊緣和擬合copula創(chuàng)建自定義分布
margins=c("norm","norm")
apply(rets,2,function(x) list(mean=mean(x), sd=sd(x)))
# 從擬合分布模擬
rMvdc(4800, fit)

Actual Simulated
Correlation 57.13 57.38
Mean FB -0.31 -0.47
Mean YHOO -0.40 -0.17
StDev FB 1.24 1.25
StDev YHOO 1.23 1.23
FB
Two-sample Kolmogorov-Smirnov test
data: ?rets[, i] and fit.sim[i]
D = 0.9404, p-value = 0.3395
alternative hypothesis: two-sided
HO
Two-sample Kolmogorov-Smirnov test
data: ?rets[, i] and fit.sim[i]
D = 0.8792, p-value = 0.4222
alternative hypothesis: two-sided

visualize.rets(fit.sim)

# qnorm(runif(10^8)) 和 rnorm(10^8) 是等價(jià)的
uniform.sim = rCopula(4800, gumbelCopula(gumbel@estimate, dim=n))

Actual Simulated
Correlation 57.13 57.14
Mean FB -0.31 -0.22
Mean YHOO -0.40 -0.56
StDev FB 1.24 1.24
StDev YHOO 1.23 1.21
FB
Two-sample Kolmogorov-Smirnov test
data: ?rets[, i] and fit.sim[i]
D = 0.7791, p-value = 0.5787
alternative hypothesis: two-sided
HO
Two-sample Kolmogorov-Smirnov test
data: ?rets[, i] and fit.sim[i]
D = 0.795, p-value = 0.5525
alternative hypothesis: two-sided


vis(rets)

標(biāo)準(zhǔn)偏差相對(duì)于均值而言非常大,接近于零;因此,在某些情況下,我們很有可能獲得不穩(wěn)定的結(jié)果。

最受歡迎的見(jiàn)解
1.R語(yǔ)言基于ARMA-GARCH-VaR模型擬合和預(yù)測(cè)實(shí)證研究
2.r語(yǔ)言實(shí)現(xiàn)copula算法建模依賴性案例
3.R語(yǔ)言COPULAS和金融時(shí)間序列數(shù)據(jù)VaR分析
4.R語(yǔ)言多元COPULA GARCH 模型時(shí)間序列預(yù)測(cè)
5.GARCH(1,1),MA以及歷史模擬法的VaR比較
6.matlab使用Copula仿真優(yōu)化市場(chǎng)風(fēng)險(xiǎn)數(shù)據(jù)分析
7.R語(yǔ)言實(shí)現(xiàn)向量自動(dòng)回歸VAR模型
8.R語(yǔ)言隨機(jī)搜索變量選擇SSVS估計(jì)貝葉斯向量自回歸(BVAR)模型
9.R語(yǔ)言VAR模型的不同類型的脈沖響應(yīng)分析