【问题标题】:Calculating reinvestment of dividends with a cumulative approach以累积法计算股息再投资
【发布时间】:2016-11-08 20:34:21
【问题描述】:

这就是我的 data.table 的样子。 A:E 列只是为了与 Excel 进行比较。 NewShares 列是我想要的列。我在我的数据中有该列。

            A           B        C         D         E          F
 dt<-fread('                 
  InitialShares     Level     Price    Amount   CashPerShare NewShares
         1573.333       0      9.5339   13973.71    0          1573.333
           0            1      10.2595    0       .06689       1584.73
           0            1      10.1575    0       .06689       1596.33
           0            1      9.6855    0       .06689       1608.58')

我试图计算NewShares,假设新股通过以90% 的价格(Price*.9) 再投资股息(NewShares*CashPershare) 被添加到InitialShares。在 excel 中,从第二行开始,公式将为 =F2+((F2*E3*B3)/(C3*0.9))。第一行正好等于InitialShares

在 R 领域,我正在尝试(这不太正确):

dt[,NewShares:= cumsum(InitialShares[1]*Level * CashPerShare/(Price*.9)+InitialShares[1])]

生成字段后请注意NewShares 的小数点,以验证您的方法。

【问题讨论】:

  • @eddi 对不起。我在 C 列输入了错误的价格。我更新了帖子。

标签: r data.table dplyr zoo


【解决方案1】:

如果你扩展你的公式,你会发现这是可行的:

dt[, NewShares := cumprod(1+Level*CashPerShare/Price/0.9)*InitialShares[1]]

【讨论】:

  • 非常感谢您的回答!我也尝试了cumprod 方法。由于某种原因,无法让它工作。
猜你喜欢
  • 2020-09-27
  • 1970-01-01
  • 1970-01-01
  • 2021-06-02
  • 2019-06-06
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多