Une balance avec quelques boutons de réglage de paramètres de stratégie sur un plateau et une grosse pile de jetons de trades clôturés sur l'autre, sous le titre How many trades are enough? 30 per parameter, at least 400 in total

Chaque paramètre libre d’un backtest est une question à laquelle les données doivent répondre. Une stratégie de trading y répond avec des trades clôturés, pas avec des barres d’historique de prix. Cette note expose la règle empirique que KreamEdge applique à la fenêtre in-sample : au moins 30 trades clôturés par paramètre effectif, et jamais moins de 400 trades au total. Elle explique ensuite comment nous comptons un paramètre, le cas où la règle a rejeté l’une de nos propres stratégies, et le surapprentissage qu’elle ne détecte pas.

Il s’agit de méthodologie de recherche. Les chiffres ci-dessous proviennent de backtests historiques menés sur le banc de recherche interne de KreamEdge, pas d’un historique de trading réel, et rien ici ne constitue un signal de trading. Nous ne traderions aucune des stratégies décrites ici telle quelle : c’est de la recherche uniquement. Les performances passées ne préjugent pas des résultats futurs. Ceci n’est pas un conseil financier. Consultez notre page communauté pour l’avertissement complet.

Points clés

  • KreamEdge exige au moins max(400, 30 × paramètres effectifs) trades clôturés dans la fenêtre in-sample avant qu’un résultat de backtest compte comme une preuve.
  • Le nombre 30 est une heuristique de praticien, pas un théorème. Il vaut trois fois la règle des 10 événements par variable issue des études de régression, parce que les rendements des trades ont des queues épaisses et portent moins d’information par observation.
  • Un paramètre est tout choix qui restreint les trades qui ont lieu. Cela inclut les conditions des règles et les filtres fixes, en plus des nombres que l’optimiseur fait varier.
  • Le dimensionnement des positions ne peut pas corriger un nombre de trades trop faible. Diviser par deux la taille des positions a fait passer une poche tendance de KreamEdge de 114 à 121 trades, parce que c’est la règle de sélection qui décide de la fréquence à laquelle une stratégie trade.
  • La règle limite le nombre de paramètres qu’un ajustement peut supporter. Le nombre de configurations essayées exige un budget distinct, et la fenêtre out-of-sample exige son propre plancher de 80 trades.

Quelle est une bonne règle empirique de trades par paramètre ?

Une règle empirique praticable consiste à exiger au moins 30 trades clôturés dans la fenêtre in-sample pour chaque paramètre effectif, avec un plancher absolu de 400 trades quel que soit le nombre de paramètres. KreamEdge l’applique sous la forme max(400, 30 × paramètres effectifs). Aucun article de statistique ne fixe le nombre 30 pour le trading. C’est une heuristique de praticien, volontairement plus stricte que la règle de régression dont elle s’inspire.

Le point d’ancrage académique le plus proche vient de la statistique médicale. Peduzzi et ses collègues (Journal of Clinical Epidemiology, 1996) ont simulé des régressions logistiques et trouvé des estimations stables à partir de 10 événements par variable prédictive. En dessous, les coefficients étaient biaisés et les intervalles de confiance peu fiables. Des travaux ultérieurs, comme ceux de Vittinghoff et McCulloch (2007), ont soutenu que ce seuil de 10 peut parfois être assoupli.

Les backtests sont un cadre plus rude que les essais cliniques. Les rendements des trades ont des queues épaisses, ils se regroupent par régime de marché, et le résultat d’une stratégie de tendance repose souvent sur une petite minorité de gros gains. Chaque trade clôturé porte donc moins d’information qu’un événement clinique indépendant. Tripler le ratio pour le porter à 30 est la marge que KreamEdge prend pour cette différence.

Les traders systématiques s’accordent davantage sur la forme de la règle que sur son nombre. Dans le podcast Better System Trader, Dave Bergstrom a déclaré qu’il n’autorise pas les stratégies en dessous d’«un certain ratio trades/paramètres» (épisode 79), et Bert Mouler a conseillé de garder ce ratio élevé, en le comptant sur les trades out-of-sample (épisode 64). Aucun des deux n’a donné de chiffre. Michael Bryant a nommé l’unité qui compte :

