【视频】Copula算法原理和R语言股市收益率相依性可视化分析(上)

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

原文链接:http://tecdat.cn/?p=6193


copula是将多变量分布函数与其边缘分布函数耦合的函数,通常称为边缘。在本视频中,我们通过可视化的方式直观地介绍了Copula函数,并通过R软件应用于金融时间序列数据来理解它。


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


为什么要引入Copula函数?


当边缘分布(即每个随机变量的分布)不同的随机变量,互相之间并不独立的时候,此时对于联合分布的建模会变得十分困难。

 

让我们从一个示例问题案例开始。假设我们测量两个非正态分布且相关的变量。例如,我们查看各种河流,我们查看该河流在特定时间段内的最高水位。此外,我们还计算了每条河流造成洪水的月份。对于河流最高水位的概率分布,我们可以参考极值理论,它告诉我们最大值是Gumbel分布的。洪水发生的次数将根据Beta分布进行建模,该分布只是告诉我们发生洪水的概率是洪水与非洪水发生次数的函数。

假设洪水的最高水位和数量是相关的,这是非常合理的。然而,这里我们遇到了一个问题:我们应该如何对概率分布进行建模?上面我们只指定了各个变量的分布,而与另一个变量无关(即边缘分布)。实际上,我们正在处理这两者的联合分布。

此时,在已知多个已知 边缘分布的随机变量下,Copula函数则是一个非常好的工具来对其相关性进行建模。

copula 的主要吸引力在于,通过使用他们,您可以分别对相关结构和边缘分布(即每个随机变量的分布)进行建模。

因为对于某些边缘分布组合,没有内置函数来生成所需的多元分布。例如,在 R 中,很容易从多元正态分布中生成随机样本,但是对于边缘分别为 Beta、Gamma 和 Student 的分布来说,这样做并不容易。

copula 将边缘分布与研究它们的“关系”分开,因此您无需担心考虑可能的单变量分布类型的所有可能组合,从而大大简化了所需的代码量。

Copula可以同时处理多个变量,例如您可以在一个群组中处理多只股票,而不仅仅是一对,以创建最终交易组合,以在更高的维度上发现错误定价。


什么是copula


Copula 在拉丁语中的意思是“链接”,copula 是将多元分布函数与其边缘分布函数耦合的函数,通常称为边缘或简称为边缘。Copulas 是用于建模和模拟相关随机变量的绝佳工具。

总的来说,copula 是一种统计方法,用于理解多元分布的联合概率。

Copula是模拟多元相关数据的流行方法,是一个表示多元均匀分布的概率模型,它检查许多变量之间的关联或依赖关系。

今天,copulas 被用于高级财务分析,以更好地理解涉及厚尾和偏度的结果。用于帮助识别市场风险、信用风险和操作风险。它依赖于两种或多种资产收益的相互依赖关系。相关性最适合 正态分布,而金融市场中的分布本质上通常是非正态分布。因此,copula 已应用于诸如期权定价和投资组合风险价值等金融领域,以处理偏斜或不对称分布。

 

如何使用copula 分析数据


回想一下,您可以使用累积分布函数将任何分布转换为均匀分布。同样,您可以使用逆累积分布函数将均匀分布转换为任何分布。例如要模拟来自高斯 copula 的相关多元数据,请执行以下三个步骤:

1.从相关矩阵模拟相关的多元正态数据。边缘分布都是标准正态分布。

2.使用标准正态累积分布函数将正态边缘转换为均匀分布。

3.使用逆累积分布函数将均匀边缘分布转换为 您想要的任何分布。

第二步和第三步中的转换是在数据矩阵的各个列上执行的。变换是单调的,这意味着它们不会改变列之间的等级相关性。因此,最终数据与第一步中的多元正态数据具有相同的秩相关性。

首先我们可以生成均匀分布的随机变量

下面,我们想要转化这些样本使他们变成正态分布。那么,我们只需要以 x为累积分布函数值,对正态分布求逆即可,

如果我们将 x 和转化后的x  的分布画在一张图中,就可以直观的看出逆累积分布函数的样子。

同理,我们也可以基于 beta 分布或者gumbel  分布来得到类似的图像,这种概率积分变换的本质是相同的。

而我们如果想要从一个任意的分布到均匀分布,那么我们只需要进行一次累积分布函数就可以了。这里我将 转换后的x 再做一次转化

 

 

简单的高斯Copula例子

我们构建一个简单的例子,来看如何利用概率积分变换来认识高斯copula。首先从二元正态分布中生成样本:

 

通过给 x1和x2的累积分布函数进行采样,我们可以将其转化成均匀分布。

 

现在,我们在上面的基础上(构建的高斯Copula函数),把边缘分布换成Beta分布和Gumbel分布:

 

 

那如果没有二者的耦合关系,这个图是怎样的呢?

 

两张图对比一下,还是很容易看出区别的吧!这就是我们使用copula函数内在的方法了,其核心还是通过均匀分布。


