參考以下修改後程式碼, 執行時, 可將此行 # result_1 <- rbind(result_1, temp_data) 的註解符號刪除.
目前執行i = 1..200 旨OK, 當 i= 201 時會有 Error, 原因須再研究???
# 理解問題中指標的值(i=1,...,1587):
# 數據為2000年/01/01~2022年6/30日
# 數據預測使用2000/01/01到2015/12/31日,i=1,Row.1~Row.3990,實際數據預測2016/01/01日數據
# 數據預測使用2000/01/02到2016/01/01日,i=2,Row.2~Row.3991,實際數據預測2016/01/02日數據
# 數據預測使用2000/01/03到2016/01/02日,i=3,Row.3~Row.3992,實際數據預測2016/01/03日數據
# ...
# 數據預測使用2006/04/28到2022/06/30日,i=1587,Row.1587~Row.5576,實際數據預測2022/07/01日數據
library(rugarch)
library(zoo)
library(quantmod)
data <- read.csv("收盤價成交量.csv")
time <- as.Date(data$date, format='%Y/%m/%d')
data <- zoo(data$close, time)
length(data) # 5575
chartSeries(data)
# 修正後程式 2022.11.21
result_1 <- data.frame()
for (i in c(1:(length(data) - 3990 + 2))) {
data_temp <- data[(i):(3989+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)
temp_data <- data.frame(t(fit_temp@forecast[["sigmaFor"]]), t(fit_temp@forecast[["seriesFor"]]))
colnames(temp_data) <- c("sigma" , 'series')
cat("date=", as.character(index(data)[i]),"i=", i, ",", round(i/(5574-100+1), 3), '\n')
# result_1 <- rbind(result_1, temp_data)
}
# Error:
# date= 2000-09-30 i= 201 , 0.037
#
# ugarchfilter-->error: parameters names do not match specification
# Expected Parameters are: mu ar1 ma1 omega alpha1 beta1 shape
# Error: Exiting
# In addition: There were 50 or more warnings (use warnings() to see the first 50)
# end