portfolio-performance / portfolio

Track and evaluate the performance of your investment portfolio across stocks, cryptocurrencies, and other assets.
http://www.portfolio-performance.info
Eclipse Public License 1.0
2.95k stars 605 forks source link

Chart: Wertpapier-Performance vergleicht Portfolio mit Kurs, zeigt aber nicht die Performance des Papiers im Depot #85

Closed buchen closed 11 years ago

buchen commented 11 years ago

Beides sollte möglich sein: a) die Performance des Depots mit einem Papier zu vergleichen (z.B. DAX) b) die Performance eines Papiers des Depots auf dem Chart abzutragen

Aus dem Wertpapier Forum:

Mich stört aktuell die Grafik Performance -> Diagramm:

Dort sehe ich die Rendite ausgewählter Papiere ab einem gemeinsam bestimmten Zeitpunkt im zeitlichen Verlauf. Interessanter wäre oft aber die Rendite ausgewählter Papiere für den jeweilig tatsächlichen Besitzzeitraum im zeitlichen Verlauf - denn der kann ja bei verschiedenen Papieren unterschiedlich sein.

Ein Beispiel, wo es besonders stört:

Ich habe Ende April Aktien gekauft, die sich im Plus befinden. Ende Mai habe ich einen ETF gekauft, der sich im Minus befindet. Wenn ich beide in der Grafik vergleichen möchte und Ende April als Startpunkt auswähle, sehe ich beide Kurven ins Plus wandern - es wird gar nicht deutlich, dass der ETF im Besitzzeitraum eine negative Performance hatte.

gynngr commented 11 years ago

die Diskussion über den IZF zieht sich ja schon ein wenig länger, und auch ich bin nicht ganz zufrieden mit der bisherigen Berechnung. Folgendes finde ich nicht gut:

Nun, ich habe mir mal die IZF-Berechnung im ClientIRRYield angesehen. Das Problem liegt wohl in der gemeinsamen, aber nur teilweisen Betrachtung von AccountTransactions und PortfolioTransactions. Ich hätte dazu einen Vorschlag, hole dazu aber mal ein wenig aus:

Eine IZF-Berechnung beruht ja schlicht und einfach darauf, das eine Folge von "Kapitalveränderungs/Stichtags-Pärchen" in den IRRYield-Newton-Iterator schickt. Dies kann man für eine einzelne Position oder eine beliebige Gruppe von Positionen tun, um einen einzelnen oder gemeinsamen IZF zu erhalten. Man muss immer nur sehen, das jede einzelne Zahlungsreihe in sich abgeschlossen ist. Dies ist gar kein Problem, wenn man einen vollständigen Vorgang hat, z.B. eine Aktienreihe Kauf-Dividenden-Verkauf. Oder eine Konto-Einzahlung-Zinsen-Auflösungs-Reihe. Hat man aber meistens nicht. Will zu einem Zeitpunkt nach einem Kauf starten, nimmt man bei Wertpapieren den Historienkurs oder sonst den Einstandskurs als "Kauf". Bei Konten immer den Saldo zum Stichtag als "Einlage" Will man zu einem Zeitpunkt vor dem Verkauf enden, nimmt man bei Wertpapieren den Historienkurs oder sonst den letzten bekannten Kurs, zur Not den Einstandskurs als "Verkauf". Bei Konten immer den Saldo zum Stichtag als "Entnahme" Wie gesagt, dies immer einzeln pro Wertpapier oder Konto betrachtet und anschließend alles in den großen Topf.

Nun konkret:

Damit könnte man ersten drei oben beschrieben "Probleme" lösen und hätte eine Basis für ein Gruppierungsfeature.

buchen commented 11 years ago

@gynngr, erst mal Danke für Deinen Input!

Momentan gibt es zwei Wegen wie ich Performance berechne: a) IZF (interner Zinsfuß) b) kontinuierliche Performance (ähnlich wie ein Index rechnet)

Methode a) IZF berechne ich für

Methode b) kontinuierliche Performance berechne ich für

Erst mal zu Methode a) IZF:

Zu Methode b) kontinuierliche Performance:

Zu Deinen Punkten:

bei Käufen wird nicht der Kaufpreis, sondern der Kurs am Kauftag zur Bewertung benutzt. Ist der nicht vorhanden, gibt es unsinnige Werte.

Für den IZF ist das m.E. nicht der Fall, aber für die kontinuierliche Performance. Hier sollte es aber Abhilfe bringen, wenn ich fehlende Kurse ggf. durch Kauf- und/oder Verkaufskurse zu ersetzen.

Kosten beim Kauf und Verkauf fließen nicht in den IZF ein

Das kann ich nicht nachvollziehen. In der Wertpapier-Performance sieht man ja den Kaufwert - damit wird gerechnet und das beinhaltet die Gebühren.

Bei Methode b) fließen die Gebühren auch ein, aber anders. Hier hat man am Kauftag ein Minus weil man x + 10 Euro zahlt, die Position aber nur mit x bewertet wird. (Klar, hier muss der richtige Kurs vorliegen - siehe oben)

auch mir fehlt ein Feature, um eine beliebige Gruppierung von Konten und Wertpapieren IZF-mäßig zu betrachten.

Stimmt. Bei Methode b) geht das, beim IZF nicht. Ich kann nicht versprechen, dass in naher Zukunft zu tun (ich bin gerade an den freien Klassifizierungen dran).

Die Idee mit der Nutzung der Kauf-/Verkaufskurse nehme ich auf jeden Fall auf.

gynngr commented 11 years ago

@buchen: meine Behauptung

Kosten beim Kauf und Verkauf fließen nicht in den IZF ein stimmt so nicht, aber das richtige Ergebnis liefert deine Berechnung auch nicht.

Zum Nachvollziehen das Beispiel: Kauf und Verkauf eines Fonds 1.1.2012 Einlage 2100 1.1.2012 Kauf 10 Stck Kurs 100 Gebühren 50 = 1050 1.1.2013 Verkauf 10 Stck Kurs 120 Gebühren 50 = 1150

Gewinn ist 100, also Performance bezogen auf die Einlage ca. 4,7% und auf die Investition 9,5%. Bei pp ist ein Erfolg von 150 mit 7,31% / 15% ausgewiesen. Das Problem ist die inkonsistente Verwendung der Kurse zur Bewertung. Verwende einfach immer die Umsätze, Die Kurse nur zur Bewertung offener Bestände am Anfang und am Ende.

image

image

gynngr commented 11 years ago

@buchen: habe mein IZF-Buchungsschema mal in ein Kalkulationsblatt verpackt. Da kann man alle Buchungsarten durchspielen und sehen, wie man sowohl Konten und Portfoliers beliebig summieren kann.

https://www.dropbox.com/s/zn1o37wonseb2qv/izf.ods

Sonderfälle, wo sich ein Summen-IZF nicht berechen lässt, kann man leicht vermeiden, wenn man einzelne IZF-Reihen mit Summe Null bei der Gesamtsummierung weglässt.(Beispiel "Fond" mit Einlage 0 oder 1050)

image

image

buchen commented 11 years ago

@gynngr: ich habe es noch nicht geschafft, die ods Datei inklusive Formeln zu öffnen (Excel zeigt mir nur Werte an), aber eine Puzzleteilchen konnte ich zusammensetzen :-)

Bei einem Berichtszeitraum von X bis Y nehme ich immer Tagesendwerte, d.h. den Wert am Ende des Tages nach den Transaktionen. Ein Kauf am Anfangsdatum (hier 1.1.) fällt also nicht mehr in den Berichtszeitraum und wird mit dem aktuellen Kurs abgegrenzt. Die "Verluste" durch die Gebühren fallen damit auch in die vorherige Berichtsperiode.

Wenn Du das Berichtsdatum auf den 31.12.2011 bis 31.12.2012 änderst, dann sollten die erwarteten Werte herauskommen.

Hier die Excel Gegenrechnung - und es kommen die selben Werte raus die Du auch errechnet hast. bildschirmfoto 2013-06-12 um 20 06 52

simpsus commented 11 years ago

Hier die Datei mit Formeln als xlsx https://www.dropbox.com/s/vqiz3qqfxns4s2g/izf.xlsx

gynngr commented 11 years ago

@simpsus danke für die konvertierung, hab halt keinen bock auf Mietbasis hin und wieder Excel zu nutzen @buchen: ja ein Tag vorher ist alles gut, ich bin schon ziemlich gemein. Aber als Beispiel für die relative Einfachheit eines IZF-Modells möglichst ohne Kurse schon durchaus geeignet oder ?

buchen commented 11 years ago

Die Diskussion hat mehrere Punkte hervorgehoben:

Voos commented 11 years ago

Ein kleiner Vorschlag zu dem Punkt "Kauf/Verkaufskurse nutzen, wenn keine historischen Kurse vorliegen": warum nicht einfach automatisch bei einem Kauf/Verkauf den dort berechneten Kurs als historischen Kurs beim Wertpapier eintragen?

gynngr commented 11 years ago

Ungünstig, weil im Preis auch versteckte Gebühren stecken können, z.B. 5% Ausgabeaufschlag bei Fonds. Dann sind auf einmal Sprünge im Kursverlauf.

buchen commented 11 years ago

Ungünstig, weil im Preis auch versteckte Gebühren stecken können

Das ist auch der Grund warum ich noch nicht - mal schnell - den errechneten Kurs der Kurshistorie hinzufügt habe. Ich muss noch eine Möglichkeit finden, die zu unterscheiden und auch wieder zu ersetzen sobald bessere historische Kurse zur Verfügung stehen.

buchen commented 11 years ago

Ich schliesse diesen Issue mal, weil das ursprüngliche Feature (Wertpapiere auf dem Diagramm sowohl als Benchmark wie auch als Performance zu sehen) mit 0.8.0 geliefert ist.