Faire tourner un modèle de langage sur un cours d’action pour prédire le marché de demain donne des résultats médiocres. Un modèle isolé manque de recul, hallucine des chiffres et réagit avec un biais systématique.
Pour obtenir une analyse crédible, il faut reproduire la structure d’un fonds d’investissement réel, avec ses rôles distincts, ses débats contradictoires et ses garde-fous stricts. C’est précisément l’objectif du framework open-source TradingAgents, développé par Tauric Research.
Le projet se trouve sur le dépôt officiel GitHub TauricResearch/TradingAgents. Conçu au-dessus de LangGraph, ce système déploie une équipe complète d’agents spécialisés : analystes fondamentaux, experts en sentiment, chartistes, chercheurs haussiers et baissiers, traders et gestionnaires de risques.
Architecture interne et fonctionnement des agents
L’exécution repose sur un graphe d’états où chaque rôle intervient selon une séquence précise.
Les rôles se répartissent en quatre pôles opérationnels :
- L’équipe d’analystes :
- Analyste Fondamental : épluche les états financiers, les métriques de performance, détermine la valeur intrinsèque et signale les anomalies de bilan.
- Analyste de Sentiment : agrège les flux de titres d’actualité, les discussions Reddit et les échanges StockTwits pour jauger l’humeur à court terme du marché.
- Analyste Macro / Actualités : surveille les indicateurs macroéconomiques et les événements géopolitiques mondiaux.
- Analyste Technique : calcule les indicateurs clés (comme le MACD et le RSI) pour détecter les figures graphiques et anticiper les mouvements de prix.
- L’équipe de recherche : elle réunit des chercheurs haussiers (bullish) et baissiers (bearish). Ils s’affrontent lors de débats structurés pour confronter les opportunités de gains aux risques de perte.
- Le Trader : il synthétise les rapports des analystes et les conclusions du débat pour formuler un plan de trading concret, précisant le timing et la taille des positions.
- Gestion des risques et Portfolio Manager : évalue en continu la volatilité et la liquidité. Le comité de risque ajuste ou valide la proposition, puis le Portfolio Manager approuve ou rejette l’ordre avant son envoi au marché simulé.
TradingAgents est un environnement d’étude conçu pour la recherche. Ses décisions dépendent des modèles sélectionnés, de la température d’échantillonnage et de la qualité des flux de données. Ce framework ne constitue en aucun cas un conseil financier ou d’investissement.
Historique et évolution des versions
| Version | Date | Changements majeurs |
|---|---|---|
| v0.3.1 | Juillet 2026 | Filtrage anti look-ahead sur Alpha Vantage, sécurité anti-crash du routeur de graphe, reprise sur point de contrôle adaptée à la topologie du graphe, flux de sentiment crypto opérationnels, budget de réessai d’appels LLM configurable, authentification par clé API sur AWS Bedrock, support de Claude Sonnet 5 et Fable 5. |
| v0.3.0 | Juin 2026 | Contrat d’accès aux données vérifié, registre de fournisseurs étendu (NVIDIA, Kimi, Groq, Mistral, Bedrock, endpoints compatibles OpenAI), connecteurs de données FRED et Polymarket, catalogue de modèles mis à jour, validation CI. |
| v0.2.5 | Mai 2026 | Analyste de sentiment ancré sur données réelles, intégration GPT-5.5, support multi-région pour Qwen/GLM/MiniMax, configuration complète par variables d’environnement TRADINGAGENTS_* avec auto-détection des clés, support Ollama distant, benchmarks d’alpha internationaux, protection contre les attaques de traversée de répertoire sur les tickers. |
| v0.2.4 | Avril 2026 | Agents à sorties structurées (Research Manager, Trader, Portfolio Manager), reprise sur points de contrôle LangGraph, journal de décisions persistant, support DeepSeek/Qwen/GLM/Azure, image Docker, correction d’encodage UTF-8 sous Windows. |
| v0.2.3 | Mars 2026 | Support multilingue, modèles de la famille GPT-5.4, fidélité temporelle des backtests, intégration de serveurs mandataires (proxies). |
| v0.2.2 | Mars 2026 | Support GPT-5.4, Gemini 3.1 et Claude 4.6, échelle de notation à cinq niveaux, API OpenAI Responses, réglage d’effort Anthropic. |
| v0.2.0 | Février 2026 | Prise en charge multi-fournisseurs (GPT-5.x, Gemini 3.x, Claude 4.x, Grok 4.x), refonte de l’architecture système. |
| Trading-R1 | Janvier 2026 | Publication du rapport technique Trading-R1 et annonce de l’interface Terminal. |
Installation et configuration de l’environnement
Le projet requiert Python 3.12. Je vous conseille de créer un environnement Conda dédié pour éviter tout conflit avec vos paquets existants.
git clone https://github.com/TauricResearch/TradingAgents.git
cd TradingAgents
conda create -n tradingagents python=3.12 -y
conda activate tradingagents
pip install .
Si vous préférez déployer l’application sous Docker :
cp .env.example .env
docker compose run --rm tradingagents
Pour un déploiement local avec des modèles exécutés via Ollama :
docker compose --profile ollama run --rm tradingagents-ollama
Gestion des clés d’API et fournisseurs supportés
Vous devez définir les clés d’accès adaptées à vos modèles dans votre fichier .env ou directement dans votre terminal :
# Fournisseurs LLM
export OPENAI_API_KEY="sk-..."
export GOOGLE_API_KEY="AIza..."
export ANTHROPIC_API_KEY="sk-ant-..."
export XAI_API_KEY="xai-..."
export DEEPSEEK_API_KEY="sk-..."
export OPENROUTER_API_KEY="sk-or-..."
# Modèles hébergés en Asie (points d'entrée internationaux et régionaux)
export DASHSCOPE_API_KEY="sk-..." # Qwen International (dashscope-intl.aliyuncs.com)
export DASHSCOPE_CN_API_KEY="sk-..." # Qwen Chine (dashscope.aliyuncs.com)
export ZHIPU_API_KEY="sk-..." # GLM via Z.AI
export ZHIPU_CN_API_KEY="sk-..." # GLM via BigModel (open.bigmodel.cn)
export MINIMAX_API_KEY="sk-..." # MiniMax Global (api.minimax.io)
export MINIMAX_CN_API_KEY="sk-..." # MiniMax Chine (api.minimaxi.com)
# Données financières
export ALPHA_VANTAGE_API_KEY="..."
Pour Azure OpenAI, copiez le fichier .env.enterprise.example vers .env.enterprise avant d’y inscrire vos identifiants.
Pour exécuter des requêtes sur AWS Bedrock, installez l’extension requise :
pip install ".[bedrock]"
Définissez ensuite llm_provider: "bedrock", réglez votre région via AWS_DEFAULT_REGION et utilisez l’identifiant du modèle ciblé (par exemple us.anthropic.claude-opus-4-8-v1:0).
Pour les serveurs locaux ou privés (vLLM, LM Studio, llama.cpp), définissez le paramètre llm_provider: "openai_compatible" et renseignez l’adresse du serveur via backend_url ou la variable d’environnement TRADINGAGENTS_LLM_BACKEND_URL (ex : http://localhost:8000/v1). Aucune clé n’est requise par défaut en local, sauf si votre proxy l’impose via OPENAI_COMPATIBLE_API_KEY.
Pour Ollama, assignez llm_provider: "ollama". L’adresse par défaut pointe vers http://localhost:11434/v1. Modifiez OLLAMA_BASE_URL si vous déployez sur une machine distante.
Utilisation via l’interface en ligne de commande (CLI)
Lancez l’interface interactive depuis votre terminal :
tradingagents
# Ou directement depuis le code source :
python -m cli.main
L’écran interactif permet de choisir l’actif à analyser, la date cible, le moteur LLM et la profondeur du débat.
TradingAgents prend en charge l’ensemble des marchés référencés par Yahoo Finance grâce aux suffixes de place boursière :
- États-Unis :
AAPL,SPY - Hong Kong :
0700.HK - Tokyo :
7203.T - Londres :
AZN.L - Inde :
RELIANCE.NS,RELIANCE.BO - Canada :
SHOP.TO - Australie :
BHP.AX - Actions A Chine :
600519.SS(Shanghai),000001.SZ(Shenzhen) - Cryptomonnaies :
BTC-USD,ETH-USD
L’identité de l’entreprise ainsi que l’indice de référence pour le calcul de l’alpha sont déterminés automatiquement dès la saisie du ticker.
Intégration Python et personnalisation du graphe
Le module Python permet d’intégrer directement le moteur d’agents dans vos propres pipelines d’analyse.
Voici un exemple complet pour exécuter une propagation d’analyse sur l’action Nvidia :
from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG
# Création de la configuration
config = DEFAULT_CONFIG.copy()
config["llm_provider"] = "openai"
config["deep_think_llm"] = "gpt-5.5" # Modèle dédié aux raisonnements complexes
config["quick_think_llm"] = "gpt-5.4-mini" # Modèle rapide pour le traitement unitaire
config["max_debate_rounds"] = 2
# Initialisation du graphe
ta = TradingAgentsGraph(debug=True, config=config)
# Exécution de l'analyse
_, decision = ta.propagate("NVDA", "2026-01-15")
print("Décision finale :")
print(decision)
L’appel à ta.propagate() déclenche les collectes de données, convoque les analystes, démarre les débats contradictoires et produit une décision arbitrée par le comité des risques.
Persistance d’état, mémoire et reprise après crash
Le framework gère deux mécanismes distincts de sauvegarde pour sécuriser les exécutions longues.
1. Le journal de décision (Decision Log)
Ce système est activé par défaut. Chaque exécution terminée enregistre son résultat dans ~/.tradingagents/memory/trading_memory.md (chemin modifiable avec TRADINGAGENTS_MEMORY_LOG_PATH). Lors de l’analyse suivante sur le même actif, TradingAgents récupère le rendement réalisé (en valeur brute et en alpha face au SPY), génère un paragraphe de réflexion rétrospective, puis injecte ces enseignements dans l’invite système du Portfolio Manager. Le système apprend ainsi de ses erreurs passées.
2. La reprise sur point de contrôle (Checkpoint Resume)
Cette option s’active avec l’argument --checkpoint en CLI ou via config["checkpoint_enabled"] = True en Python. LangGraph sauvegarde alors l’état du graphe dans une base SQLite locale (située dans ~/.tradingagents/cache/checkpoints/<TICKER>.db) après chaque nœud. Si un appel API échoue ou si le processus s’interrompt, la session reprend au dernier état valide.
# Lancer avec reprise sur point de contrôle
tradingagents analyze --checkpoint
# Réinitialiser les bases de points de contrôle avant l'exécution
tradingagents analyze --clear-checkpoints
# Activation en code Python
config = DEFAULT_CONFIG.copy()
config["checkpoint_enabled"] = True
ta = TradingAgentsGraph(config=config)
_, decision = ta.propagate("NVDA", "2026-01-15")
Déterminisme, limites et réflexions critiques
Faire tourner deux fois la même commande sur une date passée peut aboutir à des décisions différentes. Cette variabilité provient de facteurs précis :
- L’échantillonnage des modèles de raisonnement : les moteurs comme GPT-5.x ou les modèles dotés de réflexion interne échantillonnent leurs chaînes de pensée. Ils ignorent souvent le paramètre classique de température zéro. Pour stabiliser les résultats, vous devez configurer manuellement un modèle sans réflexion interne via l’option Custom Model ID.
- La dérive des données sociales : même si la date de marché est fixée pour les cours et les ratios comptables, les flux Reddit et StockTwits captent parfois les réactions présentes au moment de la requête.
config = DEFAULT_CONFIG.copy()
config["llm_provider"] = "openai"
config["temperature"] = 0.0
# Note : les modèles à raisonnement intégré ignorent la température.
# Pour une reproductibilité stricte, sélectionnez un modèle standard.
Le framework résout désormais l’identité des sociétés de façon déterministe avant d’appeler le moindre agent, éliminant les confusions d’entreprises constatées dans les premières versions. Les affirmations sur les prix et les indicateurs sont également ancrées dans des instantanés de marché vérifiés.
Les performances obtenues en backtest dépendent étroitement du modèle sous-jacent, des dates testées et de la qualité des données collectées. Considérez TradingAgents comme un échafaudage de recherche pour étudier les comportements multi-agents, et non comme un générateur de signaux prêt pour la production financière.