一、知识点介绍

1.1 历史模拟法

我们在之前有用到Delta-Normal的GARCH和RiskMetrics方法来计算VaR和ES,假设的是残差满足正态分布,对残差进行二次相关序列的建模并拟合残差,能够得到未来的预测值。而这里说的历史模拟法和蒙特卡罗模拟法跟上面有点不太一样,所基于的前提跟GARCH和RiskMetrics方法认为残差存在着二次自相关不同,本节所涉及到的两种方法也是认为历史可以预测未来(即趋势存在着一定的平稳性),历史模拟法认为历史的分布和未来的分布是一致的,因此历史所计算出来的VaR和ES可以用来代替未来的VaR和ES。有点像电影《土拨鼠之日》不断重复的一天。

1.2 蒙特卡罗模拟法

跟历史模拟法不同,蒙特卡罗模拟法认为的是标准化残差是满足某种分布的(比如说学生t分布),它跟《土拨鼠之日》有些不同,并不是每天的简单重复,有点类似于《楚门的世界》,每天都会有向前一点点的变化,而在这个波动率的变化当中,这里的一点点变化就是标准化残差沿着学生t分布在变动。在这里我有必要解释下标准化残差的概念,其实一开始对这个概念也是糊里糊涂的,但是后来看到代码的实现,其实发现跟标准化正态分布的数据点有点类似。实际上我们在刻画残差的时候,假设说没有其他无关的扰动,数据的数值变动(也就是残差)是完全遵循我们模型算出来的总体标准差sigma的变动的,如果是正态分布,我们应该能看到所有数据点都整整齐齐排在正态分布的曲线上(注意跟数据点出现的顺序无关,并且样本要足够大),但实际上不可能这么理想,本身模拟出来sigma也要变动,并且这个变动(err)我们假设是满足t 学生分布的,那么残差=sigama * err,这里的err是均值为0,标准差为1,自由度为df的标准的t分布,相当于t分布的err其实是一个标准,sigma*err相当于是一个线性的作用(思考利率一定的情况下,本金越多,收益当然越大)。

我们绘制一下自由度为4的t分布图。

curve(dt(x,df=4),from=-3, to=3, las='1', main='t distribution', cex.main=0.8)

二、数据处理

2.1 历史模拟法

2.1.1 读取数据

dd

head(dd)#打印出前几行看一看

dim(dd)#看看data的维度请款

输出结果

输出结果

输出结果

从返回的结果来看,数据一共有7列,有1258行。

接下来,我们以收盘价计算出收益率的大小,同样是对数取差。

dd

head(dd)#打印出前6行看看结果

2.1.2 计算VaR值

#接下来我重新命名下改为loss,并每个值都转换成百分比的值

loss

#计算置信水平为95%的分位数

VaR

接下来我们知道了单日VaR的值是2.072488%,也就是在95%置信水平下的波动率不会超过这个值,这个是单日的,如果是多日的,则要乘以sqrt(T),然后再乘以投资金额就可以了。当然也可以用5天为一个滚动窗口,求平均值以及求这个5天窗口形成的数据的分位数VaR值,这样就不用乘以sqrt(T),但结果应该是有差别的。

2.1.3 计算ES值

ES是指当损失大于VaR以后的损失均值,因此我们通过排序把95%置信区间以后的最大数筛选出来,然后求算术平均就可以了。

sloss

ES

ES

所计算的单日头寸ES为2.942944%。

2.2 蒙特卡罗模拟法

我们接下来试着用代码来建模预测

步骤如下:

建立GARCH模型,预测出均值和方差方程

进行蒙特卡罗模拟

其中蒙特卡罗模拟计算VaR和ES的方法思路如下:

最终得到的数据点分布还是按照之前的95%分位点的方法去取得VaR以及计算尾部均值ES。

2.2.1 建立GARCH模型

在这里我们加多一个参数distribution.model='std'表明标准化残差是满足t分布的。

spec3

#拟合模型

fit3

#查看模型的拟合结果

show(fit3)

输出结果

我们之后还要用到这些参数来计算当天的方差->经过标准化t 学生分布转化后的残差->计算出当天的损失率的值->计算出5天损失率的总和

我们先把这些参数都存储起来

mu

alpha

beta

df

#从拟合结果当中提取历史波动率

sig

2.2.2 进行蒙特卡罗模拟

接下来要初始化一开始的数据值

#设置天数为一周,也就是5天

t

#迭代次数

nround

#设置随机性,这样你再重新运行代码也是相同的满足随机分布的数字

set.seed(42)

#生成t分布的一个矩阵,行为天数,列为迭代次数

err

#设置迭代的起始点,取历史数据的最后一行,包括数据点和标准差

init

#初始化x_t为空值

xt

输出结果

#以init为起点,进行nround轮迭代

for (j in 1:nround){

lt

at

vart

for (i in 1:t){

var

vart

at

lt

}#此循环结束后,得到未来5期的损失变量序列的一次模拟值lt

xt

}#此循环结束后就得到5期损失变量总和的3000次模拟值

输出结果

#计算VaR值

VaR2

#计算ES

sxt

ES2

VaR2

ES2

idxVaR2]#筛选出大于VaR2值的索引

ES3

ES3

以另外一种方法打印出ES的均值与排列后的尾部均值是一致的,说明结果比较靠谱。

结果表明,用蒙特卡罗模拟法得到一周的VaR值和尾部均值ES为4.376929%和5.841472%。也就是说在95%的置信水平下,未来一周最大损失率不超过4.376929%,万一发生95%外的损失均值为5.841472%。

三、总结

