Aller au contenu

05 · Stratégie 4 — OFI et microprice

La seule stratégie du rapport dont le fondement est directement issu de la littérature académique. Elle est aussi la plus exigeante en latence, et sa meilleure utilisation n'est peut-être pas celle qu'on imagine.

Le calcul de l'OFI

Reprenons la définition de Cont, Kukanov & Stoikov (2014). À chaque mise à jour du meilleur bid/ask, on note l'état \((P_b, Q_b, P_a, Q_a)\) et l'on calcule l'incrément :

\[ e_n = \underbrace{\mathbb{1}_{\{P_b^n \ge P_b^{n-1}\}} Q_b^n - \mathbb{1}_{\{P_b^n \le P_b^{n-1}\}} Q_b^{n-1}}_{\text{contribution du bid}} - \underbrace{\Big(\mathbb{1}_{\{P_a^n \le P_a^{n-1}\}} Q_a^n - \mathbb{1}_{\{P_a^n \ge P_a^{n-1}\}} Q_a^{n-1}\Big)}_{\text{contribution de l'ask}} \]

L'OFI sur une fenêtre est la somme des incréments : \(\text{OFI}(W) = \sum_{n \in W} e_n\).

Symbole Signification
\(P_b^n, P_a^n\) meilleurs bid et ask après la \(n\)-ième mise à jour
\(Q_b^n, Q_a^n\) tailles correspondantes, en contrats
\(\mathbb{1}_{\{\cdot\}}\) indicatrice, vaut 1 si la condition est vraie, 0 sinon

Lecture des quatre termes

  • Le bid monte ou est renforcé → pression acheteuse, on ajoute la nouvelle taille.
  • Le bid baisse ou est réduit → l'ancienne file disparaît, on la soustrait.
  • L'ask baisse ou est renforcé → pression vendeuse, on soustrait.
  • L'ask monte (est balayé) → la file vendeuse disparaît, on ajoute.

Le point clé : l'OFI compte les annulations au même titre que les exécutions. Un vendeur qui retire ses ordres exerce une pression haussière sans qu'une seule transaction n'ait lieu. C'est ce que le delta ne voit pas.

Une implémentation Python testée est fournie en annexe, fonction ofi_increment.

Le microprice

\[ P_{\text{micro}} = \frac{Q_a P_b + Q_b P_a}{Q_a + Q_b} \]

Noter l'inversion : la taille de l'ask pondère le prix du bid. Quand la file d'achat est grosse (\(Q_b\) élevé), le microprice se rapproche de l'ask, c'est-à-dire du côté vers lequel le prix a le plus de chances de se déplacer.

Le déséquilibre de file normalisé s'écrit :

\[ I = \frac{Q_b}{Q_b + Q_a} \in [0, 1] \]

Son pouvoir prédictif sur la direction du tick suivant est documenté (Gould & Bonart, 2016).

L'usage réaliste : l'exécution, pas le signal

Ce que la latence retail interdit

Le pouvoir prédictif du déséquilibre de file porte sur le prochain changement de prix — quelques dizaines à quelques centaines de millisecondes. Avec une latence de 50 ms ou davantage, l'information est largement consommée avant que votre ordre n'arrive.

Utiliser \(I\) comme signal d'entrée autonome en retail, c'est arriver systématiquement en retard sur un signal exact. C'est le pire des deux mondes : le signal est bon, donc les autres l'ont déjà exploité.

L'usage qui reste accessible est différent, et il est réel :

1. Optimisation du timing d'entrée

Une fois qu'une stratégie (absorption, imbalances empilées) a produit un signal long, attendre que \(I > 0{,}6\) avant d'envoyer l'ordre au marché. On économise en moyenne une fraction de tick, sans changer la thèse.

Un demi-tick, ce n'est pas rien

Sur MES, un demi-tick vaut 0,625 $ par contrat. Avec une commission aller-retour de 1,02 $, économiser un demi-tick à l'entrée représente une réduction de 60 % du coût de la commission. Sur 1 000 contrats-trades par mois, cela fait 625 $.

L'optimisation d'exécution est le gain le plus certain et le moins risqué disponible en retail. Il ne requiert aucune prédiction — seulement d'attendre quelques centaines de millisecondes le bon moment dans le cycle du carnet.

2. Filtre de rejet

Refuser un signal long si \(I < 0{,}35\) au moment de l'exécution : le carnet contredit franchement la thèse. Filtre simple, sans paramètre à optimiser finement.

3. Confirmation d'absorption

L'OFI apporte quelque chose que le delta ne voit pas : distinguer une absorption réelle (le vendeur passif recharge ses ordres, l'OFI reste négatif malgré un delta positif) d'une absorption apparente (le vendeur ne recharge pas, l'OFI suit le delta — le niveau va céder).

\[ \text{absorption confirmée} \iff \Delta(W) \gg 0 \quad\text{et}\quad \text{OFI}(W) \le 0 \]

C'est probablement le meilleur usage de l'OFI en retail

Cette combinaison exploite précisément l'écart entre delta et OFI, sur un horizon (la durée d'une fenêtre d'absorption, 30 secondes) parfaitement compatible avec une latence de 50 ms. C'est le seul endroit du rapport où un résultat académique établi rencontre une contrainte retail sans être détruit par elle.

La stratégie autonome, pour mémoire

Si votre latence est faible (VPS Chicago, moins de 5 ms), une stratégie de retour à la moyenne sur OFI extrême devient envisageable :

Couche Spécification
Régime Ratio d'efficience ≤ 0,4, spread stable à 1 tick
Déclencheur \(\lvert\text{OFI}(W)\rvert \ge q_{0,98}\) sur fenêtre de 5 s
Sens Contre l'OFI (retour à la moyenne)
Cible 2 à 4 ticks
Stop 4 à 6 ticks
Temps maximal 30 secondes

Attention au taux d'équilibre

Une cible de 3 ticks et un stop de 5 ticks sur MES exigent, commissions et slippage inclus, un taux de réussite proche de 70 %. C'est extrêmement élevé. Cette configuration n'a de sens que sur ES (où la friction relative est 2,5 fois plus faible) et avec une latence de quelques millisecondes.

En pratique, si vous avez la latence pour cette stratégie, vous avez la latence pour des choses plus rentables. Elle est documentée ici pour complétude, pas comme recommandation.

Ce qu'il faut mesurer

Mesure Question
Corrélation OFI / variation de prix contemporaine Retrouvez-vous la relation linéaire de CKS sur vos données ? C'est le test de validité de votre implémentation.
Autocorrélation de l'OFI Sur quel horizon persiste-t-il ? Détermine la fenêtre utile.
Gain d'exécution du filtre \(I\) Mesurez le prix moyen obtenu avec et sans. C'est un test A/B simple.
Écart delta / OFI en absorption Le signe de l'OFI discrimine-t-il les absorptions réussies ?

Le premier test est un test de code, pas de stratégie

Si vous ne retrouvez pas la relation linéaire entre OFI et variation de prix contemporaine sur vos propres données, votre implémentation est fausse. C'est un résultat robuste et reproduit ; ne pas le retrouver est un diagnostic de bug, pas une découverte.

Résumé

  • L'OFI compte les ajouts et annulations, pas seulement les exécutions : il voit ce que le delta ne voit pas.
  • Son pouvoir prédictif porte sur un horizon trop court pour la latence retail en usage autonome.
  • Ses usages accessibles : optimiser le timing d'entrée, filtrer les signaux contredits par le carnet, et confirmer les absorptions.
  • Le gain d'exécution d'un demi-tick vaut 60 % de la commission sur MES.
  • Retrouver la relation linéaire OFI/prix est un test de validité de votre code.

Chapitre précédent : Sweep et reprise de liquidité · Chapitre suivant : Filtres de contexte et risque