Revue de recherche · pondération d'échantillons · étude 10
Sample Uniqueness & the Sequential Bootstrap
Des labels triple-barrier qui se chevauchent partagent des rendements futurs, donc une ligne n'est pas une observation indépendante, nous mesurons à quel point cela surestime votre échantillon, confirmons que le sequential bootstrap restaure la sample uniqueness, et demandons si y remédier aide réellement le modèle
Quand vous étiquetez une barre avec une triple-barrier, le label de la barre t est décidé par la trajectoire de prix sur tout l'intervalle jusqu'à ce que la première barrière soit touchée. Deux labels dont les intervalles se chevauchent sont pilotés par certains des mêmes rendements futurs, ils ne sont donc pas indépendants, et l'hypothèse une-ligne-une-observation qui sous-tend le bootstrapping, le bagging et le comptage de taille d'échantillon est fausse. López de Prado mesure cela avec la concurrency, la sample uniqueness moyenne et l'effective sample size, et propose le sequential bootstrap pour tirer des échantillons moins redondants. Nous reproduisons tout cela sur de vraies barres dans trois marchés, puis posons la question qui compte vraiment : la correction améliore-t-elle la généralisation d'un modèle, ou seulement sa comptabilité ? Le bac à sable ci-dessous vous laisse voir l'effective sample size s'effondrer à mesure que les labels se chevauchent.
Advances in Financial ML, chap. 4
López de Prado (2018) · sample weights & uniqueness
Code & données
lopez-de-prado-work-review / projects / 15
the claim
Ce que dit López de Prado
- Un label triple-barrier se résout sur un intervalle, donc des labels aux intervalles chevauchants partagent des rendements futurs et ne sont pas IID. Traiter chaque ligne comme une observation indépendante surestime l'information que vous détenez et surajuste le bootstrapping, le bagging et le comptage de taille d'échantillon.
- La concurrency (combien de labels sont actifs à une barre), la sample uniqueness moyenne (la moyenne de 1/concurrency sur la durée de vie d'un label) et l'effective sample size (la somme de l'uniqueness, bien en deçà du nombre de lignes) quantifient le problème. Le sequential bootstrap tire des lignes en favorisant un faible chevauchement avec les lignes déjà tirées, de sorte qu'un modèle de bagging s'entraîne sur des données moins redondantes et plus uniques.
our result
Ce que nous avons observé
- Le chevauchement est sévère dans chaque marché : la sample uniqueness moyenne est de 0,44 (crypto), 0,41 (actions) et 0,41 (forex). Une médiane de ~15 000 labels par instrument ne vaut que ~6 000–6 600 observations véritablement indépendantes, l'effective N est ≈41–44 % du décompte brut.
- Le sequential bootstrap relève la uniqueness de l'échantillon tiré dans les 42 instruments sur 42 (gain médian ≈+0,016 à +0,018). L'affirmation mécanique se reproduit universellement ; le gain absolu est modeste à ce niveau de chevauchement.
- Verdict honnête : les corrections réduisent l'écart de surajustement in-sample à out-of-sample (40/42 instruments) et stabilisent les feature importances (34/42) exactement comme le prédit la théorie, mais elles n'améliorent PAS la discrimination out-of-sample (le bagging naïf gagne en log-loss dans les 42, AUC ≈0,62 naïf vs ≈0,56 corrigé). C'est un traitement de robustesse, pas un avantage de performance ; un résultat méthodologique, pas un résultat d'argent.
Le résultat en trois lignes
Chevauchement · 42 instruments
L'effective N vaut ~41–44 % du nombre de lignes
Sur 27 perps crypto, 7 ETF d'actions américaines et 8 paires majeures forex (~20 000 barres chacun), la sample uniqueness moyenne s'établit à 0,44 / 0,41 / 0,41 par marché. Une médiane de ~15 000 labels chevauchants ne porte que ~6 000–6 600 observations véritablement indépendantes. Un flux de travail qui compterait les lignes comme IID supposerait plus du double de l'information réellement présente.
Sequential bootstrap · 42/42
L'affirmation du bootstrap se reproduit partout
Un échantillon de sequential bootstrap a une sample uniqueness moyenne supérieure à un bootstrap IID standard dans chacun des 42 instruments, gain médian ≈+0,016 à +0,018. Le mécanisme est exactement comme annoncé ; le gain est modeste car, à une concurrency moyenne proche de 2,3, il n'y a qu'une certaine redondance à retirer. Chaque kernel (concurrency, uniqueness, tirage séquentiel, CUSUM, poids) est vérifié bit-à-bit identique face à une référence indépendante.
Surajustement ↓, AUC ↓
Robustesse, pas performance
Les corrections font ce que dit la théorie au niveau de l'échantillon, l'écart de surajustement se réduit dans 40/42 instruments et la stabilité de la feature importance s'améliore dans 34/42, mais la discrimination out-of-sample brute est légèrement pire : le bagging naïf a un log-loss OOS plus bas dans les 42 et un AUC plus élevé (≈0,62 vs ≈0,56). Sur ce problème d'étiquetage en série unique, la correction échange un peu de signal contre de l'honnêteté. Résultat méthodologique, aucun panier négociable.
Regardez l'effective sample size s'effondrer
Faites glisser la portée moyenne des labels. À mesure que les labels restent actifs plus longtemps, ils se chevauchent davantage, la concurrency grimpe, la sample uniqueness moyenne chute, et l'effective sample size tombe bien en deçà du nombre brut de lignes. Le second onglet oppose le sequential bootstrap au bootstrap IID standard. Les courbes sont des formes closes illustratives calées sur le run multi-marchés réel.
L'intérêt du bac à sable, c'est que la non-indépendance n'est pas un cas limite, c'est l'état générique de tout label résolu par intervalle, et il croît en douceur avec le temps que met le label à se résoudre. Au point de fonctionnement réaliste (une portée moyenne de ~3 barres sur une horloge d'événements CUSUM), la concurrency moyenne est ≈2,3 et la sample uniqueness moyenne ≈0,44, donc l'effective sample size vaut moins de la moitié du nombre de lignes. Élargissez les barrières et allongez les holds et l'uniqueness chute de façon monotone vers zéro, exactement comme le montre la figure dose-réponse. C'est une illustration mécanique d'un effet de comptabilité de l'information, pas un signal négociable.
Démo, chevauchement, uniqueness & le sequential bootstrap
Faites glisser l'horizon des labels pour étirer chaque portée triple-barrier le long de la timeline. Les portées qui se chevauchent partagent des rendements futurs, donc le poids de uniqueness de chaque label (la moyenne de 1/concurrency sur sa durée de vie) baisse. Tirez ensuite un échantillon bootstrap un label à la fois : le tirage sequential s'écarte des labels qui chevauchent ce qu'il détient déjà, donc sa uniqueness moyenne s'élève au-dessus du bootstrap IID naïf. Une illustration mécanique d'un effet de comptabilité de l'information, pas un signal négociable.
combien de barres un label triple-barrier reste actif avant son premier contact ; des barrières plus larges et des holds plus longs la poussent vers le haut
La sample uniqueness moyenne est la moyenne de 1/concurrency sur la durée de vie d'un label : un label le plus souvent seul obtient un score proche de 1, un label enseveli sous le chevauchement obtient un score proche de 0. Sommer l'uniqueness sur tous les labels donne l'effective sample size, le nombre d'observations véritablement indépendantes, qui se situe bien en deçà du nombre brut de lignes. Compter les lignes comme si elles étaient indépendantes surestime la quantité d'information que vous détenez réellement.
Le chevauchement est sévère et l'effective sample size s'effondre
Sur chaque instrument des trois marchés, la sample uniqueness moyenne s'établit entre 0,40 et 0,49. Le contenu informationnel des labels représente environ 41 à 44 pour cent de ce qu'implique le décompte brut de lignes. Un flux de travail naïf qui traiterait 15 000 labels chevauchants comme 15 000 observations indépendantes supposerait plus du double de l'information réellement présente.
L'effective sample size est la somme de la sample uniqueness moyenne sur les labels, une médiane de ≈15 000 labels par instrument ne vaut que ≈6 000–6 600 observations véritablement indépendantes. L'effet est légèrement pire en actions et en forex qu'en crypto, suivant leur concurrency moyenne marginalement plus élevée.
La moitié de votre échantillon est comptée deux fois
Tracer l'effective sample size face au nombre brut de lignes rend le coût concret : chaque marché se situe à environ 41 à 44 pour cent de la diagonale. Un instrument à médiane ≈15 000 labels ne porte que ≈6 000–6 600 observations indépendantes. Les actions et le forex se situent marginalement en dessous de la crypto, suivant leur concurrency moyenne légèrement plus élevée. Tout calcul de taille d'échantillon, d'intervalle de confiance ou de bootstrap qui compte les lignes comme IID se trompe de plus d'un facteur deux.
Des barrières plus larges aggravent les choses
Le chevauchement est piloté par la longueur de l'intervalle. Élargir les barrières allonge les intervalles de holding, augmente la concurrency et pousse la sample uniqueness moyenne de façon monotone vers le bas dans chaque marché : doubler la largeur de barrière réduit à peu près de moitié l'uniqueness (≈0,44 → ≈0,20), et la doubler encore la ramène à ≈0,07. Quelle que soit la conception du label, la leçon est la même, plus un label met de temps à se résoudre, moins il est indépendant.
Le sequential bootstrap relève la uniqueness, comme annoncé
Dans les 42 instruments sur 42 sans exception, un échantillon de sequential bootstrap a une sample uniqueness moyenne supérieure à un échantillon de bootstrap IID standard. Le gain médian est d'environ +0,016 à +0,018 en termes d'uniqueness. L'affirmation mécanique se reproduit proprement et universellement. La taille absolue du gain est modeste ici car, à une concurrency moyenne proche de 2,3, il n'y a qu'une certaine redondance à retirer, mais la direction ne faillit jamais.
Cela aide-t-il le modèle ? Robustesse, pas discrimination
C'est ici que le résultat est plus intéressant que le manuel. L'ensemble corrigé, des bags de sequential bootstrap mises à l'échelle de la uniqueness moyenne, des arbres pondérés par attribution de rendement, fait exactement ce que dit la théorie au niveau de l'échantillon. L'écart de log-loss in-sample à out-of-sample se réduit dans 40 instruments sur 42, et la stabilité inter-folds de la feature importance s'améliore dans 34 sur 42. Le modèle généralise plus près de la façon dont il s'entraîne et s'explique de manière plus reproductible.
Mais la discrimination out-of-sample brute est légèrement pire : le bagging naïf avait un log-loss out-of-sample plus bas dans les 42 instruments, et un AUC plus élevé en moyenne (environ 0,62 naïf contre 0,56 corrigé). Des bags plus petites, mises à l'échelle de l'uniqueness et repondérées voient moins de données effectives, donc l'ensemble corrigé capte un peu moins de signal. Sur ce problème d'étiquetage en série unique à signal faible, la correction est un traitement de robustesse et d'honnêteté, pas un gain de performance gratuit.
Et l'auto-explication du modèle se stabilise
La seconde moitié de l'histoire de robustesse, c'est la reproductibilité. La corrélation de rang inter-folds des feature importances est plus élevée avec les corrections dans 34 instruments sur 42, le plus fortement en crypto et en forex, de sorte que le compte rendu du modèle sur pourquoi il prédit ce qu'il prédit est plus stable d'un fold à l'autre. Retirer les observations redondantes et surcomptées empêche une poignée de lignes répétées de dominer un classement d'importance. C'est la même leçon que l'écart de surajustement : les corrections achètent de l'honnêteté et de la stabilité, pas une discrimination supplémentaire.
De la uniqueness à la deflation : la pénalité honnête de false-discovery
Le bénéfice en aval pour le modèle était nuancé, mais la sample uniqueness a un gain sans ambiguïté et quantitatif, elle corrige le décompte que vous injectez dans un test de significativité. La confiance d'un Sharpe ratio dépend du nombre d'observations indépendantesqui le sous-tendent. Injectez le décompte brut de lignes et vous prétendez détenir plus du double des preuves réelles ; la statistique de test, son erreur-type et toute deflation pour tests multiples ressortent alors toutes flatteuses.
En fixant le Sharpe par observation à 0,025 et en gardant les selection trials constants, la seule chose qui varie entre les deux colonnes ci-dessous est la taille d'échantillon. Traiter ~15 000 labels chevauchants comme indépendants surestime la statistique de significativité du Sharpe d'environ 1,50× à 1,57× et élargit l'erreur-type du Sharpe du même facteur. Le Deflated Sharpe Ratio chute d'environ 0,07, assez pour faire passer une stratégie limite d'acceptable à marginale. Utiliser l'effective sample size, la somme de la uniqueness des labels, environ 41 à 44 pour cent de N, est tout simplement le décompte honnête.
C'est le pont entre le chapitre sur le labelling et celui sur la deflation : la uniqueness compte pour le décompte des trials et le contrôle du false-discovery, pas pour la précision out-of-sample brute. La longueur minimale de track record pour franchir 95 pour cent de Sharpe probabiliste à ce niveau est de ≈4 331 observations indépendantes, un seuil fixe ; un track qui paraît assez long sur un décompte de lignes peut donc rester insuffisant sur le décompte honnête.
| marché | N nominal | N effective | SE inflation | DSR nominal | DSR effective | baisse DSR |
|---|---|---|---|---|---|---|
| crypto | 14,986 | 6,639 | 1.50× | 0.720 | 0.651 | −0.069 |
| actions | 14,742 | 6,111 | 1.55× | 0.718 | 0.645 | −0.073 |
| forex | 14,892 | 6,070 | 1.57× | 0.719 | 0.645 | −0.075 |
Sharpe par observation fixé à 0,025 ; selection trials et variance du Sharpe des trials maintenus constants, rendements gaussiens, seule la taille d'échantillon varie entre les colonnes nominal et effective. La SE inflation est le rapport entre l'erreur-type du Sharpe sur le décompte nominal et sur le décompte effective (identique à la surestimation de la statistique de significativité) ; la chute du DSR est la baisse du Deflated Sharpe Ratio lorsqu'on utilise le décompte effective honnête.
Détail par marché et par instrument
Les chiffres, par marché et par instrument
| marché | instruments | N médian | uniqueness | effective N | effN / N | gain séq | écart naïf | écart corr. |
|---|---|---|---|---|---|---|---|---|
| crypto | 27 | 14,986 | 0.443 | 6,645 | 44.3% | +0.016 | 0.0111 | 0.0071 |
| actions | 7 | 14,742 | 0.415 | 6,114 | 41.5% | +0.018 | 0.0163 | 0.0107 |
| forex | 8 | 14,892 | 0.408 | 6,048 | 40.8% | +0.017 | 0.0116 | 0.0080 |
Médianes par marché. La sample uniqueness moyenne égale le ratio d'effective-N par construction (effN = Σ uniqueness). Le gain du sequential bootstrap est la médiane de (séquentiel − standard) de l'uniqueness de l'échantillon tiré ; l'écart de surajustement est la médiane de l'écart de log-loss in-sample à out-of-sample, naïf vs corrigé.
| marché | instrument | uniqueness | effective N | concurrency | gain séq | AUC naïf | AUC corr. |
|---|---|---|---|---|---|---|---|
| crypto | BTCUSDT | 0.450 | 6,795 | 2.27 | +0.014 | 0.607 | 0.557 |
| crypto | ETHUSDT | 0.452 | 6,770 | 2.25 | +0.015 | 0.613 | 0.568 |
| crypto | SOLUSDT | 0.447 | 6,766 | 2.29 | +0.016 | 0.615 | 0.565 |
| actions | SPY | 0.485 | 7,198 | 2.17 | +0.023 | 0.691 | 0.652 |
| actions | QQQ | 0.490 | 7,220 | 2.14 | +0.022 | 0.686 | 0.651 |
| actions | XLK | 0.399 | 5,851 | 2.74 | +0.018 | 0.590 | 0.517 |
| forex | EURUSD | 0.406 | 6,030 | 2.57 | +0.015 | 0.592 | 0.532 |
| forex | GBPUSD | 0.405 | 6,029 | 2.60 | +0.019 | 0.592 | 0.535 |
| forex | USDJPY | 0.399 | 5,922 | 2.64 | +0.018 | 0.595 | 0.531 |
Instruments représentatifs dans les trois marchés (détail complet par instrument dans le dépôt). La concurrency est le nombre moyen de labels actifs à une barre ; l'AUC est out-of-sample, naïf vs corrigé.
Méthode
- Données, réelles uniquement, historique complet disponible par instrument : 27 contrats perpétuels Binance margés en USD (barres de base 1 minute agrégées en dollar bars), 7 ETF d'actions américaines liquides (SPY, QQQ, IWM, XLK, XLF, XLE, XLV ; dollar bars en heures de négociation régulières), et 8 paires majeures forex (tick bars, puisque le FX au comptant n'a pas de volume négocié). Chaque instrument est réduit à ~20 000 barres pour que les marchés soient comparés sur un pied d'égalité.
- Les événements sont échantillonnés avec un filtre CUSUM symétrique (un label se déclenche dès que le log-rendement absolu cumulé depuis le dernier événement franchit un seuil mis à l'échelle de la volatilité). Chaque événement est étiqueté avec une triple-barrier utilisant le high/low intrabar complet, jamais close-only, de sorte que l'intervalle de premier contact [t0, t1] est la vraie portée de holding. Le label binaire est de savoir si le rendement brut signé du côté au premier contact était positif.
- Tout est causal : le label de la barre t0 se résout en avançant dans le temps mais est attribué à t0 avec son vrai intervalle, et chaque feature à t0 n'utilise que l'information disponible à t0 ou avant.
- Comptabilité de l'information : la concurrency c_t est le nombre de labels actifs à la barre t ; la sample uniqueness moyenne d'un label est la moyenne de 1/c_t sur son intervalle ; l'effective sample size est la somme de la sample uniqueness moyenne sur tous les labels. Le balayage de largeur de barrière élargit les barrières et remesure l'uniqueness et la concurrency.
- Question du modèle : des arbres de décision en bagging sous purged k-fold cross-validation avec un embargo, de sorte qu'aucun label d'entraînement ne fuite dans un fold de test. Naïf = bagging IID standard, bags pleine taille, arbres non pondérés. Corrigé = chaque bag tirée par le sequential bootstrap, taille de bag mise à l'échelle de la sample uniqueness moyenne, et arbres pondérés par des poids d'échantillon d'attribution de rendement. Nous notons le log-loss et l'AUC out-of-sample, l'écart de log-loss in-sample à out-of-sample, et la stabilité inter-folds de la feature importance.
- Vérification : le scan de concurrency, le scan de sample uniqueness moyenne, le filtre CUSUM et le tirage de sequential bootstrap sont compilés en Numba et chacun est bit-à-bit identique face à une référence indépendante en Python pur (max |Δ| = 0). Le sequential bootstrap utilise une formulation incrémentale qui reproduit exactement la séquence de tirage de la version quadratique du manuel tout en gardant le pic mémoire sous 3 Go ; deux vérifications synthétiques en forme close (intervalles unitaires disjoints → uniqueness 1 ; N intervalles identiques → uniqueness 1/N) valident l'estimateur et ne sont jamais rapportées comme résultats.
Notes & évaluation honnête
Il s'agit d'une contribution méthodologique, pas d'un résultat « la pondération de labels rapporte de l'argent », et c'est cadré ainsi de bout en bout. L'effet de comptabilité de l'information est réel et se reproduit partout : des labels chevauchants portent moins de la moitié de l'information indépendante que suggère leur décompte, et le sequential bootstrap relève de manière fiable la sample uniqueness. Le bénéfice en aval pour le modèle est plus nuancé et mérite d'être énoncé clairement. Les corrections non-IID réduisent le surajustement et stabilisent les feature importances, mais elles n'améliorent pas la discrimination out-of-sample sur ce problème d'étiquetage de direction en série unique ; elles la réduisent légèrement. Les corrections se comprennent au mieux comme un traitement de robustesse et d'honnêteté, pas comme un propulseur de performance. L'étude quantifie un effet de comptabilité de l'information et ses conséquences, et elle ne revendique pas d'avantage négociable.
Reproductibilité
Les scans de concurrency et d'uniqueness, le filtre CUSUM, le sequential bootstrap, la comparaison d'ensembles en bagging, les figures et le harnais de vérification sont rassemblés dans le project 15 de lopez-de-prado-work-review. Le bac à sable de cette page est autonome : les formes closes des relations d'uniqueness, d'effective-N et de sequential bootstrap sont encodées dans le composant et calées sur les points d'ancrage du run, de sorte que le mécanisme qu'il illustre se reproduit exactement à chaque chargement.
Citer
Références
Les sources primaires de la méthode passée en revue ici :
- López de Prado, M. (2018). Advances in Financial Machine Learning. Wiley. (Chapter 4, “Sample Weights”, and Chapter 7, “Cross-Validation in Finance”.)
- López de Prado, M. (2020). Machine Learning for Asset Managers. Cambridge Elements in Quantitative Finance.
- Breiman, L. (1996). Bagging Predictors. Machine Learning, 24(2), 123–140.
- Politis, D. N., & Romano, J. P. (1994). The Stationary Bootstrap. Journal of the American Statistical Association, 89(428), 1303–1313.
Voir aussi
L'étude compagnon sur la déflation pour tests multiples est Backtest Overfitting & the Deflated Sharpe Ratio, la critique du graphe causal est Causal Factor Investing, le thème de la discipline de sélection parcourt The edge is in the process, et l'ensemble plus large des travaux se trouve dans Research.

