Datenprüfung: Kursreihen laden, aufbereiten und prüfen
Ein Backtest ist nur so gut wie seine Kurse. Die Datenprüfung von Portfolio Lab kontrolliert jede Kursdaten-Reihe, bevor mit ihr gerechnet wird: Sie sucht Kurssprünge, Einheitenwechsel, eingefrorene Kurse und Lücken und meldet sie als Hinweis bei den Ergebnissen. Diese Seite beschreibt, wie die Reihen geladen und aufbereitet werden, welche Grenzen gelten und an welcher Stelle doch eingegriffen wird.
Woher die Kurse kommen
Grundlage sind bereinigte Tagesschlusskurse: Ausschüttungen gelten als wiederangelegt, Splits sind herausgerechnet. Es sind also Total-Return-Reihen in der Handelswährung. Liefert die Quelle für ein Wertpapier über die ganze Historie weniger als 20 Tageskurse, aber mehr Monatswerte, nimmt Portfolio Lab die Monatswerte und legt ihr Datum auf das Monatsende. Geladene Reihen liegen zwölf Stunden im Zwischenspeicher. Danach werden nur die neuen Tage nachgeladen, mit zehn Tagen Überlappung zur Kontrolle: Weichen die überlappenden Kurse um mehr als 0,01 % ab, hat die Quelle die bereinigte Historie rückwirkend geändert (etwa nach einer Ausschüttung), und die ganze Reihe wird neu geladen. Schlägt ein Abruf fehl, rechnet die App mit den zuletzt gespeicherten Kursen weiter (lieber alte Daten als gar keine) und meldet das bei den Ergebnissen mit dem Hinweis „Abruf fehlgeschlagen“ und „Kurse nur bis …“ samt Datum des letzten Kurses.
Aufbereitung
- Datum auf den Kalendertag ohne Zeitzone; doppelte Tage behalten den letzten Kurs; Kurse von null oder darunter fallen weg.
- Ausreißer-Tage entfernen: Ein einzelner Tag, an dem der Kurs um mehr als 0,35 in Log-Rendite springt (etwa +42 % oder −30 %) und am Folgetag bis auf 0,10 zurückkehrt, wird gelöscht. Das ist die einzige stille Korrektur. Sie fängt typische Einzeltagsfehler in Fondsdaten ab.
- Kurse in Untereinheiten wie Pence oder US-Cent werden beim Abruf durch 100 geteilt und laufen unter der Hauptwährung. So passen Kurs und Währung auch bei Order-Listen ohne aktuellen Kurs zusammen. Dann Umrechnung in die Basiswährung mit dem Devisenkurs des Tages (fehlt er, der letzte bekannte).
- Ist ein Proxy eingetragen, wird die Reihe mit dessen Renditen rückwärts verlängert, im Niveau angeschlossen.
- Gemeinsamer Zeitraum: ab dem spätesten ersten Kurs aller Wertpapiere; bis zu sieben fehlende Kurstage in Folge werden mit dem letzten Kurs gefüllt, danach zählen nur Tage, an denen alle Wertpapiere einen Kurs haben.
- Sind Anlageklassen mit Monatswerten beteiligt, rechnet alles auf Monatsenden; Monte Carlo, Finanzziele und ALM nutzen ohnehin Monatsrenditen.
Die Prüfung
Geprüft wird jede Reihe im genutzten Zeitraum, ein Proxy nur bis zum Start des Wertpapiers, das er verlängert; Anlageklassen mit verketteten Langzeitreihen nicht. Als Sprung gilt eine Tagesrendite über einer Grenze, die vom Wertpapiertyp abhängt. Gehebelte Produkte (erkannt am Namen, etwa „2x“, „3x“, „Leveraged“, „Short“) bekommen die doppelte Grenze, ebenso Reihen mit Monatswerten (mittlerer Abstand über fünf Tage).
| Typ | Grenze je Tag |
|---|---|
| Aktie | 50 % |
| ETF, Fonds, Index | 25 % |
| Future | 30 % |
| Krypto | 60 % |
| Devisen | 15 % |
| sonstige | 30 % |
Befunde
| Befund | Regel | Gewicht |
|---|---|---|
| Faktor 100 | Kurs springt auf das Hundertfache oder ein Hundertstel (± 40 %): Einheitenwechsel | schwer |
| Häufung | drei und mehr Sprünge mit höchstens 60 Tagen Abstand: zwei Kursquellen oder unbereinigte Splits | schwer |
| Bleibender großer Sprung | |ln(1 + r)| ≥ ln(1 + 2 × Grenze) ohne Rückkehr, bei ETFs also Faktor 1,5: Split oder Datenfehler | schwer |
| Ausreißer? | Sprung, der sich innerhalb der nächsten drei Kurse zu mindestens 80 % umkehrt | leicht |
| Sprung | kleinerer bleibender Sprung (kann ein echter Kurssturz sein) | leicht |
| Eingefroren | mindestens zehn gleiche Tageskurse in Folge | leicht |
| Lücke | mehr als 20 Kalendertage ohne Kurs | leicht |
Eingefrorene Kurse werden nur gemeldet, wenn sich die Reihe sonst bewegt: Ist die typische Tagesbewegung kleiner als 0,1 %, wie bei Geldmarktfonds oder kurzen Anleihen, sind unveränderte Kurse normal. Lücken und eingefrorene Kurse prüft die App nur bei Tageskursen. Gemeldet werden die längste Phase und die Zahl der Phasen beziehungsweise die größte Lücke.
Was mit den Befunden passiert
Alle Befunde stehen als Hinweis „Datenprüfung …“ bei den Ergebnissen, schwere zuerst. Bei einem schweren Befund ergänzt die App: Ergebnisse mit dieser Reihe sind unzuverlässig; besser einen Proxy, einen späteren Start oder ein anderes Börsenkürzel wählen. Im Portfolio-Raster markiert ein Warnzeichen Wertpapiere mit schwerem Befund; es stützt sich auf die gespeicherten Kurse, ohne neuen Abruf, und öffnet den Dialog für einen Proxy. Gerechnet wird trotzdem. Mit Ausnahme der entfernten Ausreißer-Tage ändert die Prüfung keine Kurse. Wie ein fehlerhafter Kurs Kennzahlen verzerrt, zeigt schon ein einzelner falscher Tag: Er erzeugt eine Scheinrendite und kurz darauf den gleichen Verlust, erhöht die Volatilität und kann einen Maximum Drawdown erzeugen, den es nie gab.
Warum die Grenzen so hoch sind
Echte Renditen haben Fat Tails: Tage mit −10 % oder mehr kommen weit häufiger vor, als eine Normalverteilung erwarten lässt (Mandelbrot 1963; Cont 2001). Eine strenge Grenze würde echte Krisentage wie den Oktober 1987 oder den März 2020 als Fehler melden. Darum sind die Grenzen weit, Ausreißer gelten nur als leicht, und schwer ist erst, was kaum echt sein kann: ein Faktor 100, eine Häufung von Sprüngen oder ein Sprung um mehr als die doppelte Grenze ohne Rückkehr. Ein anderes Datenproblem prüft die App nicht: Fonds, die aufgelöst wurden, fehlen in jeder heutigen Auswahl. Dieser Survivorship Bias lässt Fondsdurchschnitte besser aussehen, als sie waren (Brown u. a. 1992; Malkiel 1995); mehr dazu in der Backtest-Methodik.
Grenzen
- Die Prüfung erkennt nur auffällige Muster. Ein falscher Kurs unter der Grenze, eine fehlende Ausschüttung oder eine falsche Währung bleiben unentdeckt.
- Ausreißer-Tage über der Schwelle, die sich am Folgetag umkehren, werden beim Laden gelöscht und tauchen deshalb in keinem Hinweis auf.
- Gehebelte Produkte erkennt die App nur am Namen.
- Bei Abruffehlern wird mit gespeicherten Kursen gerechnet; der Hinweis nennt den letzten Kurstag, die Auswertung endet dann früher.
Häufige Fragen
Korrigiert Portfolio Lab fehlerhafte Kurse?
Nein, mit einer Ausnahme: Einzelne Tage mit einem Sprung über etwa +42 % oder −30 %, der sich am Folgetag umkehrt, werden beim Laden entfernt. Alles andere wird nur gemeldet.
Was tun bei einem schweren Befund?
Einen Proxy eintragen, den Start später legen oder dasselbe Wertpapier über ein anderes Börsenkürzel laden. Die Ergebnisse mit der fehlerhaften Reihe sind unzuverlässig.
Warum wird ein echter Kurssturz gemeldet?
Die Prüfung kann einen echten Einbruch nicht von einem Datenfehler unterscheiden. Ein einzelner bleibender Sprung unter der doppelten Grenze (bei ETFs Faktor 1,5) gilt deshalb nur als leichter Hinweis zum Prüfen.
Warum meldet die App bei Geldmarktfonds keine eingefrorenen Kurse?
Weil sich deren Kurse ohnehin kaum bewegen. Ist die typische Tagesbewegung kleiner als 0,1 %, sind gleiche Kurse über Tage normal.
Wie aktuell sind die Kurse?
Die App rechnet mit Schlusskursen abgeschlossener Handelstage: Den Kurs des laufenden Tages lässt sie weg, solange die Börse noch handelt. Gespeicherte Kurse gelten bis Mitternacht; danach lädt die erste Rechnung die neuen Tage nach, die meistgenutzten Wertpapiere schon kurz nach Mitternacht. Ergebnisse gleicher Rechnungen gelten ebenfalls bis Mitternacht. Bei einem Fehler rechnet die App mit den zuletzt gespeicherten Kursen und sagt das im Hinweis „Abruf fehlgeschlagen“ mit dem Datum des letzten Kurses.
Literatur
- Brown, Stephen J.; Goetzmann, William; Ibbotson, Roger G.; Ross, Stephen A. (1992): Survivorship Bias in Performance Studies. Review of Financial Studies 5 (4), S. 553–580. doi:10.1093/rfs/5.4.553
- Cont, R. (2001): Empirical properties of asset returns: stylized facts and statistical issues. Quantitative Finance 1 (2), S. 223–236. doi:10.1080/713665670
- Malkiel, Burton G. (1995): Returns from Investing in Equity Mutual Funds 1971 to 1991. The Journal of Finance 50 (2), S. 549–572. doi:10.1111/j.1540-6261.1995.tb04795.x
- Mandelbrot, Benoit (1963): The Variation of Certain Speculative Prices. The Journal of Business 36 (4). doi:10.1086/294632
Diese Seite beschreibt, wie Portfolio Lab rechnet; Ergebnisse aus der Vergangenheit sind keine Prognose. Alle Begriffe im Glossar.