#习题3.12
dat<-read.table(file="C:\\Users\\admin\\Desktop\\好好学习\\金融时间序列\\unit3\\d-gmsp9908.txt",header = T)
library(fGarch)
library(timeDate)
library(timeSeries)
library(fBasics)
sp<-ts(dat[,3])
plot(sp)
#检验ARCH效应
Box.test(sp^2,lag=10,type = 'Ljung')
#X-squared = 2100, df = 10, p-value < 2.2e-16,存在ARCH效应
#建立GARCH模型
#步骤一:建立均值方程
acf(sp)
pacf(sp) #5阶截尾
m11=arima(sp,order=c(5,0,0))
m11
Box.test(m11$residuals,lag=10,type='Ljung')
#除AR(3)外,系数都显著,且残差无序列相关性
#步骤二:检验均值方程残差项的ARCH效应
Box.test(m11$residuals^2,lag=10,type='Ljung')
#存在ARCH效应
#步骤三:识别ARCH或GARCH模型的阶数
at=m11$residuals
acf(at^2) #拖尾
pacf(at^2) #8阶截尾,arch效应的阶数过多,因而考虑建立GARCH模型
#步骤四:建立GARCH模型
m12=garchFit(sp~arma(5,0)+garch(1,1),data=sp,trace=F)
summary(m12)
#Ljung-Box Test R Q(20) 19.09316 0.5157779
#Ljung-Box Test R^2 Q(20) 19.8018 0.4703876
#GARCH模型充分
#步骤五:预测
predict(m11,n.ahead=4)
#收益率序列向前1步至4步预测值
#-0.0042056740 -0.0006821726 -0.0002578279 -0.0017980087
#习题3.13
library(rugarch)
library(parallel)
#了解ugarchspec函数的用法
?ugarchspec
#拟合GARCH-M模型
source("C:\\Users\\admin\\Desktop\\好好学习\\金融时间序列\\GARCH函数簇\\garchM.R")
m21=garchM(sp)
myspec=ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(5, 0), include.mean =T, archm = T))
m22=ugarchfit(myspec,data=sp,solver = "solnp")
#拟合EGARCH模型
myspec1=ugarchspec(variance.model = list(model = "eGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(5, 0), include.mean =T, archm = FALSE))
myfit1=ugarchfit(myspec1,data=sp,solver = "solnp")
#杠杆效应在5%的显著性水平下显著
#习题3.14
#对数收益率
lnsp<-log(sp+1)*100
lngm<-log(1+dat[,2])*100
#建立广义误差分布的AR(5)-GARCH(1,1)模型
myspec2=ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(5, 0),include.mean =T),
fixed.pars=list(ar1=0,ar2=0,ar4=0),
distribution.model = "ged" )
myfit2=ugarchfit(myspec2,data=lnsp,solver = "solnp")
?ugarchfit
#提取拟合的波动率序列
spvol<-fitted(myfit2)
spvol<-sigma(myfit2) #提取方差序列
plot(myfit2,which="all")
#对gm的对数收益率建立ARMA(1,1)的均值方程
acf(lngm)
pacf(lngm)
m31=arima(lngm,order=c(1,0,1))
Box.test(m11$residuals,lag=10,type='Ljung')
#将spvol作为外生变量,建立GM的GARCH(1,1)模型
myspec3<-ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1),
external.regressors=spvol),
mean.model = list(armaOrder = c(1, 1),include.mean =T))
myfit3=ugarchfit(myspec3,data=lngm,solver = "solnp")


雷达卡



京公网安备 11010802022788号