Copula的数学定义

它是一个多元分布C,边缘分布为均匀分布。它实际上只是一个具有均匀分布边缘属性的函数。它确实只有在与另一个变换结合以获得我们想要的边缘分布时才有用。

 

我们也可以更好地理解高斯 copula 的数学描述:

对于给定的R, 具有参数矩阵的高斯copula可以写成   ,其中Φ− 1是标准正态的逆累积分布函数,并且ΦR是平均向量为零且协方差矩阵等于相关矩阵的多元正态分布的联合累积分布函数R.

请注意,在上面的例子中,我们采用相反的方式从该分布创建样本。此处表示的高斯 copula 采用 均匀分布输入,将它们转换为高斯,然后应用相关性并将它们转换回均匀分布。


Copula函数主要应用在哪里呢?

该工具最初是用在金融衍生品领域,该函数建模作为衍生品风险度量的工作进行使用。在2008年金融危机中,这个工具被人广泛的提及,认为当时采用的高斯copula没有能够完整度量衍生品连带之间的风险,从而导致一系列的违约,进而引发次贷危机、经济危机。

也有人事后写了文章来介绍这个工具和现实社会经济的关系,包括很有名的电影《大空头》,也有这段的描写。

说回工具本身,除了金融领域,现在很多研究概率分布的领域都在使用copula,例如电力系统领域研究风电、光伏等间歇性能源,也在使用这种方法进行建模。


接下来我们在R软件中对金融时间序列进行copula建模。


copulas如何工作


首先,让我们了解copula的工作方式。

set.seed(100)
m < -  3
n < -  2000
 
z < -  mvrnorm(n,mu = rep(0,m),Sigma = sigma,empirical = T)

我们使用cor()和散点图矩阵检查样本相关性。

pairs.panels(Z)
          \[,1\] \[,2\] \[,3\]
\[1,\] 1.0000000 0.3812244 0.1937548
\[2,\] 0.3812244 1.0000000 -0.7890814
\[3,\] 0.1937548 -0.7890814 1.0000000

pairs.panels(U)

这是包含新随机变量的散点图矩阵u


【视频】Copula算法原理和R语言股市收益率相依性可视化分析(下):https://developer.aliyun.com/article/1489862?spm=a2c6h.13148508.setting.26.658d4f0eueN6WO

相关文章
|
3天前
|
移动开发 算法 数据可视化
【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享(上)
【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享
13 1
|
1天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
|
3天前
|
数据采集 数据挖掘 测试技术
python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
13 1
|
3天前
R语言偏最小二乘回归PLS回归分析制药产品化学制造过程数据、缺失值填充、变量重要性
R语言偏最小二乘回归PLS回归分析制药产品化学制造过程数据、缺失值填充、变量重要性
10 0
|
3天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】层次聚类算法的原理与应用
【4月更文挑战第30天】层次聚类是数据挖掘中的聚类技术,无需预设簇数量,能生成数据的层次结构。分为凝聚(自下而上)和分裂(自上而下)两类,常用凝聚层次聚类有最短/最长距离、群集平均和Ward方法。优点是自动确定簇数、提供层次结构,适合小到中型数据集;缺点是计算成本高、过程不可逆且对异常值敏感。在Python中可使用`scipy.cluster.hierarchy`进行实现。尽管有局限,层次聚类仍是各领域强大的分析工具。
|
3天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。
|
3天前
|
算法 数据挖掘
R语言面板数据回归:含时间固定效应混合模型分析交通死亡率、酒驾法和啤酒税
R语言面板数据回归:含时间固定效应混合模型分析交通死亡率、酒驾法和啤酒税
|
3天前
|
机器学习/深度学习 数据可视化
R语言非线性回归和广义线性模型:泊松、伽马、逻辑回归、Beta回归分析机动车事故、小鼠感染、蛤蜊数据、补剂钠摄入数据|数据分享(下)
R语言非线性回归和广义线性模型:泊松、伽马、逻辑回归、Beta回归分析机动车事故、小鼠感染、蛤蜊数据、补剂钠摄入数据|数据分享
10 0
|
3天前
|
机器学习/深度学习
R语言非线性回归和广义线性模型:泊松、伽马、逻辑回归、Beta回归分析机动车事故、小鼠感染、蛤蜊数据、补剂钠摄入数据|数据分享(上)
R语言非线性回归和广义线性模型:泊松、伽马、逻辑回归、Beta回归分析机动车事故、小鼠感染、蛤蜊数据、补剂钠摄入数据|数据分享
10 0
|
3天前
|
数据可视化 数据挖掘 定位技术
数据分享|R语言生态学种群空间点格局分析:聚类泊松点过程对植物、蚂蚁巢穴分布数据可视化
数据分享|R语言生态学种群空间点格局分析:聚类泊松点过程对植物、蚂蚁巢穴分布数据可视化
10 0