Quand ChatGPT lit les bougies : vers un trading 100 % automatisé
ChatGPT analyse les bougies Bitcoin : vision par ordinateur, dataset JSON sur mesure, backtests pluri-annuels et stratégie de trading crypto 100 % automatisée.

Dans cet article, nous vous avons montré nos premiers tests de vision par ordinateur avec ChatGPT : un simple graphique OHLCV du Bitcoin et la question « et maintenant ? ». L’exercice, réalisé à la main sur un petit échantillon, n’était pas suffisant pour prouver un véritable edge, mais il nous a tout de même surpris : ChatGPT lisait le chart et posait un diagnostic technique plutôt solide, même si ses prédictions restaient fragiles faute de contexte.
Nous passons donc à la vitesse supérieure. Objectif : générer ces images automatiquement, lancer des backtests sur plusieurs années et vérifier, chiffres à l’appui, si trader les scénarios proposés par ChatGPT peut vraiment faire la différence.
Aujourd’hui, on pose la première pierre : construire un dataset propre et bien balisé pour mettre l’IA à l’épreuve.
Préparation pour ChatGPT
L’objectif de notre demande à ChatGPT est d’analyser un graphique du prix du BTC, dont une portion a volontairement été masquée (voir exemple ci-dessus). Le défi consiste à lui faire prédire si la tendance durant cette période cachée est haussière, baissière ou neutre.
Mais la création d’un dataset exploitable pour une automatisation efficace ne s’arrête pas là. Le but est que notre code envoie des centaines de requêtes par appel API à OpenAI, puis qu’il réalise un backtest où, chaque semaine, nous demandons la tendance à ChatGPT en lui fournissant les X dernières semaines visibles avant d’entrer en position selon sa prédiction.
Pour rester flexibles, nous voulons pouvoir paramétrer :
- les dates (celles du backtest),
- le nombre de bougies visibles (en semaines),
- le nombre de semaines masquées,
- le symbole (BTC, ETH, etc.),
- la timeframe.
Le code doit alors créer automatiquement les images de façon « roulante » sur toute la période choisie. Par exemple, si l’on masque une semaine et que l’on garde visibles les trois semaines précédentes, on obtiendra quatre graphiques par mois : première semaine masquée, puis deuxième, troisième et quatrième, chaque fois avec les trois semaines précédentes affichées. Ajoutez un paramètre pour choisir le répertoire de sortie des images et vous avez notre script :
Le code est disponible ici https://github.com/CryptoRobotFr/gpt-vision-trader
Un fichier metadata bien ordonné
Pour chaque semaine du backtest, il faudra :
- récupérer le graphique correspondant (avec les Y semaines visibles et la semaine masquée),
- le convertir en image,
- construire un prompt bien défini,
- envoyer le tout à l’API de OpenAI en spécifiant le modèle GPT souhaité.
Pour orchestrer cela de manière structurée et efficace, notre script de création de dataset ne se contente pas de générer des centaines d’images : il crée également un fichier metadata. Ce fichier au format JSON rassemble toutes les informations caractérisant chaque image ainsi que son nom. Ainsi, faire une boucle sur l’ensemble des graphiques et envoyer chaque requête d’analyse à ChatGPT devient trivial.
Le format .json
s’y prête parfaitement. Vous l’avez sûrement déjà croisé : il sert aussi bien à stocker des résultats qu’à fournir des paramètres de configuration (par exemple ceux d’un bot de trading).
L’avantage ? Il sera tout aussi simple, dans un second temps, de compléter ce fichier depuis une autre partie du code. Lorsque nous parcourrons le dataset pour demander l’analyse à ChatGPT, nous pourrons ajouter la réponse et la prédiction du modèle dans ce fichier metadata. Résultat : le module de backtest sera totalement indépendant de la partie « création du dataset + analyse ChatGPT » ; il se contentera de lire le fichier metadata, puis de simuler ouvertures et fermetures de position.
Voici la structure retenue :
La clé principale correspond au nom du graphique contenant les bougies masquées ; ce nom encode la période totale représentée. Nous y stockons :
- le nom du graphique sans bougies masquées (utile pour inspection manuelle),
- la date de la première bougie,
- la date de la dernière bougie visible,
- la date de la dernière bougie masquée,
- la performance de la partie masquée (close dernière bougie masquée – close dernière bougie visible) / close dernière bougie visible),
- enfin, les données OHLCV sous forme de listes de dictionnaires pour la partie visible et la partie masquée (raccourcies ici par
[...]
).
Il sera alors très simple d’ajouter, pour chaque graphique, la prédiction de ChatGPT : il suffira d’insérer une nouvelle paire clé/valeur dans le même objet JSON.
Des indicateurs pour plus de contexte
Limitées aux bougies OHLCV, nos images risquent d’être trop pauvres. Nous devons nous donner la possibilité d’évaluer l’impact d’un contexte supplémentaire : ajoutons donc des indicateurs techniques, par exemple moyennes mobiles ou RSI.
Nous avons implémenté une classe d’indicateurs standardisés, que l’utilisateur peut activer ou non lors de la création du dataset. Il peut définir autant de classes qu’il le souhaite ; elles seront ensuite ajoutées automatiquement aux graphiques.
En pratique, cela se traduit par les paramètres suivants :
Et voici un graphique généré :
Notre dataset est maintenant versatile et complet ; il est temps de nous concentrer sur l’automatisation des appels à ChatGPT et sur l’enregistrement de ses prédictions, graphique par graphique, afin de lancer nos backtests. La suite au prochain épisode !
Commentaires ()