【发布时间】:2018-09-25 09:08:23
【问题描述】:
我得到了一个 4 年的资产回报时间序列,我正在尝试执行滚动窗口以估计校准期为 6 个月的方差-协方差矩阵。
一般来说,将包含 5 种资产在 20 天内的收益的矩阵视为数据集
data <- matrix(rnorm(100), 20, 5) #data represents the returns of 5 assets over 20 days
我想校准 5 天内收益的协方差矩阵,因此考虑到第 1、2、3、4、5 天。然后我想校准另一个协方差矩阵,考虑到第 4、5、6、7 天, 8. 以此类推,使用滚动窗口(我尝试过使用循环 for)。
window.size <- 5
但是将窗口大小设置为 5,对于第一个矩阵,代码会考虑第 1、2、3、4、5 天,但对于第二个矩阵,代码会考虑第 2、3、4、5、6 天(不是我想要的 4、5、6、7、8)。这是我的问题。我不知道如何修改代码以便从第 2 天到第 4 天进行这种“拆分”。 我该如何处理这个问题?
window.size <- 5 #set the size of the window equal to 5 days
windows <- embed(1:nrow(data), window.size)
forApproach <- function(data, windows) {
l <- vector(mode="list", length=nrow(windows))
for (i in 1:nrow(data)) {
l[[i]] <- cov(data[windows[i, ], ])
}
}
【问题讨论】:
-
两件事。 1) 看来您的基于
far-loop的代码不起作用。 2) 您希望如何显示结果? -
我想要一个列表(代码中的 l 变量),其中有 6 个方差-协方差矩阵。考虑到所有列,这些矩阵应从 1:5、4:8、7:11、10:14、13:17、16:20(行/天)开始计算。但是,上面的代码计算了考虑 1:5、2:6、3:7(行)等的矩阵。
-
我想要一个列表(代码中的 l 变量),其中有 6 个方差-协方差矩阵。考虑到所有列,这些矩阵应从 1:5、4:8、7:11、10:14、13:17、16:20(行/天)开始计算。但是,上面的代码计算了考虑 1:5、2:6、3:7(行)等的矩阵。 @MKR
标签: r matrix variance calibration rolling-computation