ARCH,GARCH模型简介及R语言实现

ARCH和GARCH简介

之前介绍过的ARIMA模型是假定随机扰动的方差是恒定的,这有时候难以适应现实中的金融时间序列模型,如下图所示:

21b7fec4b865479aa110bca82197249a.png

我们发现大的波动往往会聚集在一起,这不符合同方差的假设。

所以我们通过引入条件异方差代替恒定方差的假定,构建了自回归条件异方差模型(ARCH),为了能应用ARCH或GARCH模型,我们须检验时间序列是否存在条件异方差。

H0:不存在ARCH效应; H1:存在ARCH效应

ARCH(1)模型是最简单的GARCH模型

ARCH(1):

b70896ffdb314c98af3646746436afd8.png

ARCH1模型下,条件方差是自回归的,即ut的方差由ut滞后一期的平方值决定,在此我们以股票收益率去理解这个模型,假若ut为股票收益率,若昨天风平浪静,没有任何重大的干扰股市的新闻,那么ut-1理应波动不大,既然ut-1不大,那么ut当天的方差波动也不大,今天跟昨天差不多是小波动,若发生重大时间,严重影响股市收益率,则ut-1应较大,那么ut当天的方差波动也会变大,这种大波动跟着大波动,小波动跟着小波动的现象称为波动聚集 

 

ARCH(q):

459fd58f7e2147f788dd4d2b646976f8.png

 GARCH(p,q)(广义自回归条件异方差模型),GARCH模型相较与ARCH模型进一步引入了方差的滞后项:

51330fcbebbb471ba739611077da653b.png

GARCH(1,1)模型足以捕捉大多数情况下的波动聚集

这里我们以微软的股价为例,构建ARCHGARCH模型

基于ARCH和GARCH模型的微软股价收益率的R语言建模

加载包

list.packages<-c("fGarch", "PerformanceAnalytics","rugarch","tseries","xts","FinTS")
invisible(lapply(list.packages, require, character.only = TRUE))
new_data <- read.csv("C:\\Users\\X-BUNLEE\\Desktop\\Microsoft(1).csv")
head(new_data)

 c75e7100b4f84f09aefe986890807498.png

new_data$Dates <- as.Date(new_data$Dates,"%d/%m/%Y")#转换为时间序列数据
new_data.z <- zoo(x=new_data$Close,order.by = new_data$Dates)
#计算对数收益率并去除第一个值
return_new_data <- Return.calculate(new_data.z,method = "log")[-1]

 ADF检验

library(urca)
ADF_Returns <- ur.df(return_new_data, type = "drift",selectlags = "AIC" )
summary(ADF_Returns)

69ef1722662349f8b001b0ff1cb1540e.png

统计量的绝对值(54.1954)高于三个临界值。因此,微软公司的收益是平稳的

检查波动聚集

我们通过对数收益率,平方收益率,绝对收益率来观察波动的聚集性

dataplot <- cbind(return_new_data,return_new_data^2,abs(return_new_data))
colnames(dataplot) <- c("对数收益率","平方收益率","绝对收益率")
plot.zoo(dataplot,main = "微软的每日收益率",col = "blue")

 cf26b2307f554042933b87cd61220b4e.png

从上图我们可以看到明显的波动聚集情况(即大波动跟着大波动,小波动跟着小波动)

检查正态性

qqnorm(return_new_data,main = "微软每日收益率-QQ图",col = "blue")
qqline(return_new_data)

 4f6605200b3547f7ae2bfebca27b7340.png

收益率似乎不服从正态分布,进一步给出数据常用的描述性统计,并进行Jarque-Bera检验检验数据正态性如下:

c4b97ee98a924a4380bfe5d324ad0be6.png

e43fdd8030134a469a6e5eabad19c57f.png

 由于jarque.bera检验的p-value<2.2e-16,我们拒绝原假设,认为在0.01的显著性水平下,数据不服从正态分布

arch效应的检验

#将数据转换为xts类型
return_new_data<- as.xts(return_new_data)
#绘制对数回报率,平方回报率,绝对回报率的自相关系数图
options(repr.plot.width=15, repr.plot.height=5)#指定图形宽度及高度
par(mfrow=c(1,3))
acf(return_new_data,main = "对数收益率")
acf(return_new_data^2,main = "平方收益率")
acf(abs(return_new_data),main = "绝对收益率")

 a54af52f2f46457980e8fcb56c546e62.png

平方收益率和绝对收益率均展现出较高水平的自相关系数,接着对平方收益率进行Ljung-Box 检验以检验自相关性是否显著

f5f8b06039e946b0b5b3bd79eb335e18.png

由于p-value小于0.01,所以我们认为平方收益率存在着显著的自相关性,接着我们对对数收益率进行ARCH效应的检验如下:

ArchTest(return_new_data)

 e9c55df6b8ac41f69b9bee2687263c34.png

 

由于p-value远小于0.01,认为对数收益率可以进行arch建模

估计正态扰动下的ARCHGARCH模型

 #mean.model意味拟合均值模型,arch模型也可以视作在均值模型的基础上对方差进行修正

# distribution.model="norm"意味ξt服从正态分布

spec <- ugarchspec(variance.model = list(garchOrder = c(1,0)),
                   mean.model = list(armaOrder=c(0,0)),distribution.model="norm")#mean.model意味拟合均值模型,arch模型也可以视作在均值模型的基础上对方差进行修正 # distribution.model="norm"意味ξ_t 服从正态分布
