← Alpha
Alpha Research · · 12 min de lecture

Dans quelle mesure le machine learning peut-il améliorer des stratégies de trading perdantes ?

Prendre une bibliothèque de règles qui perd de l'argent, poser un modèle par-dessus et le laisser choisir les trades à prendre, puis mesurer ce que cela récupère sur 420 règles, deux marchés et 43 mois.

Un argument courant en faveur du machine learning dans le trading systématique laisse les stratégies telles quelles et pose un modèle par-dessus. Les règles continuent de produire des signaux, tandis qu'un modèle entraîné sur leurs trades passés décide quels signaux prendre, avec quelle taille, ou lesquels classer en premier. On demande ainsi moins au modèle que de prévoir directement le marché, puisqu'il lui suffit de juger si le prochain trade d'une règle connue sera payant.

Tester cet argument loyalement exige trois contrôles. Un modèle qui trade moins battra une référence perdante sans choisir de meilleurs trades, la comparaison a donc besoin d'un nul qui trade tout aussi peu, au hasard. Une bibliothèque retenue parce que ses règles gagnaient déjà de l'argent transporte cette sélection dans le résultat, et un gain de précision prédictive ne dit rien de la survie du P&L aux spreads, aux frais et au funding.

Cette étude pose une seule couche de modèles sur une bibliothèque fixe de 420 règles techniques qui perdent de l'argent après coûts sur les deux marchés testés, à deux vitesses de barre, puis la fait avancer en walk-forward sur 43 mois pour mesurer quelle part de cette perte le modèle peut récupérer. Chaque politique de modèle est comparée à la prise de tous les signaux et à un filtre simple construit à la main, selon des comparaisons enregistrées avant qu'aucun nombre hors échantillon n'existe.

Reproductibilité

La recette exacte derrière chaque nombre se trouve sur sa propre page : la grille de règles, les features, la recherche de modèles, la boucle walk-forward, le modèle de coûts, l'inférence et les contrôles.

Lire la reproductibilité →

Ce que nous avons testé

Règles. 420 stratégies mécaniques, 30 paramétrages dans chacune de 14 familles : suivi de tendance, retour à la moyenne, breakouts, momentum, expansion et contraction de volatilité, croisements de moyennes mobiles, breakouts de canal et de Donchian, retournements RSI et Bollinger, momentum confirmé par le volume, breakouts d'opening range et entrées à heure fixe. Aucune n'a été choisie parce qu'elle gagnait de l'argent, les règles perdantes restent donc dans la bibliothèque, et une règle ne quitte une fenêtre d'entraînement que pour une raison mécanique, par exemple parce qu'elle trade trop rarement pour qu'on en apprenne quelque chose.

Marchés. Dix grandes actions américaines et dix perpétuels Binance liquides margés en USDT, chacun en barres de 15 minutes et d'une heure, ce qui donne quatre cellules marché-horizon tradées hors échantillon de janvier 2023 à juillet 2026. Chaque trade entre à l'ouverture de la barre qui suit le signal et sort après un nombre fixe de barres, sans stop ni objectif.

Chaque paire règle-instrument détient au plus une position à la fois, et chaque paire reçoit le même capital.

Ce que voit le modèle. Des features de marché construites à partir du prix et du volume à la barre du signal, la famille et les paramètres de la règle, la direction et la force du signal, ainsi que l'historique récent de la règle elle-même sur cet instrument et sur l'ensemble des instruments. Les coûts, les spreads, le funding et le prix d'ouverture de la barre suivante ne sont jamais des entrées, car aucun d'eux n'est connu au moment de la décision.

Modèles. Un modèle linéaire régularisé, un ensemble d'arbres à gradient boosting et un petit réseau de neurones, chacun entraîné deux fois : une fois pour prédire le rendement net du trade, une fois pour prédire s'il finit en profit. Chaque mois, chaque modèle essaie 30 configurations fixes, en retient une sur une tranche réservée des 24 mois précédents, se réajuste sur l'ensemble des 24 mois et prédit une seule fois le mois suivant, soit 1,032 modèles retenus sur 30,960 configurations tentées.

