Un fork de TradingAgents transformé en service autonome. Chaque jour, pour une liste de tickers, un graphe d'agents LLM (analystes marché, news, sentiment, fondamentaux, puis un débat haussier/baissier, un gérant de risque et un gérant de portefeuille) produit un signal sur 7 niveaux — de Strong Buy à Strong Sell. Pas de cron externe : un scheduler intégré déclenche le batch quotidien.
Le cœur du projet est un modèle d'ordre en couches qui sépare explicitement signal → poids cible → intention (ouvrir / renforcer / alléger / clôturer / ne rien faire) → risque → ordre → statut final. Un moteur de risque déterministe (plafond par position, exposition brute, short désactivé par défaut) valide chaque ordre avant exécution. Le book paper-trading vit dans Postgres, tout le calcul est en Decimal et les positions sont marquées au marché.
Côté observabilité, un dashboard FastAPI en lecture seule expose les positions, l'historique des runs (avec le détail des résumés d'analystes par run), les ordres et une page Metrics. Celle-ci suit à la fois la santé (runs, durées, distribution des signaux et des issues) et la performance : courbe d'equity paper contre un benchmark S&P 500, PnL réalisé/latent, max drawdown, exposition dans le temps et performance par ticker. Un rapport est aussi poussé chaque jour sur Telegram.
Déployé sur mon VPS (trader.njakasoa.xyz) en Docker Compose derrière Caddy, l'inférence est servie via Codex monté depuis l'hôte — la clé ne touche jamais le navigateur — avec redéploiement automatique sur push. Volontairement paper-only d'abord : la mécanique et les métriques doivent valider avant tout capital réel.