计算滚动收益

问题描述

我有一个3列的数据框。我想做的是计算每个月周期(或换句话说,每一行)(如果有)在选定月份滚动期内的收益乘积。这是数据的基本结构。

set.seed = 100
assets <- c("A","B","C","D","E","F","G","H","I")
FileDate <- seq(as.Date("2011-12-30"),as.Date("2019-01-31"),by="months")
df <- merge(x = assets,y = FileDate,all.x = TRUE)
df$return <- runif(774,min=0,max=1)

最后应该是一个数据帧,其中添加了一个新列,并带有该时间帧的选定期间累计回报。例如,下面显示了四个月的回报。根据该数据计算的2012年3月30日的4个月回报为: (((1 + 0.81 / 100)(1 + 0.715 / 100)(1 + 0.27 / 100)*(1 + 0.80 / 100)-1)* 100

对于X列下的每个值都会重复此操作。

enter image description here

解决方法

我最终使用了mutate功能,在那里您可以设置滞后宽度。在我想要的最终版本中

finally

此特定代码会滚动产生5个月的平均值。如果按X列排序,则可以在excel中查看并重新创建。

d

我还找到了一种创建滞后的方法,因此我可以将4个先前值用于观察并计算均值:

    library(dplyr)
    library(zoo)

    # Create Test Dataframe
    set.seed = 100
    assets <- c("A","B","C","D","E","F","G","H","I")
    FileDate <- seq(as.Date("2011-12-30"),as.Date("2019-01-31"),by="months")
    df <- merge(x = assets,y = FileDate,all.x = TRUE)
    df$performance <- runif(774,min=0,max=1)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...