我想计算几家公司的平均调整后收益。 我有月度数据。我想计算最近12个月的滚动平均值。之后,我需要从月收益中减去滚动平均值。
起初,我使用quantmod
和lapply
来计算收益:
library(quantmod)
stocks=new.env()
startDate=as.Date("2008-07-31")
endDate=as.Date("2019-06-30")
tickers=c("ADS.DE","DAI.DE","BMW.DE")
getSymbols(tickers,src="yahoo",env=stocks,from=startDate,to=endDate)
stocksL=as.list(stocks)
returns.daily=lapply(stocksL, function(x) diff(log(Cl(x))))
returns.montly=lapply(returns.daily, apply.monthly, sum, na.rm=TRUE)
在下一步中,我必须计算每个月最近12个月的滚动平均值。我的估计期限是2009年7月31日至2019年6月30日。 之后,我必须从每个月的收益中减去滚动平均值。
答案 0 :(得分:0)
您可以使用rollapply()
功能。假设您要计算每个月的年均收益,则代码为:
library(zoo)
returns.rolling=lapply(returns.montly,
function(x) rollapply(x, width = 12, FUN = mean))
aR = Map("-",returns.montly, lapply(returns.rolling, stats::lag))