R语言做滚动语言做滚动garch模型模型rollgarchmodel
R语言做滚动语言做滚动garch模型模型 roll-garch model
前几天帮人做了一个滚动garch模型,刚开始那个人没搞清楚,走了很多弯路,最后终于搞好了,主要就是没有有效的沟通好。
接下来就是分析我写roll-garch的思路。
其实roll-garch模型在rugarch里面其实是有的。但是,我也看了开发者写的文档,如果你希望更快,更复杂的滚动garach模型,你就要自己写
函数。我的天,我哪里会,其实我连garch模型都没搞懂,但是我会代码。
和客户交流搞懂了,他想要的滚动garch是什么样子的:
用第1天到第100天真实数据预测第101天数据。
用第2天到第101天真实数据预测第102天数据。
用第3天到第102天真实数据预测第103天数据。
……
以此类推,他就是窗口为100,预测这个窗口下一天的sigma和series。后来想了一下这不是很简单么。
思路思路
就是选择1-100真实数据然后预测1期的,选择2-201真实数据预测1期的…………。
说干就干。
library(rugarch)
library(tseries)
library(zoo)
library(readxl)
library(quantmod)
raw_data <- read_xlsx('沪深300交易日收益率.xlsx')
time<-as.Date(raw_data$'date',format="%Y/%m/%d")
return<-raw_data$'return'
data<-zoo(return,time)
chartSeries(data)
前面几个是加载包,然后读取数据,改一下数据的时间格式,将数据设置为zoo类型的数据,然后把或者数据画出来。
接下来就是一个函数,这个函数只要给定一个连续的接下来就是一个函数,这个函数只要给定一个连续的100个,然后就可以吐出下一天的个,然后就可以吐出下一天的sigma和和series。。
my_series_sigma <- function(i) {
library(rugarch)
data_temp <- data[(i):(99 i)] ug_spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)), #这个是必须要加
mean.model = list(armaOrder = c(0, 1)), #这个不要随便改,不然有错误
distribution.model = "std")
ugfit <- ugarchfit(ug_spec, data = data_temp)
fit_temp <- ugarchforecast(ugfit, data = data_temp, n.ahead = 1)
评论0