SortieAnalyse · Sur le radarHabr AI→ original

Un trader combine RAG et RandomForest pour générer des signaux BUY/SELL : 62 % de précision sur 59 observations

Un développeur a transformé un RAG d’actualités reposant sur des LLM locaux en pipeline produisant des signaux BUY/SELL/NEUTRAL pour les actions de la Bourse de Moscou. Les actualités sont associées aux symboles boursiers et converties en variables quotidiennes ; un RandomForest calibré fournit ensuite une probabilité ainsi qu’une liste d’actualités servant de preuves. Sur 59 observations, la précision moyenne atteint 62 %, mais le test ne comprend que 45 exemples. L’auteur qualifie lui-même cette évaluation de préliminaire.

Traité par IA depuis Habr AI ; édité par Hamidun News
Un trader combine RAG et RandomForest pour générer des signaux BUY/SELL : 62 % de précision sur 59 observations
Source : Habr AI. Collage: Hamidun News.
Écouter l'article
Fiche synthèse et chiffres clés
ParamètreDonnées
Source primaireHabr AI ↗
Rédacteur en chef
Chiffre clé #1Les actualités sportives et les faits divers sont écartés par un filtre avant les étapes LLM coûteuses
OllamaNUM_PARALLEL=6 et deux modèles conservés dans la VRAM ont accéléré le pipeline d’un facteur de 1,5 à 2
Chiffre clé #3L’ajout d’une décroissance temporelle des actualités a fait chuter la précision de 52 % à 36 %

Beaucoup savent connecter un LLM à un flux d’actualités pour obtenir un « analyste intelligent ». Il est bien plus rare de voir quelqu’un montrer honnêtement ce qui se passe ensuite, lorsqu’il ne s’agit plus de résumer les nouvelles, mais de prévoir un prix. Sur Habr, l’auteur du projet a prolongé son expérimentation RAG jusqu’à produire des signaux de trading assortis d’explications. Voici les enseignements utiles à en tirer.

Un pipeline à la place de trois tâches concurrentes

La première version du système exécutait trois tâches en arrière-plan en parallèle : classification, extraction d’entités et enrichissement. Chacune chargeait son propre modèle dans la mémoire du GPU, tandis qu’Ollama déchargeait et rechargeait sans cesse les poids. Lorsque la base est passée de 12 000 à 37 000 articles, le coût est devenu excessif.

La solution est simple : un pipeline unique. Chaque article passe par la classification, le filtrage du bruit, l’évaluation de son influence sur le marché, la NER, la synthèse et la création d’un embedding. Si le filtre détermine qu’une actualité relève du sport ou de la culture, elle reçoit le statut skipped et ne consomme plus une seule seconde de GPU. La leçon est universelle : commencer par un filtrage peu coûteux, puis seulement solliciter le modèle onéreux.

Les paramètres d’Ollama ont eux aussi été ajustés manuellement. L’auteur a autorisé le maintien de deux modèles en mémoire, Qwen 14B et BGE-M3, fixé le parallélisme à 6 et assigné l’ensemble à une seule Tesla P100. Avec une valeur de 8, la mémoire atteignait sa limite et les requêtes expiraient. La deuxième carte n’est volontairement pas utilisée : lorsque les couches sont réparties entre plusieurs GPU, les transferts de données via PCIe divisent la vitesse par 3 à 5.

De l’actualité au signal

Exemple : la NER repère « Sber » dans un texte. Un dictionnaire de synonymes, alimenté depuis l’API de la Bourse de Moscou, le convertit en symbole SBER. Pour chaque journée et chaque symbole, le système calcule plusieurs variables : somme des orientations des actualités (+1 pour une nouvelle positive, −1 pour une négative), nombre d’actualités, volatilité sur 5 et 20 jours et volume moyen des transactions. Un RandomForest assorti d’un calibrage par Platt scaling produit ensuite BUY, SELL ou NEUTRAL avec une probabilité. L’API renvoie également la liste des actualités ayant pesé sur la décision. Dans Streamlit, le tout devient un terminal présentant des chandeliers et des preuves dépliables.

