ARIMA-GARCH模型对央行汇率的实证研究(R)

GARCH模型:

$$ \left\{\begin{array}{c} {x_{t}=f\left(\mathrm{t}, \mathrm{x}_{t-1}, \mathrm{x}_{t-2}, \ldots\right)+\varepsilon_{t}} \\ {\varepsilon_{t}=\sqrt{h_{t}} e_{t}} \\ {h_{t}=\omega+\sum_{i=1}^{p} \eta_{i} h_{t-i}+\sum_{j=1}^{q} \lambda_{j} \varepsilon_{t-j}^{2}} \end{array}\right. $$

GARCH模型要求时间序列的残差为零均值、异方差的纯随机序列,但是有时不能充分提取序列的相关信息,即不是纯随机性序列;另外,原序列可能是非平稳序列。对于这种情况,需要将原始序列变为平稳序列,对拟合自回归模型,即构造ARIMA模型,再考察残差序列的方差齐性,如果是异方差残差序列,最后构造GARCH模型,这便是ARIMA-GARCH模型。

时序图:

ARIMA-GARCH模型对央行汇率的实证研究(R)_第1张图片

样本数据有明显的趋势特征,对数据分别进行白噪声检验和单位根平稳性(ADF)检验,样本数据为非平稳非白噪声数据,需要对数据进行差分处理,消除数据的趋势特征,然后对样本数据再作进一步分析。

差分后的时序图:

ARIMA-GARCH模型对央行汇率的实证研究(R)_第2张图片

从时序图中可以看出差分后的样本数据趋势消除,且存在集群效应和不可逆性。

ACF图和PACF图:

ARIMA-GARCH模型对央行汇率的实证研究(R)_第3张图片

ARIMA-GARCH模型对央行汇率的实证研究(R)_第4张图片

 

对样本数据分别建立ARIMA(0,1,1)模型、ARIMA(1,1,1)模型和ARIMA(1,1,0)模型,从拟合后的AIC来看,ARIMA(1,1,0)模型对差分后的时间序列数据拟合较好。

对拟合后的残差作白噪声检验,残差为白噪声,说明ARIMA(1,1,0)模型已充分提取了时间序列的水平信息。

平稳性检验:

为避免出现伪回归的情况,对ARIMA(1,1,0)模型的残差进行平稳性检验,残差是平稳的。

正态性检验:

分布直方图:

 

ARIMA-GARCH模型对央行汇率的实证研究(R)_第5张图片

残差呈现尖峰后尾分布且具有不对称性,初步判断残差为非正态分布,但是这只是直观上的判断,需要进一步的检验。

对残差分别进行Shapiro-Wilk检验、Anderson-Darling检验和Kolmogorov-Smirnov检验,可以判断残差不服从正态分布。

ARCH效应检验:

分别进行Portmanteau Q检验和LM检验(拉格朗日乘子检验),LM检验和Q检验都显示残差序列方差非齐性,且残差平方序列具有显著的长期自相关关系。

 

构造GARCH(1,1)模型:

综合水平模型和波动模型,完整的ARIMA-GARCH模型为:

$$ \left\{\begin{array}{c} {\nabla x_{t}=0.5235 \nabla x_{t-1}+\varepsilon_{t}+v_{t}} \\ {v_{t}=\sqrt{h_{t} e_{t}}} \\ {h_{t}=3.17 \times 10^{-5}+0.2043 h_{t-1}+0.7564 v_{t-1}^{2}} \end{array}\right. $$

对模型的参数进行正态性检验,画出QQ图,残差服从正态分布。

模型预测:

根据ARIMA(1,1,0)模型对未来时间序列的预测:

ARIMA-GARCH模型对央行汇率的实证研究(R)_第6张图片

根据GARCH(1,1)模型对时间序列的拟合,置信区间为95%:

ARIMA-GARCH模型对央行汇率的实证研究(R)_第7张图片

 

R语言代码:

library(TSA)
library(tseries)
library(fUnitRoots)
library(locfit)
library(forecast)
library(nortest)
library(stats19)
library(FinTS)
library(zoo)



##读取文件
Time<-read.table("E:/时间序列论文/外汇.csv",sep=",",header=T)

##时序图
rate<-ts(Time$rate,start=c(2005,11),end=c(2019,11),frequency=12)
plot(rate)

##ADF检验
for(i in 1:3) print(adfTest(rate,lag=i,type="c"))

##白噪声检验
for(i in 1:2) print(Box.test(rate,lag=6*i))

##差分
rate_diff<-diff(rate)
plot(rate_diff)

##ACF图和PACF图
acf(rate_diff)
pacf(rate_diff)

##ARIMA(0,1,1)
rate.fit1<-arima(rate,order=c(0,1,1))
rate.fit1

##ARIMA(1,1,1)
rate.fit2<-arima(rate,order=c(1,1,1))
rate.fit2

## ARIMA(1,1,0)
rate.fit3<-arima(rate,order=c(1,1,0))
rate.fit3

##白噪声检验
for(i in 1:6) print(Box.test(rate.fit3$residual,type="Ljung-Box",lag=i))

##预测
rate.fore3<-forecast(rate,model=rate.fit3)
plot(rate.fore3)

##平稳性检验
for(i in 1:3) print(adfTest(rate.fit3$residual,lag=i,type="c"))
hist(rate.fit3$residual)

##正态性检验
shapiro.test(rate.fit3$residual)
ad.test(rate.fit3$residual)
ks.test(rate.fit3$residual,pnorm)

##ARCH效应检验
for(i in 1:6)print(Box.test(rate.fit3$residual^2,type="Ljung-Box",lag=i))
for(i in 1:5)print(ArchTest(rate.fit3$residual,lag=i))

##GARCH模型
rate.fit<-garch(rate.fit3$residual,order=c(1,1))
summary(rate.fit)

##置信区间
rate.pred<-predict(rate.fit)
plot(rate.pred)

##QQ图
qqnorm(rate.fit$residual)
qqline(rate.fit$residual)

 

你可能感兴趣的:(R,Garch)