python实现var模型_copula函数及其Var计算的Python实现

Copula函数思想

Copula函数能够把随机变量之间的相关关系与变量的边际分布分开进行研究,这种思想方法在多元统计分析中非常重要。直观来看,可以将任意维的联合分布H(x1,...,xn)=P(X1<=x1,...,Xn<=xn)分成两步来处理。第一步是,对所有的单随机变量Xi通过累积分布函数Fi,我们可以得到Ui=Fi(Xi),这是一个均匀随机变量;第二步是,随机变量间的关联可以通过直接连接这些均匀变量的n元Copula函数C(u1,...,un)来描述。

Copula函数是定义域为[0,1]均匀分布的多维联合分布函数,其核心概念是以Copula函数将多个随机变量的边缘分布耦合起来。Copula函数的基本思想就是,通过把边缘变量转化为均匀分布变量而不需要考察很多不同的边缘分布以简化问题,然后再把相关性定义为一个在均匀分布上的联合分布。

Copula函数种类

常用的Copula函数有高斯Copula函数,Gumbel Copula函数, Clayton Copula函数, Frank Copula函数。

在风险管理中,我们常常用Copula函数来估计VAR,其过程如下:

选择Copula函数,估计参数(详情可参照Copula理论及其在金融分析中的应用)

第一步:分别选择能够较好地描述资产收益边缘分布Fi和相关结构的Copula函数;

第二步:根据所有的边缘分布函数F和Copula函数,最大化对数似然函数估计边缘分布函数Fi和Copula函数的相应参数;

蒙特卡洛模拟估计VAR

第一步:生成两个独立的服从(0,1)均匀分布的随机数u和w,u即为要模拟的第一个伪随机数,令Cu(v)=w,通过Cu(v)的逆函数可以计算得到另一个伪随机数v=Cu^{-1}(w),从而得到符合Copula函数的随机数对(u, v);

第二步:通过随机数(u, v)和边缘分布函数累计概率函数的逆函数得到各资产收益率的模拟序列;

第三步:根据各资产权重得到组合收益序列,取q分位数作为VAR的估计值。

Copula函数计算Var的Python实现

在这里我们使用Python的pycopula包来实现

importnumpy as npimportpandas as pdimportmatplotlib.pyplot as pltfrom matplotlib importcmfrom pycopula.copula importArchimedeanCopulafrom pycopula.visualization importpdf_2d, cdf_2dfrom scipy importstats#读取facebook、apple公司14-19年收盘数据,计算日收益率

data_fb = pd.read_csv('FB.csv', header=0, index_col=0, engine='python')

data_apl= pd.read_csv('AAPL.csv', header=0, index_col=0, engine='python')

data= np.array([data_fb['close'].pct_change().dropna(),

data_apl['close'].pct_change().dropna()]).T#使用t分布拟合其分布

t =stats.t

dt1=t.fit(data[:, 0])

dt2= t.fit(data[:, 1])

分布如下图所示

#拟合Copula函数clayton,由于全部拟合边缘t分布参数不理想,这里直接采用t分布之前拟合的自由度参数,只优化loc和scale以及clayton函数的theta

paramX1 = {'df': 3.34, 'loc': None, 'scale': None}

paramX2= {'df': 3.32, 'loc': None, 'scale': None}

hyperParams=[paramX1, paramX2]

param= clayton.fit(data, method='mle', marginals=[t, t],

hyper_param=hyperParams,

hyper_param_bounds=[[-1, 1], [0, 1], [-1, 1], [0, 1]])#蒙特卡洛模拟#首先生成服从[0, 1]均匀分布的两组随机数(u, w)

u = np.random.uniform(0, 1, size=10000)

w= np.random.uniform(0, 1, size=10000)#w = C_u(v), 其中C_u(v)为C(u, v)对u求偏导结果,#v = C_u^{-1}(w)通过反函数法得到服从C(u, v)的(u, v)#C(u, v) = (u^{-theta} + v^{-theta} - 1)^{-1/theta}#C_u(v) = (u^{-theta} + v^{-theta} - 1)^{-(1+theta)/theta} * u^{-theta-1}#C_u^{-1}(w) = [(w^{-theta/(1+theta)}-1)*u^{-theta}+1]^{-theta}

theta =param[0]

v= ((w**(-theta/(1+theta))-1)*u**(-theta)+1)**(-theta)#利用u,v对应边缘分布函数的累计概率函数的逆函数

x = t.ppf(u, df=param[1][0]['df'], loc=param[1][0]['loc'], scale=param[1][0]['scale'])

y= t.ppf(v, df=param[1][1]['df'], loc=param[1][1]['loc'], scale=param[1][1]['scale'])

# 假设两个公司资金投资权重分别为0.3和0.7,得到对应1分位、5分位、10分位的损失

z= 0.3 * x + 0.7 * y

p = np.percentile(z, (1, 5, 10), interpolation='midpoint')

#最后查看拟合得到的Copula函数的CDF和PDF分布图

u, v, C =cdf_2d(clayton)

u, v, c=pdf_2d(clayton)

fig=plt.figure()

ax= fig.add_subplot(121, projection='3d', title="Clayton copula CDF")

X, Y=np.meshgrid(u, v)

ax.set_zlim(0,1)

ax.plot_surface(X, Y, C, cmap=cm.Blues)

ax.plot_wireframe(X, Y, C, color='black', alpha=0.3)

ax= fig.add_subplot(122, projection='3d', title="Clayton copula PDF")

ax.set_zlim(0,5)

ax.plot_surface(X, Y, c, cmap=cm.Blues)

ax.plot_wireframe(X, Y, c, color='black', alpha=0.3)

plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css鼠标移入线条延中心伸长,css动画效果:鼠标移上去底部线条从中间往两边延伸 - 子成君-分享出去,快乐加倍!-旧版已停更...

本站已不再更新,最新资源请前往zcjun.com获取!css&#xff1a;.top-nav a:after {content: ;position: absolute;z-index: 2;bottom: 0;left: 50%;display: block;width: 165px;height: 1px;transform: translate(-50%);}.top-nav a:hover:after {height: 2px;animation: ad_w…

Spring,Reactor和ElasticSearch:从回调到React流

Spring 5&#xff08;以及Boot 2&#xff0c;将在数周内到货&#xff09;是一次革命。 不是“ XML上的注释 ”或“ Java上的注释类 ”的革命。 这是一个真正的革命性框架&#xff0c;可以编写全新的应用程序类别。 近年来&#xff0c;我对此框架感到有些恐惧。 “ Spring Cloud…

关于压缩工具 7z(7-zip) 的选项 -so(从标准输出流写入数据)的解读

文章目录一、选项介绍二、选项示例&#xff08;一&#xff09;解压缩 archive.gz 输出流并将该输出流写入到 Doc.txt 文件&#xff08;二&#xff09;压缩 Doc.txt 输出流并将该输出流写入到 archive.gz 压缩档案一、选项介绍 选项 -so 使 7-Zip 从 stdout&#xff08;标准输出…

python删除重复文字_python如何删除文件中重复的字段

本文实例为大家分享了python如何删除文件中重复字段的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下原文件内容放在list中&#xff0c;新文件内容按行查找&#xff0c;如果没有出现在list中则写入第三个文件中。import csvfiletxt1 E:/gg/log/log1.txtfilecsv1 E:…

css 深度选择器 ,CSS的coped私有作用域和深度选择器

大家都知道当 编译前&#xff1a;.example {color: red;}编译后&#xff1a;.example[data-v-f3f3eg9] {color: red;}看完你肯定就会明白了&#xff0c;其实是在你写的组件的样式&#xff0c;添加了一个属性而已&#xff0c;这样就实现了所谓的私有作用域。但是也会有弊端&…

关于压缩工具 7z(7-zip) 的选项 -u(更新压缩档案中的文件)的解读

文章目录一、选项介绍&#xff08;一&#xff09;参量说明二、示例一、选项介绍 更新选项 -u 指定压缩档案中文件的更新及创建的方式。可以和此选项结合使用的命令&#xff1a;a (添加)&#xff0c; d (删除)&#xff0c; u (更新) 。 语法格式&#xff1a;-u[-][action_set]…

营销自动化权威指南_免费电子书:自动化根本原因分析的完整指南

营销自动化权威指南自动化根本原因分析入门指南。 我们在OverOps过夜&#xff0c;梦想着拥有一个自动化的世界。 看起来似乎有些怪异&#xff0c;但是您能想象您和您的团队会比那些不眠之夜和无休止的日子在日志文件中筛选以找出问题出在哪里的快乐多了吗&#xff1f; 这些乏…

光立方原理讲解_90%人不理解什么是防眩光射灯 防昡晕 防炫光,。怎么选项led防眩灯...

关于LED射灯“防眩光(防炫光)”实在想和各位朋友讲解一下防眩光原理 &#xff0c;因为我们碰到90%以上装修朋友&#xff0c;总是把眩光理解为简单的不刺眼的光。我可以负责的告诉大家 &#xff0c;市面上没有不刺眼的射灯&#xff0c;不管是LED芯片直接射出来的光&#xff0c;还…

打印机设置虚拟服务器,虚拟机打印机服务器设置

虚拟机打印机服务器设置 内容精选换一换迁移前&#xff0c;您需要设置目的端服务器。该目的端用来接收源端的数据&#xff0c;同时您也可以使用该目的端进行迁移测试和启动目的端。只有“迁移阶段”为“已就绪”时才可设置目的端。或单击“操作”列的“更多 > 设置目的端”&…

