我正在尝试计算宽度为过去12个月的多个股票的滚动Beta回归 .
好像:
我正在搜索很多帖子,但不知怎的,我没有让它为我的数据框架工作 .
func1 <- . %>% {
roll_regres.fit(x = cbind(1, .$MKT_ex),
y = .$r_rf, width = 12L)$coefs }
out <- dt %>%
group_by(Stkcd) %>%
# make it explicit that data needs to be sorted
arrange(Date, .by_group = TRUE) %>%
do(cbind(reg_col = select(., MKT_ex, r_rf) %>% func1,
date_col = select(., Date))) %>%
ungroup
我收到错误消息:
Error in roll_cpp(Y = y, X = x, window = width, do_compute_R_sqs =
do_compute_R_sqs, : 'dchdd' failed with code -1
我的目标是获得一个输出,其中包含Date,Stkcd(Stocknumber)和计算β(r_rf在MKT_ex上回归) . 我在代码中错过了什么?
我在论坛中发现了这段代码
G.格洛腾迪克
,遗憾的是它不适用于我的数据集,我无法找到原因 .
rolli <- function(ix) {
data.frame(coef = rollapplyr(ix, width = 12, function(ix) {
coef(lm(y ~ x, data = dat, subset = ix))[2]
}, by = 1), Date = dt$Date[ix][1], Stkcd = dt$Stkcd[ix][1])
}
do.call("rbind", by(1:nrow(dt), dat[c("Date", "Stkcd")], rolli)