Introduction
Dans le précédent article, nous avions fait ensemble notre première stratégie personnalisée sur freqtrade. Il est temps maintenant de voir si la stratégie est rentable et s’il est possible de l’améliorer grâce à l’hyperopt et au machine learning.
Prérequis
- Notions de bases dans le langage Python.
- Une bonne prise en main du fonctionnement de Freqtrade (voir documentation).
Backtest
Avant de commencer à optimiser notre stratégie, nous devons voir si elle aurait été rentable par le passé. Le cheminement pour le faire avec freqtrade est le suivant :
- Donner une liste de paires à freqtrade
- Télécharger les données de ces paires
- Backtester
Placez vous dans le dossier principal de freqtrade et modifiez le fichier config.json
précédemment créé. C’est dans ce fichier que nous allons donner la liste de paires sur laquelle la stratégie fonctionnera ainsi que la timeframe.
Pour cet exemple, j’ai choisi une timeframe d’une heure et sélectionné une cinquantaine de paires. Plus vous aurez de paires sur lesquelles la stratégie tournera, plus vous aurez de détails sur le backtest et de données à analyser pour parfaire votre stratégie.
Maintenant nous allons télécharger les données de ces paires grâce à la commande suivante :
freqtrade download-data -t 1h --timerange=20210101-
-t
: timeframe dans laquelle il faut télécharger les données. (5m,1h,4h,1d).
--timerange=
: télécharger les données depuis le 01/01/2021 jusqu’à aujourd’hui.
Nous sommes prêts à faire notre premier backtest !
freqtrade backtesting -s MyStrategy --timerange=20210601-20210630
Voici les résultats de la stratégie pour le mois de juin 2021 :
La stratégie est perdante sur le mois de juin. La première raison de vente est le stop loss, peut être trop proche, peut être trop loin. Notre table de ROI peut aussi être optimisée pour prendre plus de profits.
Voyons comment automatiser la recherche d’optimisation de notre stop loss et de ROI grâce à l’hyperopt inclut dans freqtrade.
Qu’est ce que l’Hyperopt ?
Hyperopt est un outil de freqtrade qui va nous permettre d’automatiser la recherche de paramètres optimaux pour notre stratégie. Il est applicable sur les variables d’indicateurs techniques mais aussi sur les variables de signaux de vente, d’achat et de stop loss. C’est un outil très puissant quand il est maitrisé et qui mérite vraiment votre temps. L’hyperopt va s’appuyer sur les données que nous avons téléchargé pour trouver les meilleurs paramètres, c’est pourquoi il est important d’avoir beaucoup de données.
Sachez que l’hyperopt prend du temps et est très gourmand en ressources. N’hésitez pas à passer par une location de machine dans le cloud pour faire ces calculs.
Exemple avec l’Hyperopt de freqtrade
C’est parti, optimisons notre Stop loss et notre ROI avec cette commande :
freqtrade hyperopt --hyperopt-loss SharpeHyperOptLossDaily --spaces roi stoploss --strategy MyStrategy -e 100
Hyperopt dispose de différents modes de calculs suivant votre stratégie, des modes de calculs dédiés au scalping, au Sharpe Ratio, au SortinoRatio. À vous de choisir le plus adapaté.
-e
représente le nombre d’epochs que l’hyperopt va faire, plus il y en aura, plus le résultat sera affiné. Au dela de 500-1000 epochs, il n’y aura en général plus de changement de résultats.
Le travail de l’hyperopt terminé, on peut voir qu’il a transfromé notre stratégie perdante en stratégie gagnante (depuis le 01/01/2021) simplement en modifiant notre table de ROI et notre Stop Loss. Il ne nous reste plus qu’à modifier notre stratégie avec les valeurs fournies par l’hyperopt et faire un nouveau backtest pour voir si notre stratégie a été améliorée sur le mois de juin.
Voici le résultat, notre stratégie est toujours perdante, néanmoins nous sommes passés de -25.55% à -11.96% !
Vous avez maintenant un exemple de la puissance de l’hyperopt, il ne vous reste plus qu’à paufiner vos stratégies automatiquement. Bon trading !