【视频】Copula算法原理和R语言股市收益率相依性可视化分析-1
https://developer.aliyun.com/article/1488302
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
。
我们可以绘制矢量的3D图表示u
。
现在,作为最后一步,我们只需要选择边缘并应用它。我选择了边缘为Gamma,Beta和Student,并使用下面指定的参数。
x1 < - qgamma(u \[,1\],shape = 2,scale = 1) x2 < - qbeta(u \[,2\],2,2) x3 < - qt(u \[,3\],df = 5)
下面是我们模拟数据的3D图。
df < - cbind(x1,x2,x3) pairs.panels(DF) x1 x2 x3 x1 1.0000000 0.3812244 0.1937548 x2 0.3812244 1.0000000 -0.7890814 x3 0.1937548 -0.7890814 1.0000000
这是随机变量的散点图矩阵:
使用copula
让我们使用copula复制上面的过程。
现在我们已经通过copula(普通copula)指定了相依结构并设置了边缘,mvdc()
函数生成了所需的分布。然后我们可以使用rmvdc()
函数生成随机样本。
colnames(Z2)< - c(“x1”,“x2”,“x3”) pairs.panels(Z2)
模拟数据当然非常接近之前的数据,显示在下面的散点图矩阵中:
【视频】Copula算法原理和R语言股市收益率相依性可视化分析-3