Ce que le modèle a le droit de faire. Trois usages, chacun testé séparément. Comme filtre, il ne prend un trade que lorsque la prédiction est positive ; pour le dimensionnement, chaque trade est pris, mis à l'échelle entre 0.25 et 1.75 fois sa taille normale selon le rang de la prédiction.

Pour le classement, il garde le cinquième supérieur des nouveaux signaux à chaque horodatage et leur attribue la totalité du budget d'entrée du lot.

Comparateurs. Chaque politique de modèle est évaluée face à deux alternatives. L'une est la prise de tous les signaux, la référence, l'autre un filtre simple qui ne trade que lorsque au moins deux conditions sur trois sont réunies (volatilité élevée, tendance forte et volume élevé), chacune mesurée par rapport à la médiane en échantillon de l'instrument lui-même.

Coûts. La crypto paie les 5 bp de frais taker de Binance et 2 bp de slippage par exécution, plus la moitié du spread mesuré à l'entrée et à la sortie, ainsi que le funding réellement facturé tant que la position est ouverte. Les actions paient la moitié du spread mesuré par exécution plus 0.5 bp de frais.

Ce qui compte comme une amélioration. Un contraste n'est crédité que si les sept critères enregistrés tiennent tous : le rendement net bat le comparateur au total et par unité de capital engagé, avec un q ajusté par Benjamini-Hochberg inférieur à 0.05 sur l'ensemble des 144 contrastes, tout en gagnant plus de la moitié des mois avec des gains supérieurs aux pertes. Le gain doit aussi survivre à la suppression du meilleur mois et battre 95% d'un nul qui choisit au hasard le même nombre de trades à exposition égale.

Une affirmation générale selon laquelle le machine learning améliore ces stratégies exige des résultats crédités sur les deux marchés, les deux horizons et au moins deux des trois familles de modèles.

Résultats

Les modèles ont appris quelque chose, et l'avance de la crypto tient surtout à la volatilité

Agrégés sur 43 mois, les modèles de classification séparent les trades gagnants des perdants avec un ROC AUC compris entre 0.512 et 0.523 sur les actions et entre 0.566 et 0.618 sur la crypto. L'IC de rang entre rendement net prédit et réalisé va de -0.0006 à 0.0135 sur les actions, contre 0.0165 à 0.0376 sur la crypto.

CelluleROC AUC, trois familles de modèlesVolatilité × √durée, sans modèleIC de rang, trois familles de modèles
Actions 1h0.512 à 0.5130.509-0.0006 à 0.0085
Actions 15m0.521 à 0.5230.5150.0095 à 0.0135
Crypto 1h0.566 à 0.5740.5540.0165 à 0.0255
Crypto 15m0.606 à 0.6180.6030.0242 à 0.0376

Qualité de prévision sur l'ensemble des 43 mois hors échantillon. La colonne sans modèle note chaque trade par la volatilité sur 24 barres multipliée par la racine carrée de sa durée de détention.

L'essentiel de la marge de la crypto se passe de tout modèle. Noter chaque trade par la volatilité récente de l'instrument multipliée par la racine carrée de sa durée de détention, un nombre qui n'a aucun avis sur la direction, atteint déjà un AUC de 0.554 en barres d'une heure et de 0.603 en barres de 15 minutes, car un trade censé bouger davantage a plus de chances de franchir un aller-retour fixe de 14.8 bp, quel que soit le sens.

Face à ce score, les modèles ajoutent 0.003 à 0.020 d'AUC sur la crypto et 0.004 à 0.009 sur les actions, si bien que l'écart entre les marchés est bien plus faible que ne le suggèrent les chiffres bruts.

Fig. 1: Qualité de prévision hors échantillon agrégée par cellule. Dans la vue AUC, la barre grise est le score de volatilité sans modèle ; sur la crypto, il contient déjà la plus grande partie de l'avance des modèles sur un pile ou face.

La bibliothèque perd de l'argent avant qu'un modèle n'y touche

Prendre tous les signaux perd dans les quatre cellules. Les rendements sont ici des sommes de rendements quotidiens sur le capital du book, et non des rendements composés, car les books crypto perdent plus que leur capital et la composition collerait chaque politique crypto près de -100%.

CelluleTradesBrut par tradeCoûts par tradeNet par tradeRendement net cumulé
Actions 1h1,560,113+0.62 bp3.30 bp-2.67 bp-10.65%
Actions 15m5,272,831+0.34 bp3.30 bp-2.96 bp-39.35%
Crypto 1h6,888,035-0.56 bp14.79 bp-15.36 bp-268.19%
Crypto 15m26,187,705-0.24 bp14.79 bp-15.02 bp-993.24%

Tous les signaux pris. Les chiffres par trade sont des moyennes sur chaque trade exécuté ; les coûts sont le spread, les frais et le slippage, le funding étant inclus dans le net.

Les règles sur actions gagnent un peu d'argent brut et le perdent dans un aller-retour de 3.3 bp. Les règles crypto ne gagnent rien en brut, puis paient 10 bp de frais taker et 4 bp de slippage à chaque aller-retour, si bien que tout modèle crypto part avec environ 15 bp de retard.

Fig. 2: Ce qu'un trade gagne, paie et conserve sous la politique choisie. Passer de la prise de tous les signaux au filtre simple puis à chaque usage du modèle montre où l'avantage brut monte et où la barre des coûts ne bouge pas.

19 contrastes sur 144 passent, et l'affirmation générale échoue

Dix-neuf contrastes franchissent tous les critères : dix en actions une heure, sept en actions 15 minutes, deux en crypto 15 minutes et aucun en crypto une heure. Aucun contraste crypto n'est crédité face au filtre simple, et comme l'affirmation générale enregistrée exige les deux marchés, elle échoue : le modèle améliore certaines de ces stratégies à certains endroits, pas ces stratégies en général.

Les trois familles de modèles figurent parmi les dix-sept crédits sur actions, et tous ces crédits sauf un sont des filtres. Le dimensionnement n'est crédité nulle part en 48 tentatives, tandis que le classement est crédité trois fois face à la référence et jamais face au filtre simple.

19 / 144
Contrastes enregistrés crédités
0 / 48
Contrastes de dimensionnement crédités
0 / 36
Contrastes crypto crédités face au filtre simple
Non
Affirmation générale : deux marchés, deux vitesses
Usage du modèleCrédités face à la référenceCrédités face au filtre simple
Filtre7 sur 249 sur 24
Dimensionnement0 sur 240 sur 24
Classement3 sur 240 sur 24

Deux de ces crédits de classement sont en crypto 15 minutes, où les books classés perdent 910.91% et 927.76% du capital en rendements cumulés, contre 993.24% pour la référence. En composé, les trois books finissent à -99.99%, et le critère enregistré sur le rendement net total y lit une victoire de 0.00006.

Le filtre simple est en outre une référence faible. Face au même nul de sélection aléatoire, ses choix font pire que le hasard dans toutes les cellules, avec un p empirique comprise entre 0.896 et 0.998, ce qui flatte tous les contrastes mesurés face à lui.

Douze autres contrastes franchissent tous les autres critères et échouent pourtant, parce qu'ils battent leur comparateur sur les 43 mois : six filtres en actions 15 minutes et six filtres en crypto une heure, dont cinq face au filtre simple. Sans mois perdant, le ratio rendement/risque n'a pas de dénominateur, et le scoreur gelé compte une valeur indéfinie comme un échec.

