R语言MCMC-GARCH、风险价值VaR模型股价波动分析上证指数时间序列
全文链接:http://tecdat.cn/?p=31717
原文出处:拓端数据部落公众号
分析师:Ke Liu
随着金融市场全球化的发展,金融产品逐渐受到越来越多的关注,而金融产品的风险度量成为投资者最关心的问题。金融风险是指由于经济活动的不确定性、市场环境的变化、决策的失误等因素的影响,导致实际回报与预期回报出现偏离的可能性。
VaR通过建立系统分析方法定量化分析风险,可以评估复杂的金融产品、反映风险的敏感,在合理的范围内规避风险,是量化市场风险行之有效的工具。文章将帮助客户采用风险价值VaR模型定量刻画风险,研究符合模型特点的求解方法,基于VaR模型对股价指数时间序列进行建模分析,科学评估风险的预期损失,避免由于高估或低估风险而带来投资的决策失误,从而对制定政策、维护市场稳定、监管金融机构等方面提供了必要保证。
解决方案
任务/目标
根据股票价格指数时间序列数据进行建模分析,对金融市场的波动进行分解与预测,比较不同估算方法的适用程度。
数据的处理与检验
以上海证券股价综合指数作为总体研究目标,选取2015年1月至2020年1月的每日收盘价序列作为样本数据集,共1220个价格数据构成金融时间序列,数据获取来源为上海证券交易所网站。
由于股票价格的非负性,我们采用取对数的方法处理上证综指的收盘价Ct,然后进行一阶差分,得到收益率序列Yt,再进行描述性分析与检验,计算公式如下:
基于 MCMC-GARCH 模型估计结果及检验
在本次实证分析中,利用 MCMC算法,随机生成两条马尔科夫链,分别对两条链进行抽样,以确保参数是从平稳分布中进行估计。
MCMC算法下所要拟合的GARCH(1,1)模型为:
利用贝叶斯MCMC 方法对 GARCH(1,1)模型进行未知参数估计。在随机抽样过程中,分别模拟了两条马尔科夫链。首先在R中进行迭代3000次,使用方差比法判断收敛效果,各个参数的方差比为,各个方差比均约为1,,说明收敛情况良好。迭代轨迹图如图所示:
利用上证综指收益率序列的后半部分数据对正态分布下MCMC-GARCH(1,1)模型的参数估计结果如下:
表 基于正态分布的MCMC--GARCH(1,1)模型系数的估计
估计值 | 标准误 | 95%置信区间 | |
---|---|---|---|
α0 | 0.03338 | 0.01792 | (0.01101,0.08155) |
α1 | 0.09913 | 0.03522 | (0.04546,0.18589) |
β1 | 0.89197 | 0.03467 | (0.81061,0.94656) |
即MCMC-GARCH(1,1)模型的方差方程为:
分析比较
利用上证综指序列的后半部分样本数据分别对ML与MCMC方法的拟合误差进行度量,各指标的值如下:
ML与MCMC方法在样本期内的拟合误差度量指标
MSE1 | MSE2 | MAE1 | MAE2 | QLIKE | R²LN | |
---|---|---|---|---|---|---|
ML | 9.234095 | 5657.991 | 1.123257 | 11.74841 | 9.69528 | 0.5750861 |
MCMC | 8.707486 | 5628.328 | 1.110572 | 11.85487 | 5.852641 | -0.01556125 |
从上表可以看出,基于贝叶斯框架下MCMC算法得到各项拟合误差度量指标要小于极大似然估计方法得到的误差度量指标,说明MCMC-GARCH模型拟合效果要优于ML-GARCH模型得到的拟合结果,接下来对上证综指收益率标准化残差的自相关图,可以从图看出,标准化后的绝大部分残差序列值在置信区间内,对比图可以判断,MCMC-GARCH模型将样本序列中的异方差信息较完整的提取了出来,说明基于MCMC估计的GARCH模型效果更优。
MCMC-GARCH(1,1)模型平方残差自相关图
VaR 模型的建立与预测
又前文已知VaR模型的基本原理,记:
由上文所得,上证综指收益率序列后半部分数据的均值为0.005626654,所以得VaR模型为:
因此在ML和MCMC下分别为:
取上证综指收益率序列的后半部分数据对波动率序列进行预测,分别用ML-GARCH和MCMC-GARCH计算VaR,在95%的置信水平下得到如下值:
基于ML和MCMC方法的VaR值
中位数 | 均值 | 标准差 | |
---|---|---|---|
ML | 1.7016 | 1.9666 | 1.319663 |
MCMC | 1.8348 | 2.3139 | 1.249384 |
通过上表可知,基于ML-GARCH和MCMC-GARCH计算的VaR值有一定的差别,基于MCMC-GARCH计算的VaR值更高、标准差更低。
两种方法拟合的时序图如下:
基于ML和MCMC方法的VaR时序图
关于作者
在此对Ke Liu对本文所作的贡献表示诚挚感谢,她毕业于中南财经政法大学经济统计学专业,擅长金融时间序列数据分析与预测等。
最受欢迎的见解
4.R语言中的马尔科夫机制转换(Markov regime switching)模型
5.python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题
8.R语言几何布朗运动 GBM模拟股票价格优化建立期权定价概率加权收益曲线可视化
R语言MCMC-GARCH、风险价值VaR模型股价波动分析上证指数时间序列的更多相关文章
- 【机器学习与R语言】7-回归树和模型树
目录 1.理解回归树和模型树 2.回归树和模型树应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高模型性能 1.理解回归树和模型树 决策树用于数值预测: 回归树:基于到达 ...
- R语言实现SOM(自组织映射)模型(三个函数包+代码)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- SOM自组织映射神经网络模型 的R语言实现 笔 ...
- R语言实战(五)方差分析与功效分析
本文对应<R语言实战>第9章:方差分析:第10章:功效分析 ================================================================ ...
- R语言和数据分析十大:购物篮分析
提到数据挖掘,我们的第一个反应是之前的啤酒和尿布的故事听说过,这个故事是一个典型的数据挖掘关联规则.篮分析的传统线性回归之间的主要差别的差别,对于离散数据的相关性分析: 常见的关联规则: 关联规则:牛 ...
- R语言学习-(金融数据获取和简单的分析)
利用R语言中的quantmod包和fBasics对股票数据的获取和简要的分析, 通过获取的数据进行典型图像绘制,使用JB正态性检验来检验是否服从于正态分布. 前提概要:quantmod 包默认是访问 ...
- 【机器学习与R语言】13- 如何提高模型的性能?
目录 1.调整模型参数来提高性能 1.1 创建简单的调整模型 2.2 定制调整参数 2.使用元学习来提高性能 2.1 集成学习(元学习)概述 2.2 bagging 2.3 boosting 2.4 ...
- 【机器学习与R语言】12- 如何评估模型的性能?
目录 1.评估分类方法的性能 1.1 混淆矩阵 1.2 其他评价指标 1)Kappa统计量 2)灵敏度与特异性 3)精确度与回溯精确度 4)F度量 1.3 性能权衡可视化(ROC曲线) 2.评估未来的 ...
- 【转】R语言知识体系概览
摘要:R语言的知识体系并非语法这么简单,如果都不了R的全貌,何谈学好R语言呢.本文将展示介绍R语言的知识体系结构,并告诉读者如何才能高效地学习R语言. 最近遇到很多的程序员都想转行到数据分析,于是就开 ...
- R语言中文社区历史文章整理(类型篇)
R语言中文社区历史文章整理(类型篇) R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterpl ...
- 大数据时代的精准数据挖掘——使用R语言
老师简介: Gino老师,即将步入不惑之年,早年获得名校数学与应用数学专业学士和统计学专业硕士,有海外学习和工作的经历,近二十年来一直进行着数据分析的理论和实践,数学.统计和计算机功底强悍. 曾在某一 ...
随机推荐
- day06-动态SQL语句
动态SQL语句 1.基本介绍 官方文档 mybatis – MyBatis 3 | 动态 SQL 为什么需要动态SQL? 动态SQL是MyBatis的强大特性之一 使用 JDBC 或其他类似的框架,根 ...
- LeetCode-1219 黄金矿工
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/path-with-maximum-gold 题目描述 你要开发一座金矿,地质勘测学家已经探明了这 ...
- Centos7 MyCat2 安装部署
部署MyCat2 之前需要搭建好数据库的主从,详看文档:mysql 主次数据库搭建 官网:http://www.mycat.org.cn/ 官方文档: https://www.yuque.com/cc ...
- Centos 6.5 iptables 端口白名单设置
iptables -I INPUT -p tcp --dport 8888 -j DROPiptables -I INPUT -s 10.9.145.101 -p tcp --dport 8888 - ...
- Springboot 拦截器的配置
在Springboot项目中添加拦截器,分两步: 1:创建一个拦截器类 2:配置拦截器 以上步骤完成就可以使用了,下面来添加拦截器: 1:创建一个拦截器类 MyInteceptor 继承 Handle ...
- TensorFlow中的Variable 变量
简单运用 这节课我们学习如何在 Tensorflow 中使用 Variable . 在 Tensorflow 中,定义了某字符串是变量,它才是变量,这一点是与 Python 所不同的. 定义语法: s ...
- webpack5基础用法2
webpack的基础用法2 webpack的优化方向 提升开发体验 提升打包构建速度 减少代码体积 优化代码运行性能 SourceMap 生成一个.map文件,形成一个映射, 可以通过错误找到源文件 ...
- gitlab-CICD共享runner基本配置
gitlab-CICD共享runner基本配置 使用docker部署runner 多个项目使用共享runner 部署机器与runner不在同一台服务器上(使用ssh部署) 部署runner 部署镜像 ...
- [Linux系统]安装时出现Requires: libc.so.6(GLIBC_2.17)(64bit) Requires: systemd Requires: libstdc++.so时解决办法
yum install glibc.i686 yum list libstdc++*
- express的使用:数据库相关(三)
1.定义:用来组织,存储和管理数据的仓库 2.分类 a.MySQL(最广泛,流行度最高,community+enterprise),关系数据库,SQL数据库 b.Oracle (收费),关系数据库,S ...