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 < - 2000z < - 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
。
点击标题查阅往期内容
R语言多元Copula GARCH 模型时间序列预测
左右滑动查看更多
01
02
03
04
我们可以绘制矢量的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中加载 :
cree < - read.csv('cree_r.csv',header = F)$ V2
yahoo < - read.csv('yahoo_r.csv',header = F)$ V2
在直接进入copula拟合过程之前,让我们检查两个股票收益之间的相关性并绘制回归线:
我们可以看到 正相关 :
在上面的第一个例子中,我选择了一个正态的copula模型,但是,当将这些模型应用于实际数据时,应该仔细考虑哪些更适合数据。例如,许多copula更适合建模非对称相关,其他强调尾部相关性等等。我对股票收益率的猜测是,t-copula应该没问题,但是猜测肯定是不够的。本质上, 允许我们通过函数使用BIC和AIC执行copula选择 :
pobs(as.matrix(cbind(cree,yahoo)))\[,1\]selectedCopula$ PAR
\[1\] 0.4356302$ PAR2
\[1\] 3.844534
拟合算法确实选择了t-copula并为我们估计了参数。
让我们尝试拟合建议的模型,并检查参数拟合。
t.cop
set.seed(500)
m < - pobs(as.matrix(cbind(cree,yahoo)))COEF(FIT)rho.1 df
0.43563 3.84453
我们来看看我们刚估计的copula的密度
rho < - coef(fit)\[1\]
df < - coef(fit)\[2\]
现在我们只需要建立Copula并从中抽取3965个随机样本。
rCopula(3965,tCopula( = 2, ,df = df))\[,1\] \[,2\]
\[1,\] 1.0000000 0.3972454
\[2,\] 0.3972454 1.0000000
这是包含的样本的图:
t-copula通常适用于在极值(分布的尾部)中存在高度相关性的现象。
现在我们面临困难:对边缘进行建模。为简单起见,我们将假设正态分布 。因此,我们估计边缘的参数。
直方图显示如下:
现在我们在函数中应用copula,从生成的多变量分布中获取模拟观测值。最后,我们将模拟结果与原始数据进行比较。
这是在假设正态分布边缘和相依结构的t-copula的情况下数据的最终散点图:
正如您所看到的,t-copula导致结果接近实际观察结果 。
让我们尝试df=1
和df=8:
显然,该参数df
对于确定分布的形状非常重要。随着df
增加,t-copula倾向于正态分布copula。
本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群!
本文摘选《R语言实现 Copula 算法建模相依性案例分析报告》,点击“阅读原文”获取全文完整资料。
点击标题查阅往期内容
Copula估计边缘分布模拟收益率计算投资组合风险价值VaR与期望损失ES
MATLAB用COPULA模型进行蒙特卡洛(MONTE CARLO)模拟和拟合股票收益数据分析
python中的copula:Frank、Clayton和Gumbel copula模型估计与可视化
R语言中的copula GARCH模型拟合时间序列并模拟分析
matlab使用Copula仿真优化市场风险数据VaR分析
R语言多元Copula GARCH 模型时间序列预测
R语言Copula函数股市相关性建模:模拟Random Walk(随机游走)
R语言实现 Copula 算法建模依赖性案例分析报告
R语言ARMA-GARCH-COPULA模型和金融时间序列案例
R语言基于copula的贝叶斯分层混合模型的诊断准确性研究
R语言COPULA和金融时间序列案例
matlab使用Copula仿真优化市场风险数据VaR分析
matlab使用Copula仿真优化市场风险
R语言多元CopulaGARCH模型时间序列预测
R语言Copula的贝叶斯非参数MCMC估计
R语言COPULAS和金融时间序列
R语言乘法GARCH模型对高频交易数据进行波动性预测
R语言GARCH-DCC模型和DCC(MVT)建模估计
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
R语言时间序列GARCH模型分析股市波动率
R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测
matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略
R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析
R语言多元Copula GARCH 模型时间序列预测
R语言使用多元AR-GARCH模型衡量市场风险
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言用Garch模型和回归模型对股票价格分析
GARCH(1,1),MA以及历史模拟法的VaR比较
matlab估计arma garch 条件均值和方差模型
R语言ARMA-GARCH-COPULA模型和金融时间序列案例
相关文章:
Copula算法原理和R语言股市收益率相依性可视化分析
阅读全文:http://tecdat.cn/?p6193 copula是将多变量分布函数与其边缘分布函数耦合的函数,通常称为边缘。在本视频中,我们通过可视化的方式直观地介绍了Copula函数,并通过R软件应用于金融时间序列数据来理解它(点击文…...
反弹SHELL不回显带外正反向连接防火墙出入站文件下载
什么是反弹shell 正向连接正向连接(Forward Connection):正向连接是一种常见的网络通信模式,其中客户端主动发起连接到服务器或目标系统。正向连接通常用于客户端-服务器通信,客户端主动请求服务或资源,例如…...
后盾人JS--JS值类型使用
章节介绍与类型判断 看看构造函数 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</t…...
1月11日
[WUSTCTF2020]CV Maker 可以看到有个注册页面,尝试注册一个用户登进去看看 进来后第一眼就看到文件上传,尝试上传,上传php后返回了 文件上传后端检测exif_imagetype()函数 他提示不是image,也就是需要我们构造一个文件头为图像类…...
【深度学习】Pytorch:加载自定义数据集
本教程将使用 flower_photos 数据集演示如何在 PyTorch 中加载和导入自定义数据集。该数据集包含不同花种的图像,每种花的图像存储在以花名命名的子文件夹中。我们将深入讲解每个函数和对象的使用方法,使读者能够推广应用到其他数据集任务中。 flower_ph…...
最近在盘gitlab.0.先review了一下docker
# 正文 本猿所在产品的代码是保存到了一个本地gitlab实例上,实例是别的同事搭建的。最近又又又想了解一下,而且已经盘了一些了,所以写写记录一下。因为这个事儿没太多的进度压力,索性写到哪儿算哪儿,只要是新了解到的…...
OA项目登录
导入依赖,下面的依赖是在这次OA登录中用到的 <!--web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.sprin…...
verilogHDL仿真详解
前言 Verilog HDL中提供了丰富的系统任务和系统函数,用于对仿真环境、文件操作、时间控制等进行操作。(后续会进行补充) 正文 一、verilogHDL仿真详解 timescale 1ns/1ps //时间单位为1ns,精度为1ps, //编译…...
基于http协议的天气爬虫
该系统将基于目前比较流行的网络爬虫技术, 对网站上的天气数据进行查询分析, 最终使客户能够通过简单的操作, 快速, 准确的获取目标天气数据。主要包括两部分的功能, 第一部分是天气数据查询, 包括时间段数…...
_STM32关于CPU超频的参考_HAL
MCU: STM32F407VET6 官方最高稳定频率:168MHz 工具:STM32CubeMX 本篇仅仅只是提供超频(默认指的是主频)的简单方法,并未涉及STM32超频极限等问题。原理很简单,通过设置锁相环的倍频系数达到不同的频率&am…...
C#,图论与图算法,任意一对节点之间最短距离的弗洛伊德·沃肖尔(Floyd Warshall)算法与源程序
一、弗洛伊德沃肖尔算法 Floyd-Warshall算法是图的最短路径算法。与Bellman-Ford算法或Dijkstra算法一样,它计算图中的最短路径。然而,Bellman Ford和Dijkstra都是单源最短路径算法。这意味着他们只计算来自单个源的最短路径。另一方面,Floy…...
AWS云计算概览(自用留存,整理中)
目录 一、云概念概览 (1)云计算简介 (2)云计算6大优势 (3)web服务 (4)AWS云采用框架(AWS CAF) 二、云经济学 & 账单 (1)定…...
1. npm 常用命令详解
npm 常用命令详解 npm(Node Package Manager)是 Node.js 的包管理工具,用于安装和管理 Node.js 应用中的依赖库。下面是 npm 的一些常用命令及其详细解释和示例代码。 镜像源 # 查询当前使用的镜像源 npm get registry# 设置为淘宝镜像源 …...
js:根据后端返回数据的最大值进行计算然后设置这个最大值为百分之百,其他的值除这个最大值
问: 现在tabData.value 接收到了后端返回的数据, [{text:人力,percentage:‘90’},{text:物品,percentage:‘20’},{text:物理,percentage:‘50’},{text:服务,percentageÿ…...
【Spring】@Size 无法拦截null的原因
问题复现 在构建 Web 服务时,我们一般都会对一个 HTTP 请求的 Body 内容进行校验,例如我们来看这样一个案例及对应代码。当开发一个学籍管理系统时,我们会提供了一个 API 接口去添加学生的相关信息,其对象定义参考下面的代码&…...
【Block总结】掩码窗口自注意力 (M-WSA)
摘要 论文链接:https://arxiv.org/pdf/2404.07846 论文标题:Transformer-Based Blind-Spot Network for Self-Supervised Image Denoising Masked Window-Based Self-Attention (M-WSA) 是一种新颖的自注意力机制,旨在解决传统自注意力方法在…...
用 HTML5 Canvas 和 JavaScript 实现雪花飘落特效
这篇文章将带您深入解析使用 HTML5 Canvas 和 JavaScript 实现动态雪花特效的代码原理。 1,效果展示 该效果模拟了雪花从天而降的动态场景,具有以下特点: 雪花数量、大小、透明度和下落速度随机。雪花会在屏幕底部重置到顶部,形成循环效果。随窗口大小动态调整,始终覆盖…...
【cocos creator】【ts】事件派发系统
触发使用: EventTool.emit(“onClick”) 需要监听的地方,onload调用: EventTool.on(“onClick”, this.onClickEvent, this) /**事件派发*/class EventTool {protected static _instance: EventTool null;public static get Instance(): Eve…...
《探索鸿蒙Next上开发人工智能游戏应用的技术难点》
在科技飞速发展的当下,鸿蒙Next系统为应用开发带来了新的机遇与挑战,开发一款运行在鸿蒙Next上的人工智能游戏应用更是备受关注。以下是在开发过程中可能会遇到的一些技术难点: 鸿蒙Next系统适配性 多设备协同:鸿蒙Next的一大特色…...
CSS | CSS实现两栏布局(左边定宽 右边自适应,左右成比自适应)
目录 一、左边定宽 右边自适应 1.浮动 2.利用浮动margin 3.定位margin 4.flex布局 5.table 布局 二、左右成比自适应 1:1 1flex布局 table布局 1:2 flex布局 <div class"father"><div class"left">左边自适应</div><div class"r…...
acwing_3195_有趣的数
acwing_3195_有趣的数 // // Created by HUAWEI on 2024/11/17. // #include<iostream> #include<cstring> #include<algorithm>#define int long longusing namespace std;const int N 1000 50; const int MOD 1e9 7; int C[N][N]; //组合数signed mai…...
Liunx-搭建安装VSOMEIP环境教程 执行 运行VSOMEIP示例demo
本文安装环境为Liunx,搭建安装VSOMEIP环境并运行基础例子。 1. 安装基础环境 使用apt-get来安装基础环境,受网络影响可以分开多次安装。环境好的也可以一次性执行。 sudo apt-get install gcc g sudo apt-get install cmake sudo apt-get install lib…...
Git | git revert命令详解
关注:CodingTechWork 引言 Git 是一个强大的版本控制工具,广泛应用于现代软件开发中。它为开发人员提供了多种功能来管理代码、协作开发和版本控制。在 Git 中,有时我们需要撤销或回退某些提交,而git revert 是一个非常有用的命令…...
ASP.NET Core 中,Cookie 认证在集群环境下的应用
在 ASP.NET Core 中,Cookie 认证在集群环境下的应用通常会遇到一些挑战。主要的问题是 Cookie 存储在客户端的浏览器中,而认证信息(比如 Session 或身份令牌)通常是保存在 Cookie 中,多个应用实例需要共享这些 Cookie …...
Flyte工作流平台调研(五)——扩展集成
系列文章: Flyte工作流平台调研(一)——整体架构 Flyte工作流平台调研(二)——核心概念说明 Flyte工作流平台调研(三)——核心组件原理 Flyte工作流平台调研(四)——…...
【AUTOSAR 基础软件】软件组件的建立与使用(“代理”SWC)
基础软件往往需要建立一些“代理”SWC来完成一些驱动的抽象工作(Complex_Device_Driver_Sw或者Ecu_Abstraction_Sw等),或建立Application Sw Component来补齐基础软件需要提供的功能实现。当面对具体的项目时,基础软件开发人员还可…...
java通过ocr实现识别pdf中的文字
需求:识别pdf文件中的中文 根据github项目mymonstercat 改造,先将pdf文件转为png文件存于临时文件夹,然后通过RapidOcr转为文字,最后删除临时文件夹 1、引入依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId&g…...
Git 命令代码管理详解
一、Git 初相识:版本控制的神器 在当今的软件开发领域,版本控制如同基石般重要,而 Git 无疑是其中最耀眼的明珠。它由 Linus Torvalds 在 2005 年创造,最初是为了更好地管理 Linux 内核源代码。随着时间的推移,Git 凭借…...
Docker的安装和使用
容器技术 容器与虚拟机的区别 虚拟机 (VM) VM包含完整的操作系统,并在虚拟化层之上运行多个操作系统实例。 VM需要更多的系统资源(CPU、内存、存储)来管理这些操作系统实例。 容器 (Container) 容器共享主机操作系统的内核,具…...
Flink系统知识讲解之:Flink内存管理详解
Flink系统知识讲解之:Flink内存管理详解 在现阶段,大部分开源的大数据计算引擎都是用Java或者是基于JVM的编程语言实现的,如Apache Hadoop、Apache Spark、Apache Drill、Apache Flink等。Java语言的好处是不用考虑底层,降低了程…...
建立https网站/seo优化推荐
/Files/xiangboren/慧聪网电话采集系统.rar 里边用到一个DLL OverredGatherCom.dll 感谢原作者。 输入 如:http://www.search.hc360.com/cgi-bin/seinterface.cgi?word%BC%C3%C4%CF&ind&price&dt7&class%C6%F3%D2%B5%BF%E2 的采集列表开始开采集&a…...
做网站最专业/域名服务器ip查询网站
1. 通过转义命令连接符“&&”、“;”等。 2. 限制只能输入数字,利用换行进行跳过。 . 3. 出错重定向到127.0.0.1 可利用sleep延时判断是否成功: 也可以利用burpsuite直接查看: 参考链接: http://www.cnblogs.com/xiaozi/p…...
短网址生成系统源码/搜索引擎优化培训中心
WebSocket 以前没用过,之前写过一篇博客是基于原生socket的(查看)比较复杂,慎入。今天另外一个APP需要接websocket了,然后便找到了facebook的 SocketRocket 框架,然后用了一天时间接上了,完成了…...
怎样做手机网站建设/网站营销软文
php mysql数据库操作分页类2021-01-23 15:35:484复制代码 代码如下:/**mysql数据库分页类*packagepagelist*authoryytcpt(无影)*version2008-03-27*copyrigthhttp://www.d5s.cn/*//**分页样式.page{float:left;font:11pxArial,Helvetica,sans-serif;padding:6px0;margin:0px10%…...
吉林公司做网站/seo教程网站优化
编辑导语:数据分析这个岗位很容易背锅,结果是好的那就另说,但如果结果不令人满意,各方就会来找数据分析师的麻烦;数据分析师要做一个好的结果,需要掌握一些方法,比如本文说到的“增长实验”&…...
景观设计方案网站/seo排名资源
协同开发能力: 1. 项目管理(SVN、Git) 2. 数据分析能力(Fiddler、Charles、浏览器F12)。 接口测试: 1. 概念及接口测试原理概念(概念、接口测试原理) 2. 接口测试工具ÿ…...