2016-11-08 1 views
1

So sieht meine data.table aus. Die A: E-Spalten dienen lediglich dazu, Vergleiche mit Excel zu ziehen. Spalte NewShares ist meine gewünschte Spalte. I NICHT haben diese Spalte in meinen Daten.Berechnung der Wiederanlage von Dividenden mit einem kumulativen Ansatz

  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') 

Ich versuche NewShares mit der Annahme zu berechnen, dass die neuen Aktien zu 90% des Preises (Price*.9) zu InitialShares von Dividenden reinvestieren (NewShares*CashPershare) hinzugefügt werden. Im Excel Land wird die Formel =F2+((F2*E3*B3)/(C3*0.9)) ab der zweiten Zeile sein. Die erste Zeile ist gleich InitialShares.

In R Land, ich versuche, (was nicht ganz richtig ist):

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

Bitte achten Sie auf die Dezimalstellen von NewShares, sobald Sie das Feld erzeugen, um Ihren Ansatz zu validieren.

+0

@eddi Es tut mir leid. Ich habe den falschen Preis in Spalte C eingegeben. Ich habe den Beitrag aktualisiert. – gibbz00

Antwort

2

Wenn Sie Ihre Formel erweitern, werden Sie erkennen, dass dies funktioniert:

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

Vielen Dank für Ihre Antwort! Ich habe auch den 'cumprod'-Ansatz ausprobiert. Aus irgendeinem Grund konnte es nicht funktionieren. – gibbz00

Verwandte Themen