Compter ces douze donnerait 31 crédits et placerait la crypto une heure parmi les cellules créditées face au filtre simple. L'affirmation générale échouerait quand même en crypto 15 minutes, où chaque filtre mobilise si peu de capital que sa perte par unité engagée dépasse celle du filtre simple.

Fig. 3: Chaque contraste enregistré. Les cases pleines sont créditées ; les cases en pointillés sont les douze qui franchissent tous les critères sauf celui du rendement/risque, indéfini quand une politique gagne tous les mois ; survoler ou toucher une case affiche ses nombres.

Comment gagnent les filtres sur actions

L'essentiel de l'avance de chaque filtre sur la référence vient du fait de trader moins. En actions 15 minutes, les filtres prennent entre 4.8% et 13.0% des signaux produits par la bibliothèque, contre 57.7% pour le filtre simple, et un book qui trade 5% d'une bibliothèque perdante perd moins pour cette seule raison.

La compétence apparaît dans le nul de rotation, qui donne à un sélecteur aléatoire le même nombre de trades à exposition égale. Chaque filtre crédité bat 95% de ces sélections aléatoires, avec un p empirique de 0.001 : les trades que gardent les modèles valent mieux que ceux qu'une pièce jetée garderait.

PolitiqueSignaux prisBrut par tradeNet par tradeRendement net cumuléExposition moyenneSharpe quotidien
Prendre tous les signaux100%+0.34 bp-2.96 bp-39.35%19.6%-8.92
Filtre simple57.7%+0.40 bp-3.04 bp-23.31%11.8%-6.05
Linéaire, filtre rendement net4.8%+3.92 bp+0.86 bp+0.55%1.4%0.33
Arbres boostés, filtre profit6.7%+4.07 bp+0.84 bp+0.75%2.3%0.23
Réseau de neurones, filtre profit9.5%+2.07 bp-1.18 bp-1.50%3.2%-0.45

Actions, barres de 15 minutes. Rendement net cumulé sur 43 mois sur le capital du book ; l'exposition est l'exposition brute moyenne.

Le profit brut par trade est multiplié par environ douze sous les meilleurs filtres, de 0.34 bp à près de 4 bp, ce qui franchit l'aller-retour de 3.3 bp de moins d'un basis point.

Ce que vaut l'amélioration

Trois filtres en actions 15 minutes finissent en profit après coûts, en cumulé sur 43 mois : le filtre linéaire sur le rendement net à +0.55%, le filtre à arbres boostés sur le rendement net à +0.55% et le filtre à arbres boostés sur le profit à +0.75%. Ils mobilisent en moyenne entre 1.4% et 2.3% du capital, avec des ratios de Sharpe quotidiens entre 0.20 et 0.33, et aucun de ces trois profits ne se distingue de zéro à lui seul, puisqu'un bootstrap du P&L hebdomadaire rééchantillonné par semaine donne à chaque book un intervalle à 95% qui englobe zéro.

Seul le linéaire est crédité, parce que les deux filtres à arbres boostés font partie des contrastes qui ont gagné tous les mois, tandis que les trois autres filtres crédités en actions 15 minutes perdent entre 0.98% et 3.78%.

En actions une heure, chaque filtre crédité perd encore en valeur absolue, entre -0.23% et -1.77%, et le seul classement crédité, arbres boostés en barres de 15 minutes, finit à -8.53%. Le seul autre book positif de l'étude est le classement linéaire sur le profit en actions une heure, à +0.84%, qui n'est pas crédité parce que sa q-value vaut 0.35, et dont l'intervalle hebdomadaire englobe lui aussi zéro.

Voilà la taille de l'amélioration. La couche de modèles transforme une bibliothèque lourdement perdante en une bibliothèque presque à plat, qui ne mobilise quasiment aucun capital la plupart du temps, et fait passer les actions 15 minutes de -39.35% à une valeur comprise entre -3.78% et +0.75% selon le filtre.

Fig. 4: Rendement hors échantillon cumulé, semaine par semaine. Choisissez une cellule et une politique de modèle ; passez en modèle seul pour lire la courbe du modèle à sa vraie échelle, ou en avant coûts pour voir quelle part de l'avantage brut les coûts absorbent.

Pourquoi la crypto ne suit pas

Sur la crypto, les filtres à arbres et à réseau de neurones font passer le profit brut par trade d'environ zéro à entre +3.6 bp et +8.5 bp en barres de 15 minutes, et entre +4.5 bp et +5.8 bp en barres d'une heure, tandis que le filtre linéaire sur le rendement net atteint +10.0 bp en barres d'une heure. C'est une sélection plus forte que tout ce qu'on voit sur les actions, mais avec un aller-retour de 14.8 bp le meilleur chiffre net par trade reste à -4.7 bp.

La crypto une heure s'en approche le plus. Cinq de ses filtres franchissent tous les critères face au filtre simple sauf celui, indéfini, du rendement/risque, et les six battent des choix aléatoires de même taille, pourtant chacun d'eux perd encore de l'argent, de -0.20% à -11.58%.

Le filtre linéaire sur le rendement net en crypto une heure ne perd que 0.20% en rendements cumulés, et il y parvient en prenant 16,755 signaux sur 6,888,035 et en mobilisant en moyenne 0.09% du capital. Sur l'ensemble des filtres crypto, l'avantage brut que trouvent les modèles couvre entre un quart et deux tiers du coût d'agir dessus.

Filtrer une bibliothèque de règles faibles avec un modèle sélectionne des trades qui battent des choix aléatoires de même taille, et sur les actions les meilleurs filtres multiplient par douze le profit brut par trade. Les trades conservés sont trop rares et trop minces pour peser, et sur la crypto l'avantage qu'ils portent est plus petit que les frais.

Limites

  • Vingt instruments, quatre cellules et 43 mois. Le résultat décrit cette bibliothèque sur ces marchés, pas le machine learning en général ni l'une ou l'autre classe d'actifs dans son ensemble.
  • Les trades sortent sur minuterie, sans stop ni objectif, et une bibliothèque aux sorties différentes donnerait au modèle une cible différente à apprendre.
  • Les coûts supposent le palier de frais de base de Binance sans exécution maker, donc un desk qui laisse ses ordres au carnet ou paie moins de frais fait face à un obstacle crypto plus bas, que cette étude ne mesure pas.
  • Douze contrastes qui gagnent tous les mois, six en actions 15 minutes et six en crypto une heure, sont rapportés comme des échecs parce que le critère enregistré de rendement/risque est indéfini quand rien ne perd. La règle a été fixée avant l'exécution et est conservée telle qu'écrite.
  • Chaque cellule regroupe les 420 règles et dix instruments dans un seul modèle par mois, des modèles par famille ou par instrument constitueraient donc un autre test.
  • La purge entre entraînement interne et validation est de 16 barres de temps d'horloge, ce qu'un trade sur actions conservé pendant la nuit peut dépasser. Elle change la configuration gagnante à l'intérieur d'une fenêtre mais jamais la notation hors échantillon, et touche moins de 0.1% des lignes d'entraînement sur actions dans les fenêtres vérifiées.
  • Le classement confie au cinquième retenu la totalité du budget d'entrée du lot, si bien que les classements du modèle de profit portent en moyenne plus de capital que la référence, 30% à 38% contre 18% à 22%.

Chaque graphique de cette page est dessiné dans votre navigateur à partir des tables de résultats et des ledgers de trades de l'étude, les mêmes nombres que dans le texte et sur la page de reproductibilité, sans aucun fichier image derrière.

Méthodologie complète

La grille de règles, la liste des features, la recherche de modèles, la boucle walk-forward, le modèle de coûts et chaque contrôle, avec hashs et extraits de code.

Reproductibilité →