Daily Stock Analysis : un système d'IA qui transforme une watchlist en tableau de bord décisionnel quotidien
daily_stock_analysis de ZhuLinsen est l'un des projets d'IA financière les plus étoilés du moment — le dépôt Python numéro 1 du jour sur Trendshift. Mais l'intérêt ne réside pas dans le nombre d'étoiles. Il réside dans le fait que le projet refuse de prétendre prédire les prix. Il résout à la place un problème plus restreint et bien plus utile : chaque jour de bourse, prendre votre watchlist et produire un rapport analytique structuré et explicable — et le livrer là où vous lisez réellement les choses, votre messagerie.
Avertissement de l'auteur du projet : à des fins d'apprentissage et de recherche uniquement. Ce n'est pas un conseil en investissement. Les marchés comportent des risques.
Idée centrale : pas un bot, mais un analyste-rapporteur quotidien

La plupart des dépôts « IA de trading » poursuivent le même fantasme : un modèle en entrée, un signal en sortie, de l'argent qui monte. daily_stock_analysis repose sur un postulat plus honnête — la difficulté d'investir n'est pas de générer un signal de plus, mais d'assembler une image complète et cohérente d'une valeur et de la coucher par écrit de la même façon chaque jour.
Il se comporte donc comme un analyste junior soumis à un horaire. Le pipeline est linéaire et lisible :
| Étape | Ce qui se passe |
|---|---|
| Récupération des données | Cotations, chandeliers quotidiens, indicateurs, flux de capitaux, fondamentaux, chips |
| Analyse technique | Moyennes mobiles, RSI, volume, ratio de biais, classification de tendance |
| Actualités et renseignements | Recherche les actualités récentes, les annonces, le sentiment par titre |
| Analyse LLM | Construit un pack de contexte et un prompt, produit un tableau de bord décisionnel en JSON |
| Rendu du rapport | Rapport Markdown, éventuellement converti en image |
| Notification | Envoie vers WeCom, Feishu, Telegram, Discord, Slack ou par e-mail |
Par défaut, il s'exécute selon un horaire (jours ouvrés, après la clôture) et saute les jours non ouvrés. Il couvre les actions A, Hong Kong, les actions et ETF américains, avec une prise en charge réduite des marchés japonais et coréen là où les sources de données ne suffisent pas.
La partie discrètement intelligente : le repli des données


La décision d'ingénierie la plus robuste du projet n'est pas le LLM — c'est la manière dont il traite les données comme intrinsèquement peu fiables.
Les données de marché sont récupérées via une chaîne de priorité de six fournisseurs, chacun servant de repli pour le précédent :
Efinance (P0) → Tencent (P0) → Akshare (P1) → Pytdx (P2) → Baostock (P3) → Yfinance (P4)
Lorsque vous analysez un titre américain, le système contourne automatiquement les fournisseurs réservés à la Chine et bascule vers Yahoo Finance. Si une source échoue, expire ou renvoie des données partielles, l'exécution ne dégrade que ce bloc-là au lieu de faire planter tout le rapport. Le prompt est même informé des blocs qui sont fallback, partial ou missing — le modèle est ainsi contraint d'écrire « données indisponibles » plutôt que d'inventer un chiffre.
C'est le bon réflexe pour tout système en production : la panne d'une seule source de données ne doit jamais faire tomber toute l'analyse. Traitez chaque flux comme du best-effort, standardisez les champs, et rendez les données manquantes visibles plutôt que de les combler silencieusement.
Le tableau de bord décisionnel

