ARCH模型和GARCH模型实证分析及R语言实现

论坛 期权论坛 期权     
期权匿名问答   2022-3-6 08:09   12609   0
4.1模型介绍——ARCH模型和GARCH模型
4.1.1模型背景介绍  
通常,在传统经济计量模型的假定中,误差项的方差保持不变的,即方差不是随时间的改变而发生变化的,而是依赖于过去误差的大小。在金融和经济市场的通货膨胀模型、利率模型以及期货价格模型等经常呈现出其方差是时变的,而且误差项的通常表现为大的误差与小的误差成群出现的情况,即大的波动后面倾向于跟着一个大的波动,而小的波动后面倾向跟着一个小的波动,波动呈现出所谓的聚集性效应,那么一般的传统经济计量模型就不能很好的解决这一类问题。
为了很好的解决这种异方差的情况,恩格尔(R.F.Engle.l982)在1982年提出了ARCH模型(自回归条件异方差模型),该模型能够较精确地描述方差易变和丛集性时序变量的变化规律,特别是用于描述金融资产的价格行为时,具有很好的解释能力。由于该模型的有效性和实用性,使得越来越多的学者对该模型进行研究,并取得了比较好的成果。比较显著的就是1986年,TimBollerslev在R.F.Engle的ARCH模型基础上提出了GARCH模型(广义自回归条件异方差模型)。GARCH模型在ARCH模型的基础上进行推广,使得该模型应用的范围更广,本文根据实际问题确定使用GARCH模型,GARCH模型的基本思想是主要有以下两点:一是GARCH模型的随机误差项虽然不存在序列相关性,但也不是独立的;二是GARCH模型随机误差项之间的依赖性可以由其滞后变化量的简单二次函数来描述。本文选择GARCH模型对人民币汇率的波动性进行分析,下面对ARCH和GARCH这两个模型进行介绍。
4.1.2 ARCH(p)模型
R.F.Engle.在1982年为了刻画条件方差的波动集群性提出了ARCH模型(自回归条件异方差模型)主要由两部分构成,一是均值模型,二是方差方程模型。ARCH(p)模型的概念指的是如果一个平稳随机变量可以表示为自相关AR(p)的形式,那么该模型的随机误差项 的方差 可用误差平方 的P阶分布滞后模型描述。ARCH(p)模型的表达式如下所示:


虽然ARCH(p)模型能够解决传统模型不能解决的残差的异方差特性,但其仍然存在一些缺陷,主要有以下四个方面:一是ARCH(p)模型在实际的应用中,为了使得拟合效果较好就需要较大的滞后阶数,但是这样就会很容易带来自由度减少和出现多重共线的问题;二是ARCH(p)模型对数据样本量有一定的要求,因为如果样本量相对较少的情况,就会使得很难满足正态分布的假设,而且研究表明,在一些实际问题中 服从的则是从高峰厚尾的t分布或者是广义误差分布;三是ARCH(p)模型中是假设是线性关系,但实际情况很有可能是非线性关系,而线性关系只是特例;四是假设 就只能表现出 的大小关系,而负关系并不能很好地体现出来,因此不能充分地利用信息。
综上所述,本文则使用在ARCH模型的基础之上的GARCH模型来研究人民币汇率波动性的思路。
4.1.3 GARCH (p,q)模型
根据上面提出的ARCH模型的一些缺陷,1986年TimBollerslev则在ARCH模型基础上提出了GARCH模型(广义自回归条件异方差模型)。GARCH模型与ARCH模型不同的在于在一定时期内误差项的方差是取决于过去的误差项本身,而不是像ARCH模型那样取决于误差项过去的方差,那么GARCH模型则比ARCH模型有更少的滞后阶数,此时的结构与ARMA模型类似,GARCH模型在具有ARCH模型的特点的基础上是无限阶数ARCH过程。
因此,本文以下选用GARCH模型分析人民币汇率的波动的持续性和敏感性规律,并为最后的预测做准备。GARCH模型的表达式如下所示:


其中:p和q分别是GARCH项和ARCH项的最大滞后阶数,在这里ARCH模型就是GARCH模型当p=0时的一个特例,从上面ARCH模型和GARCH模型的表达式可以看出,GARCH模型和ARCH模型的区别在于GARCH模型的条件方差不仅是滞后残差平方的线性函数,也是滞后条件方差的函数,GARCH模型可以预测被解释变量的方差,那么GARCH模型可以提高均值方程参数估计的有效性。
4.2实证结果及分析
4.2.1 数据的选取及处理
由于本文主要是对人民币汇率的波动性进行研究,所以本文选自的变量为人民币汇率,样本区间为2008年5月到2019年3月, 一共有  131个样本。从人民币汇率的曲线可以看出:


在样本期内指数出现了较大的波动,为非平稳序列。所以本文对人民币汇率序列作如下处理:


4.2.2 基本统计特征分析
从下表和图可以看出,1.对于RR的平均值而言,人民币汇率波动率的平均值分别为-7968e-04,为负值,说明人民币汇率总体上是呈现下降趋势;2.从RR的标准差上看, 人民币汇率波动率的标准差为2.345e-03,说明人民币汇率的波动性较小,变动相当较为稳定。3.从RR的ks.test和JB统计量上看,人民币汇率波动率序列的统计量对应的P值均小于0.05,说明人民币汇率波动率序列的分布显著异于标准正态分布,即不服从标准的正态分布。
表4.1  RR数据描述分析结果表
描述结果描述结果
Mean-0.0007968ks.test(pnorm)0.49646
Median-0.0005316Probability0
Maximum0.0088737Jarque-Bera170.64
Minimum-0.0091902Probability0
Std. Dev.0.0023452Observations130


4.2.3 平稳性检验
传统的时间序列回归分析容易出现虚假回归问题,也就是说尽管可以得到一个统计意义上的回归系数,但是这种回归函数关系的建立是虚假的。因为大多数时间序列数据都是不平稳的,为了保证模型的经济意义和统计效果,避免“伪回归”现象的出现,首先需要对时间序列的各个变量进行平稳性检验。普遍使用的方法是单位根检验,比如:PP验方法、ADF检验方法等,本文采用目前比较通用的ADF检验法进行平稳性检验,其方程为:


通过对RR变量指标的单位根检验结果表可以看出,RR变量单位根的统计量分别为-3.3261,对应的P值小于0.1.,说明人民币汇率波动率序列是平稳的。
表4.2  RR变量指标的单位根检验结果表
变量t-Statistic1% level5% level10% levelProb结果
RR-3.3261-3.432667-2.862450-2.5672990.07001平稳
4.2.4 自相关性检验
本文对RR序列进行相关性分析,目的是要确定GARCH模型中的p和q。通过下面自相关和偏自相关图中可以判断出RR的相关图具有拖尾性,可以拟合AR(q)模型,q可以选择1到5。


4.2.5人民币汇率波动率的GARCH模型实证结果
GARCH(1,1)模型是GARCH模型中最简单但也是最常用的一种,本文根据实际问题和上述的实证结果,同时为了避免ARCH模型估计参数过多的情况,本文建立GARCH(1,1)模型对RR序列进行分析。若能通过检验,则说明GARCH(1,1)模型是适用的,同时也无须再选用其它参数下的GARCH模型。若不能通过检验,则说GARCH(1,1)模型是不适用的,这时可再选用其它参数下的GARCH模型加以检验分析。
(1)实证结果
运用Eviews计算可得RR序列的GARCH(1,1)模型的各个参数估计及检验结果如下:


对于RR序列的GARCH(1,1)模型结果主要分为均值部分和方差部分,1.就均值部分的滞后系数而言,常数项和滞后一阶的系数分别为-9.25E-0和4.96E-01,而且对应的P值小于0.1,说明上面通过自相关图得到的二阶滞后的结果还是比较合理的;2.就方差部分而言,GARCH(1,1) 模型的常数项、滞后一期的残差项以及GARCH项的值分别为1.46E-06、3.06E-01和9.41E-01,而且对应的P值均小于0.05,说明均通过了检验。GARCH(1,1) 模型估计效果是符合实际的。最终得到RR序列的GARCH (1,1)模型的表达式如下所:


(2)结果评估
本文通过上述GARCH(1,1) 模型实证的结果,从下面模型结果的时序图、残差图以及自相关等效果图可以看出,时序图没有明显的趋势,残差波动较为随机,自相关图也很快收敛,说明Garch模型效果整体上较好。


####################################################################
#---------------------时间序列Garch模型code------------------------#
####################################################################

#------------------------取对数差分前数据集------------------------#
Input_Data = read.csv(file = 'F:\\博创工作室\\人民币汇率.csv',header = T,sep = ',')
Ts_Data <- as.vector(Input_Data[,2])
ts_data<-ts(Ts_Data,frequency=12,start=c(2008,5))
par(mfrow=c(1,2))
plot(ts_data,type="b",col="blue",main = "Time series diagram")
acf(ts_data) #自相关

#------------------------取对数差分后数据集------------------------#
Input_Data = read.csv(file = 'F:\\博创工作室\\人民币汇率1.csv',header = T,sep = ',')
Ts_Data <- as.vector(Input_Data[,2])
ts_data<-ts(Ts_Data,frequency=12,start=c(2008,5))

#-----------时序图和分布直方图----------#
par(mfrow=c(1,2))
plot(ts_data,type="b",col="blue",main = "Time series diagram")
hist(ts_data)
summary(ts_data) # 均值、最大值等
sd(ts_data) # 标准差
ks.test(ts_data,pnorm) # 正态性检验1
jarque.bera.test(ts_data) # 正态性检验2

