分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

R语言分析股票指数的GARCH效应

一、实验说明

1.1 实验内容

GARCH模型是对金融数据波动性进行描述的方法,为大量的金融序列提供了有效的分析方法,它是迄今为至最常用的、最便捷的异方差序列拟合模型。本次实验运用R语言利用上海证券综合指数进行GARCH模型的分析,包括计算股票指数的收益率,实现收益率的可视化 ,计算一些基本统计量,绘制股指收益率的ACF和PACF图,检验收益率序列的ARCH效应,估计GARCH模型以及标准化残差分析等。最终通过本次实验检验股票指数的GARCH效应,了解股票市场上的波动聚集效应。

1.2 实验知识点

  • 计算股票收益率
  • 股票指数的可视化
  • 求基本统计量
  • 绘制ACF图和PACF图
  • 检验序列的ARCH效应
  • GARCH模型的拟合
  • GARCH模型的标准化残差分析

1.3 实验环境

  • R version 3.4.1
  • Xfce终端

1.4 适合人群

本课程难度一般,属于中级级别课程,适合具有一定 R 语言经管背景基础的用户,在巩固 R 语言基础的同时逐渐深入学习用 R 进行金融计量建模,进行金融量化分析。

二、实验原理

GARCH是一种用过去的方差以及其的预测值来预测未来方差的自回归条件异方差时间序列模型。其中异方差指方差随时间变化而变化,即具有异方差性;条件性表示了对过去临近观测信息的依赖;自回归则描述了预测值与过去观测值联系的反馈机制。

该方程可以求出模型的条件期望,投资者投资者在交易中所得到的信息依赖于过去时刻的收益以及过去时刻预期收益和实际收益间的误差;根据该方程也可描述模型的条件方差,它不仅是滞后随机扰动项平方的线性函数也是滞后项条件方差的线性函数,表明了过去时刻的波动对未来价格波动有着正向缓解的影响,从而模拟了波动聚集性。

限制条件是冲击过程{ht}存在有限方差的充分必要条件,其值大小反映了序列波动的持续性,即序列在过去时刻波动的特征在当前时刻被继续波动的程度。

保证了条件方差序列是非负的。

三、实验准备

3.1 获取实验数据

在进行实验之前我们需要现将实验所需的数据下载到实验楼的实验环境中。

$ wget http://labfile.oss.aliyuncs.com/courses/900/000001.csv

注:由于本实验需要的 FinTS 这个程辑包从 CRAN 库中被移除了,所以这里需要我们进行离线安装,我们已经将程辑包下载下来上传到了实验平台

$ wget http://labfile.oss.aliyuncs.com/courses/900/FinTS_0.4-5.tar.gz

安装程辑包

sudo R CMD INSTALL /home/shiyanlou/FinTS_0.4-5.tar.gz

3.2 启动 R 并导入数据

sudo R   # 在Xfce中启动 R
data<-read.csv("000001.csv")   #导入上海证券综合指数的数据

3.3 下载程序包

本次实验所需要用到的 R 包有:tseriesFinTStimeDatetimeSeriesfBasicsfGarch 等,镜像依旧选择China (Lanzhou) [https]

install.packages("tseries")install.packages("timeDate")install.packages("timeSeries")install.packages("fBasics")install.packages("fGarch")

四、实验步骤

4.1 计算对数收益率

金融数据分析一般研究的是资产收益率,而不是资产的价格。资产收益率序列比一般的价格序列更容易处理,更具有研究意义。而资产收益率也有很多种定义,本次实验使用对数收益率,也就是对上海证券综合指数日收盘价格取对数差分。

close<-data[,2]          # 上证指数日收盘价n<-length(close)         # 获取数据的长度return<-log(close[2:n])-log(close[1:n-1])    # 上证指数的对数收益率head(return)             #查看 return 的前6行数据

当然也可以直接使用 diff 函数直接做差分求对数收益率。

return<-diff(log(close))head(return)

我们可以看到两个方法得出的结果是一致的。

4.2 股票指数的可视化

在绘制图形之前,我们需要先将数据转化为时间序列格式,需要用到 ts 函数。

用法:ts(数据向量,start=c(第一个数据所表示的年,月),frequency=表示将时间分开的时间间隔)。

Close.ts<-ts(close,start=c(2000),freq=250) Return.ts<-ts(return,start=c(2000),freq=250)par(mfrow=c(2,1))          #建立一个以两行一列排列图形的图形窗口plot(Close.ts,type="l",main="(a) Daily Closing Price of            000001.SH",xlab="Date", ylab="Price", cex.main=0.95,las=1)     plot(Return.ts,type="l",main="(b) Daily Rate of Return of       000001.SH",xlab="Date", ylab="Rate", cex.main=0.95, las=1)

