Ein Rechner, der Portfolio-Rebalancing berücksichtigt? [geschlossen]

Ich suche nach einem Rechner, der die Neugewichtung bei der Schätzung der Gesamtrendite anhand historischer Daten berücksichtigt.

Ich gebe zum Beispiel folgendes in den Taschenrechner ein:

  • Ich habe eine Anfangsinvestition von 10.000 $.
  • Ich habe 50 % in Fonds A investiert.
  • Ich habe 50 % in Fonds B investiert.
  • Ich balanciere jedes Jahr neu.
  • Beginnen Sie im Jahr 1990.

Dann würde der Rechner unter Verwendung der tatsächlichen Performancedaten beider Fonds seit 1990 bis heute Folgendes ausgeben:

  • Der Gesamtwert Ihres Portfolios im Jahr 2015 würde X Dollarbetrag betragen.

Kennt jemand so einen Rechner?

Antworten (2)

Meine Antwort ist Microsoft Excel.

Googeln Sie „VBA für Dummies“ (ernsthaft) und finden Sie heraus, ob Ihr Broker eine „API“ anbietet. Mit einem kurzen Verständnis der Codierung können Sie eine Tabelle erhalten, die live mit dem Datenstrom Ihres Brokers verbunden ist.

Angenommen, Sie haben eine Tabelle mit dem Wert von 1990 in den ersten beiden Spalten (Zellen a1 und b1). Vielleicht könnte diese Formel die dritte Spalte sein, die Ihnen sagt, wie viel Sie kaufen oder verkaufen müssen, um sie neu auszugleichen.

=((a1+b1)/2)-a1

Um die Neuverteilung zu iterieren, setzen Sie sowohl a2 als auch b2 auf =C1und ziehen Sie die Formel durch Zeile 25, eine Zeile für jedes Jahr. Es wird wahrscheinlich ein wenig mehr Arbeit sein, aber Sie bekommen die Idee.

Ein Anfang, aber Preisdaten allein reichen nicht aus, also haben Sie Recht mit: „ein bisschen mehr Arbeit als das.“ Die meisten Fonds zahlen Ausschüttungen, die ebenfalls nachverfolgt und reinvestiert werden müssten. Ausschüttungen würden über einen langen Zeitraum einen erheblichen Teil des Portfoliowerts ausmachen. Ein reiner Kursansatz funktioniert nur im einfachsten Fall, wenn keine Ausschüttungen oder andere bedeutende Ereignisse (z. B. Splits oder Konsolidierungen) vorliegen. Das Szenario ist für Investmentfonds unwahrscheinlich, aber für bestimmte Aktien möglich.

R hat ein wirklich gutes Paket, mit dem Sie die Rendite von neu ausbalancierten Portfolios berechnen können. Das Paket heißt: PerformanceAnalytics (siehe: http://www.inside-r.org/packages/cran/PerformanceAnalytics/docs/Return.portfolio ).

Ich habe schnell ein kleines Skript für Sie geschrieben, mit dem Sie genau das tun können, was Sie möchten.

Code:

startAmount <- 10000
library(PerformanceAnalytics)
#a small function to ensure that the data is of the correct type for the package to work
cleanData <- function(df) {
  if(ncol(df) > 0) {
    df <- df[,-1]
    df['Date'] <- as.Date(df[['Date']], format = '%Y-%m-%d')
    #set all the data to numeric data.
    #the first column is the date.
    cols <- c(2:ncol(df))
    df[,cols] <- lapply(df[,cols],function(x) as.numeric(as.character(x)));
    df <- xts(df[,-1], order.by=df[,1])
    return(df)
  } else {
    return("Error; the data.frame does not have any columns.")
  }
}
# use csv2 if you use use a comma as decimal point and a semicolon as field separator
# enter the path to your file where it says: portfolio.csv
yourPortfolio <- cleanData(read.csv('portfolio.csv'))
# the frequency with which you want to rebalance your portfolio is set to yearly. You could also set this to daily, weekly or monthly.
vectorReturns <- Return.portfolio(yourPortfolio, rebalance_on = c(NA, "years"))
dollarAmount <- startAmount*prod(1+vectorReturns)
print(paste("Your portfolio total value in 2015 would be ", dollarAmount, " amount of dollars.", sep = ""))

Standardmäßig wird das Portfolio zu einem gleich gewichteten Portfolio neu gewichtet. Es ist auch möglich, Ihr Portfolio mit benutzerdefinierten Gewichtungen neu auszugleichen. Sehen Sie in der Dokumentation nach, wie das geht.

Damit dieser Code funktioniert, müssen Sie Ihre Daten bereits in Rückgabebedingungen haben. Das geht ganz einfach in Excel. Stellen Sie sicher, dass Ihre Daten in Excel so aussehen:

             option 1     option 2
2003-10-30 -0.002014099 -0.002014099
2003-10-31 -0.002018163 -0.002018163
2003-11-03 -0.029322548 -0.022605170
2003-11-04 -0.032291667 -0.032128514
2003-11-05  0.019375673  0.017634855

Dann exportieren Sie Ihre Daten in eine CSV-Datei.

Hinweis: Stellen Sie vor dem Ausführen des Codes sicher, dass Sie das Paket PerformanceAnalytics installiert haben. Sie können dies wie folgt tun:

install.packages("PerformanceAnalytics")

Lassen Sie mich wissen, wenn Sie Fragen zu den oben genannten Punkten haben.