On évalue la quantité de données nécessaire au nombre de trades, pas forcément au nombre de barres de prix.

Michael Bryant, Better System Trader, épisode 36 (traduit de l’anglais)

Les invités qui ont donné des chiffres ont donné des nombres absolus de trades, pas des ratios :

SourceNombre indiquéÀ quoi il s’applique
John Ehlers, BST épisode 152Plus de 20 trades ; environ 40 en pratiqueChaque fenêtre in-sample d’un walk-forward intraday
Jeff Swanson, BST épisode 196Plus de 100 tradesCe qui reste une fois que les filtres ont réduit la base
Stefan Friedrichowski, BST épisode 1783 degrés de libertéUne stratégie de retour à la moyenne, comptée explicitement
KreamEdgemax(400, 30 × paramètres effectifs)La fenêtre in-sample complète d’une stratégie ajustée

Pourquoi compter les trades plutôt que les barres ?

Une stratégie apprend des trades clôturés, pas des barres. Dix ans de données journalières représentent environ 2 500 barres. Une stratégie sélective qui trade 15 fois par an n’a produit qu’environ 150 résultats sur la même décennie. L’optimiseur ajuste ses paramètres sur ces 150 résultats : c’est donc le nombre de trades, et non le nombre de barres, qui décide du nombre de paramètres que les données peuvent supporter.

Un champ de 2 500 barres de prix journalières canalisé vers une grille de 150 trades clôturés : dix ans d'historique à 15 trades par an
Dix ans de barres journalières représentent environ 2 500 points de données, mais une stratégie qui trade 15 fois par an ne laisse qu’environ 150 trades clôturés pour ajuster ses paramètres.

La même logique s’applique à tout composant qui active et désactive la stratégie. Adrian Reid a décrit un filtre de régime qui bascule quatre fois dans un backtest comptant 500 trades. L’échantillon propre au filtre, ce sont les quatre bascules, pas les 500 trades :

Vous avez optimisé quelque chose sur, en gros, quatre points de données, quatre marche-arrêt, ce qui est une très grosse erreur.

Adrian Reid, Better System Trader, épisode 206 (traduit de l’anglais)

Ajouter de l’historique aide moins que retirer des paramètres. Rob Carver a souligné dans l’épisode 180 que la précision de l’estimation d’un paramètre croît avec la racine carrée de la longueur de l’échantillon. Doubler l’historique de cinq à dix ans améliore cette précision d’un facteur d’environ 1,4, pas de 2. Retirer un paramètre, à l’inverse, abaisse immédiatement le plancher de 30 trades.

Qu’est-ce qui compte comme paramètre ? Les restrictions, pas les réglages de l’optimiseur

Un paramètre est tout choix qui restreint les trades qui ont lieu, pas seulement les nombres que l’optimiseur fait varier. Le décompte effectif de KreamEdge additionne trois éléments : les paramètres libres, les conditions contenues dans les règles d’entrée et de sortie retenues, et les filtres fixes comme «clôture au-dessus de la moyenne à 200 jours». Un filtre fixe ne devient pas gratuit parce que personne ne l’a réglé lors de l’exécution du jour.

Les praticiens comptent de la même façon. Michael Bryant (épisode 36) compte un croisement de moyennes mobiles comme deux restrictions, une par période de calcul, plus une si le champ de prix est lui aussi un choix. Andrea Unger (épisode 16) a dit ne jamais compter ses degrés de liberté, mais qu’un filtre générique de moyenne mobile à 200 jours reste «quand même une contrainte».

Le propos plus général de Carver est que les retouches manuelles comptent aussi. Remplacer une moyenne mobile simple par une moyenne exponentielle après avoir regardé le backtest est un ajustement, même si aucun paramètre n’a changé :

