Architecture "Champion vs Challenger" & Gouvernance Multi-Agents IA
Ce mémo documente l'intégralité du système algorithmique Bourse V2 (MarketLens Pro) tel qu'il tourne en production 24h/24 sur le serveur VPS OVH (`https://app.cyrild.ovh`). Il détaille la logique globale du moteur Challenger (Python + SQLite) face au système historique Champion (n8n + Supabase), le rôle des 8 agents spécialisés, le séquencement chronologique d'une journée de bourse et la feuille de route de bascule finale.
Le système historique (Champion n8n) appliquait une règle unique à l'ensemble du portefeuille (ex: acheter dès +0,20 % de hausse avec un Stop Loss large). Or, une Large Cap industrielle, une Mid Cap technologique et une Small Cap Biotech n'ont ni la même volatilité (ATR), ni le même comportement de carnet d'ordres à 09h00. Le moteur Challenger résout ce problème grâce à 5 piliers algorithmiques :
DEFENSIVE_LARGE (< 2%), MOMENTUM_MID (2%–4%) ou EXPLOSIVE_SMALL (> 4%) et possède ses propres seuils (condition_prix_percent, condition_volume_x, take_profit_percent, trailing_stop_percent, hard_stop_percent) stockés dans SQLite (challenger_stock_profiles et bourse_admin).cur_p >= prev_slot_p) et filtre les faux départs entre 09h05 et 09h10 (skip_early_whipsaw).entry_price × 1,0038 (+0,38 %) afin qu'aucun trade gagnant ne puisse se transformer en perte nette après frais.TIER_1_COMPOUNDER (leaders rentables à forte visibilité), 🟡 TIER_2_CYCLICAL (valeurs cycliques) et 🔴 TIER_3_SPECULATIVE_BIOTECH (biotechs/micro-caps à risque de dilution). Il détecte également les thèses IA complaisantes (ex: "Malgré un Death Cross et un volume faible...") et bloque automatiquement les dossiers fragiles dont le Win Rate est inférieur à 65 %.
Le projet est gouverné par une hiérarchie de 8 agents spécialisés. Ils opèrent à la fois en autonomie 24h/24 sur le VPS OVH (via leurs moteurs Python planifiés) et dans VS Code (pour le développement logiciel continu via /autopilot).
| Agent / Commande | Moteur Python Associé | Rôle Métier & Responsabilité Décisionnelle | Exécution OVH |
|---|---|---|---|
| 👔 `bmad-agent-ceo` (`/ceo`) | ceo_orchestrator.py | Directeur Général (Alexandre Sterling) : Supervise la croissance nette du capital, arbitre entre les pôles Quant/Quali/News, rédige le verdict exécutif quotidien et peut spawner de nouveaux agents spécialisés (--spawn). |
08h45 / 17h35 / 18h35 |
| 📊 `bmad-agent-quant-ci` (`/quant-ci`) | optimizer.py quant_ci_agent.py |
Directeur Quantitatif & Amélioration Continue : Exécute les backtests multi-paramètres (63 721 combinaisons), calibre l'Option B par action, audite les horizons DAILY, WEEKLY, MONTHLY et génère les User Stories pour /autopilot. |
Quotidien 17h35 |
| 🔍 `bmad-agent-quali` | quali_audit_engine.py | Analyste Fondamental & ADN Métier : Audite les 134 sociétés sur 10 points (PEA, Capitalisation, Tier 1/2/3, Momentum Sectoriel, détection des thèses contradictoires, calendrier d'earnings T1–T4) et génère watchlist-intelligence.json. |
Quotidien 17h35 |
| 📰 `bmad-agent-premarket-news` | premarket_news_scanner.py | Radar de Catalyseurs Pré-Ouverture : Scanne avant 09h00 les flux RSS Google News Finance et catalyseurs pour classer chaque titre en CATALYSEUR_HAUSSIER (bonus seuil -0,15%), NEUTRE ou ALERTE_BAISSIERE (Veto immédiat). |
Matin 08h45 & 17h35 |
| 🔄 `bmad-agent-portfolio-screener` | portfolio_screener_engine.py | Curateur Mensuel Small & Mid Caps PEA : Identifie les poids morts à retirer du Portfolio (candidates_out) et screene les meilleures pépites Small/Mid Caps européennes (150 M€–8 Mds€, ATR 2,2%–4,5%) à intégrer en 1 clic (candidates_in). |
Mensuel & Sur Demande |
| ⚡ Cerveau Intraday | workflow_intraday_momentum.py | Exécuteur Temps Réel 5-min & Portfolio Manager : Évalue de 09h00 à 17h30 les conditions d'entrée/sortie (TP, TS avec Breakeven Floor, Hard Stop, Cutoff 16h30) et met à jour le capital disponible en temps réel dans SQLite. | Toutes les 5 min (09h-17h30) |
| 🛠️ `bmad-agent-dev` (`/autopilot`) | VS Code Autopilot | Ingénieur Logiciel Autonome : Dépile séquentiellement les User Stories [ ] de docs/5-BACKLOG.md, code les évolutions Python/HTML, met à jour les 6 fichiers Markdown et crée un commit Git par story. |
VS Code (/autopilot) |
| 🎨 `ux-designer` & 🛡️ `sre` | challenger-api.service | Design & Fiabilité Infrastructure : Respect du Design System Kinetic Terminal Light et maintien en condition opérationnelle de Nginx, Certbot SSL et du daemon systemd sur OVH. |
Daemon 24h/24 |
Toutes les étapes ci-dessous s'exécutent automatiquement sur le serveur VPS OVH (`152.228.217.41`) via le planificateur crontab et le service challenger-api.service, même lorsque votre ordinateur Mac est éteint :
L'agent
bmad-agent-premarket-news scanne les flux RSS Google News Finance et les thèses matinales sur les valeurs actives du Portfolio. Il enregistre les catalyseurs dans la table SQLite challenger_premarket_news, applique un bonus de réactivité (-0,15% sur le seuil de prix) aux CATALYSEUR_HAUSSIER et verrouille un Veto protecteur sur toute ALERTE_BAISSIERE ou publication de résultats imminente (J / J-1).À chaque bougie de 5 minutes, le moteur récupère le cours et le volume, applique un forward-fill propre depuis 09h00, et vérifie pour chaque action ses paramètres personnalisés Option B :
decision_finale == 'ACHETER'et absence de Veto Quali / Earnings / News.- Heure courante ≤
signal_heure_max(11h00 par défaut) et filtre anti-faux-départ 09h05–09h10 validé. - Hausse depuis 09h00 ≥
condition_prix_percentavec maintien haussier confirmé sur 2 bougies 5-min consécutives. - Ratio de volume ≥
condition_volume_xet capital disponible suffisant (Quantité = floor(2 500 € / entry_price)).
Pour chaque position ouverte, le moteur met à jour le plus haut atteint (
max_price_reached) et surveille 3 seuils de sortie :
- Take Profit (
TP) : Vente immédiate dès que le cours atteinttake_profit_price. - Trailing Stop avec Plancher Breakeven (
TS) : Dès que la plus-value latente atteintactivation_ts_percent, le stop suiveur s'active et ne peut jamais descendre sousentry_price × 1,0038(+0,38 % pour couvrir les 8 € de frais Saxo A/R). À partir de 15h00, la distance du stop suiveur se resserre automatiquement àtrailing_stop_2nd_percent. - Hard Stop (
HARD_STOP) : Coupe-circuit de protection du capital si le cours cassehard_stop_price.
Toute position encore ouverte à 16h30 est automatiquement clôturée au cours de marché, les frais A/R sont déduits et le capital net est réintégré dans
portfolio_admin. Aucune position n'est jamais conservée la nuit.Cinq minutes après la clôture d'Euronext (17h30), le pipeline automatique :
- Synchronise les dernières cotations de la séance (
sync_from_supabase.py) sans écraser les paramètres Challenger. - Recalibre les profils par action Option B et la validation Walk-Forward (
optimizer.py→challenger-data.json). - Met à jour les scores qualitatifs 360° des 134 entreprises (
quali_audit_engine.py→watchlist-intelligence.json). - Exécute l'audit Daily / Weekly / Monthly avec synthèse Gemini du CEO (
ceo_orchestrator.py→ci-quant-report.json).
Calcul des indicateurs techniques de clôture (EMA 13/34, Golden/Death Cross, RSI 14/7, OBV, Bollinger Squeeze, Micro-ATR 5-min) et génération des thèses d'investissement Gemini pour la séance du lendemain.
L'agent
bmad-agent-portfolio-screener propose dans la page Portfolio les valeurs sans intérêt à retirer et les meilleures nouvelles Small & Mid Caps européennes PEA à intégrer en 1 clic.WAL sur le VPS OVH (/var/www/marketlens-challenger/trading_challenger.db). Ses paramètres bourse_admin sont protégés contre tout écrasement lors des synchronisations de prix.bourse_admin: Référentiel des 134 sociétés + paramètres de trading personnalisés par action.day_data: Indicateurs techniques du soir (18h30), décisions Quants, thèses Gemini et bilan journalier.minutes_data: Cotations et volumes toutes les 5 minutes de09h00à17h30+ état du trade.challenger_stock_profiles: Profils de volatilité ATR et paramètres Option B calibrés paruic_saxo.challenger_quali_scores: Fiche ADN Qualitatif (TIER_1/2/3, Score/10, Contradiction thèse, Régime secteur).challenger_premarket_news: Signaux catalyseurs et titres d'actualités pré-ouverture (08h45).challenger_portfolio_rotation: Propositions mensuelles d'entrées/sorties Small & Mid Caps PEA.
challenger-engine/api_server.py sur 127.0.0.1:8001 avec redémarrage automatique (Restart=always), exposé en HTTPS par Nginx sous https://app.cyrild.ovh/api/challenger/*.- GET /api/challenger/duel & /state
- GET /api/challenger/watchlist & /ci-report
- POST /api/challenger/optimize & /apply-sqlite
- POST /api/challenger/ci-run & /spawn-agent
- POST /api/challenger/portfolio-add & /portfolio-remove
- Portfolio (`admin.html`) : Hub 360° des 134 entreprises + Screener Mensuel Small/Mid Caps.
- Intraday Challenger (`intraday-challenger.html`) : Simulation temps réel Option B + Badges ADN Quali.
- Champion vs Challenger (`champion-vs-challenger.html`) : Duel global, séance par séance et Walk-Forward OOS.
- System Improvements (`lab.html`) : Tour de contrôle CEO, Quant CI, Audit Quali et Radar News 08h45.
Durant la phase d'évaluation en conditions réelles (2 séances de bourse), le Challenger et le Champion tournent en parallèle. Dès validation de la surperformance Live du Challenger par l'opérateur et le CEO, la bascule définitive s'effectue en 3 étapes sans interruption de service :
18h30 et 09h00-17h30) sur https://n8n.cyrild.ovh afin de libérer l'unique jeton d'authentification Saxo Bank OpenAPI.workflow_18h30_quants.py et workflow_intraday_momentum.py interrogent directement les endpoints Saxo Bank (bougies Daily et bougies 5 minutes) et écrivent nativement dans les tables day_data et minutes_data de SQLite, supprimant toute dépendance à Supabase.| Date | Version / Cycle | Évolutions Déployées & Résultats Vérifiés |
|---|---|---|
| 25-10-2026 | Cycles CEO 1 à 6 (`US-11` à `US-22`) | Déploiement de l'autonomie 100 % VPS OVH (challenger-api.service + 4 crons), Breakeven Floor (+0,38%), Fiche ADN Qualitatif (TIER 1/2/3), Radar News Pré-Ouverture (08h45), renommage en Portfolio, Screener Mensuel Small/Mid Caps PEA et mise à jour complète du Mémo. Win Rate porté à 87,14 % (Profit Factor 6,06, Max DD -111,77 €). |
| 24-10-2026 | Fondations Challenger (`US-01` à `US-10`) | Création de la base SQLite trading_challenger.db, transcription Python des workflows 18h30 et 09h00–17h30, calibration Option B par action et création de l'escouade d'agents (CEO, Quant CI, Quali). |
| 03-10-2026 | Baseline Champion | Documentation initiale de la stratégie Intraday Trailing Momentum sous n8n + Supabase (cutoff 16h30, allocation 2 500 €). |