Détail amusant : comme Alfa-Bank n’est pas coté en Bourse, un symbole fictif, ALFAMOCK, a été créé. Les actualités sont ainsi accumulées à l’avance ; après l’IPO, il suffira de remplacer le symbole.

Les points de rupture

La partie la plus précieuse de l’article est l’analyse des échecs. Une tentative d’introduire une décroissance temporelle a rendu la variable fractionnaire, avec 0,85 au lieu de 1, et la précision est tombée de 52 % à 36 %. Sur 55 observations, il ne s’agit que de bruit ; l’idée a donc été reportée jusqu’à ce que le jeu de données dépasse 200 observations.

Autre cas : VKCO a reçu un signal BUY avec une confiance de 64 % alors que les actualités étaient neutres. Le modèle avait simplement appris que le marché progresse dans 55 % des cas. L’auteur a rejeté un filtre rigide du type « aucune pression signifie NEUTRAL », considérant qu’il ne ferait que masquer le symptôme. Il prévoit plutôt des variables mesurant la domination, mais seulement après avoir accumulé davantage de données. La dette technique a été consignée et documentée.

La validation suit une méthode walk-forward : la fenêtre d’entraînement avance dans le temps pour éviter de sélectionner par hasard une période « favorable ». Le schéma visé comprend 30 jours d’entraînement et 7 jours de test, mais une version réduite 14/3/3 est utilisée pour le moment. Résultat : une précision moyenne de 62 % et une médiane de 67 % sur 45 exemples de test.

Comment exploiter ces résultats

Il ne faut pas considérer les 62 % comme une stratégie de trading : l’échantillon est minuscule, les commissions et le slippage ne sont pas pris en compte, et le modèle peut facilement apprendre du bruit. La valeur du projet est ailleurs. Il constitue un bon modèle d’architecture : filtrage précoce pour économiser le GPU, résultats explicables accompagnés de leurs sources, probabilités calibrées et consignation transparente des décisions dans des ADR. Si vous construisez un pipeline similaire avec des modèles locaux, l’approche de configuration d’Ollama et l’habitude de mesurer l’effet de chaque variable avant de la conserver méritent d’être reprises. Le code de la partie publique est disponible sur GitHub.

Dossier

Questions clés sur cet article

Que sait-on sur Un pipeline à la place de trois tâches concurrentes ?

La première version du système exécutait trois tâches en arrière-plan en parallèle : classification, extraction d’entités et enrichissement. Chacune chargeait son propre modèle dans la mémoire du GPU, tandis qu’Ollama déchargeait et rechargeait sans cesse les poids. Lorsque la base est passée de 12 000 à 37 000 articles, le coût est devenu excessif. La solution est simple : un pipeline unique.

Que sait-on sur De l’actualité au signal ?

Exemple : la NER repère « Sber » dans un texte. Un dictionnaire de synonymes, alimenté depuis l’API de la Bourse de Moscou, le convertit en symbole SBER. Pour chaque journée et chaque symbole, le système calcule plusieurs variables : somme des orientations des actualités (+1 pour une nouvelle positive, −1 pour une négative), nombre d’actualités, volatilité sur 5 et 20 jours et volume moyen des transactions.

Que sait-on sur Les points de rupture ?

La partie la plus précieuse de l’article est l’analyse des échecs. Une tentative d’introduire une décroissance temporelle a rendu la variable fractionnaire, avec 0,85 au lieu de 1, et la précision est tombée de 52 % à 36 %. Sur 55 observations, il ne s’agit que de bruit ; l’idée a donc été reportée jusqu’à ce que le jeu de données dépasse 200 observations. Autre cas : VKCO a reçu un signal BUY avec une confiance de 64 % alors que les actualités étaient neutres.

ZK
Zhemal Khamidun — CPO d'Alpina Digital, product manager d'AlpinaGPT. Conçoit des produits IA depuis 2019. Hamidun News est un projet personnel devenu un agrégateur en production avec plus de 6 000 lecteurs.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
Qu'en pensez-vous ?
Chargement des commentaires…