garch模型的结果分析_管理学五力模型分析案例

garch模型的结果分析_管理学五力模型分析案例  readdatalibrary(quantmod)  #加载包getSymbols(‘^HSI’,from=’1989-12-01′,to=’2013-11-30′)  #从Yahoo网站下载恒生指数日价格数据dim(HSI)   #数据规模names(HSI)  #数据变量名称chartSeries(HSI,theme=’white’)  #画出价格与交易的时…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

 

 read data

library(quantmod)  # 加载包
getSymbols('^HSI', from='1989-12-01',to='2013-11-30')  # 从Yahoo网站下载恒生指数日价格数据
dim(HSI)   # 数据规模
names(HSI)  # 数据变量名称
chartSeries(HSI,theme='white')  # 画出价格与交易的时序图

Jetbrains全家桶1年46,售后保障稳定

 

garch模型的结果分析_管理学五力模型分析案例

HSI <-read.table('HSI.txt')  # 或者从硬盘中读取恒生指数日价格数据
HSI <-as.xts(HSI)  # 将数据格式转化为xts格式

 

compute return series

ptd.HSI <-HSI$HSI.Adjusted   # 提取日收盘价信息
rtd.HSI <-diff(log(ptd.HSI))*100   # 计算日对数收益
rtd.HSI <-rtd.HSI[-1,]   # 删除一期缺失值
plot(rtd.HSI)   # 画出日收益序列的时序图

 

garch模型的结果分析_管理学五力模型分析案例GARCH模型案例分析

ptm.HSI <-to.monthly(HSI)$HSI.Adjusted    # 提取月收盘价信息
rtm.HSI <-diff(log(ptm.HSI))*100   # 计算月对数收益
rtm.HSI <-rtm.HSI[-1,]   # 删除一期缺失值
plot(rtm.HSI)   # 画出月收益序列的时序图

garch模型的结果分析_管理学五力模型分析案例

detach(package:quantmod)

 

ARCH效应检验

# rtm.HSI <- as.numeric(rtm.HSI)
ind.outsample <- sub(' ','',substr(index(rtm.HSI), 4, 8)) %in%'2013'  #设置样本外下标:2013年为样本外
ind.insample <-!ind.outsample   # 设置样本内下标:其余为样本内
rtm.insample <- rtm.HSI[ind.insample]
rtm.outsample <- rtm.HSI[ind.outsample]
Box.test(rtm.insample, lag=12,type='Ljung-Box')  # 月收益序列不存在自相关
Box.test(rtm.insample^2, lag=12,type='Ljung-Box')   # 平方月收益序列存在自相关

FinTS::ArchTest(x=rtm.insample,lags=12)  # 存在显著的ARCH效应

 

模型定阶

epst <- rtm.insample -mean(rtm.insample)   # 均值调整对数收益
par(mfrow=c(1,2))
acf(as.numeric(epst)^2, lag.max=20, main='平方序列')
pacf(as.numeric(epst)^2, lag.max=20,main='平方序列')  

 

garch模型的结果分析_管理学五力模型分析案例                    

 

建立GARCH类模型

library(fGarch)
GARCH.model_1 <- garchFit(~garch(1,1), data=rtm.insample,trace=FALSE)  # GARCH(1,1)-N模型
GARCH.model_2 <- garchFit(~garch(2,1), data=rtm.insample,trace=FALSE)   # GARCH(1,2)-N模型
GARCH.model_3 <- garchFit(~garch(1,1), data=rtm.insample,cond.dist='std', trace=FALSE)   #GARCH(1,1)-t模型
GARCH.model_4 <- garchFit(~garch(1,1), data=rtm.insample,cond.dist='sstd', trace=FALSE)  #GARCH(1,1)-st模型
GARCH.model_5 <- garchFit(~garch(1,1), data=rtm.insample,cond.dist='ged', trace=FALSE)   #GARCH(1,1)-GED模型
GARCH.model_6 <- garchFit(~garch(1,1), data=rtm.insample,cond.dist='sged', trace=FALSE)  #GARCH(1,1)-SGED模型

summary(GARCH.model_1)
summary(GARCH.model_3)

plot(GARCH.model_1)

提取GARCH类模型信息

