Historische Kurse manuell korrigieren

Ist dieses Thema noch aktuell? Da könnte man sich schon etwas überlegen. Habe letzthin etwas im Bereich Quote Feeds gemacht in der Software, und wäre gerade aufgewärmt. Es stellen sich zwei Fragen:

  • Wie konfiguriert und identifiziert man Ausreisser? Soll man den Medianwert der letzten n vorangegangenen Tage nehmen, und wenn ein Wert mehr als p% grösser ist als der Medianwert, wird er verworfen?

  • Muss man das an der Oberfläche irgendwie darstellen? Zumindest in der Kurstabelle „Historische Kurse“? Oder würde es reichen, die einfach „still“ wegzulassen?

Hi! Hhm, naja, das mit Ausreißer zu identifizieren ist finde ich eine schwierige Sache. Die kommen ja durchaus auch mal im „normalen“ Börsenverlauf vor bzw. Kursspitzen-/täler sind nicht immer fehlerhafte Kurse. Man denke zum Beispiel nur mal an die VW-Aktie oder an die China-Virus-Krise.

Ein einfaches „still weglassen“ würde da eine Lücke in der Kurstabelle lassen, wo u.U. gar nichts falsch ist.

Ich könnte mir allenfalls vorstellen, daß eine Ausreißeridentifikation zur Plausibilitätsprüfung mehrere Online-Anbieter abfrägt und wenn sich dann beim vom Benutzer gewählten Anbieter der Verdacht auf einen Ausreißer erhärtet, weil nur dort der Kurs deutlich von den anderen abweicht, gibt PP eine Warnung aus und der Benutzer muß selber entscheiden, was er mit dem Wert macht. Mehrfache Datenquellen sind natürlich Luxus bei der Erkennung von Ausreißern, aber auch mehr Rechenaufwand.

Dann wäre allerdings auch nötig, daß sich PP eine Korrektur durch den Benutzer merkt, damit der korrigierte Kurs beim nächsten Programmstart nicht wieder mit dem unerwünschten Ausreißerkurs ersetzt wird und das Spiel von vorne losgeht. Wie siehst Du es?

P.S.: Mal ganz abgesehen von der statistischen Schwierigkeit, Ausreißer zu identifizieren. Da muß man sich Parameter überlegen, bei denen es kein falsch/richtig gibt, z.B. wie viele historische Kurse zieht man heran, um einen Ausreißer zu identifizieren; was, wenn ein Papier so viele Kurse gar nicht hat, wo setzt man das Sigma-Intervall an ab dem ein Ausreißer als solcher gilt, wie gut klappt das bei sehr volatilen Papieren, etc.? Und die unschönsten Ausreißer sind die, die man nicht entdeckt, weil sie nicht so extrem sind, aber die trotzdem falsch sind. Die wird man kaum zu fassen bekommen, weder Mensch noch PP.

Hi! Ich habs probiert, aber das mit dem „Behalten“ klappt leider nicht. Ich klicke zwar „Behalten“ bei der Abfrage an, ja. Aber nach dem Programmstart ist der fehlerhafte Kurs trotzdem wieder da bzw. überschreibt den manuell korrigierten. Ich habe von „Yahoo Finace“ auf „Yahoo Finance (Adjusted Close)“ gewechselt und nach jedem Schritt gespeichert.

Hallo zusammen!

Auch für mich ist das Thema aktuell. Einige Datenfehler von Yahoo ruinieren Chart-Darstellung und Risiko-Kennzahlen.

Meine Wunschlösung wäre dass man einen Kurswert manuell sperren kann sodass er nicht mehr automatisch überschrieben wird.
In der GUI stelle ich mir im Reiter „Historische Kurse“ eine dritte Spalte vor. Wenn man dort auf eine Zelle klickt, dann erscheint ein Schloss-Icon und dieser Kurswert ist schreibgeschützt.

Ich finde dieses ganze Thema auch hochaktuell, da sicherlich jeder, der mehr als 5 Kurse täglich updated, irgendwann mit diesen Kursausreißern zu tun bekommt. Ich bin der Meinung, dass man seine Kurse mit Hinblick auf Aktualität und auch auf Ausreißer nach unten oder oben von Zeit zu Zeit kontrollieren und pflegen sollte.
Bei den Ausreißern hole ich mir durch Klicken auf den Ausreißer in der Graphik das Datum und ändere dann in der Kurshistorie den Wert auf einen Mittelwert der letzten zwei oder drei Tage. Wenn ich zuviele Ausreißer in einer Grafik entdecke, ändere ich die Datenquelle. Eine Änderung der Kurse von z.B. Frankfurt auf Xetra kann manchmal die Lösung sein, auch ein Wechsel von Yahoo auf einen anderen „Lieferanten“ bietet manchmal eine Besserung.
Ich meine, daß man aber nicht jede kleine Spitze im Kursverlauf manuell „wegbügeln“ sollte, da die Gesamtperformance am Ende nicht davon nennenswert betroffen sein sollte. In der Ferne könnte ich mir vorstellen, dass PP einmal eine Möglichkeit bietet, auch professionelle Kursanbieter, die bereinigte Kurse allerdings für viel Geld anbieten, integrieren zu können. Das ist aber bestimmt zum jetzigen Zeitpunkt keine Intention von PP.

Sofern Portfolio Report Kurse zu dem Wertpapier hast, kannst Du das als Kursquelle nutzen. Dabei sollten Änderungen an historischen Kursen nicht überschrieben.

Ich habe es mal eine neue Spalte hinzugefügt und die entsprechende Logik angepasst, sodass ein Kurs, der manuell angepasst wurde, nicht mehr überschrieben wird. Um den Kurs zurückzusetzen, kann er gelöscht und neu geladen werden. Ein „Ja“ signalisiert, dass der Wert angepasst wurde.

grafik

Ist als Pull Request #1492 eingestellt.

5 Likes

Hier ein Link:

1 Like

Besten Dank für die schnelle Umsetzung der Anregung. Ich hoffe dass dieses Feature direkt in den nächsten Release übernommen wird.

Ich habe kurz in die Implementierung rein geguckt. Für meine Nutzung würde sie wunderbar funktionieren. Dein Einwand ist aber berechtigt. Im Sinne aller Nutzer wäre es wohl eleganter wenn der Kurs nicht direkt automatisch geflagged wird.

Pragmatische Lösung wäre mE eine Checkbox die schnell korrigiert/ geändert werden kann. Dann musste nicht jedes mal der Eintrag gelöscht werden.

2 Likes

Vielen Dank für Euer Feedback. Ich schaue mir das heute Abend noch mal an und überarbeite die Lösung.

Es sieht jetzt so aus:
grafik

Die Checkbox kann durch Doppelklicken abgewählt werden und der Kurs wird wieder automatisch aktualisiert.

Derzeit wird der Preis gesperrt, sobald er manuell geändert wurde. Alternativ, könnte die Checkbox auch anschließend von Hand gesetzt werden? Habt Ihr Feedback dazu für mich?

5 Likes

Das neutralere (bessere) Verhalten ist wenn der manuell eingegebene Kurs nicht automatisch gesperrt wird.
Sperren möchte man ja nur in einem bestimmten Sonderfall (Datenfehler beim Kurslieferanten).

1 Like

Finde die Variante mit den Checkboxen auch super! Ich finde, der Haken kann gesetzt werden, sobald man den Kurs ändert (das macht man ja nicht au Spaß an der Freude). Aber wenn man den Haken nach dem Ändern selber setzen muss, bringt das auch niemanden um. Freue mich auf die Implementierung :slight_smile:

Im Pull Request hatten wir eine Diskussion darüber, dass das Flag für die Checkbox einen Eingriff in das Modell von PP bedeutet, dadurch kritisch hinterfragt werden muss und in der aktuellen Fassung dazu führt, dass das abgespeicherte XML Datei sich in etwa verdoppelt. An der Dateigröße ließe sich vermutlich noch etwas machen.

Dennoch, die neue Idee ist, bestehende Preise generell nicht mehr zu aktualisieren oder nur dann, wenn sie beispielsweise „offensichtlich“ falsch, weil 0,00 sind und der neu gelieferte Preis anders. Genau das passiert bereits bei Datenquellen wie Portfolio Report, Quandl, Finnhub, etc… Hier werden über das API nur die Kurse abgefragt, die nach dem letzten vorhandenen Kurs liegen. Somit wäre das Verhalten (etwas optimiert bei Nullpreisen) angeglichen und würde auch dazu führen, dass manuell angepasste Kurse nicht mehr überschrieben werden.

2 Likes

Mit Version 0.46.2 werden die Kurse jetzt nicht mehr automatisch überschrieben.

Mal sehen ob das besser funktioniert - ansonsten muss man vielleicht auf eine „pro Kurs Konfiguration“ zurückfallen.

Dazu habe ich eine Frage: Bedeutet dies, wenn ich mehrmals am Tag eine Kursaktualisierung durchführe, jetzt für den aktuellen Tag nur noch der erste Kurs angezeigt wird?
Das fände ich persönlich schlecht, ich starte das Programm oft morgens und führe dann nachmittags eine weitere Kursaktualisierung durch. Hier würde dann ja noch der Kurs von morgens angezeigt.

Hallo Christian,

nein, es geht nur um die historischen Kurse. Der aktuelle Kurs wird weiterhin aktualisiert.

Viele Grüße
Sven

Hallo Sven,

alles Klar, vielen Dank. Dann muss ich mein Nutzerverhalten ja nicht ändern :grinning:

Beste Grüße
Christian