Le LLM ne renvoie pas de prose — il renvoie un « tableau de bord décisionnel » JSON strict que le rapport transforme en une mise en page cohérente :
- Conclusion principale — une phrase : acheter, conserver ou attendre, plus la sensibilité au temps.
- Conseil différencié — des recommandations différentes pour quelqu'un qui détient déjà la position par rapport à quelqu'un en liquidités.
- Perspective des données — alignement des moyennes mobiles, prix par rapport au support/résistance, ratio de biais, lecture du volume.
- Renseignement — alertes de risque et catalyseurs positifs, chacun devant porter une date.
- Plan de bataille — points précis à viser : achat idéal, stop-loss, objectif, dimensionnement de la position.
- Liste de contrôle — chaque condition marquée ✅ / ⚠️ / ❌ (alignement haussier, biais dans la fourchette, volume, absence de mauvaise nouvelle majeure, valorisation).
La discipline intégrée au prompt est tranchée et sensée : ne pas courir après le cours (un biais de plus de 5 % au-dessus de la MA5 est un « pas d'achat » ferme), ne trader que sur un alignement haussier des moyennes mobiles (MA5 > MA10 > MA20), préférer acheter un repli à volume décroissant vers le support, et ne jamais basculer entre achat et vente sur le mouvement d'une seule journée.
Stratégies d'agent : posez une question au système

Au-delà du rapport quotidien, le projet propose un mode agent avec 15 playbooks de stratégie intégrés que vous pouvez interroger par titre :
| Famille | Exemples |
|---|---|
| Tendance / moyennes mobiles | croisement doré de moyennes mobiles, tendance haussière |
| Théorie structurelle | théorie de Chan (Zen), vague d'Elliott |
| Comportement / liquidité | cycle émotionnel, rupture de volume, volume de fond, repli à volume décroissant |
| Catalyseur / narratif | thème porteur, piloté par les événements, réévaluation des attentes |
| Qualité / croissance | qualité de la croissance |
Chaque stratégie est un fichier YAML avec ses propres règles, outils requis et ajustements de scoring — de sorte que « l'intelligence » est configurable et auditable, et non cachée dans un unique prompt géant.
Comment le lire sans se leurrer

Un projet de ce type est facile à surestimer. Une liste de vérification honnête :
- Qualité des sources d'actualités. Le bloc de renseignement vaut ce que valent vos fournisseurs de recherche configurés — sans eux, le sentiment et les catalyseurs restent vides et le rapport repose entièrement sur la technique.
- Déterminisme. Les sorties du LLM varient ; le même titre peut se lire légèrement différemment d'une exécution à l'autre. Considérez le tableau de bord comme une opinion structurée, pas une vérité figée.
- Couverture par marché. La profondeur sur les actions A (flux de capitaux, chips, dragon-tiger) se dégrade proprement en
not_supportedsur les marchés que les données ne couvrent pas. - Fraîcheur des données. Surveillez les indicateurs
fallback/partial— des entrées dégradées devraient réduire votre confiance, exactement comme le prescrit le prompt. - Backtesting ≠ profit. Le rapport est un support de décision, pas un avantage vérifié.
Limites et évaluation honnête

Ce que daily_stock_analysis n'est pas :
- Ce n'est pas un système d'exécution. Il analyse et rapporte ; il ne passe pas d'ordres et ne modélise pas la liquidité.
- Dépendant du modèle. La qualité de la sortie suit le LLM que vous utilisez.
- Dépendant de la recherche. Sans clés d'API d'actualités, la moitié qualitative du rapport s'amincit.
- Non déterministe. Des entrées identiques peuvent produire des tableaux de bord légèrement différents.
Liens
- 💻 GitHub : ZhuLinsen/daily_stock_analysis
- 📄 Licence : MIT
Conclusion
daily_stock_analysis a de la valeur non pas comme un oracle mais comme une habitude analytique reproductible, automatisée :
- Standardiser ce que signifie « regarder une action », chaque jour.
- Traiter les données comme peu fiables et rendre les lacunes visibles.
- Rendre la conclusion explicable — score, niveaux, liste de contrôle, risques.
- Séparer la génération d'idées (15 stratégies) d'un cadre décisionnel discipliné.
Pour apprendre, faire une revue quotidienne et prototyper un flux de travail de recherche, c'est bien conçu. Pour la production, la couche suivante est la même que celle dont a besoin tout système sérieux : des données validées, un contrôle de la dérive du modèle, une exécution réaliste et des règles de risque qui vivent dans le code, pas seulement dans les prompts.
Authors
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.