2016-11-08 8 views
1

Это то, на что похоже моя таблица данных. Столбцы A: E - это просто сравнение с excel. Столбец NewShares - моя желаемая колонка. I НЕ имеют эту колонку в моих данных.Расчет реинвестирования дивидендов кумулятивным подходом

  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 с предположением, что новые акции добавляются к InitialShares по реинвестирования дивидендов (NewShares*CashPershare) на 90% от стоимости (Price*.9). В отличной стране формула будет равна =F2+((F2*E3*B3)/(C3*0.9)) со второго ряда. Первая строка равна InitialShares.

В R земле, я стараюсь (что не совсем верно):

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

Пожалуйста, обратите внимание на десятичные точки NewShares когда вы создаете поле для того, чтобы подтвердить свой подход.

+0

@eddi Я сожалею. Я поставил неправильную цену в столбце C. Я обновил сообщение. – gibbz00

ответ

2

Если вы расширяете вашу формулу, вы поймете, что это работает:

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

Большое спасибо за ваш ответ! Я тоже попробовал «cumprod». По какой-то причине он не мог заставить его работать. – gibbz00