Ich suche nach robusten Techniken, um Ausreißer und Fehler (aus welchen Gründen auch immer) aus finanziellen Zeitreihendaten (z. B. Tickdata) zu entfernen.
Tick-by-Tick-Finanzzeitreihendaten sind sehr unübersichtlich. Es enthält große (Zeit-) Lücken, wenn die Börse geschlossen wird, und macht große Sprünge, wenn die Börse wieder geöffnet wird. Wenn die Börse geöffnet ist, führen alle Arten von Faktoren dazu, dass Geschäfte auf falschen (nicht aufgetretenen) und / oder nicht für den Markt repräsentativen Niveaus getätigt werden (zum Beispiel aufgrund eines falsch eingegebenen Geld- oder Briefkurses). In diesem Artikel von tickdata.com (PDF) wird das Problem gut umrissen , es werden jedoch nur wenige konkrete Lösungen angeboten.
Die meisten Artikel, in denen dieses Problem erwähnt wird, ignorieren es entweder (die Tickdaten werden als gefiltert angenommen) oder schließen die Filterung als Teil eines riesigen Handelsmodells ein, das alle nützlichen Filterungsschritte verbirgt.
Ist jemandem eine vertiefende Arbeit in diesem Bereich bekannt?
Update: Diese Frage scheint an der Oberfläche ähnlich zu sein, aber:
- Finanzielle Zeitreihen sind (zumindest auf Tick-Ebene) nicht periodisch.
- Der Eröffnungseffekt ist ein großes Problem, da Sie die Daten des letzten Tages nicht einfach als Initialisierung verwenden können, obwohl Sie dies wirklich möchten (da Sie sonst nichts haben). Externe Ereignisse können dazu führen, dass sich die Eröffnung des neuen Tages sowohl in absoluten Zahlen als auch in Bezug auf die Volatilität vom Vortag dramatisch unterscheidet.
- Sehr unregelmäßige Häufigkeit eingehender Daten. Nahe dem Öffnen und Schließen des Tages kann die Anzahl der Datenpunkte / Sekunde 10-mal höher sein als der Durchschnitt des Tages. Die andere Frage befasst sich mit regelmäßig erfassten Daten.
- Die "Ausreißer" in Finanzdaten weisen einige spezifische Muster auf, die mit spezifischen Techniken erkannt werden könnten, die in anderen Bereichen nicht anwendbar sind, und ich suche teilweise nach diesen spezifischen Techniken.
- In extremeren Fällen (z. B. beim Flash-Crash) können die Ausreißer über längere Zeiträume (> 10 Minuten) mehr als 75% der Daten ausmachen. Darüber hinaus enthält die (hohe) Häufigkeit eingehender Daten einige Informationen zum Ausreißeraspekt der Situation.
quelle
Antworten:
Das Problem ist definitiv schwer .
Mechanische Regeln wie die +/- N1 mal Standardabweichungen oder + / N2 mal MAD oder +/- N3 IQB oder ... wird scheitern , weil es immer einige Serien, die wie beispielsweise unterschiedlich sind:
War dort, habe das getan, ... in einem früheren Job. Sie könnten versuchen, jede Serie mit Arbitrage-Relation-Schiffen in eine Klammer zu setzen ( z. B. vorausgesetzt, USD / EUR und EUR / JPY werden als gut vorausgesetzt, Sie können Bänder für den USD / JPY berechnen; ebenso für Derivate aus einem Basiswert usw. pp.
Kommerzielle Datenanbieter bemühen sich darum, und diejenigen, die ihre Kunden sind, wissen, dass dies immer noch keine Fehler ausschließt.
quelle
Wenn ich wieder an einem Computer bin, füge ich einige Papierreferenzen hinzu, aber hier sind einige einfache Vorschläge:
Beginnen Sie auf jeden Fall mit Retouren. Dies ist wichtig, um den unregelmäßigen Abstand zu berücksichtigen, bei dem es natürlich zu großen Preisunterschieden kommen kann (insbesondere an Wochenenden). Dann können Sie einen einfachen Filter anwenden, um Renditen zu entfernen, die weit außerhalb der Norm liegen (z. B. gegenüber einer hohen Anzahl von Standardabweichungen). Die Renditen passen sich dem neuen absoluten Niveau an, sodass große reale Änderungen zum Verlust von nur einem Tick führen. Ich empfehle die Verwendung eines Zweipassfilters mit Rückgaben aus 1 Schritt und n Schritten, um Cluster von Ausreißern zu behandeln.
Edit 1: In Bezug auf die Verwendung von Preisen anstelle von Renditen: Die Preise von Vermögenswerten sind in der Regel nicht stationär, sodass die IMO einige zusätzliche Herausforderungen darstellen kann. Um die Auswirkungen der Unregelmäßigkeiten und des Potenzgesetzes zu berücksichtigen, würde ich eine Anpassung empfehlen, wenn Sie sie in Ihren Filter aufnehmen möchten. Sie können die Preisänderungen anhand des Zeitintervalls oder der Volatilität skalieren. Sie können auf die Litertur "Realisierte Volatilität" verweisen, um eine Diskussion darüber zu führen. Auch in Dacorogna et. al.
Um die Änderungen der Volatilität zu berücksichtigen, können Sie versuchen, Ihre Volatilitätsberechnung ab derselben Tageszeit in der vergangenen Woche zu erstellen (unter Verwendung der Saisonalität).
quelle
Ich habe (mit einiger Verzögerung) meine Antwort geändert, um Ihre Besorgnis über die mangelnde Anpassungsfähigkeit des bedingungslosen Verrückten / Medians widerzuspiegeln.
Weitere Informationen (und einen Link zu einem R-Paket) finden Sie in diesem Dokument :
quelle