使用rollgarchmodel數據問題

36 views
Skip to first unread message

謝小謝

unread,
Oct 15, 2022, 2:47:24 AM10/15/22
to R軟體使用者論壇
您好~請問我使用rollgarchmodel預測風險值
數據為2000年/01/01~2022年6/30日
數據預測為用2000/01/01到2015/12/31日實際數據預測2016/01/01日數據
數據預測為用2000/01/02到2016/01/01日實際數據預測2016/01/02日數據
數據預測為用2000/01/03到2016/01/02日實際數據預測2016/01/03日數據
..............以此類推

請問程式碼該如何更改 謝謝


messageImage_1665816352848.jpg
收盤價成交量.csv

WEPA ^_^

unread,
Nov 21, 2022, 3:10:58 AM11/21/22
to R軟體使用者論壇
Hi Cindy, 

參考以下修改後程式碼, 執行時, 可將此行 # 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

謝小謝 在 2022年10月15日 星期六下午2:47:24 [UTC+8] 的信中寫道:
Reply all
Reply to author
Forward
0 new messages