首页 > 解决方案 > 如何计算索引为 100 的向量中的复合收益?

问题描述

我有以下数据框:



dat <- tibble::tribble(    ~date     ,  ~pct_monthly_return,
                           2021-01-31,   0.0023,
                           2021-02-28,   0.01,
                           2021-03-31,   0.035)

我想创建一个名为的新列index,该列在数据框开始前一个月从 100 开始(即在我的示例中为 2020-12-31)。然后必须将 100 的索引与pct_monthly_return变量复合,以便我可以看到索引如何随时间增长。

结果应生成以下数据框:

date                   pct_monthly_return   index
2020-12-31             0                    100 
2021-01-31             0.0023               100.23
2021-02-28             0.01                 101.2323
2021-03-31             0.035                104.7754

标签: rdataframe

解决方案


我们可以将收益的累积乘积表示为系数,即1 + pct_monthly_return

dat$index = 100 * cumprod(1+dat$pct_monthly_return)

然后添加您描述的标题行:

rbind(data.frame(date = "2020-12-31", index = 100, pct_monthly_return = 0), 
      dat)

        date    index pct_monthly_return
1 2020-12-31 100.0000             0.0000
2 2021-01-31 100.2300             0.0023
3 2021-02-28 101.2323             0.0100
4 2021-03-31 104.7754             0.0350

样本数据

dat <- tibble::tribble(    ~date     ,  ~pct_monthly_return,
                           "2021-01-31",   0.0023,
                           "2021-02-28",   0.01,
                           "2021-03-31",   0.035)

推荐阅读