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

原文出处:拓端数据部落公众号

使用Copula仿真优化市场风险

此示例演示了使用具有胖尾边缘分布的多变量copula模拟计算投资组合的风险价值和条件风险值(预期缺口)。然后使用模拟来计算最优风险收益组合的有效前沿。

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

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

,时长16:34

内容

  • 导入支持历史数据集
  • 可视化标准化价格
  • 退货和边际分配
  • Copula校准
  • Copula模拟
  • 计算单周期模拟VaR
  • 组合优化
  • 以给定的回报水平计算投资组合

导入支持历史数据集

使用Datafeed Toolbox的API导入我们将在本练习中建模的不同资产类别的市场数据

  • SPY:标准普尔500指数
  • EEM:新兴市场股票
  • TLT:20年期国债(iShares Barclays)
  • COY:美国高收益债券
  • gsp:大宗商品(iPath S&P GSCI总回报指数)
  • RWR:房地产(房地产投资信托指数)
names = { 'SPY','EEM','TLT','COY','GSP','RWR' };startPeriod = '2009-10-01' ;endPeriod = '2013-06-24' ;[date,prices,ds] = importFeedPrices(names,startPeriod,endPeriod);

可视化标准化价格

该图显示了每个指数的相对价格走势。每个指数的初始水平已经标准化为统一,以便于比较历史记录中的相对表现。

plot(date,normPrices),datetick('x'),xlabel('Date'),ylabel('Index Value');
title('Normalized Daily Index Closings');

边际分布

为准备copula建模,单独描述每个指数的回报分布。虽然每个回归序列的分布可以参数化地表征,但是使用具有广义Pareto尾部的分段分布来拟合半参数模型是有用的。这使用极值理论来更好地表征每个尾部的行为。

return = price2ret( );
tailFraction = 0.1;marginal {i} = paretotails(return(:,i),tailFraction,1 - tailFraction,'kernel');

SPY的边际分布:

分段分布有3个部分

-Inf <x <-0.0125822(0 <p <0.1):下尾,GPD(0.0380262,0.0084794)-0.0125822 <x <0.01286(0.1 <p <0.9):内插内核平滑cdf0.01286 <x <Inf(0.9 <p <1):上尾,GPD(0.0511828,0.00671413)

EEM的边际分布:

分段分布有3个部分

-Inf <x <-0.0186259(0 <p <0.1):下尾,GPD(-0.00289033,0.0126097)

-0.0186259 <x <0.0185703(0.1 <p <0.9):内插内核平滑cdf

0.0185703 <x <Inf(0.9 <p <1):上尾,GPD(0.0326916,0.00981892)

TLT的边际分布:

分段分布有3个部分

-Inf <x <-0.0132814(0 <p <0.1):下尾,GPD(0.137056,0.00414294)

-0.0132814 <x <0.0128738(0.1 <p <0.9):内插内核平滑cdf

0.0128738 <x <Inf(0.9 <p <1):上尾,GPD(0.027114,0.00583448)

COY的边际分布:

分段分布有3个部分

-Inf <x <-0.0105025(0 <p <0.1):下尾,GPD(0.47441,0.00485515)

-0.0105025 <x <0.011195(0.1 <p <0.9):内插内核平滑cdf

0.011195 <x <Inf(0.9 <p <1):上尾,GPD(0.177151,0.00500233)

GSP的边际分布:

分段分布有3个部分

-Inf <x <-0.0161561(0 <p <0.1):下尾,GPD(-0.0382412,0.0103328)

-0.0161561 <x <0.016506(0.1 <p <0.9):内插内核平滑cdf

0.016506 <x <Inf(0.9 <p <1):上尾,GPD(-0.134845,0.00778651)

RWR的边际分布:

分段分布有3个部分

-Inf <x <-0.0172097(0 <p <0.1):下尾,GPD(-0.00540337,0.0114245)

-0.0172097 <x <0.0168041(0.1 <p <0.9):内插内核平滑cdf

0.0168041 <x <Inf(0.9 <p <1):上尾,GPD(0.0302092,0.0117143)

得到的分段分布对象允许在CDF内部进行插值并在每个尾部进行外推(函数评估)。外推允许估计历史记录之外的分位数,这对于风险管理应用是非常宝贵的。在这里,我们将paretoTail分布产生的拟合与正态分布的拟合进行比较。

