Un guide du trader indépendant : le protocole de backtest et le dimensionnement valent le détour, le reste parle d'actions, pas de crypto.
Pourquoi ce livre
Ernest P. Chan, ancien chercheur chez IBM et en fonds quantitatifs, s'est mis à son compte début 2006 (leçon 43). Sa thèse : un particulier peut battre les gros fonds, avec une discipline statistique et un risque contenu. Le livre est une 2e édition Wiley (2021), lue en version cours ExpertEdge : 51 leçons, 4 h 16. Son mot clé est le backtest : rejouer une stratégie sur les prix du passé pour voir ce qu'elle aurait rapporté. Presque tout tourne autour de sa fiabilité.
Je fais de l'algotrading crypto en Python à titre perso : des robots qui tournent 24 h sur 24, avec gestion du risque : stop-loss (vente automatique quand le prix passe sous un seuil), trailing stop (un seuil qui suit le prix à la hausse) et calcul de la taille des positions (le dimensionnement). En parallèle, quatre ans de fintech crypto en Go, dont deux à écrire des algorithmes de trading automatisé pour des mandats de gestion multi-exchange, avec cinq exchanges (plateformes d'échange de cryptomonnaies) à connecter. L'industrialisation, je la connais. Je voulais voir ce que le livre dit pour savoir qu'un robot gagne vraiment, et pas seulement sur le papier.
Les idées qui restent
1Petit capital, grand avantage
Pourquoi un particulier gagnerait-il contre un fonds de milliards ? À cause de la capacité, le capital sur lequel une stratégie garde de bons rendements. Pour Chan, « il est bien, bien plus facile d'obtenir un ratio de Sharpe élevé avec un compte de 100 000 dollars qu'avec un compte de 100 millions » (leçon 43). Le ratio de Sharpe est le rendement moyen au-dessus du taux sans risque (ce que rapporte un placement sans danger), divisé par la volatilité (l'ampleur des variations des rendements) : 10 % de rendement au-dessus de ce taux, avec 10 % de volatilité, donne 1.
Le mécanisme : les stratégies à faible capacité jouent les teneurs de marché, elles proposent d'acheter et de vendre à tout moment (c'est la liquidité) et empochent un petit écart. Avec des milliards, on devient celui qui réclame cette liquidité, donc celui qui paie, donc on garde ses positions longtemps et on subit les changements de régime (une bascule durable de l'environnement économique ou des règles du marché).
2Le test de la troncature contre le look-ahead
Le look-ahead bias est une triche involontaire du backtest : utiliser une information qui n'existait pas encore à l'instant du trade. Exemple du livre : « acheter à moins de 1 % du plus bas du jour », alors que ce plus bas n'est connu qu'à la clôture.
Le test de Chan : sauvegarder les positions sur tout l'historique (A), retirer les N derniers jours (10 à 100), relancer (B), couper les N dernières lignes de A et comparer. Un écart prouve que le programme se sert du futur : « les écarts de positions signifient que vous utilisez, sans le vouloir, la partie tronquée de l'historique » (leçon 15).
# Ma version minimale, pas celle du livre
positions_a = strategie(prix) # historique complet
positions_b = strategie(prix.iloc[:-60]) # sans les 60 derniers jours
assert positions_a.iloc[:-60].equals(positions_b), "look-ahead : le futur a fuité"
À brancher comme test de non-régression dans une intégration continue.
Une limite à connaître, que j'ajoute au livre : ce test attrape un programme qui lit les jours suivants, pas une décision prise avec la bougie du jour même. L'exemple du plus bas du jour lui échappe, puisque ce plus bas existe déjà dans les deux historiques. Pour ce cas-là, il faut décaler le signal d'une période (signal.shift(1) en pandas) : on décide aujourd'hui avec les données d'hier.
3Cinq paramètres, et assez de données
Le data-snooping bias consiste à sur-optimiser une stratégie sur le bruit du passé. Avec 100 paramètres, l'historique devient magnifique et le futur médiocre. Chan donne une règle : « je n'emploierais pas plus de cinq paramètres », seuils d'entrée et de sortie, durée de détention et fenêtre de moyenne mobile (la moyenne des derniers prix) compris (leçon 15). Pour vérifier sans se leurrer, Chan coupe l'historique : on règle sur la première partie (l'entraînement), puis on teste sur la seconde, jamais vue (le test).
Il faut aussi assez de points. Le Sharpe de backtest se mesure sur le passé, le vrai Sharpe est celui que la stratégie aura en réel. D'après Bailey, pour être sûr à 95 % que le vrai Sharpe dépasse 0, un Sharpe de backtest de 1 demande 681 points (2,71 ans à raison d'un cours de clôture par jour), un Sharpe de 2 seulement 174. Pour un vrai Sharpe d'au moins 1, il faut 1,5 en backtest et 2 739 points (près de 11 ans). Je ne les transposerais pas à d'autres fréquences sans refaire le calcul.
4Le risque mange la croissance
Un titre monte ou baisse de 1 % chaque minute, à pile ou face. Gagne-t-on, perd-on ? Les traders répondent « plat », écrit Chan, ce qui est faux : on perd 0,005 % par minute (leçon 28). Après +1 % puis -1 %, 100 devient 101 puis 99,99 : la croissance composée (celle d'un capital recalculé à chaque période) vaut le rendement moyen moins la moitié de la variance (le carré de la volatilité). Conclusion du livre : « le risque diminue toujours le taux de croissance à long terme ».
Le critère de Kelly est le levier (taille du portefeuille divisée par le capital propre) qui maximise cette croissance : le rendement moyen au-dessus du taux sans risque, divisé par la variance. Exemple : SPY, le fonds qui suit le S&P 500, rapporte 7,231 % de plus que le taux sans risque pour 16,91 % de volatilité. Kelly dit 2,528 : avec 100 000 dollars on en achète 252 800, pour 13,14 % de croissance annuelle contre 9,8 % sans levier.
Kelly se recalcule à la fin de chaque jour. Après une perte de 10 %, le portefeuille de 252 800 vaut 227 520 : il reste 74 720 de capital propre, le reste est emprunté. Kelly vise alors 2,528 fois 74 720, soit 188 892 : il faut vendre 38 628 de titres en pleine baisse. La plupart des traders prennent donc la moitié (demi-Kelly), car il est « toujours plus sûr d'avoir un levier inférieur à celui que recommande la formule de Kelly » (leçon 28).
5Plafonner le levier par la pire perte
Kelly suppose que les rendements suivent une courbe en cloche (loi normale), où les très gros écarts sont quasi impossibles, or les krachs sont bien plus fréquents. D'où la règle : « le levier à utiliser est toujours le plus petit entre le demi-Kelly et le levier maximal obtenu avec la pire perte historique » (leçon 29). Le S&P 500 a perdu 20,47 % en un jour, le 19 octobre 1987. Si vous tolérez 20 % de perte en un jour, le levier maximal est 20 % divisé par 20,47 %, soit environ 1. Le demi-Kelly donne 2,528 divisé par 2, soit 1,26 : on retient le plus petit, 1.
Vendre à perte a un effet collectif : en janvier 2021, Melvin Capital a perdu 53 % sur GameStop, et chaque fonds qui se désendette fait baisser les positions des autres. Pour Chan, la plupart des désastres viennent du surendettement, « pas d'un modèle intrinsèquement faux » (leçon 31). Sa consigne : ne succomber ni au désespoir ni à la cupidité.
6Le stop-loss ne sert que dans une tendance
Celle-ci m'a fait lever un sourcil. Pour Chan, « croire qu'un stop-loss évite les pertes catastrophiques est une erreur courante » (leçon 29). En cas de gap (un prix qui saute d'un niveau à un autre sans passer entre les deux), l'ordre est exécuté bien plus bas, et le stop ne fait que réaliser la perte.
Il distingue deux régimes. En momentum (le mouvement se poursuit), le stop aide. En mean reversion (le prix revient vers sa moyenne), le stop vous fait sortir « au pire moment » (leçon 37). Son critère : un mouvement avec des nouvelles est probablement une tendance, un mouvement sans raison apparente vient souvent d'un gros détenteur qui doit vendre, et le prix reviendra.
Autre argument : un stop fixe est « un paramètre ajustable de plus, qui invite au data-snooping » (leçon 37). Chan sort plutôt quand le signal d'entrée s'inverse : en momentum, c'est le signe que la tendance a tourné.
En retour à la moyenne, il table sur la demi-vie, le temps attendu pour que l'écart revienne à la moitié, comme durée de détention probable. Exemple : environ 10 jours pour GLD (fonds de l'or) contre GDX (fonds des mines d'or). Pris seul, un prix s'éloigne de plus en plus de son départ. Mais acheter 1 part de GLD et vendre 1,631 part de GDX donne un portefeuille qui reste autour de sa moyenne : on dit que ces deux prix sont cointégrés (leçons 35 et 37).
7Du backtest au réel : le papier d'abord
Le paper trading, un compte fictif chez le courtier, est selon Chan « pratiquement le seul moyen de voir si votre logiciel a des bugs sans perdre beaucoup d'argent réel » (leçon 26). On compare ses trades à ceux du backtest rejoué sur les mêmes jours : tout écart non expliqué par les coûts signale probablement un bug.
Quand le réel déçoit, l'ordre de diagnostic : bugs, trades différents du backtest, coûts d'exécution, titres illiquides. Restent les deux causes redoutées, le data-snooping (supprimez des règles et des paramètres : si la performance s'effondre, le biais est là) et le changement de régime. Face au doute, mieux vaut réduire progressivement le levier d'un modèle qui perd que l'éteindre d'un coup (leçon 30). Le semi-automatique (un programme prépare la liste d'ordres, vous l'envoyez ensuite via l'outil de votre courtier) garde un avantage : relire les ordres avant l'envoi, le cas Knight Capital en tête, qui a perdu 440 millions de dollars à cause d'un programme d'ordres automatiques défaillant (leçon 23).
Mon avis, honnêtement
Le livre ne parle pas de mon terrain. Ses exemples sont des actions, des ETF (fonds cotés qui suivent un indice) et des futures (contrats d'achat ou de vente à date fixe), avec un cours de clôture par jour, presque jamais de crypto (une seule mention, dans une liste de plateformes) ni de marché continu. Son industrialisation vise un particulier : liens Excel, envoi d'ordres par lots via le courtier, consultant à l'heure. C'est très en deçà de la connexion à plusieurs exchanges, et je saute ces leçons sans remords. Le code est écrit trois fois, MATLAB, Python et R, et le Python est daté (fillna(method='ffill')).
Dans l'exemple GLD/GDX, le commentaire annonce un Sharpe d'entraînement d'« environ 2,3 » alors que la sortie MATLAB affiche 2,08. Autre défaut : après avoir déclaré la stratégie sans biais, Chan resserre les seuils, voit les Sharpe monter à 2,9 (entraînement) et 3,0 (test) et conclut : « clairement, cet ensemble de seuils est meilleur » (leçon 15). Il choisit donc ses réglages après avoir regardé le test, ce que sa propre règle déconseille, même s'il prévient ensuite que l'optimisation peut dégrader le test.
Je garde le solide : le test de troncature, les cinq paramètres, le plafond de levier, et l'aveu de l'auteur, qui a fait perdre plus d'un million de dollars à ses investisseurs en ajoutant 100 millions à une stratégie vieille de six mois (leçon 30). Sur le stop-loss, je ne suis pas converti : un marché continu a moins de gaps qu'une action fermée la nuit, et seul un test sur des données crypto dira si la thèse tient. Mon verdict, 6,0 sur 10 : lisez les leçons 15, 28 à 31 et 37, survolez le reste.
Odilon
Toujours valable en 2026 ?
Les principes, oui : le protocole et le dimensionnement ne dépendent pas d'une technologie. L'univers (actions américaines, MATLAB, liens Excel) a vieilli.
Pour qui ?
Lisez-le si
- Vous écrivez des robots de trading et voulez un protocole pour savoir s'ils gagnent vraiment.
- Vous réglez la taille de vos positions au feeling et voulez une formule.
- Vous aimez qu'un auteur avoue ses propres erreurs chiffrées.
Passez si
- Vous cherchez du trading crypto ou du 24/7 : le livre n'en parle quasiment pas.
- Vous voulez de l'architecture de production ou de l'exécution multi-exchange : c'est du niveau particulier.
Ce livre fait partie d'ExpertEdge, l'abonnement aux livres techniques de Packt. Le code ODILON50 donne 50 % de remise sur l'abonnement annuel : le livre sur ExpertEdge. Lien affilié : je touche une commission si vous vous abonnez avec ce code, et mes notes n'en dépendent pas.
Pour aller plus loin
- La fiche TDD by Example de Kent Beck : le test avant le code, même réflexe de vérifier avant de faire confiance.
- La fiche Designing Data-Intensive Applications de Martin Kleppmann : la fiabilité des systèmes de données, côté infrastructure.
- La fiche Building Full Stack DeFi Applications de Samuel Zhou : l'autre côté de la crypto, quand le programme est la place de marché.
Source : version cours ExpertEdge (2e édition Wiley 2021), leçons 3, 15, 23 à 26, 28 à 31 et 37 lues en détail, le reste survolé ou non lu (passages cités des leçons 35 et 43 vérifiés dans le texte).
Commentaires (0)