Copula|拓端tecdat|R语言Copula函数股市相关性建模:模拟Random Walk(随机游走)
原文链接:http://tecdat.cn/?p=19688
在引入copula时 , 大家普遍认为copula很有趣 , 因为它们允许分别对边缘分布和相依结构进行建模 。
copula建模边缘和相依关系 给定一些边缘分布函数和一个copula , 那么我们可以生成一个多元分布函数 , 其中的边缘是前面指定的 。
考虑一个二元对数正态分布
- > 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 )
- > 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
- > optim(par=c(0,0,1,1,0),fn=LogLik)$par
- [1] 1.165 2.215 0.923 1.161 0.864
- fitdistr(Z[,1],"exponential")
- rate
- 0.222
- (0.044 )
- fitdistr(Z[,2],"exponential"
- rate
- 0.065
- (0.013 )
- 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
- barplot(counts, axes=FALSE,col="light blue"
文章图片
如果边缘分布被很好地设定时 , 我们可以清楚地看到相依结构依赖于边缘分布 ,
文章图片
copula模拟股市中相关随机游走 接下来我们用copula函数模拟股市中的相关随机游走
- #*****************************************************************
- # 载入历史数据
- #******************************************************************
- 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))
- # 绘制价格
- matplot(exp(apply(rets,2,cumsum)), type='l')
文章图片
- # 可视化分布的辅助函数
- # 检查Copula拟合的Helper函数
- # 模拟图与实际图
- plot(rets[,1], rets[,2], xlab=labs[1], ylab=labs[2], col='blue', las=1)
- points(fit.sim[,1], fit.sim[,2], col='red')
- # 比较模拟和实际的统计数据
- temp = matrix(0,nr=5,nc=2)
- print(round(100*temp,2))
- # 检查收益率是否来自相同的分布
- for (i in 1:2) {
- print(labs[i])
- print(ks.test(rets[,i], fit.sim[i]))
- # 绘制模拟价格路径
- matplot(exp(apply(fit.sim,2,cumsum)), type='l', main='Simulated Price path')
- # 拟合Copula
- load.packages('copula')
- # 通过组合拟合边缘和拟合copula创建自定义分布
- 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
- Two-sample Kolmogorov-Smirnov test
- data: rets[, i] and fit.sim[i]
- D = 0.9404, p-value = https://www.sohu.com/a/0.3395
- alternative hypothesis: two-sided
- Two-sample Kolmogorov-Smirnov test
- data: rets[, i] and fit.sim[i]
- D = 0.8792, p-value = https://www.sohu.com/a/0.4222
- alternative hypothesis: two-sided
文章图片
visualize.rets(fit.sim)
文章图片
- # qnorm(runif(10^8)) 和 rnorm(10^8) 是等价的
- 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
- Two-sample Kolmogorov-Smirnov test
- data: rets[, i] and fit.sim[i]
- D = 0.7791, p-value = https://www.sohu.com/a/0.5787
- alternative hypothesis: two-sided
- Two-sample Kolmogorov-Smirnov test
- data: rets[, i] and fit.sim[i]
- D = 0.795, p-value = https://www.sohu.com/a/0.5525
- alternative hypothesis: two-sided
文章图片
文章图片
vis(rets)
文章图片
标准偏差相对于均值而言非常大 , 接近于零;因此 , 在某些情况下 , 我们很有可能获得不稳定的结果 。
文章图片
最受欢迎的见解
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)模型
【Copula|拓端tecdat|R语言Copula函数股市相关性建模:模拟Random Walk(随机游走)】9.R语言VAR模型的不同类型的脉冲响应分析
推荐阅读
- 广告|拓端tecdat|移动广告中基于点击率的数据策略
- XTrain|拓端tecdat|matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
- 分析|拓端tecdat|R语言文本挖掘NASA数据网络分析,tf-idf和主题建模
- 模型|拓端tecdat|R语言多元逐步回归模型分析房价和葡萄酒价格:选择最合适预测变量
- 偏差|拓端tecdat|在Python和R中使用交叉验证方法提高模型性能
- 网络|拓端tecdat|使用Python中Keras的LSTM递归神经网络进行时间序列预测
- 分析|拓端tecdat|stata马尔可夫Markov区制转移模型分析基金利率
- 期望值|拓端tecdat|R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计
- 模型|拓端tecdat|R语言RStan贝叶斯:重复试验模型和种群竞争模型Lotka Volterra
- 交易|拓端tecdat|R语言量化交易RSI策略:使用支持向量机SVM