index = 1;dist = marginal {index};CLFh = probplot(gca,@ dist.cdf);set(h,'Color','r');title([ 'Semi-Parametric / Piecewise Probability Plot:' names {index}])

Copula拟合

我们使用统计工具箱功能来校准和模拟数据。

使用每日索引返回,使用函数copulafit估计高斯和t copula的参数。由于在标量自由度参数(DoF)变得无限大时,copula变为高斯copula,因此两个copula实际上属于同一族,因此共享线性相关矩阵作为基本参数。

统计工具箱软件提供了两种在copula校准的技术:以下代码段首先通过上面导出的分段半参数CDF将每日居中的回报转换为均匀变量。然后它将Gaussian和t copula拟合到转换后的数据:

[〜,ax] = plotmatrix(U); title('拟合Copula之前的转换回报');

估算copula的参数。注意从t copula校准获得的相对较低的自由度参数,表明明显偏离高斯情况。

[rho,DoF] = copulafit('t',U,'ApproximateML')rhoT =1 0.88229 -0.59693 0.40875 0.58027 0.814850.88229 1 -0.52371 0.38906 0.63175 0.73608-0.59693 -0.52371 1 -0.28404 -0.37285 -0.431140.40875 0.38906 -0.28404 1 0.2953 0.362070.58027 0.63175 -0.37285 0.2953 1 0.470970.81485 0.73608 -0.43114 0.36207 0.47097 1DoF =9.5014

估计的相关矩阵与线性相关矩阵相似但不相同

corrcoef(return) 每日收益的%线性相关矩阵ans =1 0.89745 -0.61065 0.4677 0.59174 0.837170.89745 1 -0.54167 0.45612 0.63322 0.76712-0.61065 -0.54167 1 -0.30377 -0.3918 -0.444290.4677 0.45612 -0.30377 1 0.33312 0.435250.59174 0.63322 -0.3918 0.33312 1 0.491610.83717 0.76712 -0.44429 0.43525 0.49161 1

Copula模拟

现在已经估计了copula参数,使用copularnd函数模拟联合依赖的均匀变量。

然后,通过外推Pareto尾部并对平滑后的内部进行插值,通过每个索引的逆CDF 将从copularnd导出的均匀变量转换为每日居中返回。这些模拟的居中回报与从历史数据集获得的回归一致。假设回报在时间上是独立的,但在任何时间点都具有由给定的copula引起的依赖性和等级相关性。

nPoints = 10000; %#模拟观测值

计算单周期模拟VaR

来自copula模型的多变量模拟可用于计算样本组合的风险值和预期不足(CVaR)。

%样本组合组件权重wts = [.1 .2 .3 .2 .1 .1]';%从模拟组件返回生成组合返回portReturns = R * wts;%计算VaRvar = -prctile(portReturns,1);cvar = -mean(portReturns(portReturns <-var));%与正态分布比较R2 = mvnrnd(mean(returns),cov(returns),10000);normReturns = R2 * wts;var2 = -prctile(normReturns,1);cvar2 = -mean(normReturns(normReturns <-var2));disp('Copula Value-at-Risk ----------------------');fprintf('99 %% VaR:%0.2f %% \ n99 %% CVaR:%0.2f %% \ n \ n',var * 100,cvar * 100);disp('多变量正常风险值---------');fprintf('99 %% VaR:%0.2f %% \ n99 %% CVaR:%0.2f %% \ n \ n',var2 * 100,cvar2 * 100);Copula风险价值----------------------99%的风险价值:1.78%99%CVaR:2.58%多变量正常风险值---------99%VaR:1.49%99%CVaR:1.71%

组合优化

以前,我们使用模拟回报来计算样本组合的风险。相反,我们可以找到一个最佳投资组合(权重),为我们提供一定的回报风险。我们可以使用PortfolioCVaR框架来完成此任务。

p = PortfolioCVaR('ProbabilityLevel',。99,'AssetNames',名称);p = p.setScenarios(R);portRet = p.estimatePortReturn(wts);CLFvisualizeFrontier(p,portRisk,portRet);

以给定的回报水平计算投资组合

wt = p.estimateFrontierByReturn(.05 / 100);TOC;pRisk = p.estimatePortRisk(wt);pRet = p.estimatePortReturn(wt);

经过的时间是0.635017秒。

  

