【发布时间】:2020-03-28 04:07:54
【问题描述】:
我有两个时间序列矩阵:
A:由 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)
【问题讨论】: