我有两个时间序列矩阵:答:由500列构成标普成分股收益的列B:由一列组成,包含索引的返回值(S&P500)
我想执行此功能:
beta_function <- function(stock, index1) cov(stock, index1)/var(index1)
R应该在12个月的时间内应用它。
总结起来:我希望R执行这样的功能,即为每只股票的每12个月窗口计算每只股票的beta。
我尝试过:-重复S&P500指数的价值回报500次,以实现与股票回报矩阵具有相同维度的矩阵。
如果我通过以下方式应用我的功能,则>
apply.rolling(c(returns_constituents, returns_index), width = 12, by = 12, FUN = beta_function)
它返回错误:
Error in is.data.frame(y) : argument "index1" is missing, with no default
甚至在执行
apply.rolling
功能之前先分配
index1 <- returns_index
没有解决我的问题。
您能帮我吗?
非常感谢。
示例:
stock <- matrix(c(runif(n = 84000, min = -1, max = 1)), ncol = 500, nrow = 168) index1 <- matrix(c(runif(n = 168, min = -1, max = 1)), ncol = 1, nrow = 168)
我的尝试是“扩展”索引:
index1_ext <- matrix(c(runif(n = 8400, min = -1, max = 1)), ncol = 500, nrow = 168)
我有两个时间序列矩阵:A:由500列组成,其中包含标准普尔成分的收益率B:由一列组成,其中包含我想要的指数(S&P500)的收益率...
数据,而不仅仅是代码,应该是最小的,因此我们将数据缩减为9x2(请参阅末尾的注释)。同样,我们通过使用set.seed
使其可重现,并使用3而不是12。