New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performance eines Wertpapieres wird nicht korrekt berechnet, wenn nachgekauft wird #615
Comments
Ich werde mir die Datei anschauen.
Wenn das Gesamtportfolio nur dieses Wertpapier enthält, dann sollte die Performance gleich sein. Hast du noch ein Referenzkonto erfasst? Eine Cashposition auf dem Referenzkonto "dämpft" natürlich die Performance, da Cash um die 0 Prozent bringt. Und natürlich will ich nicht ausschliessen dass es auch Bugs gibt 😉 |
Hi @hendrikm78, ich habe mir jetzt die Datei "Test02.xml" angeschaut --> also die Frage, warum sich die Performance von dem Gesamtportfolio und "Test 1%" unterscheiden. Es ist das selbe Problem wie hier im Forum beschrieben: Aktuell wird die Performance eines Tages bereits investierten Kapital zugeordnet. In Deinem Fall kaufst Du das Wertpapier zu 101: Der Kurs am Ende des Tages ist aber drunter: Dieser Verlust wird dem bisherigen Kapital zu geordnet. In dem "Gesamtportfolio" tritt das nicht auf, weil bei der Betrachtung des Gesamtportfolios der Mittelzufluss ja schon einen Tag vorher auftritt. Wenn Du die Einzahlung auf den selben Tag legst, dann sind die Kurven (fast) identisch (ich denke die kleine Cashposition macht den Unterschied): Ich habe vor diese Berechnung zu ändern, aber leider bin ich noch nicht dazugekommen. In der Literatur gibt es den midday-cashflow, aber auch hier bleiben noch Abweichungen. Ich überlege die Performance des Zukaufs separat zu rechnen und dann mit der Performance des restlichen Investments zu verrechnen. Ich bin noch nicht dazu gekommen. 😐 |
Hi @buchen, |
Aus dem Wertpapier Forum:
|
Sieht gut aus. |
Das sah mir nach keiner großen Änderung aus, daher habe ich versucht, es zu implementieren (siehe verlinkter Commit). Allerdings hat das als Seiteneffekt, dass Einlagen nicht mehr performance-neutral sind. Gibt es überhaupt eine Möglichkeit, dieses Problem zu beheben, ohne eine Reihe anderer zu schaffen? |
Ich habe noch einen zweiten Versuch unternommen, das Problem anzugehen, indem nur Steuern und Gebühren in Relation zu den Einlagen des jeweiligen Tages berechnet werden und der Rest nach wie vor nur in Relation zum Gesamtwert des Vortages. Das löst Probleme mit einigen Testfällen, aber nicht mit allen. An dieser Stelle steige ich ersteinmal aus, da ich unsicher bin, was genau hier ein gewünschtes Verhalten ist und ob ein paar der Tests entsprechend angepasst werden müssten. Auch was alles zu den Einlagen zählen sollte ist mir nicht klar (z.B. auch Steuerrückzahlungen?). |
Hi @michaellass , die Formel aus dem Wertpapierforum stammt ursprünglich von mir. Vielleicht ist diese Erläuterung dazu hilfreich. Zunächst hat die Variable COt (Copy und paste hat oben scheinbar daraus ein "Cut" gemacht) als "Cash flow out" ein negatives Vorzeichen, insofern ist die folgende Schreibweise eindeutiger: (Vt + Abs(COt)) / (Vs + CIt) V = Bewertung der Position zu einem Zeitpunkt Vt ist immer die Bewertung der Position nach Gebühren und Mittelflüssen. Korrekt angewendet ist eine Einlage nach dieser Formel performanceneutral, wie das folgende Beispiel zeigt: Eine Position enthält 1 Stück zum Preis von 10,00 Euro (Vs = 10,00 Euro). Nun kaufen wir 10 Stück zum Preis von 10,00 Euro (CIt = 100,00 Euro). Bleibt der Kurs gleich, sollte die Rechnung also performanceneutral sein: (110,00) / (10,00 + 100,00) * 100 - 100 = 0% Perfekt! Jetzt simulieren wir zusätzliche eine Kursänderung von -10% zum Kaufzeitpunkt: (99,00) / (10,00 + 90,00) * 100 - 100 = -1% Die Performance sinkt, allerdings nicht um -10% sondern nur marginal, da wir die 10 Stück erst nach dem Kursrutsch gekauft haben. Das ist der große Unterschied zur bisherigen Implementierung! Nehmen wir alternativ einmal an, dass der Kurs gleich bleibt und Kosten von 10,00 Euro für den Kauf von 10 Stück angefallen wären: (100) / (10,00 + 100,00) * 100 - 100 = -9,1% Wir haben einen Vermögenswert von 10,00 Euro, tätigen dann einen Kauf mit sofortigem Verlust von 10% durch Kaufkosten und die Gesamtperformance sinkt um -9,1%, weil der Verlust nur auf das Tagesgeschäft angewendet wird. Nebenbei: Persönliche Steuern wie die Kapitalertragssteuer haben meiner Meinung nach in der Performanceberechnung nichts zu suchen, weil sie die Vergleichbarkeit der Messung unmöglich machen. |
@imagine-ecommerce - Danke für das ausführliche vorrechnen. @michaellass - ich hatte auch schon mal angefangen, bin aber auch an existierenden Testfällen hängen geblieben 😄 Aktuell sammele ich die Mittelzuflüsse/-abflüsse in einer Variable. In einem ersten Schritt würde ich das erst mal aufteilen in "inbound" und "oubound cash flows". Wenn Du das hast, check pushe den Code doch gerne noch mal hoch. Die weiteren Testfälle kann ich mir anschauen. |
Ich bin bisher noch nicht zu einem weiteren Anlauf gekommen, habe es aber noch auf dem Schirm. Bei der Gelegenheit wäre die Frage, ob man das Einbeziehen von Gebühren und/oder Steuern in die Performance konfigurierbar machen möchte. @imagine-ecommerce hat ja die persönlichen Steuern schon angesprochen und ich meine mich zu erinnern, dass auch schon diskutiert wurde, ob die Gebühren mit einfließen sollen. @buchen, was meinst du? Persönlich fände ich das gar nicht schlecht. So könnte man gut sehen, wie viel der persönlichen Performance durch Gebühren aufgefressen wird. |
Aktuell wird die Performance unter Einbeziehung von Gebühren und Steuern berechnet. Ich würde auch in einem ersten Schritt die Rechnung erst mal so ändern, dass Zu/Abflüsse besser verrechnet werden. Ein zweiter Schritt (separater Change) ist dann die Konfiguration. Vermutlich würde man in den Auswahldialog für die Datenreihen noch mehr einfügen (quasi verdoppeln). |
Die Berechnung von @imagine-ecommerce finde ich richtig und nachvollziehbar. In der aktuellen Version ist es so, dass Gebühren und Dividenden auf die Performance des einzelnen Wertpapiers angerechnet werden. Ein- und Auslieferungen sind Performance-neutral, das ist soweit richtig. Leider bin ich nicht fit in github, daher meine Änderungen am aktuellen Snapshot (0.26.6) hier als diff-Files. |
Ich habe basierend auf dem Change von @hendrikm78 PP jetzt angepasst. Das aufwändigste war die Performance Berechnung von Kategorien. Vorher habe ich der Einfachheit halber alle Umbuchungen, Käufe, etc. in Einlagen / Auslieferungen umgewandelt. Die transferals haben sich ja wieder aufgehoben. Da jetzt inbound und outbound transferals separat betrachtet werden, hatte das plötzlich einen Performanceeffekt. Ich habe eine Testversion hier hochgeladen - @hendrikm78 @michaellass @imagine-ecommerce - Zeit zu testen? |
Ich habe eben den aktuellen Stand des feature_perf_calculation Branches kurz angetestet (bin aktuell unter Linux). Das sieht sehr gut aus! Mir ist aufgefallen, dass in einem Portfolio, wo ich mit einem Sparplan einem einzelnen Wertpapier folge, die Performance nun nicht mehr genau dem Wertpapier entspricht. Aber ich schätze, das ist zu erwarten, wie der hinzugefügte Kommentar in
Das hatte mich damals bei meinen Versuchen etwas verunsichert. |
Bei meinem echte Portfolio unterscheiden sich die Performance Kennzahlen für das Gesamtportfolio oder grosse Kategorien (Asset Allocation) nur in der zweiten Nachkommastellen. Bei einzelnen Wertpapier sieht das teilweise anders aus. Da hat sich sich auch einmal um 0.5 geändert. |
Ja, das deckt sich zahlenmäßig gut mit meinen Beobachtungen. Der Effekt ist sehr klein und gleicht sich vermutlich über die Zeit und über mehrere Wertpapiere hinweg aus. Insgesamt finde ich, wird die Performance mit dieser Änderung deutlich besser abgebildet - insbesondere eben in der Anfangszeit eines sich aufbauenden Portfolios, wo dieser Bug stark zum Tragen kam. 👍 |
Ich habe die Testversion ausprobiert. So wie ich das sehe, sind die Ergebnisse jetzt wie erwartet.
|
Die Peaks kommen daher, das ich den Eingang der Dividenden einen Tag früher als in der Realität gebucht habe, zu diesem Zeitpunkt hat der Kurs des WP den entsprechenden Rückgang noch nicht vollzogen. Dies erfolgt einen Tag später. |
Wird ein Wertpapier nachgekauft und ist der Kaufkurs höher als der aktuelle Kurs (Ausgeabeaufschlag), wird die Performance (TTWROR) abe diesem Zeitpunkt nicht mehr korrekt berechnet. Die Gesamtperformance des kompletten Portfolios ist für mich nachvollzeihbar.
Da jedoch nur dieses eine Wertpapier enthalten ist, müsst die Gesamtperformance und die des Wertpapieres nahezu gleich sein. Oder habe ich einen Denkfehler?
Anbei 2 Beispieldateien.
Test.zip
The text was updated successfully, but these errors were encountered: