首页 > 其他分享 >Copula估计边缘分布模拟收益率计算投资组合风险价值VaR与期望损失ES|附代码数据

Copula估计边缘分布模拟收益率计算投资组合风险价值VaR与期望损失ES|附代码数据

时间:2024-03-21 23:33:53浏览次数:27  
标签:copula 模型 Copula GARCH 拟合 VaR ES

全文链接:http://tecdat.cn/?p=24753

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

在这项工作中,我通过创建一个包含四只基金的模型来探索 copula,这些基金跟踪股票、债券、美元和商品的市场指数

摘要

然后,我使用该模型生成模拟值,并使用实际收益和模拟收益来测试模型投资组合的性能,以计算风险价值(VaR)与期望损失(ES)。

一、介绍与概述

Copulas 对多元分布中变量之间的相关性进行建模。它们允许将多变量依赖关系与单变量边缘分布相结合,允许我们对构成多变量数据的每个变量使用许多单变量模型。Copulas 在 2000 年代开始流行。根据 Salmon (2009) 的说法,Li (2000) 最近提出的Copulas应用之一是 2008 年开始的金融危机。我们将使用 copulas 来模拟四个 ETF 基金的行为:IVV,跟踪标准普尔 500 指数;TLT,跟踪长期国债;UUP,追踪外汇指数;以及商品的 DBC

二、理论背景

copula 是一个多变量 CDF,其边缘分布都是 Uniform (0,1)。假设 Y 有 d 维,并且有一个多元 图片 和边缘 图片。很容易证明,每个图片 都是 Uniform(0,1)。因此,图片 的 CDF 根据定义是一个 copula。使用 Sklar (1973) 的定理,然后我们可以将我们的随机变量 Y 分解为一个 copula CY ,它包含关于我们的变量 Y 之间相互依赖的信息,以及单变量边缘 CDFs FY ,它包含关于每个变量的所有信息单变量边缘分布。对于 d 维,我们有:

图片

并使每个图片,我们有:

图片

图片

如果我们对等式(2)进行微分,我们会发现 Y 的密度为:

图片

方程 (3) 中的结果允许我们创建多变量模型,这些模型考虑了变量的相互依赖性(方程的第一部分)和每个变量的分布(方程的第二部分)。我们可以使用 copula 和边缘部分的参数版本来创建可用于运行测试和执行预测的模型。在接下来的几节中,我们将使用用于统计计算的 R 语言将高斯和 t-copula 拟合到介绍中描述的 ETF 的对数收益率。有了 copula 和边缘,我们将使用模型来确定投资的风险价值 (VaR) 和预期损失 (ES)。


点击标题查阅往期内容

图片

R语言多元Copula GARCH 模型时间序列预测

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

三、算法实现与开发

像往常一样,我们从读取文件开始。图 1 显示了价格图:注意 IVV 和 DBC(股票和商品)之间的关系以及 TLT 和 UUP(元和国债)之间的关系。

   
# 将 ETF 读入

read.zoo("F.csv")
# 获取最近501天

tf[(T-500):T,]
# 绘制价格

pdf("价格.pdf")

图片

在这种情况下,我们计算对数收益率。图 2 显示了收益图。

   
# 计算对数收益
le <- lag(e,-1
log(ef) - log(lef) ) * 100

图片

然后我们做一个配对图来确定结果是否相关,例如,正如期望的那样,IVV 和 DBC 之间存在非常高的相关性。图 3 显示了配对图。然后我们获得边距的参数,拟合每个变量的分布。结果见表一

   
# 拟合分布
 fitdr
## 得到结果矩阵
# 将 AIC 函数应用于第一项(值)
# params 列表的第四项 (loglik)
AIC(saply (saply(prms, 4))

# params 列表的第一项(估计)
sapply (sapply(pams,3))

图片

图 4 显示了拟合分布与来自变量的真实数据进行比较的图。现在我们有了边缘分布,我们需要找到模型的 copula。我们首先使用概率变换并获得 图片 中的每一个,我们知道它们是 Uniform(0,1)。这是通过以下代码完成的:

   
# 现在我们需要均匀分布
IV <- pct(IVV, a)
rt <- cbind(uV uL, UP, DC)

图 5 显示了均匀分布之间的相关性。通过均匀分布,我们可以看到哪种类型的参数 copula 最适合。我们将拟合高斯 copula 和 t-copula,记录它们的 AIC 并查看哪一个提供了最佳拟合。

图片

图 5:均匀分布之间的相关性

   
# 拟合高斯 copula

fit.gaussian <- fitCopula (ncp))
# 记录拟合的AIC
fit.aic = AIC(filik,

############################################### ############
# 现在是 t-copula

fitCopula (tcop, url00))
# 记录拟合的AIC

