Recherche / Working Paper · Révisé mai 2026
Predictive Value of Within-Strategy Permutation Tests for Forward Selection
Evidence from Over 6 Billion Strategy-Level Permutations Across Three Asset Classes
Un test empirique à grande échelle visant à déterminer si les tests de permutation Monte Carlo intra-stratégie, une étape de validation standard dans le développement de stratégies quantitatives, améliorent réellement la sélection forward de stratégies. Sur 437 911 configurations de stratégie sur neuf instruments couvrant crypto, forex et commodities, 160 fenêtres walk-forward, et 26,5 milliards de permutations de bout en bout, la réponse est non, mais pour une raison différente de celle qu’avançait une version de mars 2026 de ce paper. Sur les statistiques véritablement dépendantes du chemin pour lesquelles le test est bien défini, le filtrage MC produit un lift indiscernable de zéro ; sur les statistiques basées sur une somme, le résultat de lift négatif précédemment rapporté est réattribué à un artefact d’ordre de sommation en virgule flottante.
Lire sur SSRN
abstract_id=6636018
Package de reproductibilité
Monte-Carlo-paper, Python, Rust et R vérifiés de façon croisée
Les trois résultats
RÉSULTAT 1
Vos métriques de sélection les plus utilisées sont invisibles au test.
Sous un dimensionnement notionnel fixe par trade, le cadre standard du praticien, le ROI total, le Sharpe au niveau du trade et le Profit Factor sont chacun une fonction du seul multiensemble des rendements par trade. Leurs distributions de rang MC sont dégénérées par construction. Tout décalage vers la gauche que vous observez sur ces métriques est un artefact d’ordre de sommation en virgule flottante dans le code vectorisé, non une propriété des données.
RÉSULTAT 2
Sur les métriques où le test est bien défini, le signal est du bruit.
Le Maximum Drawdown, le Calmar et l’Ulcer index sont de véritables statistiques dépendantes du chemin. Leurs rangs MC s’agrègent à quelques points de pourcentage du baseline de réarrangement aléatoire de 50 % sur chaque instrument. Ajouter un filtre MC à une simple porte IS Profit Factor > 1 déplace la rentabilité OOS de moins de ±0,5 pp sur les neuf instruments.
RÉSULTAT 3
Au niveau du portefeuille, le signal prédit dans la mauvaise direction.
Combiner des stratégies en portefeuilles de 10 stratégies à pondération égale produit un net décalage vers la droite du rang MC-MDD, dépendance du chemin réelle détectée. Mais le même rang, utilisé comme sélecteur forward-OOS, échoue : les portefeuilles du décile supérieur par MC-MDD in-sample sous-performent le décile inférieur de −3,48 pp agrégé. Le MC détecte la dépendance du chemin ; il ne prédit pas la performance.
Résumé
Les tests de permutation Monte Carlo intra-stratégie, mélanger les rendements par trade d’une stratégie pour évaluer la significativité, reposent sur une hypothèse d’échangeabilité que les séries temporelles financières violent. Les propriétés diagnostiques du test sous échangeabilité sont bien établies. Ce qui n’a pas été évalué, c’est de savoir si agir sur la sortie du test améliore réellement la sélection forward de stratégies.
Nous évaluons cela sur 437 911 configurations de stratégie (8 familles d’indicateurs ; les corrélations de PnL au niveau des barres au sein d’une même famille ont en moyenne seulement |ρ̄| = 0,031, réfutant l’hypothèse courante de flux de rendements quasi-dupliqués entre variantes de paramètres) sur neuf instruments couvrant trois classes d’actifs, futures perpétuels crypto (BTC, DOGE, BNB, SOL), majors forex (EUR/USD, USD/JPY, EUR/GBP), et commodities (XAU/USD, WTI Oil), et 160 fenêtres walk-forward. Le pipeline produit 6 629 125 observations stratégie-fenêtre et environ 26,5 milliards de permutations de bout en bout : 6,63 milliards de permutations MC intra-stratégie, 19,9 milliards de runs de permutation par bloc, plus un pipeline de référence de permutation au niveau des barres (~207 millions de ré-exécutions complètes de stratégie, construction Aronson/Masters) comme vérification indépendante préservant la dépendance.
Sur les statistiques dépendantes du chemin (Maximum Drawdown, Calmar, Ulcer index, les métriques pour lesquelles le test de permutation intra-stratégie est mathématiquement bien défini), ajouter un filtrage MC par-dessus une simple porte de rentabilité in-sample (IS Profit Factor > 1) produit un lift incrémental indiscernable de zéro, le cluster bootstrap par trimestre calendaire (61 clusters sur les neuf instruments) donne un lift MC-MDD p50 agrégé de +0,34 pp [+0,07, +0,62], qui ne survit pas à la correction de Bonferroni sur la famille de six variantes MC. Une version précédemment diffusée de ce paper rapportait un résultat de lift négatif sur les statistiques basées sur une somme (ROI / Sharpe / Profit Factor) ; ce résultat est réattribué dans la révision de mai 2026 à un artefact d’ordre de sommation en virgule flottante dans le code de permutation vectorisé, et non à une propriété des données.
Deux vérifications indépendantes renforcent le nul corrigé. Un test placebo sur le filtre artefactuel produit un lift qui change de signe selon les classes d’actifs (crypto et or négatifs, trois paires forex positives), un motif qu’aucune théorie substantielle de non-échangeabilité ne prédit, mais que le piège de sommation en virgule flottante, lui, prédit. Et un Monte Carlo de référence de permutation au niveau des barres (rééchantillonnage bootstrap stationnaire des rendements par barre avec ré-exécution complète de stratégie, ~207 millions de runs sur les neuf instruments) confirme un edge in-sample genuine au niveau des barres tout en reproduisant le même nul sur la sélection forward.
Démo : Regardez apparaître le décalage en virgule flottante
Mélangez le même multiensemble de rendements par trade des milliers de fois. Chaque mélange devrait produire la même somme, mathématiquement, c’est le cas. Mais sous le strictement-supérieur IEEE-754 sur la somme vectorisée par lot, vous verrez un mélange « battre » un autre avec une fréquence non négligeable. La distribution de rang s’effondre à ~37 ± 2 %, exactement le décalage vers la gauche que la version de mars 2026 a pris pour une preuve de non-échangeabilité. Basculez la procédure de sommation pour voir l’artefact apparaître et disparaître.
Passez au traitement des égalités par rang médian : la distribution de rang revient à un nul uniforme centré sur 50 %. Passez à la sommation compensée de Kahan : elle s’effondre en un mince filet près de 0. Les données n’ont pas changé, seul l’ordre dans lequel les flottants ont été additionnés.
Pourquoi cela se produit
Deux raisons structurelles et un piège numérique :
- Les métriques de sélection les plus utilisées par les praticiens sont invariantes par permutation. Sous un dimensionnement notionnel fixe par trade, le cadre standard du praticien, le ROI total, le Sharpe au niveau du trade et le Profit Factor sont chacun des fonctions du seul multiensemble des rendements par trade. Ils prennent la même valeur sous chaque réarrangement et sont invisibles au test MC par construction (proposition de l’Annexe A4 étendant le résultat classique d’invariance du PF). Le test MC intra-stratégie sur ces métriques est structurellement non informatif, indépendamment de toute propriété du processus générateur des données.
- Sur les métriques dépendantes du chemin où le test est bien défini, l’ordonnancement réalisé des trades ne sépare pas les gagnants des perdants hors échantillon. Le Maximum Drawdown, le Calmar et l’Ulcer sont de véritables fonctions de l’ordonnancement des trades et produisent un nul MC non dégénéré. Mais empiriquement, l’ordonnancement réalisé est statistiquement indiscernable d’un réarrangement aléatoire, les rangs moyens se situent à quelques points de pourcentage du baseline de 50 % sur chaque instrument, et le lift résiduel du filtre est au plus une fraction de point de pourcentage.
- Un artefact d’ordre de sommation en virgule flottante a gonflé les chiffres antérieurs. Le code de permutation vectorisé accumule des lots de rendements par trade réarrangés dans des ordres de sommation différents de l’ordre réalisé, produisant une fraction faible mais non nulle de comparaisons IEEE-754 de type strictement-supérieur entre deux sommes mathématiquement égales. Le signal de lift négatif précédemment rapporté sur les statistiques basées sur une somme était presque entièrement cet artefact. La révision de mai 2026 documente le piège, livre un reproducteur autonome, et propose trois corrections (statistiques dépendantes du chemin, traitement des égalités par rang médian, ou sommation à précision exacte).
- Bruit d’échantillonnage dans l’estimation des quantiles de queue. Même sur les statistiques dépendantes du chemin, le rang MC est une estimation bruitée d’un quantile de queue d’une distribution nulle inconnue. Le bruit se compose tout au long du pipeline et domine le signal résiduel qui subsiste après les deux barrières structurelles ci-dessus.
Démo : Choisissez une métrique, voyez si le MC peut la classer
Choisissez n’importe quelle métrique de sélection. Nous allons mélanger un multiensemble de PnL fixe 1 000 fois et tracer la distribution des valeurs de la métrique. Toute métrique qui s’effondre en un point unique est invisible au test MC intra-stratégie, aucune quantité de permutation ne peut classer ce qui est mathématiquement constant.
Profit Factor, ROI, Sharpe au niveau du trade, win rate et Sortino s’effondrent tous. Le Maximum Drawdown, le Calmar et l’Ulcer index se répartissent sur une plage non triviale. Le test n’est bien défini que sur le second groupe, et sur données réelles ces rangs se centrent près de 50 %.
Démo : La détection n’est pas la prédiction
Choisissez un instrument et faites glisser K de 1 à 10 stratégies par portefeuille. Regardez la distribution de rang MC-MDD in-sample dériver à droite de 50, le test détecte correctement que la géométrie de drawdown réalisée du portefeuille est meilleure qu’une permutation typique ne le suggérerait. Puis vérifiez le panneau de la fenêtre OOS suivante.
Sur le résultat agrégé des 9 instruments, le même rang qui a dérivé à droite de 50 in-sample s’inverse comme prédicteur : les portefeuilles les plus réguliers en IS sous-performent les plus bruités de −3,48 pp hors échantillon. Le test MC détecte une véritable dépendance du chemin et trade contre vous.
Conséquence pratique
Le signal de rang MC par stratégie ne porte aucun contenu positif pour la sélection forward ; il ajoute du temps de calcul et une étape mentale supplémentaire qui ne déplace pas la distribution OOS. Au niveau du portefeuille, le tableau est plus net : combiner des stratégies produit un décalage vers la droite des rangs MDD (la géométrie de drawdown réelle du portefeuille est meilleure que ce que des permutations typiques suggéreraient), mais un test forward-OOS montre que le signal revient à la moyenne, les portefeuilles du décile supérieur par rang MC-MDD in-sample sous-performent ceux du décile inférieur sur la fenêtre walk-forward suivante de −3,48 pp agrégé sur les neuf instruments. Le MC au niveau du portefeuille est un détecteur de dépendance du chemin, non un prédicteur de rentabilité future.
Au niveau du portefeuille, la diversification à pondération égale domine la sélection par filtre : 53–62pp d’amélioration par la diversification contre 3–5pp par le meilleur filtre. Les portefeuilles multi-stratégies à pondération égale atteignent 89–98 % de rentabilité OOS indépendamment du choix du filtre, cohérent avec la littérature plus large sur les portefeuilles naïfs 1/N (DeMiguel et al., 2009).
Pourquoi un signal partagé trop petit pour être détecté au niveau de la stratégie devient un signal confiant au niveau du portefeuille est le sujet de Le signal est collectif. Le travail de production derrière ce projet et le programme de recherche plus large du cabinet utilise le même filtre propriétaire Daru Finance, une construction différente des filtres de comparaison évalués dans ce paper.
Démo : Déplacez le curseur, ne voyez rien se passer
Une réaction courante du praticien face à un résultat nul est de resserrer le filtre. Faites glisser le seuil de percentile MC de p0 à p99 et observez l’intervalle de confiance du lift OOS. Le ruban d’IC ne quitte jamais la bande de ±1 pp autour de zéro, quelle que soit la statistique dépendante du chemin que vous choisissez.
Demo: Threshold lift
Sweep the MC percentile threshold and the metric. The OOS top-bottom decile lift CI never leaves the ±1 pp band, while the IS PF > 1 gate alone delivers +4.54 pp.
The whole curve is the story: drag across every threshold and the selected metric, plus the faint trails of the others, stays pinned inside the ±1 pp band. The IS PF > 1 gate alone delivers +4.54 pp (the dashed line far above), so MC filtering adds noise around zero no matter which path-dependent statistic you pick. The MC-ROI* artefact curve drifts above zero only because the floating-point summation pitfall sign-flips on forex pairs (paper §8.4).
Vérifiez maintenant la porte IS PF > 1 seule, ce seul filtre booléen délivre +4,54 pp de lift OOS. Resserrer le seuil MC ajoute du temps de calcul et du bruit autour de zéro ; c’est la porte de rentabilité in-sample qui fait le travail.
Résumé de la méthodologie
- Optimisation walk-forward stricte : fenêtres in-sample de 10 000 bougies pour la crypto (~10 000 heures d’horloge pour forex/commodities), avançant tous les 5 000 bougies/heures, sans ajustement de paramètres pendant l’évaluation OOS.
- Coûts de transaction réalistes : 0,16 % round-trip pour les perpétuels crypto (slippage + fee + funding), 1,4 pips pour les majors forex, spreads spécifiques par instrument pour les commodities.
- 1 000 permutations MC intra-stratégie par paire stratégie-fenêtre (~6,63 milliards au total) sur des statistiques dépendantes du chemin (MDD, Calmar, Ulcer) ; une batterie de permutation par bloc à b ∈ {2, 3, 5, 10, 20} ajoute ~19,9 milliards de runs au niveau du portefeuille ; un pipeline de référence de permutation au niveau des barres (rééchantillonnage bootstrap stationnaire des rendements par barre avec ré-exécution complète de stratégie, construction Aronson/Masters) ajoute ~207 millions de ré-exécutions complètes sur les neuf instruments comme vérification indépendante préservant la dépendance. Environ 26,5 milliards de permutations de bout en bout.
- Filtres de comparaison au §3.4 : une batterie déterministe de robustesse (coût +50 %, timing ±1 barre, paramètre ±1 pas) sous conditions de gating appariées. L’analyse de portefeuille (§6) couvre le MC intra-fenêtre, les déciles forward-OOS et la construction top-N-par-IS-PF sur environ 160 000 portefeuilles.
Reproductibilité et divulgation
Le dépôt ne livre que des scripts d’analyse, chaque figure, table et statistique inline du paper peut être reproduite en exécutant le pipeline publié contre toute sortie stratégie-fenêtre conforme au schéma documenté. Le code couvre trois langages : Python (13 scripts, orchestration, figures, tables, et un reproducteur autonome du piège d’ordre de sommation en virgule flottante), Rust (7 crates parallélisées avec Rayon, les quatre nouvelles crates dépendantes du chemin mc_path_ranks, block_perm_path, portfolio_mc_path, portfolio_mc_oos, plus la legacy block_perm, le tenseur de corrélation, et le pipeline synthétique), et R (5 scripts re-dérivant indépendamment les principales affirmations statistiques dans un langage différent comme validation croisée méthodologique). Tous les scripts utilisent des graines aléatoires fixes (42) ; les IC bootstrap utilisent 10 000 rééchantillonnages ; les estimations de lift sont stables sur trois séquences de graine indépendantes (le lift moyen varie de moins de 0,05 pp).
Le package est explicite sur ce qui n’est pas livré : les données brutes de barres/trades et les 437 911 configurations de stratégie restent propriétaires. Les lecteurs reproduisent en pointant les scripts vers leurs propres données au niveau des barres et leur propre univers de stratégies ; le backtester de stratégies qui produit les flux de trades que le pipeline consomme est open source sur github.com/DaruFinance/quant-research-framework-rs. Séparément, le filtre de production Daru Finance, utilisé dans le travail de consulting et dans le programme de recherche plus large du cabinet, est une construction différente des filtres de comparaison évalués ici, et n’est pas le sujet de ce paper.
Checklist du praticien
Un audit en huit points à exécuter contre votre propre pipeline MC avant de faire confiance à sa sortie. Les erreurs les plus coûteuses sont ci-dessous.
- 01
Vérifiez d’abord votre hypothèse de dimensionnement.
La proposition d’invariance par multiensemble suppose un dimensionnement notionnel fixe par trade. Sous Kelly, fixed-fractional ou un dimensionnement à l’échelle de la volatilité, l’invariance structurelle se brise, mais c’est aussi le cas de la plupart de la littérature praticienne qui motive le test en premier lieu. Soyez explicite sur le régime dans lequel vous vous trouvez.
- 02
Utilisez le traitement des égalités par rang médian sur votre compteur MC.
Remplacez les comptages strictement-supérieur par une correction des égalités par rang médian : rank = (count_strict_less + 0,5 × count_equal) / B. Ce seul changement supprime le décalage vers la gauche produit par le bruit de sommation IEEE-754 sur les métriques invariantes par permutation.
- 03
Ou passez à une sommation compensée / exacte.
math.fsum en Python ou la sommation de Kahan dans n’importe quel langage pousse l’erreur d’arrondi résiduelle en dessous du seuil auquel l’artefact peut inverser le signe d’un classement. Plus lent par appel, mais élimine la classe de bug.
- 04
Utilisez une statistique dépendante du chemin, pas une statistique basée sur une somme.
Si votre métrique de sélection appartient à la famille invariante par multiensemble (ROI, Sharpe, Profit Factor, win rate, Sortino), le test MC intra-stratégie est structurellement non informatif quelle que soit l’implémentation. Passez à MDD, Calmar ou Ulcer si vous voulez qu’un nul de permutation signifie quelque chose.
- 05
Utilisez au moins B = 1 000 permutations.
En dessous, la queue du nul est trop bruitée pour être classée de façon fiable et vous verrez des décalages arbitraires vers la gauche ou la droite portés par le bruit d’échantillonnage. Le paper utilise B = 1 000 partout.
- 06
Clusterisez vos erreurs standard par période calendaire.
Des erreurs standard i.i.d. naïves vous convaincront d’effets qui ne sont pas là : l’effet de design sur un panel de 9 instruments × 160 fenêtres est d’environ 18×. Utilisez un cluster bootstrap par trimestre calendaire (~61 clusters), c’est l’origine de l’IC mis en avant dans le paper.
- 07
Ne filtrez pas sur le rang MC comme sélecteur forward.
Utilisez le test MC comme détecteur de dépendance du chemin, non comme prédicteur forward. Le résultat au niveau du portefeuille montre que même quand le MC détecte une véritable dépendance du chemin, le rang s’inverse comme prédicteur OOS d’environ −3,5 pp.
- 08
Traitez la permutation par bloc comme une détection, pas une prédiction.
La permutation par bloc préserve l’autocorrélation locale et produit un nul légèrement plus étroit que la variante i.i.d. Elle ne produit pas de signal forward-selection positif. Utilisez-la pour caractériser la structure de dépendance, non pour choisir des stratégies.
Une observation annexe qui mérite d’être signalée
Les corrélations de PnL au niveau des barres au sein d’une même famille ont en moyenne seulement |ρ̄| = 0,031 sur l’échantillon complet, réfutant l’hypothèse courante selon laquelle les variantes de paramètres d’une seule famille d’indicateur produisent des flux de rendements quasi-dupliqués. Même à la paire du 99e percentile, le |ρ| moyen n’est que de 0,224, bien en dessous du niveau |ρ| > 0,7 que l’intuition de « quasi-dupliqué » prédirait. Cela signifie que l’univers de 437 911 stratégies porte beaucoup plus d’information indépendante qu’une lecture désinvolte ne le supposerait.
Même le Monte Carlo de référence de permutation par barre produit un nul
Une objection raisonnable à ce stade : « le MC intra-stratégie par mélange de trades est la variante bon marché, le MC de permutation par barre préservant la dépendance d’Aronson et Masters est celui auquel je fais réellement confiance. » Le paper exécute aussi cette procédure, à grande échelle : rééchantillonnage bootstrap stationnaire des rendements par barre avec ré-exécution complète de stratégie, environ 207 millions de runs sur les neuf instruments. Il détecte un edge in-sample genuine au niveau des barres, rang PF 80–86 sur la crypto et les commodities. Il produit le même nul sur la sélection forward.
Le contrôle placebo est ce qui rend la lecture inattaquable. Le même filtre artefactuel qui semblait ajouter de la valeur produit un lift qui change de signe selon les classes d’actifs, négatif sur la crypto et l’or, positif sur trois paires de forex, un schéma qu’aucune théorie de non-permutabilité genuine ne prédit, mais qu’un piège de sommation en virgule flottante reproduit exactement. Une fois cet artefact corrigé, l’edge forex apparent s’effondre avec lui, et la crypto et les commodities se stabilisent à ±0,75 point de pourcentage de zéro. Ainsi la procédure de référence s’accorde avec la version bon marché sur la seule question qui compte au moment de la décision : elle confirme qu’il existe une vraie structure au niveau des barres à trouver in-sample, et elle confirme que cette structure ne se reporte pas sur la fenêtre walk-forward suivante. Détecter n’est pas prédire, et payer pour le test de permutation le plus coûteux achète un nul plus crédible, pas un nul différent.
FAQ
- Cela s’applique-t-il aux stratégies sur actions ?
- Le périmètre empirique du paper est de quatre perpétuels crypto, trois majors forex et deux commodities. Les arguments structurels (invariance par multiensemble, le piège de la virgule flottante, les IC par cluster calendaire) sont des caractéristiques du langage d’implémentation et ne dépendent pas de la classe d’actifs. Nous n’avons pas exécuté la procédure sur les actions ; il s’agit d’une limitation de périmètre délibérée signalée au §10.
- Et le dimensionnement Kelly / fixed-fractional / à l’échelle de la vol ?
- Le dimensionnement de position dépendant de l’equity brise la proposition d’invariance par multiensemble, sous Kelly, l’ordre d’arrivée des trades change le notionnel par trade et donc le ROI et le Sharpe. L’argument structurel est donc plus étroit que la littérature praticienne qui motive le test. En pratique, la plupart des tests de permutation MC publiés supposent un dimensionnement fixe car c’est ce qui rend le nul traitable ; la critique du paper s’applique spécifiquement à ce corpus de travaux.
- Alors que devrais-je utiliser à la place ?
- Deux procédures passent le même audit forward-OOS et sont méthodologiquement appropriées. Le rééchantillonnage bootstrap stationnaire au niveau des barres avec ré-exécution complète de stratégie (la construction Aronson/Masters) teste un nul significatif préservant la dépendance. La validation croisée combinatoire purgée (López de Prado) teste une question différente. Les deux produisent le même résultat nul de sélection forward que le test intra-stratégie sur les données présentées ici ; les deux sont documentées au §10.
- Avez-vous testé des méthodes de nul sur l’univers comme le Reality Check de White ?
- Hors périmètre. Le Reality Check de White, le SPA de Hansen et le StepM de Romano-Wolf traitent l’hypothèse de comparaisons multiples entre stratégies, et non l’hypothèse de permutation intra-stratégie. Ils pourraient être évalués avec la même méthodologie de forward-lift que ce paper introduit ; nous laissons cela à un travail de suivi.
- Où est le code, et comment reproduire la démo en virgule flottante ?
- Le pipeline complet est sur github.com/DaruFinance/Monte-Carlo-paper. Le reproducteur autonome en virgule flottante (python/fp_pitfall_demo.py) s’exécute en moins de 30 secondes sans données externes et reproduit le même rang moyen de ~37 % que le paper documente.
- Pourquoi la révision de mai 2026 rétracte-t-elle un résultat de la version de mars 2026 ?
- La version de mars rapportait un lift MC uniformément négatif d’environ −1,2 pp sur neuf instruments. Ce résultat était porté par du code de sommation vectorisé qui comparait deux flottants mathématiquement égaux sous le strictement-supérieur IEEE-754. Une fois corrigé, via les égalités par rang médian, la sommation exacte, ou un passage à des statistiques véritablement dépendantes du chemin, le décalage vers la gauche disparaît. La révision documente le bug, livre un reproducteur public et exécute l’analyse corrigée à la même échelle.
Citer ce paper
Voir aussi
Pour un compagnon moins formel qui parcourt le paysage empirique plus large, et montre où l’edge se trouve réellement dans une population de 533 638 stratégies une fois le test de permutation intra-stratégie écarté (dans la sélection sur la population, reproductible à partir du PnL quotidien réalisé), lisez L’edge est dans le processus.

