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模型。

時序圖:

樣本數據有明顯的趨勢特徵,對數據分別進行白噪聲檢驗和單位根平穩性(ADF)檢驗,樣本數據爲非平穩非白噪聲數據,需要對數據進行差分處理,消除數據的趨勢特徵,然後對樣本數據再作進一步分析。

差分後的時序圖:

從時序圖中可以看出差分後的樣本數據趨勢消除,且存在集羣效應和不可逆性。

ACF圖和PACF圖:

 

對樣本數據分別建立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)模型的殘差進行平穩性檢驗,殘差是平穩的。

正態性檢驗:

分佈直方圖:

 

殘差呈現尖峯後尾分佈且具有不對稱性,初步判斷殘差爲非正態分佈,但是這只是直觀上的判斷,需要進一步的檢驗。

對殘差分別進行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)模型對未來時間序列的預測:

根據GARCH(1,1)模型對時間序列的擬合,置信區間爲95%:

 

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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章