vol_1 <-fBasics::volatility(GARCH.model_1)   # 提取GARCH(1,1)-N模型得到的波动率估计
sres_1 <- residuals(GARCH.model_1,standardize=TRUE)   # 提取GARCH(1,1)-N模型得到的标准化残差
vol_1.ts <- ts(vol_1, frequency=12, start=c(1990, 1))
sres_1.ts <- ts(sres_1, frequency=12, start=c(1990, 1))
par(mfcol=c(2,1))
plot(vol_1.ts, xlab='年', ylab='波动率')
plot(sres_1.ts, xlab='年', ylab='标准化残差')

garch模型的结果分析_管理学五力模型分析案例

 

模型检验

par(mfrow=c(2,2))
acf(sres_1, lag=24)
pacf(sres_1, lag=24)
acf(sres_1^2, lag=24)
pacf(sres_1^2, lag=24)

GARCH模型案例分析
garch模型的结果分析_管理学五力模型分析案例

par(mfrow=c(1,1))
qqnorm(sres_1)
qqline(sres_1)

 

模型预测

pred.model_1 <- predict(GARCH.model_1, n.ahead = 11, trace =FALSE, mse = 'cond', plot=FALSE)
pred.model_2 <- predict(GARCH.model_2, n.ahead = 11, trace =FALSE, mse = 'cond', plot=FALSE)
pred.model_3 <- predict(GARCH.model_3, n.ahead = 11, trace =FALSE, mse = 'cond', plot=FALSE)
pred.model_4 <- predict(GARCH.model_4, n.ahead = 11, trace =FALSE, mse = 'cond', plot=FALSE)
pred.model_5 <- predict(GARCH.model_5, n.ahead = 11, trace =FALSE, mse = 'cond', plot=FALSE)
pred.model_6 <- predict(GARCH.model_6, n.ahead = 11, trace =FALSE, mse = 'cond', plot=FALSE)

predVol_1 <-pred.model_1$standardDeviation
predVol_2 <- pred.model_2$standardDeviation
predVol_3 <- pred.model_3$standardDeviation
predVol_4 <- pred.model_4$standardDeviation
predVol_5 <- pred.model_5$standardDeviation
predVol_6 <- pred.model_6$standardDeviation
et <- abs(rtm.outsample - mean(rtm.outsample))
rtd.HSI.2013 <- rtd.HSI['2013']
rv <- sqrt(aggregate(rtd.HSI.2013^2,by=substr(index(rtd.HSI.2013), 1, 7), sum))

predVol <-round(rbind(predVol_1,predVol_2,predVol_3,predVol_4,predVol_5,predVol_6,
                      as.numeric(et), as.numeric(rv)), digits=3)
colnames(predVol) <- 1:11
rownames(predVol) <-c('GARCH(1,1)-N模型','GARCH(1,2)-N模型','GARCH(1,1)-t模型','GARCH(1,1)-st模型','GARCH(1,1)-GED模型','GARCH(1,1)-SGED模型','残差绝对值', '已实现波动')
print(predVol)
                        1     2     3     4     5     6     7     8     9    10    11
GARCH(1,1)-N模型    5.037 5.286 5.513 5.722 5.915 6.094 6.260 6.415 6.560 6.696 6.824
GARCH(1,2)-N模型    4.760 4.747 5.136 5.404 5.661 5.891 6.102 6.296 6.473 6.638 6.789
GARCH(1,1)-t模型    5.347 5.532 5.703 5.864 6.014 6.154 6.286 6.410 6.527 6.638 6.742
GARCH(1,1)-st模型   5.386 5.560 5.722 5.873 6.014 6.146 6.270 6.386 6.495 6.598 6.695
GARCH(1,1)-GED模型  5.168 5.374 5.565 5.741 5.906 6.059 6.203 6.338 6.464 6.583 6.695
GARCH(1,1)-SGED模型 5.229 5.423 5.601 5.767 5.920 6.063 6.197 6.322 6.439 6.548 6.651
残差绝对值          4.147 3.513 3.659 1.464 2.007 7.838 4.584 1.177 4.584 1.026 2.388
已实现波动          3.543 4.114 3.929 4.778 4.374 6.013 5.397 4.634 4.070 3.745 4.395

 

模型选择

cor(t(predVol))

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/215556.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号