(1)ARCH效应、均值方程、GARCH族模型、对波动率建模、预测(包含代码)

一、ARCH模型的介绍

  ARCH 模型通常有两个方程构成:
(1)ARCH效应、均值方程、GARCH族模型、对波动率建模、预测(包含代码)
  模型建立流程:
  对资产收益率序列建立波动率模型需要4个步骤:
  (1)通过检验数据前后相关性建立一个均值方程,如果有必要,对收益率序列建立一个计量经济模型来消除任何的线性依赖。
  (2)对均值方程的残差进行ARCH效应检验。
  (3)如果ARCH效应在统计上是显著的,则指定一个波动率模型,并对均值方程和波动率方程进行联合估计。
  (4)仔细检验所拟合的模型,如果有必要则进行改进。

二、均值方程

  对于大部分资产收益率序列,如果有前后相关性,但是前后相关性很弱,我们就可以简单的建立均值方程等于从数据中移除样本均值,得到均值方程的残差项。可以通过一阶差分后序列的自相关图形(ACF)和偏自相关图形(PACF)进行判断。
  ACF和PACF图形显示序列前后弱的相关性。因此,可采用为均值方程的残差。平方序列可以用来检验条件异方差性,即所谓的ARCH效应。

三、ARCH效应检验

(1)ARCH效应、均值方程、GARCH族模型、对波动率建模、预测(包含代码)

四、模型阶数的确定

  首先确定模型的阶数,如果发现存在显著的ARCH效应,则可以用残差平方的偏自相关函数(PACF)来确定ARCH模型的阶数。

(1)ARCH效应、均值方程、GARCH族模型、对波动率建模、预测(包含代码)
  如上图所示,可以判断出模型的可能阶数10或者16阶,那么我们需要通过AIC,BIC,的信息准则以及挑选模型所注意的简洁性来确定阶数。
  ARCH(10)

(1)ARCH效应、均值方程、GARCH族模型、对波动率建模、预测(包含代码)
  ARCH(16)
(1)ARCH效应、均值方程、GARCH族模型、对波动率建模、预测(包含代码)
  如果应用AIC来进行模型选择,则会选择ARCH(16)模型,如果应用BIC来进行模型选择,则会选择ARCH(10)模型,从表可以看出,ARCH(16)模型参数的不显著的比较多,而ARCH(10)模型参数的显著的比较多,考虑到模型构造的简洁性,因此最终选择ARCH(10)模型。
(1)ARCH效应、均值方程、GARCH族模型、对波动率建模、预测(包含代码)

library(lmtest)
library(tseries)
library(urca)
da1<-read.table("douyou.txt",header = T)
da2<-read.table("douyouforeign.txt",header = T)
time<-c(1:3001)/240+2006
hp<-da1$price
fp<-da2$price
plot(hp~time,ylim=c(3700,14000),xlab="2006年1月-2018年5月",ylab="国内(hp)和国外(fp)豆油价格,",type="l",lty=1,col="red",main="2006-2018年国内和国外豆油价格时序图")
lines(fp~time,col="blue",lty=1)
legend("topleft",c("hp","fp"),col=c("red","blue"),lty = c(1,1))
cor(fp,hp)
adf.test(fp)
adf.test(hp)
lfp<-log(fp)
dfp<-diff(lfp)
lhp<-log(hp)
dhp<-diff(lhp)

协整检验、格兰杰因果检验、arch效应检验
adf.test(dhp)
adf.test(dfp)
reg<-lm(dhp~dfp)
summary(reg)
dw<-dwtest(reg) #EG两步
error<-residuals(reg)
urt.resid<-ur.df(error,type="none",selectlags="AIC")
summary(urt.resid)
adf.test(error)
grangertest(dhp~dfp)
grangertest(dfp~dhp)
fit<-lm(dhp~dfp)
summary(fit) # arch
acf(dhp,lag=40)
pacf(dhp,lag=40)
y<-dhp-mean(dhp)
Box.test(y^2,lag=30,type = "Ljung")