以R为单位的3天滚动日志返回

以R为单位的3天滚动日志返回,r,xts,R,Xts,我正试图找出一个聪明的方法来计算一大群股票的3天滚动回报。我不习惯使用xts对象,我希望你们中的一些人也习惯,因为我喜欢在我的数据上使用PerformanceAnalytics包 我有一个很大的xts对象,有559只股票和10年的每日价格。是否有一种聪明的方法来保持xts对象的结构并保存滚动返回?最好没有for循环 > dim(Prices) [1] 2610 559 diff函数可能对我有帮助 # Generates Dummy Data set.seed(100) dates &l

我正试图找出一个聪明的方法来计算一大群股票的3天滚动回报。我不习惯使用xts对象,我希望你们中的一些人也习惯,因为我喜欢在我的数据上使用PerformanceAnalytics包

我有一个很大的xts对象,有559只股票和10年的每日价格。是否有一种聪明的方法来保持xts对象的结构并保存滚动返回?最好没有for循环

> dim(Prices)
[1] 2610  559

diff函数可能对我有帮助

# Generates Dummy Data
set.seed(100)
dates <- seq(as.Date("2010/1/1"), length.out=20, by="day")
R <- as.xts(rbind(c(0,0,0),matrix(runif(n=57, min = -0.1, max = 0.1),nrow=19)),order.by=dates)
colnames(R) <- c("St1","St2","St3")
prices <- 100*apply(1+R,2,cumprod)

# Calculating log-returns
logR3d <- diff(log(prices), lag=3)

# Check calculations
logR3d_calc <- as.xts(matrix(NA, nrow = 17, ncol = 3 ),order.by=dates[4:20])
colnames(logR3d_calc)=c("St1","St2","St3")

for (stock in 1:ncol(prices)){
  for (day in 2:(nrow(prices)-2)){
    logR3d_calc[day-1,stock] <- sum(log(1+R[day:(day+2),stock]))
  }
}

我对股票和天数进行了双重评级,并在之后手动绑定日期。。我想做得更优雅一些。你们能分享一小部分数据吗?或者你们能创建一些虚拟数据吗?另一个选项是TTR::ROC:logR3谢谢,我会查出来的