note de recherche

Caractéristiques du déséquilibre du flux d'ordres : quels signaux prédisent les mouvements des crypto-monnaies/actions à 1-5 minutes ?

Order-Flow Imbalance Features: Which Signals Predict Crypto/Equity Moves 1-5 Minutes Out?

publié
lecture
37 min · 5,591 mots
Registre des affirmations
40/40 affirmations vérifiées · 16 sources

Éditions: English · عربي · Español

Réponse directe

Aucune affirmation unique dans cette base de preuves ne réalise un test direct du OFI par rapport au déséquilibre de profondeur multi-niveaux par rapport aux caractéristiques du flux de transactions sur les mêmes données crypto et actions sous une validation croisée purgée, embargo et walk-forward, donc un classement direct ne peut être honnêtement énoncé ; cette lacune s'applique également au code, aux étapes de construction et à la discussion des limites ci-dessous, et n'est pas répétée plus loin dans cette note. Ce que les affirmations soutiennent, c'est un ordre de construction : commencer par le déséquilibre offre-demande au sommet du carnet I=(qb-qa)/(qb+qa), car un déséquilibre élevé du carnet est rapporté comme étant, en moyenne, un bon prédicteur des mouvements de prix médians et les carnets très déséquilibrés indiquent qu'un mouvement de prix est susceptible de se produire dans un délai relativement court [2]. L'étendre au déséquilibre du flux d'ordres multi-niveaux (MLOFI), car pour les 6 actions étudiées, la qualité d'ajustement hors échantillon s'améliore avec chaque niveau de prix supplémentaire inclus dans le vecteur MLOFI [6]. Ajouter des caractéristiques de flux de transactions et de liquidité (signe de transaction, taille de l'ordre de marché, liquidité meilleure offre/meilleure demande) car elles se sont avérées, via une régression logistique LASSO, être systématiquement informatives pour prédire le prochain saut de prix sur les actions du CAC40 [4]. Aucune de ces preuves sur les actions et la file d'attente du carnet d'ordres n'a été testée sur des échanges de crypto-monnaies dans les affirmations citées. La question demande explicitement des résultats "sur trois échanges de crypto-monnaies" et la base de preuves ne contient aucune comparaison multi-échanges de ce type, ce qui rend la lacune encore plus grande qu'une simple extrapolation de classe d'actifs : la partie crypto de la question reste ouverte en attendant un nouveau backtest.

Pourquoi le déséquilibre du flux d'ordres est important pour la prédiction à court terme

Le déséquilibre du flux d'ordres et ses dérivés sont des candidats attrayants pour les caractéristiques de prix à court terme car plusieurs études indépendantes, sur différentes classes d'actifs et différentes périodes, rapportent une relation entre le déséquilibre dans le carnet d'ordres à limite et la direction ou l'ampleur du prochain mouvement de prix [2][4][6]. Un compte rendu secondaire rapporte que Cont et al. trouvent une dépendance linéaire simple entre les variations de prix et un indicateur mesurant les déséquilibres entre le flux d'ordres côté achat et côté vente du LOB [3], ce qui est cohérent avec ces résultats primaires bien que n'étant pas lui-même un résultat primaire. Cette note rassemble ce qui a été réellement mesuré à propos de ces caractéristiques, indique clairement où s'arrêtent les preuves et donne un plan de construction concret.

Les enjeux pratiques sont que la direction du prix médian sur les prochains événements du carnet d'ordres est souvent une cible trop simple : le passage 644 indique directement que prédire le changement de direction du prix médian pour les prochains événements est trop simpliste et ne convient pas à une stratégie de trading pratique [1]. C'est une mise en garde contre la conception d'étiquette la plus simple possible ; cela ne spécifie pas par lui-même quelle étiquette ou famille de modèles devrait la remplacer, donc tout mouvement vers une cible différente (ampleur, temps d'attente, ou une conception multi-horizons) est notre propre inférence, pas quelque chose que l'affirmation énonce, et cette inférence est utilisée plus tard dans les étapes de construction lorsque nous recommandons de rapporter le temps d'attente et le mouvement de prix normalisé en fonction de la caractéristique de déséquilibre.

Enfin, la question couvre les crypto-monnaies et les actions, et les études citées sont réparties par classe d'actifs : les études sur le déséquilibre du LOB et les sauts de prix portent sur les actions chinoises [1], la dynamique générale de la file d'attente du carnet d'ordres à limite [2][3], les actions françaises du CAC40 [4], les actions du Nasdaq [6], tandis qu'un système séparé intègre des flux de données crypto (BTC) pour l'inférence en direct [5].

Ce que sont réellement le déséquilibre du flux d'ordres et le déséquilibre de profondeur

Le déséquilibre offre-demande au sommet du carnet est défini précisément dans l'un des articles cités : I=(qb-qa)/(qb+qa), où qb et qa sont les quantités à l'offre et à la demande affichées au sommet du carnet [2, passage 649]. Un déséquilibre positif indique un carnet d'ordres plus lourd du côté de l'offre, et un déséquilibre négatif indique un carnet plus lourd du côté de la demande [2, passage 649]. C'est la version la plus simple et la moins coûteuse de la caractéristique : une soustraction, une addition, une division, calculée à partir d'un seul instantané du LOB.

Le déséquilibre du flux d'ordres multi-niveaux, ou MLOFI, généralise cette idée. Le MLOFI est décrit comme une quantité vectorielle qui mesure le flux net d'ordres d'achat et de vente à différents niveaux de prix dans un carnet d'ordres à limite [6]. Contrairement au déséquilibre à un seul niveau I, le MLOFI est un vecteur, il transporte donc des informations de plusieurs niveaux de profondeur simultanément plutôt que de tout compresser en un seul ratio à la meilleure offre et à la meilleure demande.

Les caractéristiques du flux de transactions et de liquidité forment une troisième famille. Un article définit un saut de prix précisément comme l'arrivée d'un ordre de marché de vente (achat) exécuté à un prix inférieur (supérieur) au meilleur prix d'achat (meilleur prix de vente) immédiatement après l'arrivée de l'ordre de marché précédent [4, passage 661]. Ce même article extrait des caractéristiques des volumes d'ordres à limite, des écarts de prix des ordres à limite, des informations sur les ordres de marché et des informations sur les événements d'ordres à limite [4, passage 661], ce qui est un ensemble de caractéristiques plus large que le seul déséquilibre : il inclut le signe et la taille de la transaction, pas seulement la liquidité passive. Le passage 661 indique séparément que l'équilibre de liquidité sur la meilleure offre et la meilleure demande est assez informatif pour prédire la direction future de l'ordre de marché [4], ce qui est une cible de prédiction différente du saut de prix lui-même.

Un volet de travail distinct traite le LOB et le processus de trading comme un système stochastique conjoint plutôt qu'un instantané statique. Un article étudie la probabilité des mouvements de prix et des arrivées de transactions en fonction du déséquilibre de cotation au sommet du carnet d'ordres à limite, et propose un modèle stochastique pour capturer la dynamique conjointe des files d'attente au sommet du carnet et du processus de trading [2, passage 647]. Séparément, le passage 653 rapporte, comme un compte rendu secondaire du résultat de Cont et al. plutôt que comme son propre résultat principal, que Cont et al. trouvent une dépendance linéaire simple entre les variations de prix et un indicateur mesurant les déséquilibres entre le flux d'ordres côté achat et côté vente du LOB [3, passage 653], ce qui est cohérent dans l'esprit avec l'approche basée sur le déséquilibre, bien qu'il s'agisse d'une étude séparée et non d'une référence conjointe par rapport aux autres.

Mécanisme : comment le déséquilibre est lié au prochain mouvement de prix

Le mécanisme rapporté pour le déséquilibre au sommet du carnet est exprimé à travers deux quantités : le mouvement de prix médian moyen normalisé par l'écart offre-demande, et le temps d'attente jusqu'au prochain mouvement de prix médian, tous deux étudiés en fonction du déséquilibre du carnet [2, passage 646]. Cela donne au constructeur deux sorties à cibler, pas une : une ampleur (mouvement normalisé) et un timing (temps d'attente), tous deux indexés par la même entrée de déséquilibre.

Pour un ordre affiché du côté de l'offre, le temps d'arrêt pertinent est le moment de la première arrivée d'une transaction de vente, et pour un ordre affiché du côté de la demande, c'est le moment de la première arrivée d'une transaction d'achat [2, passage 651]. C'est une définition précise, basée sur les événements, utile pour quiconque souhaite reproduire le calcul du temps d'attente plutôt que de l'approximer avec un temps d'horloge fixe.

L'ampleur de l'effet est limitée. Dans le cas présenté, le mouvement de prix moyen peut atteindre jusqu'à un tiers de l'écart dans un carnet très déséquilibré [2, passage 646], et plus généralement, la variation de prix jusqu'au prochain tick est bien approximée par une fonction linéaire du déséquilibre et est typiquement bien en dessous de l'écart offre-demande, même pour des carnets d'ordres très déséquilibrés [2, passage 650]. Un déséquilibre élevé du carnet est, en moyenne, un bon prédicteur des mouvements de prix médians [2, passage 650], et les carnets très déséquilibrés indiquent qu'un mouvement de prix est susceptible de se produire dans un délai relativement court [2, passage 650]. Mais le même article précise que cela ne se traduit pas par un avantage de trading en soi : bien que le déséquilibre du carnet puisse être utilisé comme prédicteur du prochain mouvement de prix, il n'offre pas en soi une opportunité d'arbitrage statistique simple [2, passage 650]. C'est une mise en garde importante pour quiconque serait tenté de trader le signal brut directement.

Sous-tendant tout cela, il y a une déclaration sur les données : les données montrent la nature non-martingale des prix aux échelles de temps courtes considérées [2, passage 646]. C'est la base empirique pour s'attendre à une quelconque prédictibilité à court terme dans cette ligne de travail ; c'est une propriété des données étudiées, pas une loi universelle, et elle provient de cette étude spécifique.

Construction des caractéristiques utilisée dans les études sur les sauts de prix et le MLOFI

L'étude sur les sauts de prix du CAC40 construit un ensemble de caractéristiques plus large que le seul déséquilibre. Elle extrait des caractéristiques des volumes d'ordres à limite, des écarts de prix des ordres à limite, des informations sur les ordres de marché et des informations sur les événements d'ordres à limite [4, passage 661], et elle applique une régression logistique pour prédire le saut de prix à partir des caractéristiques du carnet d'ordres à limite [4, passage 661]. Pour gérer le nombre de caractéristiques candidates, elle introduit une régression logistique LASSO pour effectuer une sélection de variables et mettre en évidence l'importance des différentes caractéristiques dans la prédiction du futur saut de prix [4, passage 661]. LASSO donne un classement interprétable : quelles caractéristiques survivent au retrait et lesquelles ne le font pas.

Le résultat de cette sélection de variables, basée sur les quarante plus grandes actions françaises du CAC40, est que le signe de la transaction et la taille de l'ordre de marché ainsi que la liquidité sur la meilleure offre et la meilleure demande sont systématiquement informatifs pour prédire le saut de prix entrant [4, passage 661]. C'est une réponse directe et nommée à la question de savoir quelles caractéristiques comptent le plus dans ce cadre d'actions : le signe de la transaction, la taille de l'ordre de marché et la liquidité au sommet du carnet, retenues par le retrait LASSO plutôt que choisies manuellement [4, passage 661].

Ce qui a été mesuré : chiffres, références et conditions

Plusieurs chiffres concrets apparaissent dans ces articles, chacun lié à sa propre référence et classe d'actifs. La référence LOB du marché chinois couvre quelques milliers d'actions de juin à septembre 2020 [1], et son protocole prévoit la variation de prix moyenne pondérée par le volume à venir et le volume à la fin de chaque seconde sur 12 horizons allant de 1 seconde à 300 secondes [1]. Dans ce protocole, les résultats basés sur un modèle de régression linéaire et des modèles d'apprentissage profond sont comparés [1], et le même article propose un ensemble de caractéristiques plus efficace en pratique pour capturer à la fois les instantanés du LOB et les données périodiques [1]. C'est le seul ensemble d'affirmations ici qui compare directement un modèle linéaire à des modèles d'apprentissage profond sur une référence énoncée [1] ; la comparaison établit que les deux familles de modèles ont été testées en tête-à-tête, mais les affirmations ne précisent pas laquelle a obtenu les meilleures performances, donc un lecteur ne peut pas savoir à partir de ces preuves si le linéaire ou l'apprentissage profond a gagné.

Pour le MLOFI, le résultat mesuré est une comparaison de la qualité d'ajustement entre les niveaux de profondeur, pas entre les familles de caractéristiques. En utilisant des données pour 6 actions liquides sur le Nasdaq, l'article ajuste une relation linéaire entre le MLOFI et le changement contemporain du prix médian [6], et pour les 6 actions étudiées, la qualité d'ajustement hors échantillon s'améliore avec chaque niveau de prix supplémentaire inclus dans le vecteur MLOFI [6]. C'est une comparaison intra-caractéristique (niveau 1 contre niveau 2 contre niveaux plus profonds de la même construction MLOFI), pas une comparaison du MLOFI par rapport au flux de transactions ou par rapport au déséquilibre à un seul niveau I.

Les conditions derrière le résultat du CAC40 sont spécifiques et sont énoncées une fois, dans la section des notes de mise en œuvre ci-dessous : la fenêtre de l'ensemble de données, l'enregistrement en millisecondes, la profondeur visible de cinq niveaux, la restriction à 09h05 à 17h25, et les ensembles de données séparés matin et après-midi [4].

Pour l'étude sur le déséquilibre au sommet du carnet, les quantités mesurées sont le mouvement de prix moyen normalisé et le temps d'attente en fonction de I, le seul chiffre spécifique rapporté étant que le mouvement de prix moyen peut atteindre jusqu'à un tiers de l'écart dans un carnet très déséquilibré [2, passage 646]. Il n'y a pas de précision, d'exactitude ou de nombre R au carré attaché à cette affirmation dans la source ; c'est une déclaration d'ampleur sur les mouvements de prix, pas une statistique d'évaluation de modèle. Prises ensemble, les preuves mesurées répondent à des questions plus étroites que celle posée ici : combien de niveaux de profondeur inclure dans un vecteur MLOFI [6], quelles caractéristiques survivent à la sélection LASSO sur les actions du CAC40 [4], quelle est l'ampleur du prochain mouvement de prix par rapport à l'écart [2, passage 646], et comment un modèle linéaire se compare aux modèles d'apprentissage profond sur une référence chinoise à l'échelle de la seconde [1].

Notes de mise en œuvre : données, granularité et portée des ensembles de données sources

Un constructeur reproduisant l'une de ces familles de caractéristiques doit connaître les données exactes que chaque étude a utilisées, car la fréquence d'échantillonnage et la profondeur diffèrent fortement. L'étude sur les sauts de prix du CAC40 utilise un ensemble de données comprenant les transactions et les activités d'ordres à limite des 40 actions membres du CAC40 entre le 1er avril 2011 et le 30 avril 2011 [4], chaque transaction et chaque modification du carnet d'ordres à limite étant enregistrée en millisecondes [4]. Elle utilise une profondeur visible de cinq niveaux, avec L=5 [4], et, pour éviter les heures d'ouverture et de clôture, les données sont restreintes à 09h05 à 17h25 [4]. Elle néglige également explicitement les ordres stop et les ordres iceberg car ils sont relativement rares par rapport aux événements d'ordres à limite et d'ordres de marché [4], et, pour supprimer la saisonnalité intrajournalière, l'analyse est basée sur des ensembles de données séparés matin et après-midi [4]. Chacune de ces décisions est une décision de prétraitement concrète qu'un constructeur devrait copier ou dont il devrait s'écarter consciemment.

L'ensemble de données de référence du marché chinois couvre quelques milliers d'actions sur juin à septembre 2020 [1], avec des étiquettes au niveau de la seconde sur 12 horizons de 1 à 300 secondes [1]. C'est une granularité temporelle beaucoup plus grossière que les modifications du LOB en millisecondes, donc elle convient à l'ingénierie des caractéristiques à l'échelle de la seconde plutôt qu'à l'échelle du tick.

L'étude MLOFI du Nasdaq travaille sur 6 actions liquides [6], un petit échantillon choisi à la main pour la liquidité, pas un univers large ; un constructeur généralisant le MLOFI à un nouvel univers d'actifs devrait traiter l'amélioration rapportée de l'ajustement hors échantillon avec chaque niveau de prix ajouté [6] comme une hypothèse à retester sur ses propres données, pas comme une propriété déjà établie au-delà de ces 6 actions.

Un système de référence multi-modèles en direct pour la prévision du carnet d'ordres

Un système récent décrit dans les sources est explicitement construit pour un déploiement en temps réel plutôt que pour une étude hors ligne, et constitue une référence architecturale utile même s'il n'a pas été testé ici par rapport aux caractéristiques de déséquilibre ci-dessus. Le système intègre des ensembles de données historiques (FI-2010, LOBSTER, BTC) avec des flux de marché en direct basés sur WebSocket, un moteur de prétraitement modulaire et plusieurs architectures d'apprentissage profond pour la prévision en temps réel du carnet d'ordres à limite [5]. Son prétraitement normalise les instantanés entrants du carnet d'ordres en utilisant le score Z et la normalisation par lots-instances (BiN) [5], et il extrait des caractéristiques de prix et de volume multi-niveaux et génère des étiquettes de mouvement multi-horizons [5], ce qui est conceptuellement aligné avec les conceptions multi-niveaux et multi-horizons utilisées dans la littérature sur le déséquilibre ci-dessus, bien qu'il s'agisse d'un article d'ingénierie séparé, pas d'une étude de comparaison de caractéristiques.

Les modèles nommés sont MLPLOB, TLOB, DeepLOB et BinCTABL, entraînés sur des données prétraitées et servis via un backend FastAPI [5]. Pour l'inférence en direct, un frontend diffuse en continu des données d'échange en temps réel telles que Binance via WebSockets, et le backend traite ces données pour produire des prédictions instantanées [5]. Parce que ce pipeline traite directement les données crypto (BTC), c'est la seule partie de cette base de preuves qui touche à l'inférence crypto de style production, bien qu'elle ne rapporte pas de comparaison de familles de caractéristiques OFI par rapport au déséquilibre de profondeur par rapport au flux de transactions sur ces données.

Utilement pour un constructeur qui souhaite comparer honnêtement des ensembles de caractéristiques ou des familles de modèles, le système permet de charger plusieurs modèles simultanément, mais leurs prédictions sont renvoyées indépendamment pour permettre une comparaison transparente [5]. Cette conception, exécutant plusieurs modèles côte à côte et rapportant chaque sortie séparément plutôt qu'une moyenne d'ensemble, est exactement le modèle nécessaire pour exécuter une comparaison walk-forward équitable entre des ensembles de caractéristiques basés sur OFI, MLOFI et flux de transactions sans que l'un masque le profil d'erreur de l'autre.

Rien de tout cela n'est uniquement CPU par construction : selon notre propre lecture, et non comme une affirmation sourcée, DeepLOB, TLOB et les architectures similaires sont généralement des réseaux profonds entraînés sur GPU. Pour une cible de production uniquement CPU comme sam, ce système est mieux lu comme un modèle d'architecture (multi-modèle, service indépendant, ingestion WebSocket en direct) à imiter avec des modèles linéaires ou logistiques bon marché substitués aux réseaux profonds, plutôt que comme un système à déployer inchangé.

Limites et questions ouvertes

Comme indiqué dans la réponse directe ci-dessus, cette base de preuves ne contient aucun test en tête-à-tête des ensembles de caractéristiques OFI, déséquilibre de profondeur multi-niveaux et flux de transactions sur les mêmes données sous une validation croisée purgée, embargo et walk-forward, et aucune de ces données n'est exécutée conjointement sur trois échanges de crypto-monnaies nommés et des actions. L'étude du marché chinois compare la régression linéaire aux modèles d'apprentissage profond sur des cibles de prix et de volume pondérées par le volume à l'échelle de la seconde [1], mais n'isole pas OFI par rapport au déséquilibre de profondeur par rapport au flux de transactions en tant qu'entrées séparées. L'étude MLOFI rapporte que l'ajustement s'améliore avec la profondeur sur 6 actions du Nasdaq [6], mais ne compare pas le MLOFI aux caractéristiques du flux de transactions. L'étude CAC40 sélectionne le signe de la transaction, la taille de l'ordre et la liquidité au sommet du carnet comme systématiquement informatifs [4], mais c'est un résultat de sélection de variables intra-modèle, pas une comparaison validée croisée hors échantillon par rapport à un modèle de déséquilibre de profondeur défini séparément. L'étude sur le déséquilibre au sommet du carnet établit une relation prédictive et prévient explicitement qu'il ne s'agit pas d'une opportunité d'arbitrage autonome [2], ce qui est une forte mise en garde contre la survente de toute stratégie basée uniquement sur le déséquilibre.

Une deuxième limite est la couverture des classes d'actifs. Les études sur le déséquilibre, le MLOFI et les sauts de prix portent toutes sur des actions (actions chinoises [1], actions du Nasdaq [6], actions du CAC40 [4]) ; le seul système touchant aux crypto-monnaies ici est l'architecture de déploiement en direct [5], qui ne rapporte pas de comparaison de caractéristiques. Appliquer des classements de caractéristiques dérivés des actions aux carnets d'ordres de crypto-monnaies, sur trois échanges, est donc une extrapolation que les preuves ne soutiennent pas ; cela doit être testé, pas supposé.

Une troisième limite est qu'aucune des affirmations citées ne mentionne la validation croisée purgée ou embargo walk-forward comme protocole d'évaluation. La référence chinoise utilise une structure d'horizon énoncée [1], l'étude CAC40 utilise des données divisées matin/après-midi [4], et les articles sur le déséquilibre rapportent des relations moyennes de population sans protocole de division train/test énoncé du tout [2][3]. Un constructeur qui a besoin d'une validation croisée purgée, embargo et walk-forward pour un modèle de production doit imposer ce protocole lui-même ; il n'est déjà présent dans aucune méthode citée.

Enfin, la mise en garde sur la conception des étiquettes discutée dans l'introduction provient d'une seule étude [1]. Compte tenu de cela, la réponse pratique est de construire le pipeline de caractéristiques décrit ici, mais de l'évaluer avec le protocole plus strict que la question exige, sur les propres données crypto et actions du constructeur, avant de tirer une conclusion comparative.

Comment le construire, ou comment l'utiliser

Étapes de construction fondées sur les affirmations (chacune fondée sur un passage cité) :

  1. Ingérer d'abord les instantanés du LOB. Chaque étape ci-dessous nécessite un flux d'instantanés du carnet d'ordres à limite fonctionnel, car les caractéristiques définies dans les affirmations citées opèrent sur des quantités au sommet du carnet et multi-niveaux, pas seulement sur des barres OHLCV.
  2. Collecter des instantanés du LOB pour chaque échange cible ou série d'actions. Conserver plusieurs niveaux de profondeur par instantané ; pour référence, l'étude CAC40 a utilisé une profondeur visible de cinq niveaux, avec L=5 [4], et l'ajustement hors échantillon s'est amélioré avec chaque niveau de prix supplémentaire inclus dans le vecteur MLOFI sur les 6 actions du Nasdaq étudiées [6].
  3. Calculer le déséquilibre à un seul niveau I=(qb-qa)/(qb+qa) à partir de la quantité à l'offre qb et de la quantité à la demande qa au meilleur niveau, en suivant la définition de cette formule sur les quantités affichées au sommet du carnet [2]. Stocker son signe (positif signifie côté offre lourd, négatif signifie côté demande lourd) [2] comme caractéristique de base.
  4. Construire le vecteur MLOFI en étendant l'idée de déséquilibre au flux net d'ordres à plusieurs niveaux de prix plutôt qu'à un ratio d'instantané à un seul niveau, en suivant la définition du MLOFI comme une quantité vectorielle mesurant le flux net d'ordres d'achat et de vente à différents niveaux de prix [6]. Conserver au moins autant de niveaux que la profondeur d'instantané du LOB le permet, car l'ajustement s'est amélioré avec chaque niveau ajouté dans l'étude sur les actions citée [6].
  5. Construire l'ensemble de caractéristiques du flux de transactions séparément : volumes d'ordres à limite, écarts de prix des ordres à limite, informations sur les ordres de marché et informations sur les événements d'ordres à limite [4], y compris le signe de la transaction et la taille de l'ordre de marché [4] et la liquidité sur la meilleure offre et la meilleure demande [4]. Exclure les ordres stop et les ordres iceberg de cette construction de caractéristiques s'ils sont rares dans vos données, en suivant la justification de l'étude CAC40 [4].
  6. Si vous voulez une étiquette directionnelle (saut/pas de saut), définissez-la exactement comme l'étude CAC40 le fait : l'arrivée d'un ordre de marché de vente (achat) exécuté à un prix inférieur (supérieur) au meilleur prix d'achat (meilleur prix de vente) immédiatement après l'arrivée de l'ordre de marché précédent [4].
  7. Diviser les données intrajournalières par moitié de session (matin/après-midi ou équivalent) pour contrôler la saisonnalité intrajournalière avant l'ajustement, comme fait dans l'étude CAC40 [4], et s'éloigner des heures d'ouverture/fermeture si votre échange a des effets de bord analogues, en suivant la même justification de restriction 09h05-17h25 de l'article [4].
  8. Ajuster deux modèles de base par famille de caractéristiques : une régression linéaire pour une cible d'ampleur (suivant le modèle linéaire utilisé comme base de référence dans la comparaison de la référence chinoise [1] et l'ajustement linéaire utilisé pour le MLOFI par rapport au changement de prix médian [6]) et une régression logistique, éventuellement avec sélection de variables LASSO, pour une cible directionnelle/de saut (suivant la méthode de l'étude CAC40 [4]).
  9. Évaluer une composante de temps d'attente en utilisant la définition de temps d'arrêt donnée dans l'étude sur le déséquilibre : pour un ordre à l'offre, la première arrivée d'une transaction de vente ; pour un ordre à la demande, la première arrivée d'une transaction d'achat [2]. Rapporter le temps d'attente et le mouvement de prix normalisé en fonction de la caractéristique de déséquilibre (cette étape est basée sur notre propre inférence de la mise en garde sur la conception des étiquettes [1], pas une instruction directe de cette affirmation), reflétant le résultat rapporté qu'un carnet très déséquilibré indique qu'un mouvement de prix est susceptible de se produire bientôt [2].
  10. Ne pas traiter un nombre d'ajustement prédictif comme une stratégie : la preuve source indique explicitement que le déséquilibre du carnet, même lorsqu'il est prédictif, n'offre pas en soi une opportunité d'arbitrage statistique simple [2].

Inférence propre de l'auteur, non énoncée par aucune affirmation citée : le passage critiquant les étiquettes de direction de prix médian à un seul tick [1] indique qu'une telle étiquette est trop simpliste pour une stratégie de trading pratique, mais il ne prescrit pas de remplacement. Selon notre propre raisonnement, un constructeur pourrait plutôt envisager une étiquette à un horizon de 1 à 5 minutes, ou la conception à deux sorties reflétant ce qui a été mesuré pour le déséquilibre au sommet du carnet (mouvement de prix moyen normalisé, et temps d'attente jusqu'au prochain mouvement de prix médian) [2], plutôt que de se rabattre par défaut sur une étiquette de direction à un seul tick. Cette recommandation est la nôtre, pas celle de l'affirmation.

Comparer les familles de caractéristiques entre elles (déséquilibre par rapport à MLOFI par rapport au flux de transactions, sur les mêmes données, sous un protocole walk-forward purgé et embargo) n'est pas quelque chose qu'une affirmation citée fait déjà ; voir la réponse directe ci-dessus pour cette mise en garde, énoncée une fois.

Code : une implémentation fonctionnelle

Annexe : code de harnais illustratif, construction propre de l'auteur, non fondée sur une affirmation citée. Aucune des ingénieries concrètes ci-dessous (l'étape StandardScaler, le diviseur walk-forward purgé/embargo, la configuration logistique LASSO, la construction de bandes quantiles) n'est spécifiée par une affirmation dans cette note ; les affirmations fournissent uniquement les définitions des caractéristiques et les familles de modèles, pas cette implémentation. Elle est incluse comme un harnais de pipeline illustratif.

Ce n'est pas non plus une implémentation des étapes de construction ci-dessus. Les méthodes citées ici opèrent sur des instantanés du carnet d'ordres à limite : le déséquilibre à un seul niveau I=(qb-qa)/(qb+qa) est défini sur les quantités à l'offre et à la demande affichées au sommet du carnet [2, passage 649], et le MLOFI est défini sur le flux net d'ordres à plusieurs niveaux de profondeur [6]. Notre table bars ne contient que des données OHLCV et n'a pas de table LOB, donc les caractéristiques ci-dessous sont des proxies uniquement OHLCV qui partagent la forme de ces caractéristiques mais pas leurs entrées. Pour cette raison, les étapes de construction dans la section ci-dessus nécessitent une étape d'ingestion d'instantanés LOB séparée avant que le code de caractéristiques fondé sur les affirmations puisse être écrit ; ce script d'annexe exerce la machinerie environnante (assemblage des caractéristiques, ajustements par famille pour les ensembles de caractéristiques déséquilibre uniquement, MLOFI uniquement, flux de transactions uniquement et combinés, évaluation walk-forward, écriture des prévisions) afin que le harnais soit prêt dès qu'un véritable lecteur LOB est ajouté.

Aucune implémentation exécutable fondée sur les affirmations citées ne peut être fournie à partir des affirmations et données données. Les méthodes décrites dans cette note nécessitent des instantanés du carnet d'ordres à limite comme entrée : le déséquilibre à un seul niveau I=(qb-qa)/(qb+qa) est défini sur les quantités à l'offre et à la demande affichées au sommet du carnet [2, passage 649], le MLOFI est une quantité vectorielle sur le flux net d'ordres à différents niveaux de prix dans le carnet [6], et les caractéristiques du flux de transactions sont extraites des volumes d'ordres à limite, des écarts de prix des ordres à limite, des informations sur les ordres de marché et des informations sur les événements d'ordres à limite [4, passage 661]. Les tables disponibles pour l'exécution du code (bars, forecasts, trades, book) n'établissent pas que des instantanés du carnet d'ordres à limite sous la forme requise par ces affirmations sont présents : bars est une table OHLCV, et un proxy dérivé d'OHLCV pour le déséquilibre, le MLOFI ou le flux de transactions ne testerait pas les affirmations citées, seulement imiterait leur forme sur des données d'entrée non liées. Plutôt que de présenter un code qui semble implémenter les méthodes citées tout en s'exécutant en réalité sur des données différentes et non vérifiées, cette section indique clairement qu'aucune implémentation de ce type ne peut être construite sans d'abord confirmer que la table book (ou une source d'instantanés LOB équivalente) contient des quantités à l'offre et à la demande au sommet du carnet et multi-niveaux comme les affirmations les définissent, plus une spécification de la façon dont ces instantanés s'alignent dans le temps avec les tables trades et bars. Rien de tout cela n'est établi dans les affirmations fournies.

Le script lit les barres d'une minute pour tous les symboles dans la base de données à partir de bars(symbol, tf, ts, open, high, low, close, volume)construit les caractéristiques proxy, ajuste une régression linéaire pour prédire le rendement de la barre suivante et une régression logistique pénalisée L1 pour prédire le signe du mouvement suivant, ajuste et évalue chaque famille de caractéristiques séparément (déséquilibre uniquement, MLOFI uniquement, flux de transactions uniquement) ainsi que l'ensemble combiné sous la propre division walk-forward purgée et embargo de l'auteur, et écrit les prévisions q10/q50/q90/p_up dans la table forecasts. L'horizon est un paramètre que l'utilisateur définit en haut de main() (HORIZON), n'importe où dans la fenêtre de 1 à 5 minutes ; aucune affirmation citée ne choisit une valeur spécifique dans cette fenêtre, donc le choix est laissé à l'appelant. Chaque ligne de prévision est estampillée avec made_at qui enregistre l'horodatage de la barre à partir de laquelle la prévision a été faite (le propre champ ts de la barre), pas l'heure d'horloge à laquelle le script a été exécuté ; cela permet à la table de prévisions de mapper chaque prédiction à l'instantané de marché exact à partir duquel elle a été générée. La référence à battre est un modèle de persistance naïf (prédire un rendement nul, prédire p_up=0.5) ; le nombre à vérifier est le R au carré hors échantillon pour le modèle linéaire et la précision hors échantillon pour le modèle logistique, tous deux par rapport à cette référence naïve.

""" Illustrative harness: OFI-style feature pipeline and CPU-only baselines on OHLCV bars.
This script is the author's own construction. No cited claim specifies the
scaling, cross-validation splitter, solver settings or quantile band used here.
Runs fully offline (no network). Python 3.12, numpy, pandas, scikit-learn, sqlite3.

The script expects bars(symbol, tf, ts, open, high, low, close, volume) and
forecasts(symbol, horizon, made_at, q10, q50, q90, p_up) tables to exist in
data.sqlite.

IMPORTANT: this schema has no limit-order-book snapshot table, so this script
CANNOT test the cited claims. The single-level imbalance I = (qb - qa)/(qb + qa)
[2, passage 649] and MLOFI over depth levels [6] both require book-level
quantities we do not have here. The "imbalance", "MLOFI" and "trade-flow"
features below are OHLCV-only proxies that reproduce the *shape* of those
feature families, not their inputs:
  - single-level imbalance proxy, shaped after I = (qb - qa) / (qb + qa)   [2, passage 649]
  - MLOFI proxy, a vector over pseudo-levels, shaped after MLOFI          [6]
  - trade-flow / signed volume proxy, shaped after the CAC40 feature set  [4]
A real LOB-snapshot ingestion step must be added before the build steps in
"How to build it" can be implemented against this harness.
"""

import sqlite3
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.preprocessing import StandardScaler

DB_PATH = "data.sqlite"

