06 · Filtres de contexte et gestion du risque¶
Le chapitre qui produit le plus d'amélioration par ligne de code écrite. Les filtres coûtent peu et éliminent des classes entières de pertes ; la gestion du risque détermine si vous êtes encore là dans six mois.
Pourquoi les filtres priment sur le motif¶
Un motif d'order flow a un pouvoir prédictif faible et instable. Un filtre de contexte, lui, agit sur la composition de l'échantillon : il retire les situations où le motif n'a structurellement aucune raison de fonctionner.
L'ordre de priorité mesuré empiriquement
Dans la plupart des systèmes intrajournaliers, le classement des sources d'amélioration est :
- filtre horaire ;
- filtre de régime (tendance/range) ;
- filtre de volatilité ;
- gestion de la sortie ;
- optimisation des paramètres du motif.
Le point 5 est celui sur lequel 90 % du temps est dépensé, et c'est le dernier de la liste. C'est aussi le seul qui produise du surajustement.
Les filtres essentiels¶
Filtre horaire¶
| Créneau (heure de Paris) | Caractère | Recommandation |
|---|---|---|
| 00 h 00 – 08 h 00 | Session asiatique, volume faible | Éviter |
| 08 h 00 – 14 h 30 | Session européenne | Volume modéré, motifs moins fiables |
| 14 h 30 – 15 h 30 | Pré-ouverture US, publications macro | Éviter ou traiter à part |
| 15 h 30 – 18 h 00 | Ouverture cash US | Créneau principal |
| 18 h 00 – 20 h 00 | Milieu de séance | Volume en baisse, motifs dégradés |
| 20 h 00 – 22 h 00 | Clôture US | Volume élevé, comportement spécifique |
Le milieu de séance produit des faux signaux
Entre 18 h et 20 h, le volume chute fortement. Les seuils absolus calibrés sur l'ouverture ne se déclenchent plus ; les seuils relatifs se déclenchent sur du bruit. Dans les deux cas, le résultat est mauvais — c'est le créneau qui détruit le plus de comptes prop.
Filtre de volatilité¶
Deux bornes, pas une :
- Borne basse : sans mouvement, les cibles ne sont pas atteintes et seules les commissions s'accumulent.
- Borne haute : en volatilité extrême, le slippage explose et les stops sont franchis par-dessus.
Exprimez les bornes en quantiles de la distribution des 20 dernières séances, jamais en points d'indice.
Filtre de régime¶
Le ratio d'efficience (Kaufman) sur \(N\) barres :
Valeur dans \([0, 1]\) : proche de 1 pour une tendance rectiligne, proche de 0 pour un aller-retour.
| Stratégie | ER requis |
|---|---|
| Absorption (retournement) | ≤ 0,40 |
| Imbalances empilées (continuation) | ≥ 0,55 |
| Sweep et reprise | ≤ 0,45 |
Filtre d'événement¶
Une liste d'horaires à exclure, chargée automatiquement :
- publications macro majeures (NFP, CPI, décisions FOMC) : exclure de −5 min à +15 min ;
- rollover des contrats trimestriels ;
- veilles de jours fériés américains ;
- premières et dernières minutes de séance.
L'exclusion doit être en dur dans le code
Un bot qui « sait » qu'il ne faut pas trader le FOMC mais dont le code ne le vérifie pas tradera le FOMC. C'est une liste de dates, dix lignes de Python, et cela évite la perte la plus violente de l'année.
Le dimensionnement¶
La règle de base¶
Risque fixe par trade, en pourcentage du drawdown disponible :
| Symbole | Signification | Valeur type |
|---|---|---|
| \(r\) | fraction risquée par trade | 0,005 à 0,015 |
| \(D_{\text{disponible}}\) | distance au drawdown suiveur, en $ | variable |
| \(SL_{\text{ticks}}\) | stop en ticks | 4 à 8 |
| \(V_t\) | valeur du tick | 1,25 $ (MES) |
En prop, le dénominateur du risque est le drawdown, pas le capital
Sur un compte 50 K avec drawdown suiveur de 2 500 $, votre capital de risque réel est de 2 500 $, pas de 50 000 $. Risquer 1 % « du compte » revient à risquer 20 % de votre marge de survie.
Et le drawdown suit vos gains : après 1 000 $ de profit, le seuil monte de 1 000 $. Votre marge ne s'élargit pas avec le succès — c'est la différence structurelle entre un compte prop et un compte propre, et elle change tout le dimensionnement.
La réduction progressive¶
Un mécanisme simple et efficace : réduire la taille quand la marge se réduit.
def taille(dd_disponible, dd_initial, base):
"""Réduit la taille quand on approche du drawdown. Linéaire, sans finesse
inutile : la simplicité est ici une qualité."""
ratio = dd_disponible / dd_initial
if ratio > 0.75:
return base
if ratio > 0.50:
return max(1, base // 2)
if ratio > 0.30:
return 1
return 0 # arrêt complet
L'arrêt à 30 % est une décision, pas un aveu d'échec
Un compte à 30 % de marge restante est un compte dont la probabilité de survie est faible et dont la probabilité de rebond exige une série de gains improbable. S'arrêter préserve la possibilité de recommencer avec une stratégie révisée, plutôt que de finir grillé.
Les plafonds journaliers¶
| Plafond | Valeur | Raison |
|---|---|---|
| Perte maximale | 30 % du drawdown restant | Survie |
| Profit maximal | selon la règle de consistance | Éligibilité au versement |
| Nombre de trades | 15 à 20 | Anti-emballement |
| Pertes consécutives | 3 | Détection de changement de régime |
Le plafond de profit se calcule avec la formule du chapitre Règles des prop firms :
Le plafond de trades protège contre un bug
Une boucle mal gardée, un signal qui se redéclenche à chaque tick, une reconnexion qui rejoue des événements : les mécanismes qui produisent 400 trades en dix minutes sont nombreux et bêtes. Le compteur journalier est la dernière ligne de défense, et il est trivial à écrire. Il ne coûte rien tant qu'il ne sert pas, et il sauve un compte la fois où il sert.
Le seuil d'arrêt de la stratégie¶
Il faut décider à l'avance à quel moment la stratégie est déclarée morte. Critères objectifs :
| Critère | Seuil |
|---|---|
| Drawdown cumulé | > 2 × le drawdown maximal observé en backtest |
| Taux de réussite sur 50 trades | < taux d'équilibre − 5 points |
| Espérance sur 100 trades | négative |
| Fréquence des signaux | divisée par 2 par rapport au backtest |
Le dernier critère est le plus intéressant et le moins surveillé : un effondrement de la fréquence des signaux signale que le régime a changé ou que votre flux de données s'est dégradé. Il précède souvent la dégradation de performance.
Le seuil se fixe avant, jamais pendant
Un seuil décidé pendant un drawdown sera toujours révisé à la baisse. Écrivez les quatre seuils dans un fichier de configuration avant la mise en production, et faites que le bot s'arrête tout seul quand il les atteint.
Résumé¶
- Les filtres améliorent davantage que l'optimisation des paramètres, pour bien moins de risque de surajustement.
- Filtre horaire d'abord, puis régime, puis volatilité.
- Exclusions d'événements en dur dans le code.
- En prop, le capital de risque est le drawdown disponible, pas le solde.
- Réduction progressive de taille, arrêt à 30 % de marge restante.
- Plafonds journaliers de perte, de profit, de nombre de trades et de pertes consécutives.
- Les seuils d'arrêt de la stratégie se fixent avant la mise en production.
Chapitre précédent : OFI et microprice · Partie suivante : Développement