Détection robuste des valeurs aberrantes dans les séries financières

16

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.
jilles de wit
la source
1
Je ne pense pas que ce soit un doublon en raison de la nature des données. Le problème discuté sur l'autre question concernait les séries chronologiques régulièrement observées avec des valeurs aberrantes occasionnelles (du moins c'est ainsi que je l'ai interprété). La nature des données tick-by-tick conduirait à des solutions différentes en raison de l'effet d'ouverture de l'échange.
Rob Hyndman
doublon possible d'un algorithme simple pour la détection en ligne des valeurs aberrantes d'une série chronologique générique Il est proposé de clore cette question en double. Pourriez-vous s'il vous plaît laissez-nous savoir au fil méta si et comment votre contexte est différent de la question que j'ai liée?
@Rob Mais l'effet d'ouverture d'échange ne détermine que le moment où vous devez exécuter l'algorithme. La question fondamentale reste la même. Même dans les données réseau, vous avez «l'effet d'ouverture du bureau» où le trafic atteint un pic dès l'ouverture d'un bureau. À tout le moins, le PO devrait être lié à cette question, y scanner les réponses et expliquer pourquoi les solutions ne fonctionnent pas afin qu'une réponse appropriée puisse être publiée pour cette question.
1
Je suis d'accord avec @Rob. Ce type de données peut poser des défis uniques, il ne s'agit donc pas d'un doublon.
Shane
1
Je pense qu'il appartient ici. La question consiste à analyser des séries chronologiques irrégulièrement espacées et très bruyantes. Avez-vous jeté un coup d'œil à "Une introduction à la finance à haute fréquence" de Dacorogna, Olsen et bien d'autres? Ou les articles des mêmes auteurs?
PeterR

Réponses:

14

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:

  • les fixations comme le taux interbancaire peuvent être constantes pendant un certain temps, puis sauter soudainement
  • de même pour, par exemple, certaines devises étrangères qui sortent d'une cheville
  • certains instruments sont implicitement des spreads; ceux-ci peuvent être proches de zéro pendant des périodes et tout d'un collecteur de saut soudain

É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.

Dirk Eddelbuettel
la source
+1 oui, rien n'est parfait. Tickdata.com (dont le document est mentionné) comprend également des valeurs aberrantes et supprime également trop de bonnes données (par rapport à une autre source). Les données d'Olsen sont sur le point d'être terribles, et je ne les ai généralement qu'à titre indicatif. Il y a une raison pour laquelle les banques paient de grosses équipes opérationnelles pour travailler sur cela.
Shane
J'aime votre idée d'utiliser des relations d'arbitrage connues. avez-vous essayé cela dans votre travail précédent?
jilles de wit
Non, nous n'avons jamais complètement officialisé cela. Mais je pense que nous en avons utilisé des simples (ie ETF vs indice sous-jacent, etc.). Cela fait cependant quelques années.
Dirk Eddelbuettel
8

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é).

Shane
la source
En utilisant uniquement les retours, vous devenez très vulnérable aux échelles (c'est-à-dire une séquence de prix qui grimpe ou s'éloigne de la norme, où chaque retour individuel est acceptable, mais en tant que groupe, ils représentent une valeur aberrante). Idéalement, vous utiliseriez à la fois le niveau de retour et le niveau absolu.
jilles de wit
5

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.

(μ^t,σ^t)

Xt-μ^tσ^t

Vous pouvez trouver plus d'informations (et un lien vers un package R) dans cet article :

Boudt, K. et Croux, C. (2010). Estimation M robuste des modèles GARCH multivariés.

user603
la source
J'ai essayé quelque chose comme ça, mais cette méthode n'est pas très efficace pour gérer les changements brusques de la volatilité. Cela entraîne un sous-filtrage dans les périodes calmes et un sur-filtrage pendant les périodes plus occupées.
jilles de wit
Je ne comprends pas cela "Cela conduit à sous-filtrer dans les périodes calmes et à sur-filtrer pendant les périodes plus occupées", expliquez-vous?
user603
Dans les périodes calmes, la volatilité des prix a tendance à être plus faible, de sorte que les prix plus proches de la moyenne peuvent être considérés comme aberrants. Cependant, comme vous utilisez MAD pendant (vraisemblablement) une journée de négociation entière (ou même plus), ces valeurs aberrantes sont à moins de 3 MAD de la médiane et ne seront pas filtrées. L'inverse est vrai pour les périodes occupées avec des mouvements de prix plus élevés (les mouvements de prix acceptables seront filtrés). Ainsi, le problème se résume à une estimation correcte du MAD à tout moment, ce qui est le problème pour commencer.
jilles de wit