Briefing post-séance EUR/USD
Concept : chaque matin ouvré, un récap factuel de la séance qui vient de se clôturer. Prix réels, news réelles, signaux Hermes réels, outcomes vérifiables. Zéro hallucination, zéro mock.
Si une donnée manque (Hermes pas up, API rate-limit, etc.), le briefing l'écrit explicitement (« non disponible ») plutôt que d'inventer.
Sources de vérité (toutes obligatoires)
| Donnée | Source | État V1.5 |
|---|---|---|
| Prix open / high / low / close D1 | Twelve Data /time_series |
Disponible (clé requise) |
| Volatilité réalisée (range, ATR) | Calculé depuis bars D1+H1 | Disponible |
| News rouge sur la séance | Forex Factory XML (proxy /api/calendar) |
Disponible |
| Signaux détectés par Hermes | data/signals.db table signals_detected |
Phase H1 requis |
| Outcomes (TP/SL/expiré) | signals_detected re-évalué J+1 |
Phase H1+ requis |
| Trades utilisateur réels | Journal CSV optionnel | Manuel uniquement |
Tant qu'Hermes n'est pas up (Phases H1-H2), le briefing fonctionne en mode dégradé : récap marché + news uniquement, sections "signaux" et "outcomes" marquées non disponibles.
Format — 5 sections factuelles
① Récap marché (prix réels D1)
EUR/USD — séance du <YYYY-MM-DD> (<weekday>)
Open : X.XXXX
High : X.XXXX
Low : X.XXXX
Close : X.XXXX
Range jour : XX pips
Variation : ±XX pips (±X.XX%)
Volume D1 : NN (synthétique sur forex Twelve Data)
Une phrase descriptive en sus, dérivée mécaniquement (pas commentée narrativement) :
- Si
close > open + 0.3 * range_avg_30d→ « clôture haussière marquée » - Si
range_jour < 0.5 * atr_14→ « journée rangée étroite » - etc. — règles déterministes uniquement, jamais de prose libre
② Contexte news rouge réelle (Forex Factory)
News HIGH/MEDIUM impact sur la séance (UTC) :
HH:MM USD Event title (Actual: X.X / Forecast: X.X / Previous: X.X)
HH:MM EUR Event title (...)
Si Actual n'est pas encore publié au moment du briefing → noter
(Actual: pending).
Si aucune news rouge ce jour → « Aucune news HIGH/MEDIUM EUR/USD ».
③ Opportunités détectées par Hermes
Lecture de data/signals.db table signals_detected filtrée sur la
séance écoulée :
N signaux détectés (XX cycles exécutés) :
1. HH:MM pullback_ema50 long score 0.42 entry 1.0820 SL 1.0795 TP 1.0875
2. HH:MM range_trading short score 0.38 entry 1.0890 SL 1.0905 TP 1.0860
...
Si Hermes pas up → « Hermes pas opérationnel — section non disponible ».
Si 0 signal détecté sur la séance → « Aucune opportunité A+ détectée (N cycles, M propositions rejetées par les filtres) ». La répartition des reject reasons est ajoutée si > 0 :
Rejets : news_blackout × X, multi_tf × Y, score_low × Z, ...
④ Outcome des signaux (J+1 retro-check)
Pour chaque signal détecté la veille, on lit les bougies D1+H1 du jour suivant et on classe :
Signal #1 (pullback_ema50 long entry 1.0820)
→ TP touché à HH:MM (max 1.0876, +1.0R)
Signal #2 (range_trading short entry 1.0890)
→ SL touché à HH:MM (min 1.0903 OK, puis 1.0905 cassé, -1.0R)
Signal #3 (divergence_hunter long entry 1.0838)
→ expiré à 23:00 sans TP ni SL touché (close 1.0848, +0.4R unrealized)
Agrégat fin de section :
N signaux outcome :
TP hit : X (X.X%)
SL hit : Y (Y.Y%)
Expired : Z (Z.Z%, R moyen +0.X)
R moyen séance : ±0.XR
Si Hermes pas up → « non disponible ».
⑤ Préparation séance suivante (factuelle uniquement)
Date : <YYYY-MM-DD> (<weekday>)
News rouge : <liste depuis Forex Factory pour le jour suivant>
Open D1 prév : à découvrir à l'open London
ATR(14) D1 : XX pips
Range D1 30j : moyenne XX pips, médiane XX pips
Niveaux clés : (calculés mécaniquement depuis D1)
- Pivot point classique : X.XXXX
- Support 1 / Résistance 1 : X.XXXX / X.XXXX
- Plus haut/bas 5j : X.XXXX / X.XXXX
Aucun objectif "discipline" auto-formulé : c'est une variable utilisateur, pas marché. À ajouter manuellement dans une 6e section optionnelle si l'utilisateur tient un journal.
Mode dégradé (Hermes pas up — état V1.5 actuel 2026-04-26)
Tant que data/signals.db n'existe pas, le briefing affiche :
- ① Récap marché : ✅ généré
- ② Contexte news : ✅ généré
- ③ Opportunités Hermes : ⚠ « non disponible — Hermes Phase H1 en chantier »
- ④ Outcomes signaux : ⚠ même message
- ⑤ Préparation : ✅ généré (niveaux mécaniques)
C'est explicite. Pas de fallback narratif inventé.
Implémentation (Phases du KANBAN)
| Phase | Capability briefing |
|---|---|
| H0.5 (livré) | Aucune — les briefings synthétiques pré-existants ont été supprimés (data fake = bruit) |
| H1 | Sections ① ② ⑤ disponibles dès que src/data/fetcher.py (Twelve Data) tourne |
| H2 | Section ③ disponible quand signals_detected SQLite est alimenté |
| H3 | Section ④ disponible (script de retro-check J+1) + génération auto + envoi Telegram |
Tant que H3 n'est pas livré, le briefing est généré manuellement ou à la demande via un script à écrire en Phase H1 (cf. KANBAN).
Anti-patterns
- ❌ Prose narrative inventée sur "ce qu'a fait le marché" — uniquement des phrases descriptives mécaniques basées sur des règles déterministes.
- ❌ Stats utilisateur fictives (hit-rate, discipline) tant qu'il n'y a pas de journal CSV réel. Section utilisateur = optionnelle, jamais auto-générée à partir de rien.
- ❌ Patterns d'apprentissage hallucinés — un pattern requiert ≥3 occurrences réelles documentées, sinon il n'est pas mentionné.
- ❌ Chiffres approximatifs — toujours utiliser le prix exact retourné par Twelve Data, ne pas arrondir au pip pour faire propre.
Liens
- Calibration des attentes
- Pièges psychologiques — référence si l'utilisateur ajoute manuellement la section discipline
- KANBAN root — Phases H1-H3 implémentation
- Hermes README — état Hermes