#-------------单位根检验----------------#

# install.packages("tseries")
library(tseries)
adf.test(ts_data)
# dts_data <- diff(ts_data)
# adf.test(ts_data)
# ddts_data <- diff(dts_data)
# adf.test(ddts_data)
# adf.test(diff(ts_data,lag=2))

#-----------------自相关性检验-------------------#

acf(ts_data) #自相关
pacf(ts_data) #偏相关

# acf(dts_data) #自相关
# pacf(dts_data) #偏相关
#
# acf(ddts_data) #自相关
# pacf(ddts_data) #偏相关

#-----------------arch检验-------------------#

# library(FinTS)
# ArchTest(ts_data)

#-----------------Garch模型-------------------#

# install.packages("fGarch")
library(fGarch)

# ts_data_gar <- garch(ts_data, order = c(0,1))  
# summary(ts_data_gar)
# plot(ts_data_gar)
# # 正态Garch(1,1)
usd.gar01 = garchFit(~garch(1,1),data = ts_data,cond.dist="snorm")
summary(usd.gar01)
par(mfrow=c(2,2))
plot(usd.gar01)
# 偏态Garch(1,1)
Pre_fit <- predict(usd.gar01,10)
plot(Pre_fit$meanForecast)
# 预测

#-----------------完毕-------------------#
####################################################################
#---------------------时间序列Garch模型code------------------------#
####################################################################

#------------------------取对数差分前数据集------------------------#
Input_Data = read.csv(file = 'F:\\博创工作室\\人民币汇率.csv',header = T,sep = ',')
Ts_Data <- as.vector(Input_Data[,2])
ts_data<-ts(Ts_Data,frequency=12,start=c(2008,5))
par(mfrow=c(1,2))
plot(ts_data,type="b",col="blue",main = "Time series diagram")
acf(ts_data) #自相关

#------------------------取对数差分后数据集------------------------#
Input_Data = read.csv(file = 'F:\\博创工作室\\人民币汇率1.csv',header = T,sep = ',')
Ts_Data <- as.vector(Input_Data[,2])
ts_data<-ts(Ts_Data,frequency=12,start=c(2008,5))

#-----------时序图和分布直方图----------#
par(mfrow=c(1,2))
plot(ts_data,type="b",col="blue",main = "Time series diagram")
hist(ts_data)
summary(ts_data) # 均值、最大值等
sd(ts_data) # 标准差
ks.test(ts_data,pnorm) # 正态性检验1
jarque.bera.test(ts_data) # 正态性检验2

#-------------单位根检验----------------#

# install.packages("tseries")
library(tseries)
adf.test(ts_data)
# dts_data <- diff(ts_data)
# adf.test(ts_data)
# ddts_data <- diff(dts_data)
# adf.test(ddts_data)
# adf.test(diff(ts_data,lag=2))

#-----------------自相关性检验-------------------#

acf(ts_data) #自相关
pacf(ts_data) #偏相关

# acf(dts_data) #自相关
# pacf(dts_data) #偏相关
#
# acf(ddts_data) #自相关
# pacf(ddts_data) #偏相关

#-----------------arch检验-------------------#

# library(FinTS)
# ArchTest(ts_data)

#-----------------Garch模型-------------------#

# install.packages("fGarch")
library(fGarch)

# ts_data_gar <- garch(ts_data, order = c(0,1))  
# summary(ts_data_gar)
# plot(ts_data_gar)
# # 正态Garch(1,1)
usd.gar01 = garchFit(~garch(1,1),data = ts_data,cond.dist="snorm")
summary(usd.gar01)
par(mfrow=c(2,2))
plot(usd.gar01)
# 偏态Garch(1,1)
Pre_fit <- predict(usd.gar01,10)
plot(Pre_fit$meanForecast)
# 预测

#-----------------完毕-------------------#


PS:本工作室主要提供的服务有实证分析、数据建模、一对一教学、论文辅导等,具体包含 一般统计分析方法,线性回归、非线性回归、Logistic、主成分分析、抽样分析、灰色模型等;计量分析方法, 多重共线性、异方差检验、单位根检验、协整检验、格兰杰检验、Var模型、Garch模型、ARMA模型、面板模型等;问卷分析,样本量估计、抽样方法、图表分析、交叉分析、信度效度检验等;数据挖掘方法,决策树、遗传算法、聚类、支持向量机、随机森林、GBDT、XGboost、神经网络等;特色服务,数据转换技巧、样本均衡技术、模型评估、信用评分卡构建,还有论文选题、论文降重等服务。
如有需求,请QQ(2804833387)或私信联系。
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:400157
帖子:80032
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP