← All Collections
🎯 9 parts

Backtesting Without Fooling Yourself

A step-by-step path from what your backtest really optimizes to proving an edge survives overfitting, multiple testing, and live execution. Read top to bottom — each part builds on the last.

  1. 01
    Conception de la fonction objectif : la métrique que vous optimisez choisit secrètement votre stratégie
    Jun 28, 2026 #algotrading

    Conception de la fonction objectif : la métrique que vous optimisez choisit secrètement votre stratégie

    Pour chercher la 'meilleure' stratégie, il faut d'abord définir 'meilleure' — et ce scalaire choisit silencieusement le gagnant. Sur des données synthétiques avec un edge connu (600 seeds, T=2000, 80 seuils), un Sharpe par trade naïf couronne une loterie : il choisit un gagnant à moins de 5% d'exposition dans 56% des seeds et dégénère dans 57% des cas — sur le seed le plus extrême, 8 trades affichent un Sharpe in-sample de 21.09 qui s'effondre à 0.13 hors échantillon. La réparation honnête est presque banale : mesurer sur la timeline complète, qui ne dégénère jamais (hors échantillon 1.71). Un shrinkage par nombre de trades (conf_k) et un plancher d'exposition peuvent réparer une métrique par trade, mais même entièrement corrigés, ils ne font qu'égaler le Sharpe pleine timeline (1.70 contre 1.71) — jamais le dépasser. La loi de Goodhart, dans un backtest, avec une vérité terrain contrôlée.

  2. 02
    Prouver l'absence de look-ahead dans les backtests multi-timeframe : perturber le futur pour prouver que le passé ne peut pas le voir
    Jul 8, 2026 #algotrading

    Prouver l'absence de look-ahead dans les backtests multi-timeframe : perturber le futur pour prouver que le passé ne peut pas le voir

    Les backtests multi-timeframe laissent fuiter le futur à travers une bougie de timeframe supérieur en cours de formation, dont la clôture finale n'existe pas encore. On ne peut pas se contenter d'une revue de code pour en avoir la certitude — il faut le tester. Nous reproduisons exactement la règle de bougie clôturée du bot live, puis prouvons l'absence de fuite avec une sonde à futur perturbé : on perturbe chaque bougie future et on vérifie que chaque signal et chaque trade passés restent identiques bit à bit. 25/25 tests de parité, et la sonde a du mordant.

  3. 03
    Walk-Forward Optimization: The Only Honest Strategy Test
    Mar 15, 2026 #algotrading

    Walk-Forward Optimization: The Only Honest Strategy Test

    Why a single train/test split does not protect against overfitting, how walk-forward optimization systematically verifies parameter robustness, and why a strategy with +3342% PnL@ML on 21 parameters is a ticking time bomb without WFO.

  4. 04
    Analyse de plateau : comment distinguer un optimum robuste de l'overfitting
    Mar 12, 2026 #algotrading

    Analyse de plateau : comment distinguer un optimum robuste de l'overfitting

    Pourquoi trouver les meilleurs paramètres d'une stratégie n'est que la moitié du travail. Comment distinguer visuellement et quantitativement un plateau stable d'un pic fragile, et pourquoi les graphiques de contour d'Optuna sont une étape obligatoire avant de lancer une stratégie optimisée en production.

  5. 05
    Bootstrap Monte Carlo : comment obtenir des intervalles de confiance pour un backtest en 10 lignes de code
    Mar 6, 2026 #algotrading

    Bootstrap Monte Carlo : comment obtenir des intervalles de confiance pour un backtest en 10 lignes de code

    Pourquoi une estimation ponctuelle issue d'un backtest est une illusion dangereuse. Comment le bootstrap Monte Carlo, en 2 secondes de calcul, vous donne un intervalle de confiance à 95 % pour le PnL et le MaxDD, et pourquoi c'est une étape obligatoire avant de lancer une stratégie en production.

  6. 06
    La Probability of Backtest Overfitting : votre recherche a-t-elle battu un pile ou face ?
    Jul 1, 2026 #algotrading

    La Probability of Backtest Overfitting : votre recherche a-t-elle battu un pile ou face ?

    Le Deflated Sharpe Ratio évalue la stratégie gagnante ; PBO évalue la recherche qui l'a choisie. Combinatorially Symmetric Cross-Validation exécute C(16,8) = 12 870 découpages train/test sur une matrice de performance 1000x200 et demande : le gagnant in-sample atterrit-il dans la moitié inférieure hors échantillon ? Le piège que presque tout le monde manque — la valeur nulle de PBO est 0.5, pas 1. Sur 200 stratégies sans edge, le meilleur Sharpe annualisé in-sample de 1.98 s'effondre à 0.06 hors échantillon et PBO = 0.476 : un pile ou face, surajustement complet. Plantez un edge réel (Sharpe annualisé 2.38) et PBO chute à 0.001, le 3.73 in-sample survivant à un 2.34 hors échantillon. Une grille de moyennes mobiles sur une marche aléatoire pure n'a pas non plus de compétence hors échantillon — PBO 0.463 en moyenne sur 60 matrices, statistiquement indiscernable du nul — et sur une matrice représentative le mirage est frappant : un meilleur Sharpe in-sample de 2.33 s'effondre à une médiane hors échantillon de -0.22, PBO 0.573, 63 % de chances de perte.

  7. 07
    Le Deflated Sharpe Ratio : combien de vos 'gagnants' de backtest survivent aux tests multiples ?
    Jun 29, 2026 #algotrading

    Le Deflated Sharpe Ratio : combien de vos 'gagnants' de backtest survivent aux tests multiples ?

    Une recherche de paramètres est une machine à fabriquer de la chance. Sur du pur bruit — 1 000 stratégies à edge réel nul — le meilleur Sharpe annualisé atteint en moyenne 1,63 et le test de significativité naïf signale une découverte 100 % du temps. Nous construisons une vérité terrain contrôlée et montrons que le Deflated Sharpe Ratio, la coupe de cheveux de Harvey-Liu et le Reality Check de White restaurent l'honnêteté : les fausses découvertes chutent de 1,000 à 0,001-0,057, les edges véritables au-dessus du plafond de bruit sont conservés avec une puissance ~1 — et un piège bien réel (les grilles corrélées) où le DSR brut sur-déflate et où le verdict doit se lire sur toute une bande d'estimations du nombre effectif d'essais, pas sur un seul chiffre.

  8. 08
    Parité backtest-live : pourquoi votre bot trade différemment du backtest
    Mar 7, 2026 #algotrading

    Parité backtest-live : pourquoi votre bot trade différemment du backtest

    Taxonomie complète des divergences entre le backtesting et le trading en direct : du slippage et des exécutions partielles à la désynchronisation du code. Modèles architecturaux pour atteindre la parité, exemples Python d'un module core partagé et une checklist de monitoring en production.

  9. 09
    L'honnete resultat negatif : des dizaines de milliers de backtests, cinq majors, aucun edge robuste
    Jul 9, 2026 #algotrading

    L'honnete resultat negatif : des dizaines de milliers de backtests, cinq majors, aucun edge robuste

    L'aboutissement de l'arc recherche-et-surapprentissage, et il se termine sur un resultat negatif — le bon. Une recherche mono-actif en double timeframe sur ETHUSDT a trouve une configuration valant +16,35 % en out-of-sample et +2,62 % sur un holdout intact ; le Deflated Sharpe Ratio, tenant compte des ~37 000 essais, l'a deflate a 0,00. Une passe cross-instrument sur cinq majors (ETH/BTC/SOL/BNB/XRP, ~1,18 M de barres 1m chacun), avec selection par la mediane out-of-sample, l'acheve pour de bon : DSR dual 0,24 / PBO 0,264, DSR triple 0,14 / PBO 0,327 — les deux echouent aux seuils. Le champion est profitable sur 1 des 5 symboles et negatif sur les autres. Voila a quoi sert l'appareillage anti-surapprentissage : vous empecher de deployer le meilleur du bruit en le prenant pour de l'alpha.