Validation de backtests · Recherche quantitative
CopyTradeAudit
Un moteur de backtest conçu pour casser ses propres résultats — et le résultat négatif honnête qu'il a produit.
- Python
- FastAPI
- pytest
- SQLite
- uv
Le problème
Beaucoup de produits vendent la même idée : les marchés prédictifs publient chaque transaction, certains traders sont régulièrement gagnants, donc suivez-les et gagnez. Une idée facile à tester par backtest, et tout aussi facile à mal tester : il suffit d'une fuite d'information future, ou de cinquante marchés corrélés comptés comme cinquante observations indépendantes, pour que le résultat paraisse excellent sans rien signifier.
Pour qui
Toute personne dont la décision repose sur un backtest : une stratégie sur le point de passer en réel, l'historique d'un prestataire, un chiffre trop beau pour être discuté.
Ce que ça fait
Un noyau de recherche déterministe en Python — environ 3 500 lignes couvertes par 103 tests — évalué sur 370 marchés, 134 000 transactions réelles et 46 événements indépendants. Le verdict : aucun avantage mesurable. Les transactions sélectionnées par copie ont rapporté +0,0200 par action au-dessus de la bande de prix 0,95, tandis qu'acheter cette même bande à l'aveugle, sans aucun trader, en rapportait +0,0211.
Décisions clés
- Étanche aux fuites par construction : à chaque signal, la compétence d'un trader n'est calculée qu'à partir des marchés déjà dénoués à cet instant — jamais à partir de ce qui s'est produit ensuite.
- Intervalles bootstrap groupés par événement, pour que cinquante marchés corrélés au sein d'un même événement comptent pour une observation et non cinquante.
- Exécution simulée sur un vrai carnet d'ordres, avec frais, slippage et exécutions partielles, au lieu de supposer un remplissage au point médian.
- Le résultat négatif a été publié plutôt que le résultat flatteur, et une stratégie a été marquée INCONCLUSIVE parce que c'est la mesure — et non le modèle — qui s'est révélée défaillante.
Ce que j'ai appris
J'ai trouvé quatre bugs dans ma propre méthodologie, chacun ayant déjà fabriqué un faux positif convaincant — dont une stratégie affichant 100 % de réussite sur 36 transactions, alors que son avantage réel sur une entrée à l'aveugle était de 0,8 %. Classer les traders par taux de réussite ne révèle pas le talent : cela révèle ceux qui achètent des quasi-certitudes à 98 cents. Une réponse fausse et assurée coûte plus cher que pas de réponse du tout.
La suite
Transformer les contrôles de fuite et de corrélation en un banc d'essai que l'on peut pointer sur le backtest de quelqu'un d'autre, afin d'appliquer la même rigueur à une stratégie que je n'ai pas écrite.
Sur le papier uniquement — aucune exécution en réel, aucun argent réel, et c'est délibéré.