#拟合ARCH模型
arch_model <- ugarchfit(data=return_new_data,spec = spec)
arch_model

085e3780a8da4787b3bfdd36bdfb36f0.png

c940377446b943ac9acbf9d6586e158c.png

ac30f014d373437cb7af9b4baefc4585.png

#绘制条件方差
options(repr.plot.width=10, repr.plot.height=5)
plot.ts(sigma(arch_model),col="blue", main = "ARCH模型的条件方差", cex.main=1)

 d43fadf0165d4a3a90c331f6842c91de.png

正态信息下的GARCH(1,1)

spec <-  ugarchspec(variance.model=list(garchOrder=c(1,1)),
mean.model=list(armaOrder=c(0,0)),
distribution.model="norm")
#拟合garch模型
garch_model <- ugarchfit(data=return_new_data,spec=spec)
garch_model

 

##
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
##
## Conditional Variance Dynamics   
## -----------------------------------
## GARCH Model  : sGARCH(1,1)
## Mean Model   : ARFIMA(0,0,0)
## Distribution : norm
##
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## mu      0.000647    0.000197   3.2898 0.001003
## omega   0.000011    0.000000  39.0663 0.000000
## alpha1  0.088950    0.004620  19.2528 0.000000
## beta1   0.871741    0.005908 147.5633 0.000000
##
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## mu      0.000647    0.000200   3.2316 0.001231
## omega   0.000011    0.000001  15.2615 0.000000
## alpha1  0.088950    0.010589   8.3999 0.000000
## beta1   0.871741    0.016866  51.6873 0.000000
##
## LogLikelihood : 13901.66
##
## Information Criteria
## ------------------------------------
##                    
## Akaike       -5.5215
## Bayes        -5.5163
## Shibata      -5.5215
## Hannan-Quinn -5.5197
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic  p-value
## Lag[1]                      8.041 0.004572
## Lag[2*(p+q)+(p+q)-1][2]     8.078 0.006169
## Lag[4*(p+q)+(p+q)-1][5]     9.512 0.012268
## d.o.f=0
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                    0.09563  0.7571
## Lag[2*(p+q)+(p+q)-1][5]   0.55692  0.9486
## Lag[4*(p+q)+(p+q)-1][9]   1.04788  0.9842
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]    0.5175 0.500 2.000  0.4719
## ARCH Lag[5]    0.8480 1.440 1.667  0.7785
## ARCH Lag[7]    0.9534 2.315 1.543  0.9210
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  25.9482
## Individual Statistics:             
## mu     0.67691
## omega  3.16116
## alpha1 0.07481
## beta1  0.05598
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.07 1.24 1.6
## Individual Statistic:     0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
##                    t-value   prob sig
## Sign Bias           0.9079 0.3640   
## Negative Sign Bias  1.4981 0.1342   
## Positive Sign Bias  0.1469 0.8832   
## Joint Effect        2.4158 0.4907   
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     237.6    9.746e-40
## 2    30     274.1    1.008e-41
## 3    40     284.6    4.477e-39
## 4    50     290.6    4.866e-36
##
##
## Elapsed time : 0.4496911

options(repr.plot.width=10, repr.plot.height=5)
plot.ts(sigma(garch_model), , col="blue", main = "GARCH模型的条件方差", cex.main=1)

66d3817d10994a29840f7d8e7fcde6a8.png

plot(garch_model,which = 9)

 9bdd2794ac2e4592853ab27fbbcd384e.png

 从QQ可看出,用正态信息下的ARCH(1),GARCH(1,1)估计此模型也许不大合适,接下来我们考虑非正态情况下的ARCH与GARCH估计

t分布下的ARCH和GARCH估计

spec <- ugarchspec(variance.model = list(garchOrder = c(1,0)),
                   mean.model = list(armaOrder=c(0,0)),distribution.model="std")
#拟合ARCH模型
arch_model_t <- ugarchfit(data=return_new_data,spec = spec)
arch_model_t

4f4521c4f9284c159024c3fab3476372.png

d49d3b186c7b452e82987716f078b1bd.png

plot(garch_model_t, which=9)

 a278bcecd8d04bcd87a7e6f96214eb5b.png

 

t分布情况下的Garch(1,1)的QQ图表现更好

接下来展示t分布情况下GARCH(1,1)的各个图

options(repr.plot.width=15, repr.plot.height=15)
plot(garch_model_t, which= "all")

075988df8ca6443dbc47104c51d7a231.png

 使用信息准则进行模型的选择

model.list <- list("arch(1,1)" = arch_model,
                  "arch(1,1)-t" = arch_model_t,
                  "garch(1,1)" = garch_model,
                  "garch(1,1)-t" = garch_model_t)
info.mat = sapply(model.list, infocriteria)
rownames(info.mat) = rownames(infocriteria(garch_model))
info.mat
##               arch(1,1) arch(1,1)-t garch(1,1) garch(1,1)-t
## Akaike       -0.6381349   -5.588399  -5.521518    -5.674072
## Bayes        -0.6342470   -5.583215  -5.516334    -5.667592
## Shibata      -0.6381357   -5.588401  -5.521519    -5.674074
## Hannan-Quinn -0.6367727   -5.586583  -5.519702    -5.671802

garch(1,1)-t在信息准则下表现最佳

 

  • 12
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值