Je suis à la recherche de techniques robustes pour supprimer les valeurs aberrantes et les erreurs (quelle qu'en soit la cause) des données de séries chronologiques financières (c.-à-d. Tickdata).
Les données financières chronologiques tick-by-tick sont très compliquées. Il contient d'énormes intervalles (temporels) lorsque l'échange est fermé et fait d'énormes sauts lorsque l'échange s'ouvre à nouveau. Lorsque la bourse est ouverte, toutes sortes de facteurs introduisent des transactions à des niveaux de prix incorrects (ils ne se sont pas produits) et / ou non représentatifs du marché (un pic en raison d'une offre ou d'une demande de prix incorrectement entrée par exemple). Cet article de tickdata.com (PDF) décrit bien le problème, mais propose peu de solutions concrètes.
La plupart des documents que je peux trouver en ligne qui mentionnent ce problème l'ignorent (les données sont supposées filtrées) ou incluent le filtrage dans le cadre d'un énorme modèle de trading qui masque toutes les étapes de filtrage utiles.
Quelqu'un est-il au courant d'un travail plus approfondi dans ce domaine?
Mise à jour: cette question semble similaire en surface mais:
- Les séries chronologiques financières sont (au moins au niveau du tick) non périodiques.
- L'effet d'ouverture est un gros problème car vous ne pouvez pas simplement utiliser les données du dernier jour comme initialisation même si vous le souhaitez vraiment (car sinon vous n'avez rien). Des événements externes pourraient faire en sorte que l'ouverture de la nouvelle journée diffère considérablement à la fois en niveau absolu et en volatilité par rapport à la veille.
- Fréquence extrêmement irrégulière des données entrantes. Près de l'ouverture et de la fermeture de la journée, la quantité de points de données / seconde peut être 10 fois supérieure à la moyenne de la journée. L'autre question concerne les données régulièrement échantillonnées.
- Les «valeurs aberrantes» dans les données financières présentent des modèles spécifiques qui pourraient être détectés avec des techniques spécifiques non applicables dans d'autres domaines et je suis en partie à la recherche de ces techniques spécifiques.
- Dans des cas plus extrêmes (par exemple le crash flash), les valeurs aberrantes peuvent représenter plus de 75% des données sur des intervalles plus longs (> 10 minutes). De plus, la fréquence (élevée) des données entrantes contient des informations sur l'aspect aberrant de la situation.
la source
Réponses:
Le problème est définitivement difficile .
Règles mécaniques comme les +/- N1 fois les écarts - types, ou + / N2 fois MAD, ou +/- N3 IQR ou ... ne parviennent pas , car il y a toujours des séries qui sont différentes comme par exemple:
Été là, fait ça, ... dans un travail précédent. Vous pouvez essayer de mettre chaque série entre parenthèses en utilisant des vaisseaux de relations d'arbitrage ( par exemple, en supposant que l'USD / EUR et l'EUR / JPY sont présumés bons, vous pouvez travailler sur des bandes autour de ce que l'USD / JPY devrait être; de même pour les dérivés d'un sous-jacent, etc. pp.
Les fournisseurs de données commerciales déploient des efforts à ce sujet, et ceux qui en sont les clients le savent ... cela n'exclut toujours pas les erreurs.
la source
J'ajouterai quelques références papier lorsque je serai de retour à un ordinateur, mais voici quelques suggestions simples:
Commencez certainement par travailler avec les retours. Ceci est essentiel pour faire face à l'espacement irrégulier où vous pouvez naturellement obtenir de gros écarts de prix (surtout le week-end). Ensuite, vous pouvez appliquer un simple filtre pour supprimer les retours bien en dehors de la norme (par exemple, par rapport à un nombre élevé d'écarts-types). Les rendements s'ajusteront au nouveau niveau absolu, de sorte que de grands changements réels entraîneront la perte d'un seul tick. Je suggère d'utiliser un filtre à deux passes avec des retours tirés d'une étape et de n étapes pour traiter les grappes de valeurs aberrantes.
Edit 1: Concernant l'utilisation des prix plutôt que les rendements: les prix des actifs ont tendance à ne pas être stationnaires, donc l'OMI qui peut poser des défis supplémentaires. Pour tenir compte des effets d'irrégularité et de loi de puissance, je conseillerais une sorte d'ajustement si vous souhaitez les inclure dans votre filtre. Vous pouvez mettre à l'échelle les changements de prix par intervalle de temps ou par volatilité. Vous pouvez vous référer au dossier "volatilité réalisée" pour une discussion à ce sujet. Également discuté dans Dacorogna et. Al.
Pour tenir compte des changements de volatilité, vous pouvez essayer de baser votre calcul de volatilité à la même heure de la journée au cours de la semaine dernière (en utilisant la saisonnalité).
la source
J'ai (avec un certain retard) changé ma réponse pour refléter votre inquiétude quant au manque d '«adaptabilité» du fou / médian inconditionnel.
Vous pouvez trouver plus d'informations (et un lien vers un package R) dans cet article :
la source