我试图对任意数量的股票进行股票收益的滚动回归 . 下面的代码返回我想要的两个股票的结果,但我想扩展我的代码,以便每个股票在“基准”股票上回归 . 以下面的数据为例,选择Google作为基准股票,并在Google上对FB,APPL和NFLX进行滚动回归 . 什么是实现这一目标的好方法?我宁愿留在整齐,但欢迎任何解决方案 .

library(tidyquant)
FANG <- tq_get(c("FB","AAPL","NFLX","GOOGL"), get = "stock.prices", from = " 2018-01-01")
returnsFANG=FANG %>% group_by(symbol) %>% 
  tq_transmute(select     = close, 
               mutate_fun = periodReturn, 
               period     = "daily", 
               col_rename = "Daily.Returns")%>%
  spread(symbol,Daily.Returns)

returnRegression = function(data) {
coef(lm(AAPL ~ NFLX, data = timetk::tk_tbl(data, silent = TRUE)))

}
regressionCoef=returnsFANG %>% select(c(date,AAPL,NFLX))%>%
  tq_mutate(mutate_fun = rollapply,
            width      = 60,
            FUN        = returnRegression,
            by.column  = FALSE,
            col_rename = c("Intercept", "Slope"))

使用此问题的解决方案R / Rolling Regression with extended Data Frame我能够使用以下代码获得解决方案的大部分内容

xnames=names(returnsFANG)[c(-1,-2)]
n <- nrow(returnsFANG)
w <- 60
slope = function(ix, xname) summary(lm(AAPL ~., returnsFANG[c("AAPL", xname)], subset = ix))$coefficients[2,1]
slopeReturns=as.data.frame(sapply(xnames, function(xname) rollapply(1:n, w, slope, xname = xname )))

我不知道如何保留日期列,以便它出现在slopeReturns数据框中 . 这将如何实现?