【发布时间】:2021-07-06 10:22:09
【问题描述】:
我有特定年份的每日股市数据,因为股市仅在工作日开放我有给定年份(比如 2021 年)的数据集,但我只有 245 个数据点对应于市场开放。
由于我想预测 2022 年的第 4 天,并且模型的估计需要连续的数据点,我决定使用 decimal_date()(来自 lubridate)来获取我的 2021 年十进制时间索引的第一个日期,并假设数据点以人为的方式等距。那么我的tsobject 从 2021 年的第一个工作日开始就是这个样子:
library(lubridate)
x<-ts(rnorm(245),start=decimal_date(ymd("2021-01-04")),frequency = 245)
这是:
>x
Time Series:
Start = 2021.00821917808
End = 2022.00413754543
Frequency = 245
然后我使用rugarch 包来估计这个数据的 GARCH 模型:
library(rugarch)
garch_setup <- ugarchspec(
mean.model=list(armaOrder=c(1,1), include.mean=TRUE), #ARIMA
variance.model=list(garchOrder=c(0,1)), #GARCH
distribution.model = "norm")
garch_fit <- ugarchfit(spec = garch_setup, data = x, solver ='hybrid')
然后,当我想预测结果时,分配给模型中数据点的日期(索引)对应于纪元时间,而不是我之前在 ts 和 decimal_date() 函数中分配的日期:
forecast_garch <- ugarchforecast(garch_fit, n.ahead=4)
检查预测指标:
>forecast_garch@model$modeldata$index
[1] "1970-01-01 19:00:00 -05" "1970-01-02 19:00:00 -05" "1970-01-03 19:00:00 -05"
[4] "1970-01-04 19:00:00 -05" "1970-01-05 19:00:00 -05" "1970-01-06 19:00:00 -05"
[7] "1970-01-07 19:00:00 -05" "1970-01-08 19:00:00 -05" "1970-01-09 19:00:00 -05"
...
我应该怎么做才能让rugarch 函数在估计和预测中使用我的ts 的对象日期索引?
谢谢!
PD:忽略 2021 年至今仍在进行的事实。
【问题讨论】: