全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
7789 9
2019-04-09
我用R的rugarch包做了GARCH模型,做了以后进行滚动窗一步向前的预测,但是预测出来的结果和真实的波动率差很多,不知道是什么问题?


另外,如果我做向前30天的预测,预测出来的波动率总是单调递增的,很奇怪。


有人知道怎么回事吗?或者有哪位同学会用R或者MATLAB做garch类模型的,也可以联系我。能加我qq最好,1401627451。谢谢了!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2019-4-9 20:16:29
如果哪位同学需要有偿也是可以的,谢谢啦
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-4-9 21:53:47
library(ggplot2)
library(tidyr)
library(dplyr)
library(TTR)
library(moments)
library(ncg)
library(FMStable)
library(tseries)
library(rugarch)
library(openxlsx)

setwd("E:/毕业设计/代码/R代码/低频模型")
data <- read.csv("input_2018.csv", stringsAsFactors = F, header = T)

innerData = data %>% filter(date<20180301)
outerData = data %>% filter(date>=20180301)

returns = data$returns
alldays = length(returns)

innerReturns = innerData$returns
innerDays = length(innerReturns)
outerReturns = outerData$returns
outerDays = length(outerReturns)

garch.spec = ugarchspec(variance.model = list(model='sGARCH',garchOrder=c(1,1)),
                                                mean.model=list(armaOrder = c(3,0,1),include.mean = TRUE),
                                                distribution.model = "sstd")
garch.fit = ugarchfit(data=innerReturns,spec=garch.spec,out.sample=outerDays)
windowsWides = innerDays##1452

foreVolatility = matrix(nrow = outerDays,ncol=1)

for (i in 1:outerDays){
        returnsE = returns[i:(i+windowsWides-1)]
        garch.fit = ugarchfit(data=returnsE,spec=garch.spec,solver="solnp")
        fore = ugarchforecast(garch.fit,n.ahead=1)

        foreVolatility[i] = fore@forecast[["sigmaFor"]]
}

plot(foreVolatility)
rvData <- read.xlsx("预测结果CJ_2018.xlsx") ##读取真实RV
rv = rvData$RV
rv = rv^0.5
t =1:267
plot(t,rv,type="p",xlab="日期",ylab="波动率",ylim=c(0,4),xlim = c(0,267) ,col='red',pch=c("."),cex=2)
lines(t,foreVolatility,type="o",col="green",pch=c("."))
legend("topleft",c("RV","foreVolatility"),col=c("red","green"),lty = c(0,1),pch=c(".","."),bty = "n",text.width=0.6,cex=0.6)

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-4-9 21:55:48
3楼是我的代码,跑出来的结果非常差,见图。
附件列表
1554818100(1).jpg

原图尺寸 7.62 KB

1554818100(1).jpg

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-4-9 21:56:20
有哪位同学可以帮我解答一下吗?谢谢了!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-4-10 09:03:35
看你的图,如果没有理解错的话,应该是绿线代表预测波动率,红点代表真实波动率。
我发现两者根本不是一个数量级的,结合你的变量中有“return”出现,我猜测可能是某种资产的收益率,如果是这样的话,真实值(红点)所代表的波动率太高了,一项资产的收益波动率常态性超过50%,甚至瞬间高达300%,这个市场是很成问题的,建议你检查一下真实RV的计算是否有误。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群