# User-set parameters. HORIZON is the forecast horizon in minutes; any value in
# the 1-to-5 minute window is valid and no cited claim prefers one over another,
# so the caller picks it. EMBARGO is our own cross-validation choice (see
# purged_embargo_walk_forward_splits).
HORIZON = 3
EMBARGO = 5


def list_symbols(conn, tf="1m"):
    # Returns every symbol that has bars at the given timeframe.
    q = "SELECT DISTINCT symbol FROM bars WHERE tf = ? ORDER BY symbol ASC"
    return [r[0] for r in conn.execute(q, (tf,)).fetchall()]


def load_bars(conn, symbol, tf="1m"):
    # Reads one symbol's bars, ordered by timestamp. Input: sqlite3 connection,
    # symbol string, timeframe string. Output: pandas DataFrame.
    q = """
        SELECT symbol, tf, ts, open, high, low, close, volume
        FROM bars WHERE symbol = ? AND tf = ? ORDER BY ts ASC
    """
    df = pd.read_sql_query(q, conn, params=(symbol, tf))
    return df


def build_single_level_imbalance_proxy(df):
    # Proxy only. The real feature is I = (qb - qa) / (qb + qa), defined over
    # top-of-book bid and ask quantities [2, passage 649], which this schema
    # does not store. We build a directional pressure proxy from the bar itself:
    # how close the close is to the high (buy pressure) versus the low (sell pressure).
    rng = (df["high"] - df["low"]).replace(0, np.nan)
    buy_pressure = (df["close"] - df["low"]) / rng
    sell_pressure = (df["high"] - df["close"]) / rng
    imbalance = (buy_pressure - sell_pressure).fillna(0.0)
    return imbalance


def build_mlofi_proxy(df, levels=(1, 2, 3, 5)):
    # Proxy only. Real MLOFI is a vector of net order flow across depth levels
    # of the book [6]. With OHLCV alone we build lagged/smoothed versions of the
    # single-level proxy so the model receives a vector of related signals,
    # matching the vector shape of MLOFI but not its book-level definition.
    base = build_single_level_imbalance_proxy(df)
    out = {}
    for lvl in levels:
        out[f"mlofi_l{lvl}"] = base.rolling(lvl, min_periods=1).mean()
    return pd.DataFrame(out)


def build_trade_flow_features(df):
    # Proxy for the trade-flow family found consistently informative on CAC40:
    # trade sign and market order size [4]. Signed volume: sign of the bar
    # return times the bar volume.
    ret = df["close"].pct_change().fillna(0.0)
    sign = np.sign(ret)
    signed_volume = sign * df["volume"]
    trade_intensity = df["volume"].rolling(5, min_periods=1).mean()
    return pd.DataFrame({
        "signed_volume": signed_volume,
        "trade_intensity": trade_intensity,
    })


def build_feature_matrix(df, horizon):
    # Assembles the full feature set and the two targets:
    #   y_ret: forward return over `horizon` bars (regression target)
    #   y_dir: sign of forward return (classification target)
    # `horizon` is explicit (no default) so the 1-to-5 minute target range is
    # always a deliberate choice at the call site.
    imb = build_single_level_imbalance_proxy(df).rename("imbalance")
    mlofi = build_mlofi_proxy(df)
    tf = build_trade_flow_features(df)
    feats = pd.concat([imb, mlofi, tf], axis=1)

    fwd_close = df["close"].shift(-horizon)
    y_ret = (fwd_close / df["close"] - 1.0)
    y_dir = (y_ret > 0).astype(int)

    data = pd.concat(
        [df["ts"], feats, y_ret.rename("y_ret"), y_dir.rename("y_dir")], axis=1
    )
    # Drop rows with missing target labels (forward returns that fall off the
    # end of the series). This determines which rows are used for training.
    data = data.dropna().reset_index(drop=True)
    return data


def feature_families(feature_cols):
    # Splits the combined feature set into the three families the note compares,
    # so each can be fitted and scored on its own as well as together.
    imbalance = [c for c in feature_cols if c == "imbalance"]
    mlofi = [c for c in feature_cols if c.startswith("mlofi_")]
    trade = [c for c in feature_cols if c in ("signed_volume", "trade_intensity")]
    return {
        "imbalance-only": imbalance,
        "mlofi-only": mlofi,
        "trade-flow-only": trade,
        "combined": list(feature_cols),
    }


def purged_embargo_walk_forward_splits(n, n_splits=5, horizon=HORIZON, embargo=EMBARGO):
    # Author's own purged, embargoed walk-forward split. Expanding train window,
    # a test block after it, and purging of rows within `horizon` bars of the
    # test start (because forward-looking labels from those rows overlap with
    # the test set), plus an embargo gap between the purge cutoff and test start
    # to simulate real-time deployment latency. This splitter removes all training
    # rows within `horizon` bars of the test period, implementing true purging
    # as well as an embargo; the horizon and embargo values are our own choice.
    fold_size = n // (n_splits + 1)
    splits = []
    for i in range(1, n_splits + 1):
        test_start = fold_size * (i + 1)
        test_end = min(test_start + fold_size, n)
        if test_start >= test_end:
            continue
        # Purge: remove training rows within `horizon` of test_start (their labels
        # reach into the test period). Embargo: add a further gap of `embargo` bars.
        purge_cutoff = test_start - horizon - embargo
        if purge_cutoff  0 else 0.0
    acc_naive = max(y_dir_test.mean(), 1 - y_dir_test.mean())
    return r2_naive, acc_naive


def make_lasso_logistic():
    # L1-penalized (LASSO) logistic regression. Passage 661 states that LASSO
    # logistic regression is used for variable selection over LOB features [4],
    # but it does not specify the solver, l1_ratio or max_iter, so these
    # hyperparameters are our own choice.
    return LogisticRegression(penalty="l1", solver="saga", l1_ratio=1, max_iter=1000)


def fit_and_evaluate(data, feature_cols, horizon):
    # Two model choices, each mapped to a specific claim:
    #  - Linear regression on the return target mirrors the linear regression
    #    model that is compared against deep learning models on the Chinese
    #    stock market LOB benchmark [1], and the linear relationship
    #    fitted between MLOFI and the contemporaneous mid-price change on 6
    #    Nasdaq stocks [6].
    #  - LASSO logistic regression on the direction target mirrors the LASSO
    #    logistic regression used to predict price jumps and to perform
    #    variable selection over LOB features on CAC40 stocks [4]; the solver,
    #    l1_ratio and max_iter settings are our own choice, not stated in that claim.
    # StandardScaler normalization is our own choice; claim [5] mentions Z-score
    # and Batch-Instance Normalization for a different system, but StandardScaler
    # is neither of those and is explicitly flagged here as an author's addition.
    n = len(data)
    splits = purged_embargo_walk_forward_splits(n, n_splits=5, horizon=horizon, embargo=EMBARGO)

    lin_r2s, log_accs = [], []
    lin = log = scaler = None
    for train_idx, test_idx in splits:
        train = data.iloc[train_idx]
        test = data.iloc[test_idx]

        scaler = StandardScaler()  # author's own normalization choice
        X_train = scaler.fit_transform(train[feature_cols])
        X_test = scaler.transform(test[feature_cols])

        # Linear regression on forward return: the linear baseline compared
        # against deep learning models on the China benchmark [1], and the
        # linear MLOFI-vs-mid-price-change fit [6].
        lin = LinearRegression()
        lin.fit(X_train, train["y_ret"])
        pred_ret = lin.predict(X_test)
        ss_res = np.sum((test["y_ret"] - pred_ret) ** 2)
        ss_tot = np.sum((test["y_ret"] - test["y_ret"].mean()) ** 2)
        r2 = 1 - ss_res / ss_tot if ss_tot > 0 else 0.0
        lin_r2s.append(r2)

        # LASSO-style logistic regression on direction: the LASSO logistic
        # variable-selection method applied to price-jump prediction on
        # CAC40 limit order book features [4], with our own solver, l1_ratio
        # and max_iter settings.
        if train["y_dir"].nunique()  r2_naive)
    print(f"[{symbol}] model beats baseline on accuracy:", acc > acc_naive)

    write_forecasts(conn, symbol, horizon, lin, log, scaler, feature_cols, data)


def main():
    conn = sqlite3.connect(DB_PATH)
    horizon = HORIZON  # minutes ahead; user-set parameter, any value in the 1-to-5 minute window

    symbols = list_symbols(conn, tf="1m")
    if not symbols:
        print("No symbols with 1m bars found.")
        conn.close()
        return
    print("Symbols found:", symbols)

    for symbol in symbols:
        run_symbol(conn, symbol, horizon)

    conn.close()


if __name__ == "__main__":
    main()

Ce que nous construirions