type、main、xlab、ylab、cex.main、las都是图形参数

下图就是上海证券综合指数的日收盘价(上)和日收益率(下)的时序图。

从图形分析结果来看,2008 年和 2015 年两个时间段有明显的波动聚集现象。

4.3 股票收益率的基本统计量

在做模型拟合之前需要对数据做一个基本的了解,先求解数据的一些基本统计量。

library(tseries)u<-sum(return)/n                  # 求均值e<-sqrt(sum((return-u)^2)/(n-1))  # 求标准差s<-sum((return-u)^3)/((n-1)*e^3)  # 求偏度k<-sum((return-u)^4)/((n-1)*e^4)  # 求峰度jarque.bera.test(return)         # JB正态性检验

由实验结果我们可以得出上海证券综合指数的对数收益率的均值为 0.000196,标准差为 0.016129,偏度系数为 -0.246041,峰度系数为 7.678296,以及从正态性检验结果的 P 值接近于 0,也就是说上证指数日对数收益率不是正态分布,呈现左偏分布,且有高峰厚尾的现象。

4.4 ACF 图和 PACF 图

使用自相关函数(ACF)和偏自相关函数(PACF)来对收益率序列的自相关性进行分析。

par(mfrow=c(2,1))   acf(return,main='',xlab='Lag (a)',ylab='ACF',las=1) #画自相关图 title(main='(a) the ACF of Return',cex.main=0.95)  #为图形加标题,并设置标题大小pacf(return,main='',xlab='Lag (b)',ylab='PACF',las=1) #画偏自相关图   title(main='(b) the PACF of Return',cex.main=0.95)

由收益率序列(return)的 ACF 图和 PACF 图可以得出:两个图大部分函数值在置信区间内(图中蓝色虚线区域)上下跳跃,所以收益率序列自相关性很低,或者说具有很弱的自相关性,因此在条件期望模型中不需要引入自相关性部分,满足 GARCH 模型中的均值方程,收益率由一个常数项加上一个随机扰动项组成。

虽然收益率序列基本不具有自相关性,但是要拟合 GARCH 模型,我们还需要考察收益率平方的自相关性。

par(mfrow=c(2,1))  return.square<-return^2acf(return.square,main='',xlab='Lag (c)',ylab='ACF',las=1)               title(main='(a) the ACF of Return Square',cex.main=0.95)pacf(return.square,main='',xlab='Lag (d)',ylab='PACF',las=1)    title(main='(b) the PACF of Return Square',cex.main=0.95)

尽管股价收益率序列的 ACF 值揭示了其弱相关性,但收益率平方的 ACF 值 却表现出了一定的相关性和持续性,其大部分值都超过了置信区间(图中蓝色虚线)。注意到收益率平方的 ACF 值在滞后 3、10、21、30 期后都有缓慢衰退,说明了方差序列具有一定程度的序列相关性,因此采用 GARCH 模型来描述股价波动过程中的条件方差。

4.5 ARCH 效应的检验

收益率的时序图表明,在日收益率数据中可能存在 ARCH 效应,如果存在 ARCH 效应,则可以进行 GARCH 模型的拟合。反之,不能用 GARCH 模型拟合方程。

ARCH 效应的检验,可以用FinTS包中的LM 检验,具体用法如下:

library(zoo)library(FinTS)   #LM检验ArchTest(return,lag=12)  #滞后 12 期

检验的原假设是:不存在 ARCH 效应。检验结果为卡方统计量的值为389.3,对应的 P 值几乎为0,也就是说在 1% 的显著性水平上拒绝原假设,从而拒绝不存在 ARCH 效应的假设,收益率序列存在 ARCH 效应,可以进行 GARCH 模型的拟合。

4.6 GARCH 模型的估计

GARCH(1,1)是 GARCH 模型中最常用的一种,也是最适于金融时间序列的建模的模型。我们使用fGarch包中提供的garchFit 函数来拟合 GARCH 模型。

library(timeDate)library(timeSeries)library(fBasics)library(fGarch) m1<-garchFit(~1+garch(1,1),data=return,trace=F) #拟合GARCH(1,1)模型summary(m1)    #显示模型的详细拟合结果

根据实验结果,我们可以得到的拟合模型为:

括号中为t统计量,可以看到所有系数在0.05的显著水平下显著地异于零,说明上证指数收益率过去时刻的波动大小对当前波动大小有明显的影响,具有波动聚集效应。此外约等于1,说明条件方差序列具有长记忆性,表明了收益率的波动具有较高的持续性,投机因素较强,总体风险较大。

拟合了GARCH(1,1)模型之后,为了查看它是否是最佳拟合模型,同时拟合GARCH(1,2)、GARCH(2,1)、GARCH(2,2)模型,并运用信息准则来选择最优模型。

m2<-garchFit(~1+garch(1,2),data=return,trace=F) #拟合GARCH(1,2)模型m3<-garchFit(~1+garch(2,1),data=return,trace=F) #拟合GARCH(2,1)模型m4<-garchFit(~1+garch(2,2),data=return,trace=F) #拟合GARCH(2,2)模型summary(m1)summary(m2)summary(m3)

注意:这三个模型详细结果太多,这里不再详细展示,只提取了各个模型的信息准则的值,展示在下表中

  AIC BIC SIC HQIC
m1 -5.703618 -5.697635 -5.703620 -5.701503
m2 -5.703332 -5.695853 -5.703335 -5.700689
m3 -5.703471 -5.695992 -5.703474 -5.700828
m4 -5.703097 -5.694123 -5.703101 -5.699926

由信息准则的值可以看出,拟合的 4 个 GARCH 模型的 AIC、BIC、SIC、HQIC 的值,发现随着参数增加,模型的AIC,BIC等的值并没有显著增加。理论上选择最简洁的模型GARCH(1,1)建模最合适。

4.7 GARCH 模型的标准化残差分析

在拟合完 GARCH 模型之后,我们对模型结果的残差进行分析。

resi<-residuals(m1,standardize=T)   #获得标准化残差res<-ts(resi,frequency=250,start=c(2000)) plot(res,xlab='Date',ylab='st.resi',type='l')par(mfcol=c(2,2))acf(resi,lag=24)acf(resi^2,lag=24)pacf(resi,lag=24)pacf(resi^2,lag=24)

上图是残差序列的时序图,可以看到残差序列没有明显的波动聚集效应。

上图是残差和残差平方的自相关图和偏自相关图。可以看到残差序列的 ACF 和 PACF 图大部分函数值在置信区间内(图中蓝色的虚线区域)上下跳跃,所以标准化残差序列并不具有自相关性,或者具有一定的弱相关性(PACF 图结果)。而残差平方序列的 ACF 和 PACF 图都没有明显的拖尾或截尾现象,所有函数值都在置信区间内,因此其不具序列相关性。再将标准化冲击平方的ACF值与收益率平方的ACF值进行比较,结果表明 GARCH 模型可以有效地解释收益率序列。

Box.test(resi^2,lag=10,type='Ljung')  #残差平方的滞后10阶自相关检验Box.test(resi^2,lag=15,type='Ljung')  #残差平方的滞后15阶自相关检验Box.test(resi^2,lag=20,type='Ljung')  #残差平方的滞后20阶自相关检验

Ljung-Box 自相关检验的原假设是序列中不存在自相关。对标准化残差平方用进行 Ljung-Box 方法进行检验在 0.05 的显著水平下,滞后项为为 10,15,20 时分别得到的 P 值分别为:0.9814,0.9094,0.9618,不能拒绝原假设,可接受原假设,标准化残差平方不存在序列相关性。

五、实验总结

通过本次实验学会运用R语言对金融数据进行 GARCH 模型的建模分析。学会如何获得股票的收益率,并以图形的方式展示出来 ,学会计算数据的一些基本统计量,绘制与解读 ACF 和 PACF 图,检验金融时间序列的 ARCH 效应,拟合 GARCH 模型以及对模型结果进行标准化残差分析。在巩固原有的 R 语言基础的同时,逐渐学会金融计量建模。

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

R语言分析股票指数的GARCH效应相关推荐

  1. r语言pls分析_零基础学习R语言分析GEO

    关于零基础用R语言分析GEO的视频已更新完,发布在B站,有兴趣的小伙伴可以移驾到B站,我的B站号:I_am_Becky 之前录制过一系列关于零代码分析GEO数据的,但是这样画出来的图太low了,所以学 ...

  2. 【视频】主成分分析PCA降维方法和R语言分析葡萄酒可视化实例|数据分享

    最近我们被客户要求撰写关于主成分分析PCA的研究报告,包括一些图形和统计输出.降维技术之一是主成分分析 (PCA) 算法,该算法将可能相关变量的一组观察值转换为一组线性不相关变量.在本文中,我们将讨论 ...

  3. 如何用r语言分析数据

    如果要使用 R 语言分析数据,通常需要以下步骤: 导入数据:可以从多种格式的数据文件(如 CSV,Excel 等)中导入数据,并将其存储为 R 中的数据框(data.frame). 数据清理:检查数据 ...

  4. 使用R语言分析世界幸福指数

    使用R语言分析世界幸福指数 本文中的数据为2019年的世界幸福指数报告,数据来源于kaggle. 数据详情 数据包含9个字段: Rank: 排名 Country or Region: 国家或地区 Sc ...

  5. r语言实现sem_R-SEM-paper(R语言分析结构方程模型).pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp行业软件 R-SEM-paper(R语言分析结构方程模型).pd ...

  6. R语言分析蛋白质组学数据:飞行时间质谱(MALDI-TOF)法、峰值检测、多光谱比较...

    全文链接:http://tecdat.cn/?p=30051 •研究生物体产生的全部蛋白质. • Foci:鉴定.结构测定.生物标志物.通路.表达(点击文末"阅读原文"获取完整代码 ...

  7. 【视频】KMEANS均值聚类和层次聚类:R语言分析生活幸福指数可视化|数据分享...

    原文链接:http://tecdat.cn/?p=24198 聚类是将总体或数据点划分为多个组的任务,以使同一组中的数据点与同一组中的其他数据点更相似,而与其他组中的数据点不相似.它基本上是基于它们之 ...

  8. R语言-2*2卡方检验与效应量

    基础情境 一个任务有两个选项,多个不同年龄被试对此做出决策,获得两个年龄段选择两个选项的频次: 年龄 3-4 5-6 选项A 22 10 选项B 45 66 通过卡方检验对此进行分析,对应效应量指标为 ...

  9. R语言标准普尔500指数Garch(1,1)模型

     一.例3.3 标准普尔500指数的月超额收益率,从1926年开始,共792个观察值,如图所示.记rt为超额收益率,rt的样本ACF和rt2的样本PACF .在间隔为1,3时有少许序列相关性,但主 ...

  10. 教你用R语言分析招聘数据,求职/转行不求人~(附代码、数据集)

    来源:R语言中文社区 作者:Joffy Zhong 本文共4500字,建议阅读8分钟. 本文针对招聘网站的数据分析岗位的数据进行分析与挖掘实战. 项目背景 在学习数据分析的路上,少不了经常逛知乎,这也 ...

最新文章

  1. Python进阶之递归函数的用法及其示例
  2. 利用Bash给Linux服务器增添色彩
  3. 语音识别技术迎风发展,未来五年规模将近300亿
  4. python编程入门t-python高级编程——入门语法(一)
  5. 特性(property)
  6. tablestore换mysql_mysql数据迁移到tablestore
  7. linux 开启新端口号,linux 查看端口,开启新端口
  8. 单例设计模式-懒汉式(线程安全)
  9. 建议收藏!数据中台行业发展概况及展望
  10. 工商银行黄金开户问答题答案
  11. php larve,封装composer包,实现thinkphp、larverl、yii框架中使用(使用框架实现回调方法)...
  12. 支付宝WAP支付接口开发
  13. Profibus DP新总结
  14. linux忘记root密码,单用户模式修改密码
  15. 试图加载不正确的程序。(异常来自HRESULT:0x8007000B)的处理方式
  16. android实现地图功能实现,Android快速实现地图功能(不仅快!而且小!)
  17. 解决error ‘XXX‘ is not defined no-undef且项目没有eslintrc.js文件问题
  18. moment通过时间戳获取星期几
  19. 人工智能处理的几大基础任务、元宇宙和人工智能
  20. 将三维模型(obj)导出js格式供threeJS中调用

热门文章

  1. 2022系统分析师--案例必备知识点汇总
  2. 5款伊思儷超媒體繁体游戏 中文简体补丁
  3. uniapp微信小程序实现对地图多点或单点标记(@莫成尘)
  4. 硬核干货,史上最强获取GitHub所有仓库内容数据分析教程
  5. OpenGL3D场景大作业制作
  6. 学习vue之前应该有哪些基础知识
  7. World中利用宏命令批量删除页眉和页脚
  8. ethtool如何让接口闪灯_如何使用ethtool命令操作以太网卡
  9. 《触动人心设计优秀iphone应用》读后感
  10. 切蛋糕java题,【算法•日更•第六期】头脑风暴:洛谷P1528 切蛋糕题解