拓端tecdat|matlab使用Copula仿真优化市场风险相关推荐

  1. matlab使用Copula仿真优化市场风险

    使用Copula仿真优化市场风险 此示例演示了我们使用具有胖尾边缘分布的多变量copula模拟计算投资组合的风险价值和条件风险值(预期缺口)的项目过程.然后使用模拟来计算最优风险收益组合的有效前沿. ...

  2. matlab使用Copula仿真优化市场风险数据VaR分析

    使用Copula建模相关默认值 此示例探讨了如何使用多因素copula模型模拟相关的交易对手违约. 相关视频:Copula算法原理和R语言股市收益率相依性可视化分析 Copula算法原理和R语言股市收 ...

  3. matlab 求集中度,matlab代写使用Copula仿真优化市场风险数据VaR分析

    使用Copula建模相关默认值 此示例探讨了如何使用多因素copula模型模拟相关的交易对手违约. 鉴于违约风险敞口,违约概率和违约信息损失,估计交易对手组合的潜在损失.一个creditDefault ...

  4. 拓端tecdat荣获掘金社区入驻新人奖

    2021年7月,由掘金发起了"入驻成长礼"颁奖活动.本次活动邀请到知名开发者.服务机构代表等业界人士. 据了解,掘金社区"新入驻创作者礼"主要对已经积累了一定历 ...

  5. 拓端tecdat荣获2022年度51CTO博主之星

    相信技术,传递价值,这是51CTO每一个技术创作者的动力与信念,2022 年度,拓端tecdat 作为新锐的数据分析咨询公司,在51CTO平台上,不断的输出优质的技术文章,分享前沿创新技术,输出最佳生 ...

  6. 拓端tecdat|bilibili视频流量数据潜望镜

    最近我们被客户要求撰写关于bilibili视频流量的研究报告,包括一些图形和统计输出. 最新研究表明,中国有超过7亿人在观看在线视频内容.Bilibili,被称为哔哩哔哩或简称为B站,是中国大陆第二个 ...

  7. 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测

    最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...

  8. 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系

    最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...

  9. 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例

    最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...

  10. 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

    最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...

最新文章

  1. php无线分类函数,php 无限级分类函数
  2. 'pip' 不是内部或外部命令,也不是可运行的程序
  3. 关于浏览器跨域请求的相关原理实现--很经典的博客
  4. flink的savepoints和checkpoints以及state Query(暂时无法全部完成)
  5. 1.Excel业务分析数据
  6. mysql超过1W条查询不显示_mysql 被写入1W数据后无法select*from table,但是加入limit参数后可以查询...
  7. ZZULIOJ 1112: 进制转换(函数专题)
  8. 文字color颜色渐变(可一直变换) - 代码篇
  9. Android 8.0系统学习(19)--- SystemUI启动流程
  10. 推荐一个专业的正则表达试学习网站
  11. iOS开发--微信和支付宝网页支付(过审, 支付宝支付成功可回跳)
  12. Revel框架的搭建与部署教程
  13. Delphi Inputbox,InputQuery用法
  14. 初学larval 第一篇(大神绕道哦,针对新手友好的一篇)
  15. Android加速度传感器原理
  16. Axure 元件库-原型
  17. python中定义变量有引号和单引号_说说Python 单引号、双引号、三引号的区别?...
  18. pdf压缩的网站?pdf文件在线压缩?在线压缩pdf文件大小?pdf文档压缩,在线压缩pdf文件大小,压缩pdf大小的方法?
  19. html怎么写分享代码,怎么写一个文件分享网页?百度一键分享按钮HTML代码
  20. Ubuntu 安装出现 error vmlinuz has invalid signature 【或者】 mmx64.efi not found

热门文章

  1. 解决Discuz安装时报错“该函数需要 php.ini 中 allow_url_fopen 选项开启…”
  2. Knockout应用开发指南 监控属性(Observables)
  3. 六、基于UDP的服务器端/客户端
  4. classmethod自己定制
  5. 对volatile不具有原子性的理解
  6. Packet Tracer基本使用
  7. 阿里云推出香港高防IP服务 为中国企业出海安全护航
  8. 创建第二个 vlan network vlan101 - 每天5分钟玩转 OpenStack(96)
  9. 努力学习 HTML5 (4)—— 浏览器对语义元素的支持情况
  10. Chrome Firefox for Linux 直达下载链接