图片

   
AIC(fiik
length(fite)

比较两种拟合,如表 II 所示,我们发现 t-copula 拟合最好,因此我们将根据 t-copula 的参数创建一个模型。然后,我们使用该模型生成 10,000 个观察结果,模拟我们模型的可能结果。我们的模拟模型与拟合模型之间的图形比较可以在图 6 中看到 - 模拟非常接近拟合模型。

   
tCopula(parun")
cop.dist <- mvdc(copt,
parast1)
rmvdc(co00)

现在我们有了模拟的观察结果,我们将使用参数方法计算风险价值 (VaR) 和预期损失 (ES)。我们将假设一个投资组合(任意选择)在 IVV 中投资 30%,在 TLT 中投资 15%,在 UUP 中投资 35%,在 DBC 中投资 20%。为了计算投资组合 w 的收益率 Rp,我们简单地使用矩阵代数将我们的模拟收益率 Rs 乘以权重,如 Rp = Rs × w。然后我们将 t 分布拟合到 Rp 并使用它来估计 VaR 和 ES。对于 t 分布,VaR 和 ES 的公式为:

图片

其中:

• S:仓位大小

• F -1 ν:逆 CDF 函数

• fν:密度函数 • µ:平均值

• λ:形状/尺度参数

• ν:自由度

• α:置信水平

R中公式的应用实现如下。请注意,在代码中,VaR 和 ES 被四舍五入到最接近的千位。结果在表III中。

   
# 计算模拟值的 VaR 和 ES


fitdistr(re, "t")
es <- -m+lada*es1*es2

我们的最终任务是计算非参数 ES 和 VaR,由以下公式给出:

图片

其中:

• S:仓位大小

• qˆ(α):样本收益率的分位数

• Ri:第 i 个样本收益率

R 实现如下:

   
# 计算真实值的 VaR 和 ES
ret <- (rf %*% w) / 100

ES <- -S * sum(ret * ir) / sum (iar)

结果示于表III中。

四、计算结果

表 I 显示了 ETF 边缘 t 分布的估计参数和 AIC 的结果:

图片

表 I 边缘分布

两个 copula 拟合的 AIC 都在表 II 中。

图片

表 II Copula AIC

VaR 和 ES 在表 III 中。

图片

表三 VaR 和 ES

五、总结与结论

这项工作展示了如何估计边缘和 copula,以及如何应用 copula 来创建一个模型,该模型将考虑变量之间的相互依赖性。它还展示了如何计算风险价值 (VaR) 和期望损失 (ES)。


图片

本文摘选  R语言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,模型,Copula,GARCH,拟合,VaR,ES
From: https://www.cnblogs.com/tecdat/p/18088469

相关文章

  • k8s资源限制之LimitRange和ResourceQuota
    在Kubernetes中,LimitRange和ResourceQuota都是用于资源管理的工具,但它们的目的、作用范围和使用方式有所不同。作用范围LimitRange是在Pod和容器级别上进行资源限制的工具,主要用于设定CPU和内存两种计算资源的可用范围,并且还可以支持在PersistentVolumeClaim资源级别设定存储空......
  • CF1920 Codeforces Round 919 (Div. 2)
    B.SummationGame给你\(n\)个数(均大于0),Alice先执行一次删除不超过\(k\)个数,Bob再执行一次把最多\(x\)个数变成相反数.问最后数组的最大和是多少?这题本来是想先让Alice删除\(k\)个数,但显然不太容易得到最优解,因为还有可能撤回Alice的删除操作,再加上Bob的操作.......
  • Codeforces Round 935 (Div. 3)
    A.SettingupCamp#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;voidsolve(){inta,b,c;cin>>a>>b>>c;intres=a+b/3;b%=3;if(b!=0){if(c<3-b){......
  • Kubernetes之Pod基本原理与实践
    一、Pod的定义与基本用法1.Pod是什么Pod是可以在Kubernetes中创建和管理的、最小的可部署的计算单元。Pod不是进程,而是容器运行的环境。Pod所建模的是特定于应用的“逻辑主机”,其中包含一个或多个应用容器。当Pod包含多个应用容器时,这些容器的应用之间应该是......
  • 1943+1944.Codeforces Round 934 (Div. 1,Div. 2) - sol
    20240321终于差不多把Div1补完了(F当然没补),第一次打Div1,还是出了一些小状况的。唉。没有补Div1F的逆天题,选择放弃。Dashboard-CodeforcesRound934(Div.2)-CodeforcesDashboard-CodeforcesRound934(Div.1)-Codeforces2A.DestroyingBridgesThere......
  • Requests请求方式有那些吗?这篇就够了
    Requests请求方式有那些吗?这篇就够了使用Python的requests库,您可以进行多种类型的HTTP请求.以下是一些常见的请求方式:GET请求:response = requests.get(url)POST请求:response = requests.post(url, data=data)PUT请求:response = requests.put(url......
  • ES高可用
    分布式搜索引擎ES分布式搜索引擎ES1.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.3.RestAPI实现聚合2.自动补全2.1.拼音分词器2.2.自定义分词器2.3.自动补全查询2.4.实现酒店搜索框自动补全3.数据同步思路分析4.集群4.1ES集群相关概念4.2.集群脑裂问题4.3.集群分布式存......
  • ESP8266 + L298N实现WIFI遥控小车
    参考资料:https://blog.csdn.net/m0_60790717/article/details/126914314https://blog.csdn.net/weixin_52801934/article/details/126180831 ESP8266实物和引脚图(图像来源于百度图片): L298N实物和引脚图(图像来源于百度图片): 硬件连接:L298N连接两个电机,来控制小车的两......
  • python scrapy 爬虫爬取quotes.toscrape.com
    1、安装scrapy pip包的管理工具pipinstallscrapy(在cmd中下载)win+r键输入cmd进入命令行2.scrapy介绍它是由五部分组成 引擎 下载器 spider 中间件 管道你只需要知道spider即可因为所有代码都在这里面管道是处理数据的框架定义好接口调用就可以了3.xpa......
  • Medium Design
    思路一:见这篇题解,当然只用看step3之后的就好了思路二:我使用的是转换对象法。从线段的角度不好考虑,我们从元素的角度考虑如果我们已经确定了一个元素\(a_i\)为最大值,我们考虑所有线段如果一个线段不包含\(a_i\),那么肯定不选择,因为他不会让最大值增加,反而可能会让最小值增加如......