本文介绍了历史模拟法和蒙特卡罗模拟法计算VaR和ES的实现,历史模拟法比较好理解,但是蒙特卡罗模拟法的流程需要花点心思研究下,并且不同模型的前提是不同的,要关注模型成立的前提条件决定使用什么样的模型。

参考资料

matlab历史模拟法计算var,历史模拟法、蒙特卡罗模拟法计算VaR和ES值相关推荐

  1. 【Python量化】VaR在险价值的计算

    文章目录 一.VaR的定义 二.计算单一资产的VaR 2.1 数据概况 2.2 方差-协方差法 2.3 历史模拟法 2.4 蒙特卡罗模拟法 三.计算资产组合的VaR 3.1 数据概况 3.2 方差-协 ...

  2. 新科技快速指南系列之“量子计算”:历史、现在与未来

    来源:36Kr 摘要:当计算机变更小或者变更快时,就会发生下一个大事件(Big Things).量子计算的出现,是为了追求技术史上最大的性能提升. 当计算机变更小或者变更快时,就会发生下一个大事件(B ...

  3. 从中国封建历史的发展来理解云计算、雾计算、边缘计算以及云原生之间的关系

    前言 互联网的快速发展,带来了一大批新的名词,这次名词的更新换代的速度也是快的惊人,往往一波未平一波又起,使得大家不能墨守成规,必须不断学习才能赶得上科技和技术的发展潮流. 计算机行业更是如此,可能真 ...

  4. 《计算机科学概论》—第1章1.2节计算的历史

    本节书摘来自华章出版社<计算机科学概论>一书中的第1章,第1.2节计算的历史,作者[美]内尔·黛尔(Nell Dale)约翰·路易斯(John Lewis),更多章节内容可以访问云栖社区& ...

  5. matlab蒙特卡罗方法求体积_实验二-蒙特卡罗方法计算三维体积

    班级: 学号: 姓名: 实验时间: 2014 年 月 日 实验 项目 实验二 蒙特卡罗方法计算三维体积 所属 课程 数学实验 实 验 目 的 了解蒙特卡罗方法的原理,掌握随机数使用技术. 实 验 内 ...

  6. python 在险价值_Python计算股票投资组合的风险价值(VaR)

    在开始之前,请注意,标准VaR计算假定以下条件: 收益的正态分布 -VaR假设投资组合的收益是正态分布.对于大多数资产而言,这当然是不现实的,但允许我们使用更为简单的计算来制定基准. (可以对VaR进 ...

  7. python 对比matlab_全面对比 MATLAB、Julia、Python,谁在科学计算中更胜一筹?

    原标题:全面对比 MATLAB.Julia.Python,谁在科学计算中更胜一筹? 数百种编程语言,各有优劣,各自也都有自己最为适用的场景.那么就科学计算领域而言,主流的 MATLAB.Julia.P ...

  8. python计算和差积商_Python计算股票投资组合的风险价值(VaR)

    原文链接:http://tecdat.cn/?p=17758​tecdat.cn 什么是风险价值(VaR)? 风险价值(VaR)用于尝试量化指定时间范围内公司或投资组合中的财务风险水平.VaR提供了一 ...

  9. 微信小程序搜索,搜索历史,清除搜索历史,以及点击搜索历史实现搜索功能

    微信小程序搜索,搜索历史,清除搜索历史,以及点击搜索历史实现搜索功能 热搜内容一般从接口遍历的,实现方法基本和搜索历史差不多 wxml页面 <view class="search-he ...

最新文章

  1. C语言数组测试函数,(完整word版)C语言数组与函数阶段测试题答案---(20200807070313)(8页)-原创力文档...
  2. Windows Phone 8 开发资源汇总
  3. SAP PO相关打印编程
  4. (转)Shell中获取字符串长度的七种方法
  5. 网易云音乐喊话酷狗称其“耍猴”:专利文件与“跟听”毫无关系
  6. C++socket编程(一):绪论
  7. 毕业设计(十七)---发表文章(3)之- 使用ckeditor上传图片(flash)
  8. 金税盘组件接口调用方法
  9. 汇编语言指令大全(详细)
  10. json格式的字符数据转换成map格式
  11. 多线程小题 —— 设计火车票模拟程序
  12. QSS设置字体透明度
  13. android 脚本发短信,Android使用Intent发送短信的实现方法
  14. Chrome保存的知乎网页,本地打开后闪频刷新问题处理
  15. 十万部冷知识:“澳大利亚”为什么属于亚洲球队?
  16. SRS4.0源码分析-序言
  17. 白平衡之灰度世界算法
  18. eap方法 华为手机怎么连wifi_怎样为WLAN选择最佳的EAP?
  19. 规模化敏捷DevOps专业人士认证(SDP)
  20. homeassistant+broadlink

热门文章

  1. 关于《学编程,还有必要上大学吗? 》
  2. 写给大家看的CSS书,写给大家看的设计书
  3. java绘制聊天气泡代码_封装一个canvas画对话气泡的函数
  4. 谷粒商城基础篇------商品服务 - 三级分类(gulimall-product:pms_category表)
  5. 【kettle抽取Orecle/Mysql数据至HDFS】诸如‘\u0001’等特殊分隔符表示法
  6. 练习3-2,编写一个函数escape(s,t),将字符串t复制到字符串s中,并在复制过程中将换行符、制表符等不可见字符转换为\n、\t等相应的可见的转义字符序列。要求使用switch语句。
  7. 港股通会成资金外流黑洞?伪逻辑不值一驳
  8. arcengine 加载地图不显示_ArcEngine加载地图
  9. 苹果打字怎么换行_苹果手机回车键是哪个
  10. 一分钟带你了解全链路测试