Vous vous dites : oh, j’ai la conscience tranquille, je n’ai changé aucun paramètre, je n’ai fait aucun ajustement. Si… vous avez complètement changé le modèle.

Rob Carver, Better System Trader, épisode 180 (traduit de l’anglais)

Toutes les restrictions ne coûtent pas un paramètre entier. KreamEdge pondère chaque type de paramètre selon une table fixée avant toute exécution, jamais ajustée candidat par candidat après avoir vu les résultats :

Type de paramètrePoids dans le décompteRaison
Valeur continue ajustée dans cette recherche1,0Un degré de liberté entier
Entier avec 8 niveaux plausibles ou moins0,5Moins de valeurs distinctes à ajuster
Interrupteur binaire marche/arrêt0,25Un seul choix entre deux états
Valeur figée, jamais réglée sur ces données0Les données ne l’ont jamais choisie
Valeur figée, réglée auparavant sur des données qui se recoupentLa moitié de son poids d’origineLa figer la retire de la recherche du jour, pas de celle de la veille

Chaque condition divise aussi l’échantillon, et c’est ainsi que le nombre de paramètres et le nombre de trades interagissent en pratique. Scott Andrews a décrit comment il avait réparti des trades sur gaps en davantage de catégories de taille, ce qui avait ramené la catégorie moyenne à environ 125 trades, puis ajouté un filtre à 200 jours, qui l’avait encore divisée par deux :

Donc, dès qu’on commence à ajouter ne serait-ce que quelques idées simples, on se retrouve avec trop peu de trades pour vraiment se fier aux données.

Scott Andrews, Better System Trader, épisode 18 (traduit de l’anglais)

Comment le plancher de trades évolue avec le nombre de paramètres

Avec max(400, 30 × paramètres), le plancher fixe de 400 trades s’applique à toute stratégie comptant jusqu’à 13 paramètres effectifs. Au-delà, chaque paramètre supplémentaire coûte 30 trades in-sample de plus. Une recherche à 15 paramètres exige 450 trades et une recherche à 20 paramètres en exige 600. KreamEdge plafonne donc chaque exécution de l’optimiseur à 15 paramètres libres et vise 10 ou moins.

Paramètres effectifs30 × paramètresTrades in-sample requisTrades par an sur une fenêtre de 7 ans
5150400environ 57
10300400environ 57
15450450environ 64
20600600environ 86
25750750environ 107

Le plancher fixe de 400 vient du banc de KreamEdge plutôt que de la théorie. Lorsque les stratégies du banc ont été regroupées par nombre de trades, la part affichant un CAGR forward positif était de 36 % en dessous de 200 trades et de 85 % entre 400 et 700 trades. Il s’agit d’une régularité observée sur des candidats déjà filtrés, pas d’une preuve que davantage de trades rendent une stratégie meilleure. Elle montre en revanche que les résultats reposant sur moins de 200 trades nous apprenaient très peu.

La règle a aussi pris en défaut le propre modèle de KreamEdge. Quand le modèle de scoring comportait 11 poids ajustés, le plancher était de 330 trades. Sur 29 stratégies du banc passées par le filtre de qualité, la moyenne était de 374 trades et la médiane de 283 : la stratégie médiane se situait donc environ 14 % sous son propre plancher. Cette mesure a orienté la recherche vers des jeux de paramètres plus petits par famille, désormais moins de 10 valeurs chacun.

Quand la règle dit non : 114 trades en 7,4 ans

La règle existe pour refuser des stratégies, et elle en a refusé une de KreamEdge. Notre poche tendance en place a produit 114 trades sur la totalité des 7,4 ans d’historique disponibles. Un décompte honnête de 8 à 10 paramètres effectifs place son plancher entre 240 et 300 trades, même avec un minimum assoupli à 100 trades. La poche échouait par construction, pas par malchance.

Le décompte de 8 à 10 vient de la table de pondération, pas des réglages de l’optimiseur. Il couvre cinq coefficients de score ajustés, un stop suiveur, une limite de durée de détention et deux seuils d’interrupteur à demi-poids, parce qu’ils avaient été réglés auparavant sur des données qui se recoupent. Les conditions contenues dans la règle d’entrée expliquent le haut de la fourchette.

Deux sondages ont vérifié si le nombre de trades pouvait être artificiellement relevé. Relever le plafond d’entrées par barre a reproduit exactement 114 trades : ce plafond n’avait donc jamais été contraignant. Diviser par deux la taille des positions, soit 20 emplacements, a donné 121 trades pour une exposition de 9 %. Le dimensionnement ne peut pas créer d’exécutions : c’est la règle de sélection qui décide de la fréquence à laquelle une stratégie trade, si bien qu’un nombre de trades aussi bas est structurel.

Le plancher lui-même avait déjà été assoupli une fois, de 400 à un minimum de 100 trades, parce que 7,4 ans d’historique ne permettaient pas de tenir le plancher d’origine. Ce changement était un amendement daté appliqué à tous les candidats, assorti en contrepartie de contrôles de chance obligatoires. Même le plancher assoupli a rejeté la poche.

Il restait deux options honnêtes. La première était une exception étiquetée et datée, suivie uniquement sur papier, avec les contrôles de chance renforcés. La seconde était de choisir une autre stratégie, plus dense, conçue pour franchir le plancher, et de lui faire passer toute la chaîne de validation depuis le début. Ce que le processus exclut, c’est un plancher modifié pour un seul candidat après avoir vu son résultat.

Les trades par paramètre ne suffisent pas : comptez aussi les essais

La règle des trades par paramètre limite le nombre de paramètres qu’un ajustement peut supporter, mais elle ne dit rien du nombre d’ajustements effectués. Bailey, Borwein, López de Prado et Zhu (Notices of the AMS, 2014) montrent qu’avec cinq ans de données journalières, essayer plus d’environ 45 configurations indépendantes rend probable un ratio de Sharpe in-sample de 1 par le seul effet du hasard, avec un Sharpe out-of-sample attendu nul.

Leur Minimum Backtest Length est un second budget, exprimé en années de données par configuration essayée. Une stratégie peut franchir les 30 trades par paramètre et rester malgré tout la gagnante chanceuse de 10 000 essais. Dave Walton a fait la même distinction dans l’épisode 51 : le nombre de règles est un facteur du biais de data mining, et le nombre de variantes explorées en est un autre.

KreamEdge fait payer la sélection elle-même. Toute la liste restreinte est réexécutée sur des séries de prix dont l’ordre jour par jour a été mélangé, ce qui conserve la distribution des rendements de chaque série mais détruit toute structure réelle. La meilleure configuration réelle doit battre le 95e centile des meilleures configurations mélangées : au moins 20 mélanges pour la recherche, au moins 100 avant une promotion. Le test ne compte que s’il réexécute tout le processus de sélection, et pas seulement les finalistes à leurs valeurs déjà ajustées.

Les fenêtres out-of-sample ont besoin de leur propre plancher de trades

Une fenêtre de holdout a besoin d’assez de trades pour être mesurable, et ce plancher est distinct de la règle in-sample. KreamEdge classe un holdout de moins de 80 trades comme «données insuffisantes» plutôt que comme un échec. En dessous de ce nombre, le résultat du holdout est du bruit, et le noter confondrait «a échoué au contrôle» avec «n’a pas pu être contrôlé».

Le seuil de 80 vient du regroupement de 61 stratégies du banc par nombre de trades en holdout. La part affichant un CAGR positif en holdout était de 36 % en dessous de 20 trades, de 35 % entre 20 et 40, et de 94 % entre 80 et 120. Seules deux stratégies se situaient entre 40 et 80. Avant le changement, le plancher était de 5 trades, et des holdouts comptant à peine 9 trades étaient notés comme des échecs.

Chaque plancher de trades du processus KreamEdge a une seule fonction, et ils ne sont jamais mélangés :

PlancherValeurQuestion à laquelle il répond
Fenêtre in-samplemax(400, 30 × paramètres effectifs)Ces données peuvent-elles supporter autant de paramètres ?
Fenêtre de holdout80 tradesLe résultat out-of-sample est-il seulement mesurable ?
Pli de walk-forward servant à calibrer les cônes de trades30 trades clôturés par pliCe pli peut-il ancrer une estimation de fourchette attendue ?
Fenêtre de test forward120 barres ou 30 tradesLa fenêtre est-elle assez longue pour être publiée ?

Comment appliquer la règle à votre propre backtest

Appliquez la règle avant de regarder la performance, pas après. Notez comment chaque type de paramètre est compté, comptez les paramètres effectifs, calculez le plancher, et seulement ensuite lisez le backtest. Un plancher choisi après avoir vu le résultat est un paramètre ajusté à part entière. Les étapes ci-dessous suivent l’ordre adopté par KreamEdge.

Trois portes qu'un backtest doit franchir : une taille d'échantillon de max(400, 30 x p) trades clôturés in-sample, un budget de recherche qui compte chaque essai et réexécute la sélection sur des données mélangées, et un holdout d'au moins 80 trades clôturés
Une stratégie doit franchir trois portes distinctes : assez de trades in-sample pour ses paramètres, un budget de recherche qui fait payer chaque essai, et un holdout d’au moins 80 trades.
  1. Fixez la table de pondération avant la première exécution : ce qui compte comme un paramètre entier, un demi, un quart ou zéro.
  2. Comptez les paramètres effectifs : les paramètres libres, plus les conditions des règles, plus les filtres fixes, plus les valeurs figées après réglage sur les mêmes données, à demi-poids.
  3. Calculez le plancher sous la forme max(400, 30 × paramètres effectifs) et ne comptez que les trades clôturés dans la fenêtre in-sample.
  4. Si la stratégie n’atteint pas le plancher, retirez des paramètres ou élargissez l’univers en appliquant les mêmes paramètres à chaque instrument. Ne redimensionnez pas les positions pour fabriquer des trades.
  5. Consignez chaque configuration essayée, y compris les modifications manuelles, et rapportez le nombre d’essais aux années de données disponibles.
  6. Fixez à l’avance le plancher du holdout, et déclarez un holdout trop court comme insuffisant, pas comme un échec.
  7. Comparez les variantes à exposition égale et à nombre de trades à peu près égal. Un interrupteur qui supprime la plupart des trades peut relever le ratio de Sharpe sans améliorer le signal.

Questions fréquentes (FAQ) sur les trades par paramètre

Combien de trades par paramètre faut-il à un backtest ?

KreamEdge exige au moins 30 trades clôturés dans la fenêtre in-sample par paramètre effectif, avec un minimum absolu de 400 trades. Le nombre 30 est une heuristique de praticien, trois fois la règle des 10 événements par variable issue des études de régression, parce que les rendements des trades ont des queues épaisses. Aucune étude de trading publiée ne fixe de ratio exact, et les praticiens du podcast Better System Trader qui en utilisent un n’ont pas donné de chiffre.

Un filtre fixe comme une moyenne mobile à 200 jours compte-t-il comme un paramètre ?

Oui. Un filtre fixe restreint les trades qui ont lieu, et réduit donc l’échantillon sur lequel les autres paramètres sont ajustés. KreamEdge le compte à plein poids s’il a été réglé sur des données qui se recoupent, à demi-poids s’il a été figé après un ajustement antérieur sur ces données, et à zéro uniquement si les données ne l’ont jamais choisi. L’auteur et trader Andrea Unger a qualifié un tel filtre de «quand même une contrainte».

30 trades suffisent-ils pour valider une stratégie de trading ?

Non. Dans la règle de KreamEdge, 30 est le nombre de trades par paramètre effectif, pas le total. Une stratégie complète exige au moins 400 trades in-sample, et son holdout en exige au moins 80 pour être mesurable. Trente trades clôturés, c’est le minimum que KreamEdge retient pour un seul pli de walk-forward servant à calibrer une estimation de fourchette attendue, ce qui est une tâche bien plus étroite.

Ajouter des symboles peut-il augmenter le nombre de trades ?

Oui : si les mêmes paramètres s’appliquent à chaque symbole, regrouper plusieurs instruments ajoute des trades sans ajouter de paramètres. La réserve tient à l’indépendance. Les trades sur des instruments corrélés se chevauchent dans le temps et dans le risque ; le trader Adam Grimes a noté dans l’épisode 188 de Better System Trader que 20 positions en actions se comportent davantage comme un seul risque que comme 20. Comptez les trades regroupés, mais ne les traitez pas comme pleinement indépendants.

Quelle différence entre trades par paramètre et longueur minimale de backtest ?

Les trades par paramètre limitent le nombre de paramètres qu’un ajustement peut supporter. La Minimum Backtest Length, de Bailey, Borwein, López de Prado et Zhu (2014), limite le nombre de configurations qui peuvent être essayées sur un nombre d’années de données donné. Avec cinq ans de données journalières, l’article situe cette limite à environ 45 configurations indépendantes. Un backtest solide doit respecter les deux budgets.

Sources

  • Podcast Better System Trader, animé par Andrew Swanscott : épisodes 16 (Andrea Unger), 18 (Scott Andrews), 36 (Michael Bryant), 51 (Dave Walton), 64 (Bert Mouler), 79 (Dave Bergstrom), 152 (John Ehlers, juillet 2018), 178 (Stefan Friedrichowski), 180 (Rob Carver, février 2021), 188 (Adam Grimes), 196 (Jeff Swanson) et 206 (Adrian Reid, novembre 2021). Archive des épisodes.
  • David H. Bailey, Jonathan M. Borwein, Marcos López de Prado et Qiji Jim Zhu, «Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance», Notices of the American Mathematical Society, 2014. Résumé sur SSRN.
  • Peter Peduzzi, John Concato, Elizabeth Kemper, Theodore R. Holford et Alvan R. Feinstein, «A simulation study of the number of events per variable in logistic regression analysis», Journal of Clinical Epidemiology 49(12), 1996. Notice PubMed.
  • Eric Vittinghoff et Charles E. McCulloch, «Relaxing the Rule of Ten Events per Variable in Logistic and Cox Regression», American Journal of Epidemiology, 2007.

Sur les sources : les passages en citation et entre guillemets sont transcrits des transcriptions des épisodes, nettoyés de la ponctuation et des mots de remplissage mais jamais du sens, une ellipse signalant toute omission. Tout le reste de ce qui est attribué à un invité est une paraphrase de son argument dans les mots de KreamEdge. Les invités sont nommés comme les titres des épisodes les nomment. Les chiffres de KreamEdge proviennent du banc et du journal de recherche internes ; ils décrivent des backtests historiques sur une configuration de recherche, et aucun chiffre ici n’est audité.

KreamEdge n’a aucun lien avec Better System Trader, ses invités ou les auteurs cités, et aucune citation ne vaut recommandation.

Conclusion

Trente trades par paramètre est une règle grossière, et c’est précisément son intérêt. Elle oblige à faire le décompte avant que la courbe de capital soit visible, elle fait payer leur place aux filtres fixes et aux modifications manuelles, et elle refuse les stratégies qui paraissent bonnes sur trop peu de résultats, y compris les nôtres. Elle ne remplace ni un budget d’essais ni un holdout mesurable. C’est la première porte, pas la seule.

Si vous souhaitez discuter de budgets de paramètres et de méthodologie de backtest avec d’autres concepteurs de systèmes, rejoignez les canaux gratuits indiqués sur la page communauté.

Nous ne traderions aucune des stratégies décrites ici telle quelle : c’est de la recherche uniquement. Les chiffres proviennent de backtests historiques, les performances passées ne préjugent pas des résultats futurs, et rien dans cette note ne constitue un conseil financier ni une recommandation d’achat ou de vente d’un quelconque instrument.

Autres recherches KreamEdge


0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *