Magazine Entreprise

Backtests: determiner l'univers des solutions

Publié le 08 mars 2017 par Lionelo @investirblog
algorithme de trading overfittingLorsque l'on se lance dans la réalisation d'un algorithme de trading, la première étape est de procéder à un backtest. Un backtest est un programme qui permet de simuler le comportement qu'un algorithme aurait eu dans le passé. Un backtest permet de répondre à al question: si j'avais fait tourner mon algorithme en 2016, en 2015 ou en 2008, que m'aurais-t-il apporté ?
Note: J'utilise le framework PyalgoTrade pour exécuter mes backtests.
Lorsque on souhaite optimiser un algorithme, il est tentant de le construire en maximisant le rendement des backtests sur la période d’intérêt. Mais attention, si la performance d'un backtest est indicative, il est déconseillé de choisir des paramètres uniquement selon ce critère, car en se faisant on adapte son algorithme à une période dans le passé sans le préparer pour les conditions qui prévaudrons dans le futur. On parle d'overfitting.
Il est souvent conseillé de procéder à des cross-validations pour éviter cet écueil. Mais avant d'en arriver là, il y a un test qui est rarement évoqué, qui consiste à comparer le backtest de l'algorithme avec un backtest complétement aléatoire, et inversement de comparer l'algorithme avec un algorithme qui aurait une connaissance parfaite et absolue du futur.
Ces deux tests sont purement théoriques, mais ils permettent de répondre aux questions suivantes:
  • Quelle est la performance maximale théorique avec les contraintes et modalités (fréquence, nombre d'actifs évalués, nombre d'actifs détenus, stop loss, coût de transaction...) de mon algorithme ?
  • Comment mon algorithme se compare avec un algorithme similaire mais qui choisit ses trades complétement au hasard ?

Résultat du test avec mon algorithme de trading


Je m'attache à tester la performance absolue et théorique d'un algorithme de trading qui suit les modalités suivantes:
  • Sélectionne tous les mois à date fixe 3 etf parmi 15 alternatives.
  • Les trois titres sont équi-pondérés et sont détenus pendant un mois complet date à date.
  • Cet algorithme est testé pendant 4 ans roulants de 2013 à 2017.
Selon ces modalités, un algorithme qui aurait une connaissance parfaite et absolue du future aurait la performance suivante:
backtest etf performance absolueCe dispositif hypothétique aurait multiplié par 19 fois (oui fois +1 800%) soit 109% par an. On est très clairement dans une croissance exponentielle.
Et inversent sur une cinquantaine de tests d'algorithmes aléatoires, on mesure une moyenne de performance de 38% en 4 ans. Pour donner une idée de ce que cela représente, un algorithme aléatoire aurait rapporté plus qu'un buy & hold sur le CAC 40.
Cette performance des algorithme totalement naifs est particulièrement surprenante. Actuellement d'ailleurs, la meilleure performance que j'ai obtenue sur un backtest est inférieure au meilleur résultat aléatoire que j'ai obtenu. Mon meilleur algorithme se situe à peine dans le 97eme percentile des résultats aléatoires
De manière générale, Ceci illustre deux points importants:
  • Il est très difficile au sens statistique de distinguer entre un résultat obtenu par chance et un résultat construit par une méthode. Il est facile de contruire des solutions aléatoires qui battent sur des intervalles restreint des solutions basés sur un raisonnement statistique de machine learning.
  • Il est vraisemblablement impossible de se rapprocher de la performance de l'algorithme omniscient. Ceci illustre le fait que dan la plupart des cas, les algorithme basé sur des raisonnements statistiques reposent sur des probabilités s'éloignant seulement très légèrement d'un jeté de dés. Au lieu de gagner 50% du temps, on gagne 51% du temps, et c'est de ce minsuscule 'edge' que l'on doit tirer parti. 


Retour à La Une de Logo Paperblog

A propos de l’auteur


Lionelo 108 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte