最近我们被客户要求撰写关于Copula的研究报告,包括一些图形和统计输出。

在引入copula时,大家普遍认为copula很有趣,因为它们允许分别对边缘分布和相依结构进行建模。

copula建模边缘和相依关系

给定一些边缘分布函数和一个copula,那么我们可以生成一个多元分布函数,其中的边缘是前面指定的。

相关视频:Copula算法原理和R语言股市收益率相依性可视化分析

Copula算法原理和R语言股市收益率相依性可视化分析

,时长16:34

考虑一个二元对数正态分布


> 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 )

基于这些边缘分布,并考虑从该伪随机样本获得的copula参数的最大似然估计值,从数值上讲,我们得到


> 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的参数估计


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
 

由于我们错误地指定了边缘分布,因此我们无法获得统一的边缘。如果我们使用上述代码生成大小为500的样本,


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')# 拟合Copulaload.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

FB

   Two-sample Kolmogorov-Smirnov testdata:  rets[, i] and fit.sim[i]
D = 0.9404, p-value = 0.3395
alternative hypothesis: two-sided

HO

   Two-sample Kolmogorov-Smirnov testdata:  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) 是等价的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 testdata:  rets[, i] and fit.sim[i]
D = 0.7791, p-value = 0.5787
alternative hypothesis: two-sided

HO

   Two-sample Kolmogorov-Smirnov testdata:  rets[, i] and fit.sim[i]
D = 0.795, p-value = 0.5525
alternative hypothesis: two-sided

 vis(rets)

标准偏差相对于均值而言非常大,接近于零;因此,在某些情况下,我们很有可能获得不稳定的结果。


R语言Copula函数股市相关性建模:模拟Random Walk(随机游走)相关推荐

  1. 第2章【思考与练习3】随机游走轨迹模拟。将随机游走的步数增加到100步,计算物体最终与原点的距离。重复多次随机游走过程,观察物体与原点距离的变化趋势。

    P33思考练习题3 1.将随机游走的步数增加到100步,计算物体最终与原点的距离. #第1题 #模拟每步生成方向 import numpy as np steps = 100 rndwlk = np. ...

  2. 使用 NumPy 来模拟随机游走(Random Walk)

    考虑一种最简单的情形,即从位置 0 开始,每次前进一步(step=1)或者后退一步(step=-1),前进与后退的概率相同. 不使用 NumPy,直接使用 Python 内置的 random 函数: ...

  3. python三维随机游走轨迹模拟_用Python模拟随机游走(Random walks)

    什么是随机游走? 随机游走(random walk)也称随机漫步,随机行走等,是以随机的体例采纳连续步调的过程.然后,可以将其他条件应用于此描述,以为您的特定用例建立一个随机遍历.粒子的布朗运动,股票 ...

  4. R语言用GARCH模型波动率建模和预测、回测风险价值 (VaR)分析股市收益率时间序列...

    原文链接:http://tecdat.cn/?p=26897 风险价值 (VaR) 是金融风险管理中使用最广泛的市场风险度量,也被投资组合经理等从业者用来解释未来市场风险(点击文末"阅读原文 ...

  5. R语言与函数估计学习笔记(函数模型的参数估计)

    R语言与函数估计学习笔记 毫无疑问,函数估计是一个比参数估计要复杂得多的问题,当然也是一个有趣的多的问题.这个问题在模型未知的实验设计的建模中十分的常见,也是我正在学习的内容的一部分. 关于函数估计我 ...

  6. R语言 自定义函数之趣味程序--老虎机

    ****R语言 自定义函数之趣味程序--老虎机**** 自定义函数 自定义规则 自定义格式 案例:老虎机 老虎机符号准备 老虎机结果分类 老虎机得分计算 开始老虎机试玩 获奖感言 自定义函数 R语言作 ...

  7. R语言str_trim函数去除字符串中头部和尾部的空格

    R语言str_trim函数去除字符串中头部和尾部的空格 目录 R语言str_trim函数去除字符串中头部和尾部的空格 #导入包和库 #仿

  8. R语言sqrt函数为数值开平方根实战

    R语言sqrt函数为数值开平方根实战 目录 R语言sqrt函数为数值开平方根实战 #基本语法 #sqrt函数开平方根

  9. R语言数学函数:abs绝对值、sqrt平方根、ceiling向上近似整数、floor向下近似整数、trunc去除小数部分、round近似到指定小数位、signif近似到有效数字、三角函数、指数、对数

    R语言数学函数:abs绝对值.sqrt平方根.ceiling向上近似整数.floor向下近似整数.trunc去除小数部分.round近似到指定小数位.signif近似到有效数字.三角函数.指数.对数 ...

最新文章

  1. Asp.Net开发架构设计(二)
  2. shadow ssdt学习笔记
  3. 为什么你们的Note.js 里面没有sap.ui.core.Control.extend()这样的代码,但是runtime有自动生成有
  4. python3接口自动化测试_【python3+request】python3+requests接口自动化测试框架实例详解教程...
  5. maven跳过单元测试-maven.test.skip和skipTests的区别
  6. 作业6--团队项目之需求
  7. 微信“拍一拍”,竟然可以使用Python实现,你get到了吗?
  8. 关于JSTL的简单说明
  9. 语音识别行业成长红利期已过,行业寡头显现,小公司生存状况堪忧
  10. web安全day20:今天讲清楚漏洞和木马的区别,最后一个实验演示通过445端口控制服务器
  11. java rome,ROME - RSS聚合类库 - 组件类库 - JAVA开源项目 - 开源吧
  12. A题 血管机器人的订购与生物学习#2022年五一数学建模
  13. mysql中时间不早于今天_MySQL不正确日期时间值早于1980年的日期
  14. 修改Windows系统管理员Administrator的名称
  15. python word 英语音标_(完整word版)英语音标大全
  16. 大O、小o、大Ω、小ω、大Θ符号在算法中是什么意思?
  17. android显示视频预览
  18. Veritas Flex 5150 实例管理-NetBackup实例创建
  19. 我的青春恋爱物语果然有问题。完-OP分析
  20. Centos7防火墙与IPTABLES详解

热门文章

  1. 朗坤环境递交注册:拟募资11亿 陈建湘家族色彩浓厚
  2. cocos2d 更换皮肤
  3. 2.特定领域知识图谱融合方案:文本匹配算法之预训练Simbert、ERNIE-Gram单塔模型等诸多模型【三】
  4. 安卓系统双屏异显_Android 双屏异显
  5. BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集
  6. OSError: pydot failed to call GraphViz.Please install GraphViz (https://www.graphviz.org/) and ensur
  7. 如何完全卸载VS2010(亲自体验过)
  8. linux ifconfig 多地址,ifconfig查看多了几个IP地址
  9. 虚拟机里面的Ubuntu系统如何调用主机的显卡
  10. 如何将MATLAB程序插入到.net(C#)中(流程以及常见错误总结)