Un backtest qui rend +40 % sur six ans ne prouve rien. Le marché lui-même a
peut-être fait +200 % sur la période. La seule question qui compte est de savoir
si votre règle fait mieux qu'un tirage au sort soumis aux mêmes contraintes.
Le témoin doit avoir la même densité
L'erreur classique est de comparer sa stratégie à « acheter et conserver ». Ce
n'est pas un témoin valable : elle n'a ni le même nombre de positions, ni les
mêmes durées, ni la même exposition.
Le bon témoin tire ses entrées au hasard, mais reproduit exactement le reste :
def temoin_aleatoire(dates_possibles, n_signaux, jours_detention, rng):
entrees = rng.choice(dates_possibles, size=n_signaux, replace=False)
return [(d, d + jours_detention) for d in entrees]
On répète ce tirage 1 000 fois, on calcule l'espérance de chaque tirage, et on
regarde où tombe la stratégie réelle dans cette distribution.
Lire le résultat
La p-valeur est la proportion de tirages aléatoires qui font aussi bien ou mieux
que la stratégie. Si 3 tirages sur 1 000 la battent, p = 0,003.
Sur mes deux moteurs directionnels retenus, la barre était fixée avant de
regarder : au moins 60 signaux, espérance positive, p < 0,05, et au moins
4 années positives. Un moteur qui échoue à un seul de ces critères est écarté,
même s'il « a l'air » bon.
Fixer la barre avant est ce qui distingue une mesure d'une justification.
Le piège qui reste
Un test de permutation ne protège pas du surapprentissage. Si vous avez essayé
200 variantes de paramètres et gardé la meilleure, votre p-valeur est fausse :
avec 200 essais, obtenir p < 0,05 par pur hasard est presque certain.
La parade est la validation walk-forward : on optimise sur une fenêtre, on
teste sur la suivante, jamais vue, et on avance. Ce qui survit à ça a une chance
d'exister en dehors du tableur.
Le filtre le plus rentable de mon système n'est d'ailleurs pas une règle
d'entrée : c'est une règle d'abstention. Il coupe les moteurs directionnels
42 % du temps. Sans lui, la stratégie n'est positive que 4 années
sur 7 ; avec lui, aucune année perdante sur 6 ans.
Ce billet documente un projet réel : un bot de signaux crypto entièrement automatisé, dont le code, les backtests et les résultats — gagnants comme perdants — sont publics. Le détail est sur le site, et les signaux sont publiés en clair sur un canal Telegram ouvert.