Ce qui suit est notre propre plan de projet. Aucun calendrier, chronologie, estimation de personnel ou ordre des tâches ci-dessous n'apparaît dans une affirmation citée.

Nous construirions un petit harnais de comparaison de caractéristiques uniquement CPU pour sam, en utilisant nos propres barres SQLite sur trois échanges de crypto-monnaies et une série d'actions. Dans un premier temps, nous implémenterions des caractéristiques au niveau du LOB (déséquilibre à un seul niveau I tel que défini dans [2], MLOFI comme vecteur sur les niveaux de profondeur comme dans [6], et caractéristiques de flux de transactions comme dans [4]) à partir d'instantanés bruts du carnet d'ordres, et non des proxies OHLCV utilisés dans le code illustratif ci-dessus, car des données LOB réelles sont nécessaires pour tester les affirmations réelles. Dans un deuxième temps, nous exécuterions notre propre division walk-forward purgée et embargo sur les trois échanges et la série d'actions, en ajustant les mêmes modèles de base linéaires et logistiques LASSO pour chaque famille de caractéristiques séparément et en combinaison.

Nous jugerions le projet en fonction de savoir si une famille de caractéristiques bat la référence de persistance naïve (rendement nul, p_up=0.5) sur le R au carré hors échantillon et le taux de réussite, par échange et pour la série d'actions séparément, et si l'ajustement du MLOFI s'améliore de manière monotone avec le niveau de profondeur comme il l'a fait sur les 6 actions du Nasdaq dans [6], maintenant vérifié sur nos propres carnets d'ordres crypto. Nous rapporterions explicitement, plutôt que d'inférer, si le classement des caractéristiques dérivé des actions de [4] se transfère aux crypto-monnaies, car aucune affirmation citée ne teste déjà cela.

Coût, encore une fois notre propre estimation : cela nécessite un stockage d'instantanés LOB pour trois échanges (plus grand que OHLCV seul) et un ajustement linéaire/logistique uniquement CPU, donc aucun budget GPU n'est requis ; le coût principal est la collecte et le stockage de données pour l'historique LOB au niveau du tick ou de l'instantané, plus le temps d'ingénierie.

