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

R语言分析股票指数的GARCH效应R 语言分析股票指数的 GARCH 效应一 实验说明 1 1 实验内容 GARCH 模型是对金融数据波动性进行描述的方法 为大量的金融序列提供了有效的分析方法 它是迄今为至最常用的 最便捷的异方差序列拟合模型 本次实验运用 R 语言利用上海证券综合指数进行 GARCH 模型的分析 包括计算股票指数的收益率 实现收益率的可视化 计算一些基本统计量 绘制股指收益率的 ACF 和 PACF 图 检验收益率序列的 ARC

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

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.,峰度系数为 7.,以及从正态性检验结果的 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^2 acf(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. -5. -5. -5.
m2 -5. -5. -5. -5.
m3 -5. -5. -5. -5.
m4 -5. -5. -5. -5.

由信息准则的值可以看出,拟合的 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 语言基础的同时,逐渐学会金融计量建模。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207280.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午2:10
下一篇 2026年3月19日 下午2:10


相关推荐

  • 在线作图|2分钟做Lefse分析「建议收藏」

    在线作图|2分钟做Lefse分析「建议收藏」​Lefse分析Lefse(LDAEffectSize)分析是一种用于发现和解释高维度数据的基因、通路和分类单元相关等生物标识的分析工具,通常可以进行两个或多个分组的比较,能够找出组与组之间有差异的生物标识。在微生物多样性分析中,Lefse可用来分析微生物的组间差异,如菌群差异等等。TUTUCLOUD云平台提供在线做Lefse分析的工具,可获得LDA值分布柱状图以及特征表。TUTU网站工具使用小编给大家介绍一个在线作图工具,lefse分析方法如下:①登录网址:www.cloudtutu.com

    2022年4月30日
    77
  • 树莓派4B连接WIFI教程

    树莓派4B连接WIFI教程树莓派4B连接连接WIFI教程你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计,将会带来全新的写作体…

    2022年5月13日
    139
  • 网络正常,浏览器显示代理服务器没有响应怎么办?

    网络正常,浏览器显示代理服务器没有响应怎么办?问题描述 网络正常 浏览器显示代理服务器没有响应 如下图所示 解决方案 打开控制面板 rightarrow 网络和 Internet rightarrow Internet 选项 rightarrow 链接 rightarrow 局域网设置 rightarrow 取消为 LAN 使用代理服务器前面的对号 这样网络就恢复了 downarrow

    2026年3月17日
    2
  • NOIP2013 花匠解题报告

    NOIP2013 花匠解题报告题目描述花匠栋栋种了一排花 每株花都有自己的高度 花儿越长越大 也越来越挤 栋栋决定把这排中的一部分花移走 将剩下的留在原地 使得剩下的花能有空间长大 同时 栋栋希望剩下的花排列得比较别致 具体而言 栋栋的花的高度可以看成一列整数 1 2 n 设当一部分花被移走后 剩下的花的高度依次为 g1 g2 gm 则栋栋希望下面两个条件中至少有一个满足 条件 A 对

    2026年3月18日
    2
  • 【AI基础学习系列】四、Prompt基础知识

    【AI基础学习系列】四、Prompt基础知识

    2026年3月15日
    4
  • 无偏估计(Unbiased Estimator)「建议收藏」

    无偏估计(Unbiased Estimator)「建议收藏」无偏估计是参数的样本估计量的期望值等于参数的真实值。一个简单的例子(https://www.zhihu.com/question/22983179/answer/23470969):比如我要对某个

    2022年8月2日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号