计算每月资金回报

时间:2020-07-14 08:17:08

标签: r

=> {city: "seattle", state: "WA", population: 652405, land area: 83.9}

在这里,我将我的资金样本缩小到一个基金,并记录了日志(ln_f5)。

然后我尝试根据上面在网上找到的公式计算收益。

当我查看ln_returns_f5的结果时,第n天应该没有单元格返回条目(因为n-1没有结果)。

相反,第n + 1天的返回值位于第n天的单元格中。

我如何有效地将所有单元格结果向前移动一个周期,以便我的n的返回条目为空白?

非常感谢

2 个答案:

答案 0 :(得分:1)

我不知道您如何构造数据以及想要计算什么收益,但是也许可以作为启发:


library(data.table)
# For long data:
dt_long<-ggplot2::economics_long
setDT(dt_long)[order(date),return:=(value/shift(value,n=1, type = 'lag')-1)*100,by=variable]

# For wide data
dt<-ggplot2::economics
setDT(dt)
return_columns<-names(dt[,-"date"])
dt[,paste("return_",return_columns):=lapply(.SD,function(x){(x/shift(x,n=1, type = 'lag')-1)*100}),.SDcols=return_columns]

答案 1 :(得分:0)

您可以使用dplyr

y <- c(8,10,12,14,16,18)

my_return <- ifelse(is.na((y-lag(y))/lag(y)), 0, (y-lag(y))/lag(y))

返回

[1] 0.0000000 0.2500000 0.2000000 0.1666667 0.1428571 0.1250000

如果可以在开始时使用ifelse(is.na()),则可以跳过整个NA部分。

相关问题