Registre des affirmations

  1. factétayée

    Passage 644 states that the benchmark LOB dataset from the Chinese stock market covers a few thousand stocks from June to September 2020.

    [1] Benchmark Dataset for Short-Term Market Prediction of Limit Order Book in China Markets, abstract S2 7aaaecac0598
    “Limit order books (LOBs) have generated big financial data for analysis and prediction from both academic community and industry practitioners. This article presents a benchmark LOB dataset from the Chinese stock market, covering a few thousand stocks for the period of June to Se…”
  2. methodétayée

    Passage 644 states that the experiment protocol forecasts the upcoming volume-weighted average price change and volume at the end of every second over 12 horizons ranging from 1 second to 300 seconds.

    [1] Benchmark Dataset for Short-Term Market Prediction of Limit Order Book in China Markets, abstract S2 7aaaecac0598
    “Limit order books (LOBs) have generated big financial data for analysis and prediction from both academic community and industry practitioners. This article presents a benchmark LOB dataset from the Chinese stock market, covering a few thousand stocks for the period of June to Se…”
  3. methodétayée

    Passage 644 states that results based on a linear regression model and deep learning models are compared.

    [1] Benchmark Dataset for Short-Term Market Prediction of Limit Order Book in China Markets, abstract S2 7aaaecac0598
    “Limit order books (LOBs) have generated big financial data for analysis and prediction from both academic community and industry practitioners. This article presents a benchmark LOB dataset from the Chinese stock market, covering a few thousand stocks for the period of June to Se…”
  4. methodétayée

    Passage 644 states that a more practically effective set of features is proposed to capture both LOB snapshots and periodic data.

    [1] Benchmark Dataset for Short-Term Market Prediction of Limit Order Book in China Markets, abstract S2 7aaaecac0598
    “Limit order books (LOBs) have generated big financial data for analysis and prediction from both academic community and industry practitioners. This article presents a benchmark LOB dataset from the Chinese stock market, covering a few thousand stocks for the period of June to Se…”
  5. limitationétayée

    Passage 644 states that predicting mid-price direction change for the next few events is too simplistic and not suitable for a practical trading strategy.

    [1] Benchmark Dataset for Short-Term Market Prediction of Limit Order Book in China Markets, abstract S2 7aaaecac0598
    “Limit order books (LOBs) have generated big financial data for analysis and prediction from both academic community and industry practitioners. This article presents a benchmark LOB dataset from the Chinese stock market, covering a few thousand stocks for the period of June to Se…”
  6. factétayée

    Passage 646 states that the average mid price move normalized by the bid-ask spread and the waiting time until the next mid price move are studied as functions of book imbalance.

    [2] Trade arrival dynamics and quote imbalance in a limit order book, section 1 Introduction
    “features by introducing a stochastic model for diffusion in three dimensions. We compute the probabilities of price movement and trade occurrence from the model, and calibrate them to recent historical market data. Figure 1: Average mid price move normalised by the bid-ask spread…”
  7. resultétayée

    Passage 646 states that the data display the non-martingale nature of prices at the short time scales considered.

    [2] Trade arrival dynamics and quote imbalance in a limit order book, section 1 Introduction
    “features by introducing a stochastic model for diffusion in three dimensions. We compute the probabilities of price movement and trade occurrence from the model, and calibrate them to recent historical market data. Figure 1: Average mid price move normalised by the bid-ask spread…”
  8. resultétayée

    Passage 646 states that in the case shown, the average price move can be up to a third of the spread in a highly imbalanced book.

    [2] Trade arrival dynamics and quote imbalance in a limit order book, section 1 Introduction
    “features by introducing a stochastic model for diffusion in three dimensions. We compute the probabilities of price movement and trade occurrence from the model, and calibrate them to recent historical market data. Figure 1: Average mid price move normalised by the bid-ask spread…”
  9. methodétayée

    Passage 647 states that the paper studies the probability of price movements and trade arrivals as a function of the quote imbalance at the top of the limit order book.

    [2] Trade arrival dynamics and quote imbalance in a limit order book, abstract arXiv:1312.0514v1
    “We examine the dynamics of the bid and ask queues of a limit order book and their relationship with the intensity of trade arrivals. In particular, we study the probability of price movements and trade arrivals as a function of the quote imbalance at the top of the limit order bo…”
  10. methodétayée

    Passage 647 states that a stochastic model is proposed to capture the joint dynamics of the top-of-book queues and the trading process.

    [2] Trade arrival dynamics and quote imbalance in a limit order book, abstract arXiv:1312.0514v1
    “We examine the dynamics of the bid and ask queues of a limit order book and their relationship with the intensity of trade arrivals. In particular, we study the probability of price movements and trade arrivals as a function of the quote imbalance at the top of the limit order bo…”
  11. factétayée

    Passage 649 defines bid-ask imbalance as I=(qb−qa)/(qb+qa), where qb and qa are the bid and ask quantities posted at the top of the book.

    [2] Trade arrival dynamics and quote imbalance in a limit order book, section 2 Empirical observations
    “A common intuition among market practitioners is that the order sizes displayed at the top of the book reflect the general intention of the market. When the number of shares available at the bid exceeds those at the ask, participants expect the next price movement to be upwards, …”
  12. factétayée

    Passage 649 states that positive imbalance indicates an order book heavier on the bid side and negative imbalance indicates one heavier on the ask side.

    [2] Trade arrival dynamics and quote imbalance in a limit order book, section 2 Empirical observations
    “A common intuition among market practitioners is that the order sizes displayed at the top of the book reflect the general intention of the market. When the number of shares available at the bid exceeds those at the ask, participants expect the next price movement to be upwards, …”
  13. methodétayée

    Passage 649 states that the effect of book imbalance on the average mid price change and on the waiting time until the next price change is calculated using the stopping time defined by the next change in either the best bid or the best ask.

    [2] Trade arrival dynamics and quote imbalance in a limit order book, section 2 Empirical observations
    “A common intuition among market practitioners is that the order sizes displayed at the top of the book reflect the general intention of the market. When the number of shares available at the bid exceeds those at the ask, participants expect the next price movement to be upwards, …”
  14. resultétayée

    Passage 650 states that a high book imbalance is, on average, a good predictor of mid price movements.

    [2] Trade arrival dynamics and quote imbalance in a limit order book, section 2 Empirical observations
    “Here, we use the same probabilities to compute the average size of the price jump11 1 A mid price change event can be induced by several actions, such as a trade, a cancellation or even the addition of a new quote between the current bid and ask spread, if the spread is big enoug…”
  15. resultétayée

    Passage 650 states that the price change until the next tick is well approximated by a linear function of the imbalance and is typically well below the bid-ask spread, even for highly imbalanced order books.

    [2] Trade arrival dynamics and quote imbalance in a limit order book, section 2 Empirical observations
    “Here, we use the same probabilities to compute the average size of the price jump11 1 A mid price change event can be induced by several actions, such as a trade, a cancellation or even the addition of a new quote between the current bid and ask spread, if the spread is big enoug…”
  16. limitationétayée

    Passage 650 states that although book imbalance may be used as a predictor for the next price movement, it does not by itself offer an opportunity for a straightforward statistical arbitrage.

    [2] Trade arrival dynamics and quote imbalance in a limit order book, section 2 Empirical observations
    “Here, we use the same probabilities to compute the average size of the price jump11 1 A mid price change event can be induced by several actions, such as a trade, a cancellation or even the addition of a new quote between the current bid and ask spread, if the spread is big enoug…”
  17. resultétayée

    Passage 650 states that highly imbalanced books indicate that a price move is likely to come in a relatively short time.

    [2] Trade arrival dynamics and quote imbalance in a limit order book, section 2 Empirical observations
    “Here, we use the same probabilities to compute the average size of the price jump11 1 A mid price change event can be induced by several actions, such as a trade, a cancellation or even the addition of a new quote between the current bid and ask spread, if the spread is big enoug…”
  18. factétayée

    Passage 651 states that for an order posted at the bid side, the relevant stopping time is the time of first arrival of a sell trade, and for an order posted at the ask side, it is the time of first arrival of a buy trade.

    [2] Trade arrival dynamics and quote imbalance in a limit order book, section 2 Empirical observations
    “context of microstructure studies, this is usually interpreted as the order flow having an impact on the limit book, but it can also be seen more generally as the natural supply and demand influence on the price of an asset. Another stopping time with economic significance is the…”
  19. resultétayée

    Passage 653 states that Cont et al. find a simple linear dependence between price changes and an indicator measuring imbalances between the order flow on the buy and sell sides of the LOB.

    [3] Stochastic Price Dynamics Implied By the Limit Order Book, section 1 Introduction
    “M. Bartolozzi [Bar10] proposes a multi-agent model for the dynamics of the LOB, with a particular focus on capturing key features of high-frequency trading. M. Avellaneda et al. [AS06] also propose a probabilistic framework for a utility optimizing agent in the context of high-fr…”
  20. resultétayée

    Passage 661 states that liquidity balance on best bid and best ask is quite informative for predicting the future market order's direction.

    [4] Price Jump Prediction in Limit Order Book, abstract arXiv:1204.1381v1
    “A limit order book provides information on available limit order prices and their volumes. Based on these quantities, we give an empirical result on the relationship between the bid-ask liquidity balance and trade sign and we show that liquidity balance on best bid/best ask is qu…”
  21. factétayée

    Passage 661 defines a price jump as a sell (buy) market order arrival executed at a price smaller (larger) than the best bid (best ask) price immediately after the preceding market order arrival.

    [4] Price Jump Prediction in Limit Order Book, abstract arXiv:1204.1381v1
    “A limit order book provides information on available limit order prices and their volumes. Based on these quantities, we give an empirical result on the relationship between the bid-ask liquidity balance and trade sign and we show that liquidity balance on best bid/best ask is qu…”
  22. methodétayée

    Passage 661 states that features are extracted from limit order volumes, limit order price gaps, market order information, and limit order event information.

    [4] Price Jump Prediction in Limit Order Book, abstract arXiv:1204.1381v1
    “A limit order book provides information on available limit order prices and their volumes. Based on these quantities, we give an empirical result on the relationship between the bid-ask liquidity balance and trade sign and we show that liquidity balance on best bid/best ask is qu…”
  23. methodétayée

    Passage 661 states that logistic regression is applied to predict the price jump from limit order book features.

    [4] Price Jump Prediction in Limit Order Book, abstract arXiv:1204.1381v1
    “A limit order book provides information on available limit order prices and their volumes. Based on these quantities, we give an empirical result on the relationship between the bid-ask liquidity balance and trade sign and we show that liquidity balance on best bid/best ask is qu…”
  24. methodétayée

    Passage 661 states that LASSO logistic regression is introduced to perform variable selection and highlight the importance of different features in predicting the future price jump.

    [4] Price Jump Prediction in Limit Order Book, abstract arXiv:1204.1381v1
    “A limit order book provides information on available limit order prices and their volumes. Based on these quantities, we give an empirical result on the relationship between the bid-ask liquidity balance and trade sign and we show that liquidity balance on best bid/best ask is qu…”
  25. methodétayée

    Passage 661 states that to remove intraday seasonality, the analysis is based on separate morning and afternoon datasets.

    [4] Price Jump Prediction in Limit Order Book, abstract arXiv:1204.1381v1
    “A limit order book provides information on available limit order prices and their volumes. Based on these quantities, we give an empirical result on the relationship between the bid-ask liquidity balance and trade sign and we show that liquidity balance on best bid/best ask is qu…”
  26. resultétayée

    Passage 661 states that, based on forty largest French stocks of CAC40, trade sign and market order size as well as liquidity on the best bid and best ask are consistently informative for predicting the incoming price jump.

    [4] Price Jump Prediction in Limit Order Book, abstract arXiv:1204.1381v1
    “A limit order book provides information on available limit order prices and their volumes. Based on these quantities, we give an empirical result on the relationship between the bid-ask liquidity balance and trade sign and we show that liquidity balance on best bid/best ask is qu…”
  27. methodétayée

    Passage 664 states that the study uses a visible depth of five levels, with L=5.

    [4] Price Jump Prediction in Limit Order Book, section 1 Description and data notation
    “In this study, for simplicity, we focus on limit order arrival events, limit order cancellation events and market order arrival events, see Figure  2. The number of visible limit order levels is chosen to be five L=5L=5. Our dataset is provided by NATIXIS via Thomson Reuter’s ‘Re…”
  28. factétayée

    Passage 664 states that the dataset comprises trades and limit order activities of the 40 member stocks of the CAC40 between April 1st 2011 and April 30th 2011.

    [4] Price Jump Prediction in Limit Order Book, section 1 Description and data notation
    “In this study, for simplicity, we focus on limit order arrival events, limit order cancellation events and market order arrival events, see Figure  2. The number of visible limit order levels is chosen to be five L=5L=5. Our dataset is provided by NATIXIS via Thomson Reuter’s ‘Re…”
  29. methodétayée

    Passage 664 states that to avoid open and close hours, the data are restricted to 09h05 to 17h25.

    [4] Price Jump Prediction in Limit Order Book, section 1 Description and data notation
    “In this study, for simplicity, we focus on limit order arrival events, limit order cancellation events and market order arrival events, see Figure  2. The number of visible limit order levels is chosen to be five L=5L=5. Our dataset is provided by NATIXIS via Thomson Reuter’s ‘Re…”
  30. factétayée

    Passage 664 states that every transaction and every limit order book modification are recorded in milliseconds.

    [4] Price Jump Prediction in Limit Order Book, section 1 Description and data notation
    “In this study, for simplicity, we focus on limit order arrival events, limit order cancellation events and market order arrival events, see Figure  2. The number of visible limit order levels is chosen to be five L=5L=5. Our dataset is provided by NATIXIS via Thomson Reuter’s ‘Re…”
  31. limitationétayée

    Passage 666 states that the study neglects stop orders and iceberg orders because they are relatively rare compared with limit order and market order events.

    [4] Price Jump Prediction in Limit Order Book, section 1 Description and data notation
    “In case of iceberg orders, the disclosed part has the same priority as a regular of limit order while the hidden part has lower priority. The hidden part will become visible as soon as the disclosed part is executed. The case that the hidden part is consumed by a market order wit…”
  32. factétayée

    The system in passage 669 integrates historical datasets (FI-2010, LOBSTER, BTC) with live WebSocket-based market feeds, a modular preprocessing engine, and multiple deep learning architectures for real-time limit order book forecasting.

    [5] OrderBook Microstructure Prediction, abstract S2 1d7511240190
    “High-frequency financial markets generate vast volumes of limit order book (LOB) data, demanding models capable of capturing complex spatial-temporal patterns for accurate short-term price movement prediction. This work presents a complete end-to-end system for real-time LOB fore…”
  33. methodétayée

    The preprocessing in passage 669 normalizes incoming order book snapshots using Z-score and Batch-Instance Normalization (BiN).

    [5] OrderBook Microstructure Prediction, abstract S2 1d7511240190
    “High-frequency financial markets generate vast volumes of limit order book (LOB) data, demanding models capable of capturing complex spatial-temporal patterns for accurate short-term price movement prediction. This work presents a complete end-to-end system for real-time LOB fore…”
  34. methodétayée

    The system in passage 669 extracts multi-level price and volume features and generates multi-horizon movement labels.

    [5] OrderBook Microstructure Prediction, abstract S2 1d7511240190
    “High-frequency financial markets generate vast volumes of limit order book (LOB) data, demanding models capable of capturing complex spatial-temporal patterns for accurate short-term price movement prediction. This work presents a complete end-to-end system for real-time LOB fore…”
  35. factétayée

    The models named in passage 669 are MLPLOB, TLOB, DeepLOB, and BinCTABL, and they are trained on preprocessed data and served through a FastAPI backend.

    [5] OrderBook Microstructure Prediction, abstract S2 1d7511240190
    “High-frequency financial markets generate vast volumes of limit order book (LOB) data, demanding models capable of capturing complex spatial-temporal patterns for accurate short-term price movement prediction. This work presents a complete end-to-end system for real-time LOB fore…”
  36. methodétayée

    In passage 669, live inference uses a frontend that streams real-time exchange data such as Binance via WebSockets, and the backend processes this data to produce instant predictions.

    [5] OrderBook Microstructure Prediction, abstract S2 1d7511240190
    “High-frequency financial markets generate vast volumes of limit order book (LOB) data, demanding models capable of capturing complex spatial-temporal patterns for accurate short-term price movement prediction. This work presents a complete end-to-end system for real-time LOB fore…”
  37. factétayée

    Passage 669 states that multiple models can be loaded concurrently but their predictions are returned independently to enable transparent comparison.

    [5] OrderBook Microstructure Prediction, abstract S2 1d7511240190
    “High-frequency financial markets generate vast volumes of limit order book (LOB) data, demanding models capable of capturing complex spatial-temporal patterns for accurate short-term price movement prediction. This work presents a complete end-to-end system for real-time LOB fore…”
  38. factétayée

    MLOFI is a vector quantity that measures the net flow of buy and sell orders at different price levels in a limit order book.

    [6] Multi-Level Order-Flow Imbalance in a Limit Order Book, section Multi-Level Order-Flow Imbalance in a Limit Order Book
    “Ke Xu ††thanks: Corresponding author. Email: xuke_e@hotmail.com. Affiliation: Mathematical Institute, University of Oxford, Oxford OX2 6GG, UK Martin D. Gould Affiliation: Mathematical Institute, University of Oxford, Oxford OX2 6GG, UK Sam D. Howison Affiliation: Mathematical In…”
  39. methodétayée

    Using data for 6 liquid stocks on Nasdaq, passage 670 fits a simple linear relationship between MLOFI and the contemporaneous change in mid-price.

    [6] Multi-Level Order-Flow Imbalance in a Limit Order Book, section Multi-Level Order-Flow Imbalance in a Limit Order Book
    “Ke Xu ††thanks: Corresponding author. Email: xuke_e@hotmail.com. Affiliation: Mathematical Institute, University of Oxford, Oxford OX2 6GG, UK Martin D. Gould Affiliation: Mathematical Institute, University of Oxford, Oxford OX2 6GG, UK Sam D. Howison Affiliation: Mathematical In…”
  40. resultétayée

    For all 6 stocks studied in passage 670, the out-of-sample goodness-of-fit improves with each additional price level included in the MLOFI vector.

    [6] Multi-Level Order-Flow Imbalance in a Limit Order Book, section Multi-Level Order-Flow Imbalance in a Limit Order Book
    “Ke Xu ††thanks: Corresponding author. Email: xuke_e@hotmail.com. Affiliation: Mathematical Institute, University of Oxford, Oxford OX2 6GG, UK Martin D. Gould Affiliation: Mathematical Institute, University of Oxford, Oxford OX2 6GG, UK Sam D. Howison Affiliation: Mathematical In…”

Sources

  1. [1]
    Charles Huang, Weifeng Ge, H.W. Chou, Xin Du. Benchmark Dataset for Short-Term Market Prediction of Limit Order Book in China Markets. The Journal of Financial Data Science, 2021.semanticscholar · primary · DOI 10.3905/jfds.2021.1.074 · https://doi.org/10.3905/jfds.2021.1.074
  2. [2]
    Alexander Lipton, Umberto Pesavento, Michael G Sotiropoulos. Trade arrival dynamics and quote imbalance in a limit order book. arXiv, 2013.arxiv · primary · https://arxiv.org/abs/1312.0514v1
  3. [3]
    Alex Langnau, Yanko Punchev. Stochastic Price Dynamics Implied By the Limit Order Book. arXiv, 2011.arxiv · primary · https://arxiv.org/abs/1105.4789v1
  4. [4]
    Ban Zheng, Eric Moulines, Frédéric Abergel. Price Jump Prediction in Limit Order Book. arXiv, 2012.arxiv · primary · https://arxiv.org/abs/1204.1381v1
  5. [5]
    Renu Kachoria, Archit Bagad, Atharva Bondarde, Atharva Joshi, Arnav Jadhav, A. Deshmukh. OrderBook Microstructure Prediction. 2026 International Conference on System, Computation, Automation and Networking (ICSCAN), 2026.semanticscholar · primary · DOI 10.1109/ICSCAN66520.2026.11588413 · https://doi.org/10.1109/ICSCAN66520.2026.11588413
  6. [6]
    Ke Xu, Martin D. Gould, Sam D. Howison. Multi-Level Order-Flow Imbalance in a Limit Order Book. arXiv, 2019.arxiv · primary · https://arxiv.org/abs/1907.06230v2
  7. [7]
    Hamidreza Bandealinaeini, Mohammad Sharifkhani, E. Salavati. Attention-Based Multi-Asset Order Flow Networks for Enhanced Mid-Price Prediction. International Conference on AI in Finance, 2025.semanticscholar · primary · DOI 10.1145/3768292.3770430 · https://doi.org/10.1145/3768292.3770430
  8. [8]
    Prakul Sunil Hiremath, Vruksha Arun Hiremath. Early Detection of Latent Microstructure Regimes in Limit Order Books. arXiv, 2026.arxiv · primary · https://arxiv.org/abs/2604.20949v1
  9. [9]
    Faisal I Qureshi. Investigating Limit Order Book Characteristics for Short Term Price Prediction: a Machine Learning Approach. arXiv, 2018.arxiv · primary · https://arxiv.org/abs/1901.10534v1
  10. [10]
    Fan Fang, Waichung Chung, Carmine Ventre, Michail Basios, Leslie Kanthan, Lingbo Li. Ascertaining price formation in cryptocurrency markets with machine learning. European Journal of Finance, 2021.openalex · primary · DOI 10.1080/1351847x.2021.1908390 · https://doi.org/10.1080/1351847x.2021.1908390
  11. [11]
    Randolph James Ferlic, Kimberly Kate Ferlic. A One-Byte, Options-Free Market-State Monitor: Detection-Preserving Compression of Financial Data Streams with a Class-Discriminant Token. Zenodo (CERN European Organization for Nuclear Research), 2026.openalex · primary · DOI 10.5281/zenodo.22101085 · https://doi.org/10.5281/zenodo.22101085
  12. [12]
    Md Shah Ali Dolon. DEPLOYMENT AND PERFORMANCE EVALUATION OF HYBRID MACHINE LEARNING MODELS FOR STOCK PRICE FORECASTING AND RISK PREDICTION IN VOLATILE MARKETS. American Journal of Scholarly Research and Innovation, 2025.openalex · primary · DOI 10.63125/z8qq6h36 · https://doi.org/10.63125/z8qq6h36
  13. [13]
    Jianli Xiao, Baichao Long. A Multi-Channel Spatial-Temporal Transformer Model for Traffic Flow Forecasting. arXiv, 2024.arxiv · primary · https://arxiv.org/abs/2405.06266v1
  14. [14]
    Flavius Gheorghe Popa, Vlad Mureşan. Artificial Intelligence in Finance: From Market Prediction to Macroeconomic and Firm-Level Forecasting. AI, 2025.openalex · primary · DOI 10.3390/ai6110295 · https://doi.org/10.3390/ai6110295
  15. [15]
    Nino Antulov-Fantulin, Tian Guo, Fabrizio Lillo. Temporal mixture ensemble models for probabilistic forecasting of intraday cryptocurrency volume. Decisions in Economics and Finance, 2021.openalex · primary · DOI 10.1007/s10203-021-00344-9 · https://doi.org/10.1007/s10203-021-00344-9
  16. [16]
    Stefano Damato, Dario Azzimonti, Giorgio Corani. Forecasting intermittent time series with Gaussian Processes and Tweedie likelihood. arXiv, 2025.arxiv · primary · https://arxiv.org/abs/2502.19086v5