关于压缩工具 7z(7-zip) 的选项 -w(设置工作目录)的解读

文章目录一、选项介绍二、语法格式三、选项示例一、选项介绍 选项 -w 为文件压缩设置临时的工作目录。可以和此选项结合使用的命令&#xff1a;a (添加)&#xff0c; d (删除)&#xff0c; u (更新) 。 默认情况下&#xff0c;7-Zip 新建一个压缩档案时&#xff0c;会临时在当…

nginx fastcgi python_Nginx + webpy 和FastCGI搭建webpy环境

web.py 是一个轻量级Python web框架&#xff0c;它简单而且功能大。web.py是一个开源项目。1、所需要的软件&#xff1a;Nginx nginx-1.4.7.tar.gz (需要包含fastcgi和rewrite模块)。Webpy 0.32Spawn-fcgi 1.6.2Flup注意&#xff1a;Flup是最常见的忘记装的软件&#xff0c;需要…

datastore_使用Spring Session和JDBC DataStore进行会话管理

datastore在Web应用程序中&#xff0c;用户会话管理对于管理用户状态至关重要。 在本文中&#xff0c;我们将学习在集群环境中管理用户会话所采用的方法&#xff0c;以及如何使用Spring Session以更简单和可扩展的方式实现该方法。 通常在生产环境中&#xff0c;我们将有多个服…

关于压缩工具 7z(7-zip) 的选项 -x(排除文件)的解读

文章目录一、选项介绍二、选项语法三、选项示例一、选项介绍 选项 -x 用来指定某一文件或某一类文件从操作中排除&#xff0c;此选项可同时排除多个类型。可以和此选项结合使用的命令&#xff1a;a (添加)&#xff0c; d (删除)&#xff0c; e (释放)&#xff0c; l (列表)&am…

华为服务器芯片总在pc,服务器芯片 华为

弹性云服务器 ECS弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器&#xff0c;帮助用户打造可靠、安全、灵活、高效的应用环境&#xff0c;确保服务持久稳定运行&#xff0c;提升运维效率三年低至5折&#xff0c;多种配置可选了解详情Linux云服…

python figure函数 gui_python 在一个GUI内创建了2个figure,为什么只能显示第二个图?...

建议你把代码格式化一下&#xff0c;编辑框上有代码块选项&#xff0c;选中代码再点击如下图标就可以格式化。说说这段代码的问题。因为tk我没怎么用过&#xff0c;说明如果有错&#xff0c;帮忙指正。def figure(self):f1Figure((4,3))self.f11f1.add_subplot(111)self.canvas…

java 哈希算法_选择Java密码算法第1部分-哈希

java 哈希算法抽象 这是涵盖Java加密算法的三部分博客系列文章的第1部分。 该系列涵盖如何实现以下功能&#xff1a; 使用SHA–512散列 使用AES–256的单密钥对称加密 使用RSA–4096的公钥/私钥非对称加密 第一篇文章详细介绍了如何实现SHA–512哈希。 让我们开始吧。 免责…

在 Linux 下打包命令 tar 和压缩命令 7z 的配合使用示例

文章目录一、压缩命令&#xff08;结合 tar 命令&#xff09;二、解压命令&#xff08;结合 tar 命令&#xff09;一、压缩命令&#xff08;结合 tar 命令&#xff09; tar cf – /home/test | 7z a -si test.tar.7z上面命令将 /home/test 文件夹压缩为 test.tar.7z 文件。实际…

上传书籍进度信息到服务器...,使用HttpWebRequest实现大文件上传资料.pdf

Twilight Software Development Studio © 2011使用HttpWebRequest 实现大文件上传Author:xuzhihongCreate Date:2011-06-03Descriptions: WinForm 程序使用HttpWebRequest 实现大文件上传Url: /blog/static/2673158720115991432899/概述&#xff1a;通常在WinForm 程序中都…

做一个公众号大概要多少钱_公众号流量主一个月可以赚多少钱?

我是小郁儿&#xff0c;点击上方“关注”&#xff0c;每天为你分享自媒体运营与个人精进干货。细心的读者会发现&#xff0c;阅读我文章的时候&#xff0c;最下面不再出现广告卡片了&#xff0c;因为我前几天已经把流量主功能关掉。起初是因为我在看自己发的视频时&#xff0c;…

Linux 命令之 7za -- 文件压缩命令

文章目录一、命令介绍二、7za 和 7z 的区别三、常用选项四、命令示例&#xff08;一&#xff09;压缩指定目录下的内容&#xff08;二&#xff09;解压缩指定的压缩包到指定的目录下一、命令介绍 7za 一种文件压缩命令&#xff0c;7z格式具有高压缩比率&#xff0c;它采用了多…