Bezüge in Datendatei / Datenverlust


#1

Hallo,

in den ersten Tagen der Nutzung hatte ich hin und wieder das Gefühl, dass mir Daten verloren gegangen sind, oder genauer: vertauscht worden sind.

Ich meine, das vor allem bei den Klassifizierungen gesehen zu haben. Ich habe mir selber Klassifizierungen für die “Art” eines Papiers (Bau, Chemie, Lebensmittel usw…) sowie die Dividendenhöhe (< 2%, 2%-4% usw.), -Ausschüttungszeitpunkte und -Ausschüttungshäufigkeit gebaut, und immer wenn ich da geändert / ergänzt habe, hatte ich beim nächsten Laden das Gefühl, dass viele Zuordnungen auf falsche Einträge zielen.
Das waren dann Momente der Art: “Hmmm, warum ist Microsoft Lebensmittel? Warum zahlt Amazon Dividende? Das habe ich nicht zugeordnet, oder ich muss gestern ziemlich besoffen gewesen sein!”

Ich kann nicht rekonstruieren, wann das passiert: Ändern / Ergänzen / Löschen / Sortieren von Klassifizierung oder Ändern / Ergänzen / Löschen von Wertpapieren - ich kann es nicht genau sagen.
Bei Buchungen ist mir das noch nicht aufgefallen. Käufe, Verkäufe und Dividenden sind genau auf dem Wertpapier wo sie hingehören. Noch…

Aber seitdem habe ich immer ein mulmiges Gefühl bei der Benutzung… ist jemand anderem dies auch aufgefallen? Bin ich der Einzige, wo das passiert ist? Mittlerweile “stehen” meine Klassifizierungen, und meine Wertpapierliste habe ich auch schon Wochen nicht mehr erweitert - und damit auch keine Probleme mehr festgestellt.

Was ist mit euch? Ist das jemanden aufgefallen? Kann jemand das bestätigen?

Ich habe dann mal ein wenig gesucht. Ich habe angefangen, das Format der Datendatei zu verstehen.

Dabei bin ich über “References” gestolpert. Der Bezug zum Wertpapier in einem Kauf ist z.B. durch einen solchen Eintrag in < Accounts > dargestellt: < security reference="…/…/…/…/…/…/…/…/…/securities/security[3]"/ >. Dies referenziert das dritte Wertpapier in der Liste - nicht einen unveränderlichen Identifikator 3, das Dritte in der Liste!

Das ist in meinen Augen problematisch: Wenn sich die Liste der Wertpapiere ändert, ohne diese Referenz abzugleichen, dann liegt die Buchung anschließend auf einem anderen Wertpapier.

Das gleiche sieht man in den < taxonomies > (Klassifizierungen): Der Bezug zum Wertpapier ist eine Referenz: < investmentVehicle class=“security” reference="…/…/…/…/…/…/…/…/…/…/securities/security[2]"/ >, in dem Fall Nummer 2 der Liste.

Ich komme aus dem Microsoft .NET-Umfeld, und habe dort mal in sechs Zeilen die Datendatei in ein DOM deserialisiert, die < security > an Listenposition zwei durch das DOM entfernen lassen, und alles in eine neue Datei zurück serialisiert:

        XmlDocument doc = new XmlDocument();
        doc.Load(@"C:\Finanzen.xml");

        XmlNode node = doc.SelectSingleNode("client/securities/security[2]");
        XmlNode par = node.ParentNode;
        par.RemoveChild(node);

        doc.Save(@"C:\Mod.xml");

Das Ergebnis: Alle Referenzen enthalten noch den gleichen numerischen Wert, aber alle Wertpapiere sind um eine Listenposition aufgerutscht. Damit wären jetzt alle Käufe, Verkäufe, Dividenden, Klassifizierungen “Schrott”. Diese Datei zu laden würde genau dem Fehler entsprechen, den ich meine gesehen zu haben.

Im .NET-Umfeld, in einem Microsoft-DOM, muss ich als Entwickler also Sorge tragen, dass meine Änderungen konsistent sind. Das DOM macht das NICHT automatisch, in C# und .NET!

Jetzt gibt es zwei Möglichkeiten: Ein Java-DOM garantiert die Konsistenz und ändert die Referenzen (kann ich mir nicht vorstellen) oder die Datei wird nicht im DOM bearbeitet, sondern in einem Objektbaum deserialisiert, und erst beim Schreiben werden die References wieder erzeugt (das wäre sicher, wenn diese Erzeugung sauber funktioniert).

Aber meine Erfahrungen an den ersten Tagen der Nutzung bestärkt mich in dem Gefühl, dass egal wie PP intern arbeitet, dies nicht immer und nicht überall korrekt funktioniert. Durch meine häufigen und wilden Umbauten der Klassifizierungen während der Ersteinrichtung habe ich Inkonsistenzen der Zuordnungen erzeugt. Ich möchte nicht sehen, wenn eine Änderung dafür sorgt, dass mehrere Jahre an Buchungen ihre Bezüge verlieren.

Versteht mich nicht falsch: Ich bin sehr, sehr zufrieden mit Portfolio Performance - es kann an manchen Stellen mehr als ich brauche, an anderen fehlen mir noch Kleinigkeiten, die ich gerne auch mal selber zur Entwicklung beisteuern möchte. Ich will, dass dieses Tool Erfolg hat! Ich möchte es nicht schlecht machen.

Momentan fehlt mir aber das Vertrauen…

Wäre es nicht ganz einfach, statt der Reference auf Listenpositionen die Reference auf die uuid der Security zu erstellen? Im Tag sollte dann statt < security reference …[3]/ > sowas wie < security reference …[@uuid=“12345-6789…”]/ > stehen.
Das würde die Datei “sicherer” machen, aber ich bin aber noch nicht einmal sicher, ob dies das Problem lösen würde.
Meine anfänglichen Fehlzuordnungen entstanden innerhalb PP, durch Nutzung der Menüs und Funktionen - da nützt eine sicherere Dateistruktur nichts (es sei den, die Datei wird wie in meinem Mini-Beispiel, über ein DOM, falsch bearbeitet).

Ich bin sehr gespannt auf Kommentare…

*edit: Formatierung, Rechtschreibung, Kommas, Leerzeichen in Beispiel-Tags zum Sichtbar machen


#2

Kannst Du das reproduzieren? Und hier beschreiben, wie es sich reproduzieren lässt? Mir ist so etwas bislang noch nicht aufgefallen.

Insbesondere wenn das – wie von Dir beschrieben – ein grundsätzliches Problem sein sollte (was ich nicht glaube), müsste sich der Fehler ja sehr einfach reproduzieren lassen.

Die Referenzen werden auch hier besprochen: Referenzen in der Struktur der XML-Datei