Le corpus
Ce que « 1,6 million de stratégies » signifie réellement.
Une réponse à la réaction initiale la plus courante, et la plus raisonnable : « ce n’est pas de la recherche, c’est du data mining. »
L’objection a du mordant. Avec suffisamment de degrés de liberté, n’importe quoi peut être ajusté à n’importe quoi. Avant donc toute affirmation sur les portefeuilles, l’edge ou les filtres de robustesse, cette page fait le travail ennuyeux : elle explique comment le corpus est construit (en gardant confidentielles les parties confidentielles), montre à quoi ressemble sa géométrie interne, et parcourt les deux artefacts visuels qui capturent les deux visages de la population, la structure au niveau des familles et la structure au niveau des variantes.
Dimensions du corpus
L’objection
La critique du data mining va à peu près ainsi : si vous backtestez un million de stratégies, la queue droite de la distribution contiendra, par pure chance, des stratégies qui impriment d’énormes profit factors in-sample. Sélectionnez celles-ci à la carte, et n’importe quel backtest paraîtra excellent, jusqu’au trading en réel, où les ajustements s’évaporent.
Cette critique est correcte dans l’esprit, et en fait ce travail est d’accord avec elle au niveau de la stratégie. L’article L’edge est dans le processus s’ouvre sur ce constat sur un corpus crypto reproductible de 12 marchés : sur 533 638 stratégies et 44 millions de fenêtres de stratégie walk-forward, la corrélation de rang entre le profit factor d’une stratégie sur une fenêtre et la suivante est de ρ ≈ 0,02, et le ρ par marché ne dépasse jamais 0,04. Aucune stratégie individuelle de ce corpus ne porte d’edge OOS crédible.
Alors à quoi sert la population ? L’argument se développe au fil des deux sections suivantes, et les deux sections vidéo qui les suivent en sont la preuve visuelle.
Comment le corpus est construit
Chaque stratégie du corpus est une règle entièrement spécifiée et déterministe : une famille d’indicateur, une paramétrisation, une logique d’entrée / sortie, et un régime de risk-reward. Rien n’est miné. Rien n’est choisi à la main. Le substrat est le produit structuré de :
- 30 partitions actif / timeframe, majors crypto (BTC, ETH, BNB, SOL), grandes altcoins (DOGE, XRP, LTC, AVAX, LINK, BCH, DOT, TRX), ~15 mid-caps (APE, ATOM, ICP, NEAR, ALGO, HBAR, ARB, SUI, APT, ZEC, …) et trois paires forex (AUDUSD, USDCAD, USDCHF). Le forex est mis de côté comme vérification de robustesse inter-classes d’actifs.
- Huit familles d’indicateurs couvrant tendance, momentum, mean-reversion et volatilité, EMA, SMA, MACD, PPO, RSI, croisement de niveau RSI, Stochastic %K, ATR.
- Populations de variantes par famille. Chaque famille de base est étendue en une population de variantes par une batterie de fonctions statistiques et mathématiques, transformations appliquées à la série brute de l’indicateur et sous-ensembles de confluence qui conditionnent les entrées à un second signal de manière structurée. La construction exacte est réservée. Les artefacts empiriques de cette page sont la démonstration que, quelle que soit la construction, la population résultante possède les propriétés géométriques revendiquées.
- Optimisation walk-forward sur plusieurs horizons de lookback, de sorte que chaque stratégie est évaluée sous des fenêtres IS / OOS glissantes plutôt que sur une unique tranche arbitraire de l’historique des prix.
Aucun sous-ensemble n’est retiré. Aucune partition n’est « gardée comme la bonne ». Les trente actifs/timeframes sont tous évalués sous le même pipeline, avec le même code, à partir des mêmes commits.
Sur la reproductibilité. Le working paper SSRN livre un package de reproductibilité, mais il reproduit les agrégats dérivés des stratégies qui apparaissent dans le paper : les distributions IS / OOS, les diagnostics de courbe de filtre, les statistiques de portefeuille et les données de figure. Le corpus de stratégies lui-même est propriétaire et n’est pas publié. Python, Rust et R vérifient de façon croisée les mêmes agrégats publiés à partir du même historique brut de prix ; ils ne régénèrent pas le corpus.
Pour une lecture au niveau de la population du même substrat utilisant une méthodologie publique, voir les notes du lab sur la densité Sharpe de la population et la décomposition de l’écart Sharpe IS–OOS.
La géométrie, en un seul graphique
La chose la plus informative que vous puissiez faire avec un corpus de stratégies est de calculer sa matrice de corrélation par paire. Si « un million de stratégies » était réellement une seule stratégie déguisée, cette matrice serait saturée près de ρ = 1. Elle ne l’est pas. L’histogramme ci-dessous est la distribution des corrélations par paire sur près de 30 000 stratégies échantillonnées de façon stratifiée sur les 30 partitions d’actifs, environ 450 millions de paires.
Pour une lecture Marchenko–Pastur de la même matrice, combien des valeurs propres sont du signal vs le nul random-matrix, voir strategy-rmt. Pour l’analogue inter-actifs (cubes de corrélation glissante sur l’univers de 9 actifs), voir strategy-corrcube.
Dimensionnalité effective
La corrélation absolue moyenne sur le pool complet est de 0,123. Médiane 0,072. Seulement 2,84 % des paires franchissent |ρ| = 0,5. La moyenne intra-actif (0,163) est, comme on s’y attend, légèrement supérieure à la moyenne inter-actifs (0,122), mais ni l’une ni l’autre n’approche le plafond « tout est le même trade ».
En termes d’algèbre linéaire, le corpus a une très haute dimensionnalité effective : la population couvre beaucoup plus de directions de rendement quasi-orthogonales que sa taille de surface ne le suggère. Un portefeuille tiré du pool a donc accès à un ensemble générateur bien plus riche qu’un corpus où chaque stratégie est une re-skin de la même idée. Deux conséquences empiriques en découlent directement :
- Les stratégies individuelles ressemblent à du bruit (grande variance idiosyncratique, faible prévisibilité IS→OOS) précisément parce que chacune capture une tranche petite et distinctive de l’espace des rendements.
- Les portefeuilles tirés du même pool se comportent très différemment, leurs termes idiosyncratiques s’annulent et la composante structurelle survit. C’est la charnière empirique de L’edge est dans le processus, et le comportement de saturation de l’univers de ces portefeuilles est étudié séparément dans strategy-robust-portfolio.
Pour la vue formelle d’embedding de la même population, PCA + UMAP sur un vecteur métrique de 90 features, voir strategy-manifold. Les deux sections vidéo ci-dessous sont les démonstrations visuelles sur un seul actif, SOL/USDT 1H, en utilisant les familles d’indicateurs publiquement divulguées.
Niveau famille, surfaces de performance
Les huit familles de base, en paysages de performance 3D.
Un actif, SOL/USDT, bougies de 1H. Pour chaque famille d’indicateur, chaque combinaison de paramètres de la famille est évaluée sous le même pipeline walk-forward, et la surface de performance résultante est rendue en paysage 3D. Ce sont les surfaces brutes, non optimisées, aucun filtre appliqué, aucune post-sélection, aucun cherry-picking. Ce que vous voyez ci-dessous est la population que chaque famille génère avant que la moindre partie de la méthodologie du cabinet ne soit mise en œuvre.
Comment lire une surface
Sur chaque surface, les deux axes horizontaux (X et Y) sont des paramètres de stratégie, les boutons configurables qui définissent une stratégie au sein de sa famille. L’axe vertical (Z) est la performance de la stratégie, résumée ici par le Sharpe ratio sur la fenêtre in-sample sur laquelle le walk-forward sélectionne. La caméra orbite pour que vous puissiez voir la surface sous tous les angles.
Ce qui compte, c’est la forme, et non un pic isolé. La lecture intuitive, crêtes lisses = bassin stable, pics aigus = fragile et probablement overfit, est testée empiriquement dans strategy-surface-stability, une étude pré-enregistrée sur ce corpus. Le résultat principal est négatif : la régularité in-sample sous perturbation microstructurelle n’est pas un prédicteur au niveau de la population du Sharpe OOS de la fenêtre suivante sur les trois partitions d’actifs testées (SOL 1h, DOGE 30m, BTC 30m). L’effet agrégé est indiscernable de zéro (f² = 0,0002), et le signe par actif s’inverse entre DOGE et BTC. L’ATR est la seule famille où le motif tient de façon cohérente entre pilote et réplication ; les familles de momentum se comportent à l’inverse. La décomposition de l’écart Sharpe au niveau de la stratégie est le sujet de strategy-overfitting ; ce que nous voulons communiquer ici est simplement le fait visuel que les huit familles produisent huit géométries visiblement différentes sur le même actif, savoir si cette géométrie prédit le skill OOS est une question empirique distincte, avec une réponse distincte (et largement nulle).
La question naturelle qui suit est de savoir si deux familles d’apparence similaire sont en fait le même trade déguisé. La figure ci-dessous y répond.
Et la corrélation entre elles
Le panneau 8 × 8 au-dessus des surfaces est la corrélation glissante par paire des événements d’entrée de chaque famille sur la même tranche SOL/USDT 1H. Chaque famille est réduite à une seule série temporelle, long = +1, short = −1, sinon 0, et la heatmap est la corrélation de Pearson par paire de ces séries d’événements sur une fenêtre glissante. La diagonale vaut 1 par construction ; ce sont les cellules hors diagonale qui nous intéressent.
L’intérêt de verrouiller par frame la vidéo de corrélation aux huit vidéos de surface est que vous pouvez observer les deux à la fois : à mesure que le prix parcourt la tranche, les nuages de surface se déforment et les cellules de corrélation se déplacent. Deux familles qui partagent brièvement un régime s’illumineront sur la heatmap ; deux familles dont la logique de timing est structurellement différente resteront sombres, peu importe l’aspect des surfaces. Les cellules restent massivement froides, la corrélation moyenne hors diagonale reste près de zéro tout au long de la tranche. Les huit familles ne sont pas redondantes. La version inter-actifs de cette idée, le même cube de corrélation glissante de 9 actifs, est tout le sujet de strategy-corrcube.
Niveau variante, structure de population à l’intérieur de chaque famille
À l’intérieur de chaque famille, la population de variantes.
La section précédente montrait une famille comme une seule surface de performance. Cette section ouvre chaque famille. Par famille, la batterie propriétaire de fonctions statistiques et mathématiques étend l’indicateur de base en une population structurée de variantes, divisée en deux sous-ensembles complémentaires, indicateur brut + transformation et indicateur brut + confluence. Chaque vidéo ci-dessous est un layout PCA en direct de la population de variantes d’une famille sur SOL/USDT 1H, avec des arêtes tracées entre les stratégies qui se déplacent ensemble.
Comment lire un graphe de variantes
La mécanique du graphique, explicitée :
- Nœuds = stratégies. Chaque nœud est une seule variante produite par l’expansion de la famille (côté transformation ou confluence). Rien dans le layout n’encode la construction de la variante ; seulement son comportement.
- Position = les chargements des 2 principales composantes principales de la matrice de corrélation glissante de 1 000 bougies entre chaque paire de variantes de la famille. Concrètement : à chaque frame nous formons C = corr(R_{t-999:t}) où R sont des séries d’événements d’entrée par variante, prenons ses deux vecteurs propres principaux, et plaçons chaque variante à son chargement. La fenêtre glissante est ensuite avancée d’une barre et le layout recalculé.
- Alignement de Procrustes + lissage EMA sur les chargements entre les frames. Sans cela, chaque réajustement PCA peut inverser la base et faire pivoter le nuage arbitrairement ; avec cela, le nuage dérive au lieu de sauter, et le mouvement visuel reflète un véritable changement structurel dans la variété de corrélation plutôt que des artefacts de comptabilité.
- Arêtes connectent les paires avec |ρ| ≥ 0,20. Sarcelle = positif, rouge = négatif ; l’épaisseur et l’opacité varient avec |ρ|. Le seuil est un bouton, abaissez-le et le graphe devient une pelote, élevez-le et seuls les co-mouvants les plus forts subsistent.
- Panneau latéral = trois séries temporelles suivant la cohésion de la population : AVG |ρ|, MEDIAN |ρ|, et le pourcentage de paires au-dessus du seuil. Observez-les monter pendant les phases cohérentes en régime et redescendre quand le régime se brise.
La lentille de la topologie : la matrice de corrélation de chaque frame peut être transformée en une métrique (d_ij = √(2(1−ρ_ij))), et cette métrique induit un complexe de Vietoris–Rips sur la population de variantes. Les nœuds qui s’agrègent sur le graphique correspondent à des 0-cycles qui persistent à travers les échelles de filtration ; l’apparition et la dissolution de 1-cycles suit les transitions de régime dans la famille. Le traitement par barcode de persistance de la même machinerie, sur le corpus complet plutôt qu’une seule famille, vit dans strategy-tda ; l’embedding formel PCA + UMAP utilisant un vecteur métrique de 90 features est dans strategy-manifold.
Important pour lire correctement ces graphes : le layout est une projection 2D d’une variété de corrélation de dimension bien plus élevée. Deux nœuds qui semblent proches dans la projection ne sont pas nécessairement proches dans l’espace complet ; ils sont proches le long des deux directions de plus grande variance. Les arêtes sont les gardiennes de la vérité, une arête dit que les deux variantes se co-meuvent réellement dans l’espace sous-jacent, indépendamment de leur position à l’écran.
Les scripts de rendu et d’analyse derrière ces clips vivent dans le projet interne de stratégies SOL du cabinet ; les parties propriétaires (la batterie de construction de variantes en particulier) ne sont pas dans la partie publique de la toolchain.
Toutes les familles, superposées
Le panneau combiné ci-dessus rassemble chaque variante de chaque famille visualisée, placées dans un unique layout 2D commun. Chaque famille porte une couleur. Le point n’est pas qu’une famille l’emporte, le point est que les familles occupent des régions distinctes de la variété de corrélation projetée. Les variantes de familles différentes ne se fondent pas en un seul amas ; elles restent dans leurs propres voisinages, avec de brefs chevauchements lors des croisements de régime.
Cette séparation est à quoi ressemble une haute dimensionnalité effective au niveau de la composition, et pas seulement de la corrélation moyenne. Le pool n’est pas simplement décorrélé en moyenne ; il est structurellement hétérogène. Un filtre de robustesse échantillonnant à travers les familles puise donc dans des sous-variétés véritablement différentes, plutôt que de découper un unique nuage homogène sous différents angles. C’est ce qui fait de l’évaluation au niveau de la population un problème différent de la recherche de stratégie individuelle.
En bref
« Des milliers de stratégies » n’est pas, en soi, une affirmation de recherche. C’est la taille d’un substrat d’évaluation. Le substrat est construit de façon exhaustive, déterministe, sans cherry-picking, et sa géométrie interne est dominée par une faible corrélation par paire, non par la redondance. La section de la surface 3D a montré que les huit familles de base ne sont pas la même famille huit fois. La section du graphe de variantes a montré qu’à l’intérieur d’une famille la population de variantes est elle-même structurée, et qu’entre familles les structures restent séparées. C’est cette combinaison qui fait de l’évaluation au niveau de la population un problème différent de la recherche de stratégie individuelle, et qui rend non triviaux les résultats au niveau du portefeuille de L’edge est dans le processus.
Notes du lab qui contribuent à l’analyse de cette page ou la prolongent :
- strategy-rmt, spectre de valeurs propres Marchenko–Pastur et parallel-analysis de la matrice de corrélation, la version formelle de l’histogramme ci-dessus.
- strategy-manifold, embedding PCA + UMAP de la population à partir d’un vecteur métrique de 90 features.
- strategy-tda, barcodes de persistance sur le même complexe de distance de corrélation, mais sur le corpus complet.
- strategy-corrcube, cube de corrélation glissante inter-actifs ; l’analogue au niveau des actifs de la structure au niveau des variantes montrée ici.
- strategy-stats, densité Sharpe au niveau de la population et nuage de points (μ, σ, t) ; la bibliothèque de soutien derrière les compteurs de dimension ci-dessus.
- strategy-overfitting, décomposition de la variance de l’écart Sharpe IS–OOS en biais de sélection, bruit de choix de paramètre, et résiduel.
- strategy-robust-portfolio, analyse de saturation de l’univers pour des portefeuilles tirés du même pool.
Si vous restez non convaincu, le package de reproductibilité SSRN livre chaque agrégat et chaque figure du working paper. Exécutez-le, et rappelez-vous que ce qui se reproduit est l’analyse qui opère sur le corpus, non le corpus lui-même.
L’edge est dans le processus
L’article que cette page existe pour soutenir, à quoi sert une population de stratégies, avec quatre simulations interactives et sept figures. Reproductible à partir du PnL quotidien.
Working paper, SSRN
Valeur prédictive des tests de permutation intra-stratégie pour la sélection forward. Reproduit les agrégats d’analyse, non le corpus lui-même.
Le lab
Douze M-models open-source. Ceux qui touchent le corpus le plus directement sont liés ci-dessus.

