Votre signal d’entrée est probablement l’élément qui compte le moins dans votre backtest. Je peux prendre une règle de momentum médiocre, ne toucher à aucun horodatage d’entrée ou de sortie, modifier uniquement la fonction qui décide du nombre de contrats à détenir, et faire passer le Sharpe net de 0.41 à 0.71 et le drawdown maximal de 31% à 13%. Mêmes trades. Mêmes exécutions. Stratégie différente.
Cette affirmation agace, et c’est normal, car elle implique qu’on passe le plus clair de son temps à régler des périodes de lookback et des seuils de filtre sur le terme le moins important. Alors, je vais vous montrer les résultats, puis donner raison aux critiques quand elles le méritent, car il existe une version erronée de cet argument et mieux vaut savoir laquelle je défends.
Un signal, six façons de le détenir
Le signal : perpétuel ETHUSDT sur Binance USDⓈ-M, bougies de 1 heure, position longue quand l’EMA sur 12 heures est au-dessus de l’EMA sur 96 heures, à plat dans le cas contraire, sans positions courtes. De juillet 2022 à juin 2026. 431 allers-retours. Frais taker des deux côtés à 5.0 bps, funding payé ou reçu toutes les huit heures sur la position réelle, slippage modélisé à partir de la profondeur du carnet au meilleur prix. C’est volontairement un signal ennuyeux : je l’ai choisi parce que personne ne le défendrait, ce qui en fait un terrain de test idéal.
Toutes les lignes ci-dessous ont exactement les mêmes horodatages de bougies d’entrée et de sortie. Seule la fonction de sizing change.
| Règle de sizing | Sharpe net | DD max | Notionnel négocié/an (× position moyenne) | Coûts en % du PnL brut | Levier max |
|---|---|---|---|---|---|
| Notionnel fixe de 10k $ | 0.41 | 18.2% | 246× | 14% | 1.0× |
| Fraction fixe, 100% des fonds propres | 0.44 | 30.8% | 251× | 15% | 1.0× |
| Volatilité réalisée sur 20 jours inversée | 0.68 | 14.1% | 690× | 29% | 4.4× |
| Cible de volatilité annualisée de 20%, rééquilibrage horaire, sans plafond | 0.71 | 12.9% | 1,180× | 41% | 6.3× |
| Cible de volatilité de 20%, bande de non-intervention de 20%, plafond de levier de 3× | 0.66 | 15.3% | 402× | 19% | 3.0× |
| Demi-Kelly sur moyenne/variance glissantes de 60 jours | 0.52 | 24.6% | 830× | 33% | 8.1× |
Regardez l’écart. Entre la pire et la meilleure ligne, la différence relative de Sharpe est de 73% et le drawdown est multiplié par 2.4. Maintenant, trouvez-moi un paramètre de signal d’entrée sur ce jeu de données qui fasse bouger le Sharpe de 0.30 sans relever aussi d’un surapprentissage évident. J’ai cherché. La durée de la paire d’EMA le fait varier d’environ 0.12 sur toute la grille plausible, et l’essentiel de cette variation relève du bruit qu’on ne retrouve pas hors échantillon.
Pourquoi l’inverse de la volatilité semble si performant, et quelle part du gain est réelle
Le mécanisme n’a rien de mystérieux. Avec un notionnel fixe, la taille de votre position n’est pas corrélée à la volatilité réalisée, ce qui signifie que votre risque en dollars par trade est proportionnel à la volatilité de la semaine. Sur ETH pendant cette période, la volatilité réalisée sur 20 jours a varié de 31% à 118% en rythme annualisé. La simulation à notionnel fixe a pris 3.8× plus de risque en dollars en mars 2024 qu’en juillet 2023, non pas parce que le signal était plus convaincant, mais parce que le marché était plus agité. Presque tout son drawdown se concentre dans le quintile de volatilité le plus élevé. Le sizing inversement proportionnel à la volatilité supprime cette dépendance, et la supprimer améliore réellement la forme de la série de rendements.
Mais une partie du gain de Sharpe relève d’un artefact de mesure, et si vous ne distinguez pas les deux, vous prendrez de mauvaises décisions par la suite. Le Sharpe divise par l’écart-type des rendements. Le ciblage de la volatilité consiste, par définition, à stabiliser l’écart-type des rendements. Vous optimisez directement le dénominateur. Une règle qui ajuste les positions pour atteindre une volatilité ex ante constante améliorera le Sharpe de presque toute série de rendements présentant un regroupement de la volatilité, y compris celles qui n’ont aucun avantage. Je l’ai vérifié sur des signaux mélangés au hasard : randomisez les horodatages d’entrée, conservez la surcouche de ciblage de la volatilité, et le Sharpe s’améliore tout de même d’environ 0.06 par rapport au notionnel fixe, sur une base de moyenne nulle. C’est peu, mais non nul, et cela tient purement au mécanisme.
C’est pourquoi, en comparant des règles de sizing en interne, le Sharpe n’est jamais le seul chiffre sur la feuille. Je veux le Calmar, le PnL net par unité de notionnel moyen engagé, ainsi que le détail du passage du brut au net, car il est beaucoup plus difficile de manipuler ces trois mesures ensemble avec une astuce de dénominateur.
L’estimation de volatilité est un modèle, et elle fuit de l’information comme un modèle
La cause la plus fréquente d’un résultat de sizing prometteur qui s’avère faux : l’estimation de volatilité utilise des informations issues de la bougie sur laquelle elle dimensionne la position. Si votre série de volatilité est calculée avec une fenêtre centrée, ou avec `rolling().std()` par défaut de pandas après un rééchantillonnage qui inclut la bougie partielle actuelle, ou à partir d’une standardisation sur l’échantillon complet, vous avez une fuite d’information. C’est subtil car la volatilité est persistante : la fuite est faible sur chaque ligne et la courbe de capital reste plausible. Elle paraît simplement un peu trop lisse précisément pendant les semaines qui comptent.
Nos agents vérifient quatre points pour chaque règle de sizing avant qu’un résultat soit admis dans la file de paper trading :
- Disponibilité au moment de la décision. La taille utilisée à l’ouverture de la bougie à 14:00 doit pouvoir être calculée à partir de données dont l’horodatage de clôture est ≤ 13:59:59.999. Nous le vérifions en recalculant la série de tailles à partir d’un échantillon tronqué sur 200 points de décision choisis au hasard, puis en comparant les résultats.
- La période de l’estimateur est un vrai paramètre. Une fenêtre de volatilité de 20 jours et une fenêtre de volatilité de 60 jours correspondent à deux stratégies différentes. La période entre dans la grille walk-forward avec le reste, et si le résultat ne fonctionne qu’avec une seule durée de fenêtre, cela révèle une fragilité.
- Trajectoire du levier, pas seulement son maximum. Affichez toute la distribution du levier brut. La simulation avec ciblage de la volatilité sans plafond ci-dessus a passé 4% de ses heures au-dessus de 5×, le genre de détail qui n’apparaît jamais dans un tableau récapitulatif et qui détermine entièrement si la stratégie est réalisable.
- Sensibilité du sizing comme test de robustesse. Si le Sharpe s’effondre quand vous passez la cible de volatilité de 20% à 25%, la stratégie n’est pas ciblée en volatilité : son levier est réglé au millimètre, et vous avez trouvé votre avantage en choisissant un chiffre.
Le plafond de levier n’est pas un supplément décoratif de gestion du risque, il fait partie de la définition de la stratégie. Les paliers de Binance pour ETHUSDT réduisent le levier maximal quand le notionnel de la position augmente, et le taux de marge de maintien augmente en même temps. Un backtest qui laisse la règle de ciblage de la volatilité monter à 6.3× pour un notionnel de 400k $ décrit une position que la plateforme ne vous autorisera pas à détenir avec cette marge. La ligne avec plafond du tableau coûte 0.05 de Sharpe, et c’est la seule des deux qui corresponde à une position réelle.
C’est au rééquilibrage que part l’argent
Regardez la colonne des coûts. Le rééquilibrage horaire vers une cible de volatilité a donné le meilleur Sharpe affiché, tout en reversant 41% du PnL brut à la plateforme d’échange. Cela représente un notionnel moyen de position négocié de 1,180× par an, à 5 bps par côté, auxquels s’ajoutent le spread et l’impact. La solution évidente consiste à rééquilibrer moins souvent, selon un calendrier. La meilleure solution est une bande de non-intervention : ne redimensionner la position que si elle s’écarte de sa cible au-delà d’un certain seuil.
Une bande de 20% a ramené le notionnel annuel négocié de 1,180× à 402× — une baisse de 66% — au prix de 0.05 de Sharpe. J’ai maintenant testé cela sur huit signaux et le schéma se répète : des bandes de 15% à 25% récupèrent l’essentiel du bénéfice de contrôle du risque avec un tiers du turnover, tandis qu’en dessous de 10%, on ne fait que payer des frais pour une précision cosmétique sur une quantité qu’on estime de toute façon avec une fenêtre de 20 jours. Inutile de rééquilibrer au millième près une valeur dont l’erreur-type est de 15%.
En février, un rapport rédigé par un agent attribuait une amélioration du Sharpe de 0.22 au « filtre d’entrée amélioré ». Le diff ne comportait qu’une ligne, dans le module de sizing. Le filtre n’avait pas changé. Depuis, je fais imprimer en tête du rapport le hash de la configuration de sizing, car l’attribution des résultats est une discipline, et les modèles sont tout aussi prompts que n’importe qui à raconter une histoire bien ficelée.
Ce que le paper trading fait à votre règle de sizing
C’est là que l’écart entre backtest et paper trading se creuse le plus, et la raison est surtout arithmétique. Avec un sizing adapté à la volatilité, la taille de vos positions varie d’un facteur de 4 à 8 sur l’échantillon. Aux deux extrêmes, les contraintes de la plateforme entrent en jeu alors que le backtest ne les modélisait pas.
À la petite taille : le pas de quantité et le notionnel minimum. Le perp ETHUSDT a un pas de quantité de 0.001 et un minimum de 5 $. Si la taille correspondant à votre régime de faible volatilité est de 0.0004 ETH, le backtest la conserve, mais le paper trading ne prend aucune position. Cela semble être un cas limite, jusqu’à ce qu’on réalise qu’une règle de ciblage de la volatilité place ses tailles les plus petites dans les marchés les plus calmes, qui, avec un signal de tendance, sont souvent ceux où se trouvent les bonnes entrées. À grande taille : limites de position, paliers de marge et discipline de marge isolée nécessaire pour une position à 6×, alors que vous n’avez pas testé de modèle de liquidation.
Nous en avons repéré un cas où la courbe de capital en paper trading a suivi le backtest à 3% près pendant six semaines, puis s’en est fortement écartée. La cause était l’arrondi : troncature avec `int()` au lieu de l’arrondi au pas dans le calculateur de taille des ordres, appliquée à des positions qui représentaient en moyenne 1.4 pas. Le backtest calculait les tailles en continu, tandis que le calculateur en conditions réelles perdait 20-30% de la position prévue sur chaque petit trade. Aucun modèle d’exécution exotique, aucune histoire de latence. De la troncature.
Sur quoi les critiques ont raison
Trois objections sont fondées, et je ne veux pas les minimiser.
Première objection, et la plus importante : le sizing répartit l’avantage, il ne peut pas le fabriquer. Si l’espérance brute de votre signal est nulle ou négative après prise en compte réaliste des frais et du funding, toutes les règles du tableau perdent de l’argent — les plus sophistiquées le perdent simplement avec une distribution de variance plus flatteuse. J’ai choisi un signal dont l’avantage net est faible mais positif sur cette période. Appliquez les mêmes six règles à un signal qui rapporte −1.2 bps nets par trade : le classement reste le même, mais toutes les valeurs finales des fonds propres sont sous le niveau de départ. Le sizing est un multiplicateur. Il faut toujours avoir quelque chose à multiplier.
Deuxième objection : le ciblage de la volatilité a un mode d’échec réel et bien documenté : il réduit le levier au creux d’une chute rapide, puis le réaugmente après le rebond. Lors d’un V brutal, le notionnel fixe l’emporte, parfois largement. La chute des marchés actions de mars 2020 et le débouclage crypto d’août 2024 ont tous deux pénalisé le sizing adapté à la volatilité pendant la phase de reprise. Ma fenêtre de quatre ans sur ETH contient par hasard davantage de phases prolongées avec regroupement de la volatilité que de mouvements en V, ce qui favorise les lignes inversement proportionnelles à la volatilité. Avec une autre période, une partie du classement s’inverse, et si j’avais commencé par un tableau de 2020, cet argument aurait été moins convaincant.
Troisième objection : la règle de sizing peut subir un surapprentissage comme n’importe quel autre élément. Le demi-Kelly sur estimations glissantes est révélateur dans mon tableau : cela semble sophistiqué, c’est motivé par la théorie, et cela a produit le deuxième pire drawdown, car l’estimation glissante de la moyenne d’une série de rendements bruitée est une aberration et le critère de Kelly y est extrêmement sensible. Toute règle de sizing qui utilise une estimation du rendement attendu hérite de ses erreurs, amplifiées. Les règles qui n’utilisent qu’une estimation de variance sont bien plus stables, car la variance est le seul moment qu’on peut réellement estimer à partir de quatre ans de données horaires.
Ce que j’en retiens : quand un résultat de backtest vous surprend, vérifiez le module de sizing avant de chercher une idée ingénieuse dans le signal. Et quand vous publiez un Sharpe, indiquez à côté la trajectoire du levier et le détail des coûts, car un chiffre qui dépend à ce point d’une décision de sizing n’est pas du tout une propriété du signal.
← Tous les articles
