Créer des screeners de marché puissants avec Claude Code : DSL personnalisé, détection de régime, pipeline multi-stratégies et rétrospective automatisée.
Un screener (ou scanner) est un programme qui analyse automatiquement des milliers d'actions pour en extraire celles qui correspondent à des critères techniques ou fondamentaux précis. Au lieu de parcourir manuellement 500 graphiques, le screener fait le tri en quelques secondes.
Le screener cherche des patterns techniques récurrents : un RSI en zone de survente, un volume anormalement élevé, une cassure de résistance, une compression de bandes de Bollinger. Ces signaux, combinés entre eux, permettent d'identifier des opportunités avant que le marché ne les intègre pleinement dans les prix.
Le Gateway MCP de Market Watch utilise 4 stratégies de screening, chacune adaptée à un contexte de marché spécifique.
Un marché n'est jamais uniforme. En période de forte tendance haussière (RiskOn), les stratégies de momentum fonctionnent mieux. En période de stress (RiskOff), les squeezes et les mean-reversions deviennent plus rentables. En combinant 4 stratégies, le screener s'adapte à tous les régimes de marché et maximise les opportunités quel que soit le contexte.
Le DSL du Gateway MCP est un mini-langage conçu spécifiquement pour exprimer des filtres techniques de manière concise et lisible. Il utilise deux expressions complémentaires.
Condition booléenne (true/false). Seules les actions qui passent le filtre sont retenues.
Valeur numérique pour classer les candidats. Plus le score est élevé, mieux l'action est classée.
| Indicateur | Description | Usage typique |
|---|---|---|
rsi14 |
Relative Strength Index (14 périodes) | Survente (<30) / Surachat (>70) |
macd |
MACD line (12, 26, 9) | Momentum, croisements |
close |
Prix de clôture | Comparaison avec moyennes mobiles |
vol |
Volume de la séance | Spike de volume, confirmation breakout |
atr |
Average True Range (14 périodes) | Volatilité, taille de stop loss |
obv |
On-Balance Volume | Accumulation / Distribution |
| Fonction | Syntaxe | Exemple |
|---|---|---|
sma() |
sma(field, period) |
sma(close, 50) — Moyenne mobile simple 50 jours |
ema() |
ema(field, period) |
ema(close, 20) — Moyenne mobile exponentielle 20 jours |
Voici comment un screener réduit progressivement l'univers d'actions pour ne garder que les meilleurs candidats.
Le DSL permet d'exprimer des filtres complexes en une seule ligne. En production chez Market Watch, nous combinons 3 screeners DSL avec l'AutoScreener pour obtenir un pipeline multi-stratégies. Chaque screener capture un type d'opportunité différent, et la combinaison maximise la couverture.
Le RunAutoScreener est l'outil le plus avancé du Gateway. Contrairement au screener DSL classique où vous définissez les règles manuellement, l'AutoScreener détecte automatiquement le régime de marché et ajuste ses paramètres en conséquence.
L'AutoScreener analyse 6 composantes (credit, dollar, liquidité, S&P 500, obligations, VIX) plus le sentiment de 18 articles d'actualités pour classifier le marché.
L'AutoScreener calcule 6 scores de composantes pour déterminer le régime actuel. Voici un exemple comparatif entre un environnement RiskOn et un environnement EarlyRiskOff.
En RiskOn, le momentum_expansion reçoit un poids de 0.40 car les trends forts sont les plus profitables. En EarlyRiskOff, le pre_squeeze monte à 0.30 car la compression de volatilité précède souvent un mouvement violent dans les marchés stressés.
Cette adaptation dynamique est la différence clé entre un screener statique et un screener intelligent. Un screener statique utilise toujours les mêmes règles ; l'AutoScreener ajuste sa stratégie au contexte.
Un screener seul, c'est bien. Mais la vraie puissance vient de la combinaison de plusieurs screeners dans un pipeline structuré. Voici l'architecture utilisée chez Market Watch pour le scan quotidien.
L'AutoScreener détecte le régime et génère 50 candidats pondérés par stratégie. C'est le premier filtre, large et intelligent.
On lance 3 screeners ciblés (oversold, momentum, breakout) pour capturer des opportunités que l'AutoScreener pourrait manquer.
On fusionne les résultats des 4 screeners, on élimine les doublons, et on re-classe par score combiné. Les actions qui apparaissent dans plusieurs screeners reçoivent un bonus.
On interroge QueryData pour obtenir les quotes temps réel, les supports/résistances et le volume profile des 10 meilleurs candidats.
WebSearch pour chaque candidat : earnings à venir, actualités récentes, rumeurs. Un catalyseur positif renforce la conviction.
Claude Code génère le rapport complet avec thème dark, fiches techniques, trade ideas, et le publie sur GitHub Pages.
Chaque étape réduit et enrichit le nombre de candidats.
L'AutoScreener prend environ 8 secondes (détection de régime + NLP sur 18 articles + screening). Chaque RunScreener prend environ 5-8 secondes. Le pipeline complet (4 screeners + quotes + recherche web + génération HTML) s'exécute en 2 à 4 minutes. C'est 100% automatisé : une commande, et tout se fait.
Chez Market Watch, le scanner quotidien se lance automatiquement du lundi au vendredi à 23h00, après la clôture de Wall Street. Voici l'architecture complète de bout en bout.
Le rapport scanner suit un template standardisé avec les sections suivantes.
| # | Section | Contenu |
|---|---|---|
| 1 | Régime de marché | Détection du régime (RiskOn, Neutral, etc.), composantes, risk tolerance |
| 2 | Dashboard rapide | 4 métriques clés : candidats analysés, hit rate historique, stratégie dominante, score moyen |
| 3 | Top 10 Picks | Tableau récapitulatif des 10 meilleurs candidats avec score, stratégie, entry/stop/TP |
| 4 | Fiches techniques | Analyse détaillée de chaque candidat : graphique, S/R, volume profile, catalyseur |
| 5 | Trade Ideas | 2-3 idées de trading argumentées avec entry, stop, TP1, TP2, R:R |
| 6 | Backtest | Validation historique des filtres : win rate, drawdown, Sharpe ratio sur 6 périodes |
| 7 | Disclaimer | Avertissement sur les risques, non-conseil en investissement |
Le thème dark du scanner n'est pas qu'une question d'esthétique. Il sert à différencier visuellement les scans algorithmiques (dark) des analyses rédactionnelles (light). Un utilisateur qui arrive sur une page dark sait immédiatement qu'il s'agit d'un scan systématique, pas d'une analyse qualitative. Cette convention visuelle aide à calibrer les attentes.
Un screener sans suivi de performance est un outil aveugle. La rétrospective hebdomadaire évalue systématiquement chaque recommandation passée pour mesurer la fiabilité du scanner et améliorer ses paramètres.
| Note | Hit Rate TP1 | Stop Rate | P&L Moyen | Description |
|---|---|---|---|---|
| A+ | > 75% | < 15% | > +5% | Excellent : le scanner est en grande forme |
| A | > 65% | < 20% | > +3% | Très bon : résultats solides |
| B | > 55% | < 30% | > +1% | Bon : au-dessus de la moyenne |
| C | > 45% | < 40% | > 0% | Moyen : résultats mitigés |
| D | > 35% | < 50% | > -2% | Faible : ajustements nécessaires |
| F | < 35% | > 50% | < -2% | Echec : revoir les paramètres du screener |
La rétrospective n'est pas juste un bilan. C'est le moteur d'amélioration continue du screener. Si une stratégie sous-performe pendant 3 semaines consécutives, on ajuste ses paramètres DSL. Si un filtre a un hit rate de 80%, on lui donne plus de poids. C'est un cycle : screener → recommandations → mesure → ajustement → screener amélioré.
Le DSL est suffisamment flexible pour créer des screeners adaptés à votre style de trading. Voici 4 exemples de screeners personnalisés, du value investing au mean reversion.
Pour les investisseurs qui cherchent des actions sous-évaluées avec un rendement de dividende attractif.
Pour identifier les actions en forte croissance avec un momentum technique fort.
Pour capturer les cassures de résistance avec confirmation de volume.
Pour acheter les excès baissiers : RSI survendu proche d'un support technique.
Le RunScreener inclut un backtest intégré. Pour chaque screener, il calcule automatiquement les performances historiques sur 6 périodes (1 an, 6 mois, 3 mois, 1 mois, 2 semaines, 1 semaine).
Un screener qui performe exceptionnellement bien en backtest peut échouer en temps réel. C'est le piège de l'overfitting : vous avez optimisé les paramètres pour coller au passé, pas pour prédire l'avenir. Règle d'or : gardez vos filtres simples (2-3 conditions max), et validez toujours sur une période out-of-sample (données que le screener n'a jamais vues).
Le scan le plus intelligent du monde est inutile s'il ne s'exécute pas. Voici les 3 méthodes pour planifier l'exécution automatique de vos screeners.
C'est la méthode utilisée chez Market Watch. Le bot Discord agit comme un scheduler intelligent avec contrôle à distance.
Pour les développeurs qui préfèrent une solution Unix native.
Pour un pipeline CI/CD complet hébergé dans le cloud.
| Critère | Bot Discord | Cron | GitHub Actions |
|---|---|---|---|
| Contrôle à distance | Oui (téléphone) | Non | Oui (web) |
| Notifications | Discord natif | Email (config) | Email / Slack |
| Coût infrastructure | Serveur local | Serveur local | Gratuit (2000 min/mois) |
| Fiabilité | Dépend du serveur | Dépend du serveur | 99.9% uptime |
| Flexibilité | Pause/Resume/Run | Limité | Workflow dispatch |
| Complexité setup | Moyenne | Facile | Moyenne |
Si vous débutez, commencez par cron : simple, natif, fiable. Une fois que votre pipeline est stable, migrez vers le bot Discord pour le contrôle à distance et les notifications. GitHub Actions est idéal si vous voulez un pipeline cloud sans dépendre de votre machine locale, mais les 2000 minutes gratuites par mois suffisent pour environ 30 scans.
Cliquez sur chaque question pour révéler la réponse.
pass_expr est une expression booléenne (vrai/faux) qui sert de filtre : seules les actions qui satisfont la condition sont retenues. Exemple : rsi14<30 ne garde que les actions survendues.
score_expr est une expression numérique qui sert de classement : parmi les actions qui passent le filtre, elle attribue un score pour les classer. Exemple : 100-rsi14 donne un score plus élevé aux actions les plus survendues. C'est le couple filtre + classement qui fait la puissance du DSL.
Les 5 régimes sont :
La détection utilise 6 composantes (credit, dollar, liquidité, S&P 500, obligations, VIX) plus l'analyse NLP de 18 articles d'actualité.
L'AutoScreener utilise ses propres 4 stratégies internes (pre_squeeze, momentum, breakout, short squeeze). Mais certaines opportunités spécifiques peuvent lui échapper.
En ajoutant 3 screeners DSL complémentaires (oversold, momentum, breakout), on maximise la couverture. Les actions qui apparaissent dans plusieurs screeners reçoivent un bonus de conviction. C'est le principe de la convergence multi-signaux : plus un signal est confirmé par des méthodes indépendantes, plus il est fiable.
L'overfitting (sur-ajustement) survient quand un screener est trop optimisé sur les données passées. Il capture le bruit plutôt que le signal, et ses performances se dégradent en temps réel.
Pour l'éviter : (1) gardez vos filtres simples (2-3 conditions maximum), (2) validez sur des données out-of-sample, (3) utilisez la rétrospective hebdomadaire pour mesurer la performance réelle, (4) méfiez-vous des backtests trop beaux (Sharpe > 3 est suspect). Un bon screener a un win rate de 55-65%, pas de 90%.
La rétrospective analyse chaque recommandation des 10 derniers jours et calcule 3 métriques : hit rate TP1 (% de trades atteignant le premier objectif), stop rate (% de trades stoppés), et P&L moyen (gain/perte moyen par trade).
La note va de A+ (TP1 > 75%, stop < 15%, P&L > +5%) à F (TP1 < 35%, stop > 50%, P&L < -2%). Les résultats sont aussi décomposés par stratégie pour identifier laquelle surperforme et ajuster les poids du screener en conséquence.
Pour un débutant, commencez par cron. C'est la solution la plus simple : une ligne dans crontab -e et c'est parti. Pas de bot à configurer, pas de pipeline CI/CD à écrire.
Une fois que votre pipeline est stable (après 2-3 semaines de fonctionnement), migrez vers le bot Discord pour gagner le contrôle à distance et les notifications. Si votre machine locale n'est pas fiable (coupures de courant, redémarrages), optez pour GitHub Actions qui offre 99.9% d'uptime et 2000 minutes gratuites par mois.
Prochaine étape
Vous savez scanner le marché. Mais comment diffuser vos analyses sur les réseaux sociaux automatiquement ?
C'est exactement ce que nous aborderons dans la Partie 3 : Réseaux Sociaux — Twitter/X, LinkedIn, Telegram, et Discord.