DOCUMENTATION TECHNIQUE & GUIDE TRADER

GeoOptions Intelligence

Manuel Complet du Système — Architecture, Algorithmes & Guide Trader
Phase 1 · IV & Structure Phase 2 · Fiabilité & Calibration Phase 3 · Portfolio & Risk Phase 4 · IA Probabiliste
Version 4.0 · Juillet 2026 · 4 Phases · FastAPI + React + SQLite + GPT-4o
Confidentiel — Usage interne trader uniquement

Table des Matières

1. Vue d'Ensemble du Système

1.1 Ce que fait le système

GeoOptions Intelligence est un cockpit de trading d'options à usage personnel, conçu pour un trader individuel opérant sur Interactive Brokers avec des positions de l'ordre de 1 000 € par trade et un horizon moyen de 3 mois. Le système fusionne en temps quasi-réel trois flux d'information hétérogènes — données de marché financières (prix, volatilité implicite, open interest), signaux géopolitiques (flux RSS de presse internationale, scores de tension par région) et analyse macroéconomique (régime macro dominant parmi 4 états : Expansion, Stagflation, Récession, Stress Géopolitique) — pour générer des suggestions de patterns de trading options avec probabilités de succès, tailles de position ajustées au risque, et contre-thèses d'invalidation. L'ensemble tourne sur un VPS Linux sous FastAPI (backend) et React (frontend), avec SQLite comme base de données persistante et GPT-4o comme moteur de raisonnement.

1.2 Les 3 Principes Fondamentaux

Principe 1 — IA Propose
GPT-4o analyse le contexte macro-géopolitique complet et suggère des patterns de trading (ex: "Long call spread XLE" ou "Straddle court VIX"). L'IA génère la créativité ; elle n'est jamais le dernier mot.
Principe 2 — Les Règles Quantitatives Filtrent
Chaque suggestion passe un filtre dur : IV Rank dans la bonne zone, score de fiabilité historique suffisant, concentration portefeuille acceptable, Kelly positif. Les patterns refusés par les filtres ne parviennent jamais au trader.
Principe 3 — L'Historique Valide
Chaque pattern tradé est enregistré avec son résultat. Le système met à jour en temps réel les win rates, les scores de Brier (calibration IA), les posteriors bayésiens, et les matrices de transition de régimes. Le système apprend de ses propres erreurs.

1.3 Architecture Technique

┌─────────────────────────────────────────────────────────────────┐ │ FRONTEND (React + Vite) │ │ Dashboard · Radar Géo · Marchés · Régime · Options Lab │ │ Patterns · Portefeuille · Journal · Rapport IA · Super Ctx │ │ Analytics · Analytics Avancées · Risk Dashboard · Config │ └──────────────────────────┬──────────────────────────────────────┘ │ HTTP / REST API ▼ ┌─────────────────────────────────────────────────────────────────┐ │ BACKEND (FastAPI / Python) │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │ │ │ Scheduler │ │ AI Engine │ │ Risk Engine │ │ │ │ APScheduler │ │ GPT-4o API │ │ Kelly · HHI · Cluster│ │ │ │ 6h cycle │ │ 6 prompts │ │ Bayesian · K-Means │ │ │ └──────┬───────┘ └──────┬───────┘ └──────────┬───────────┘ │ │ │ │ │ │ │ ┌──────▼─────────────────▼───────────────────────▼───────────┐ │ │ │ SQLite Database (14+ tables) │ │ │ └────────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────┘ │ │ │ ▼ ▼ ▼ yfinance API OpenAI API RSS Feeds (prix, IV, OI) (GPT-4o) (Reuters, BBC, Al Jazeera)
Stack Technique
Backend : Python 3.11, FastAPI, APScheduler, SQLite (aiosqlite), yfinance, feedparser, OpenAI SDK v1.x
Frontend : React 18, Vite, Recharts, Tailwind CSS
Déploiement : VPS Linux (Ubuntu 22.04), lancement via start_all.bat (Windows dev) ou pm2 (VPS)
IA : GPT-4o (modèle principal), GPT-4o-mini (résumés rapides, 5x moins cher)

1.4 Les 15 Pages du Cockpit

#PageDescriptionFréquence d'usage
1DashboardVue synthétique : KPIs macro, dernière analyse IA, signaux marché du jourPlusieurs fois/jour
2Radar GéopolitiqueCarte interactive des tensions mondiales par région, score géo global 0–100Quotidien
3MarchésPrix temps réel : actions, ETF, matières premières, crypto, forex avec variationsQuotidien
4Régime MacroÉtat actuel (Expansion/Stagflation/Récession/Stress Géo), scores, historiqueHebdomadaire
5Options LabIV Rank, IV Percentile, Term Structure, Skew, Open Interest pour tous tickersAvant chaque trade
6Patterns IASuggestions du cycle en cours avec scores, tailles Kelly, contre-thèsesÀ chaque cycle (6h)
7PortefeuillePositions ouvertes, P&L, concentration, alertes risque clusterQuotidien
8Journal de BordTrades historiques, filtres par pattern/date/résultat, statistiques de performanceHebdomadaire
9Rapport IATexte complet de la dernière analyse GPT-4o, raisonnement visibleÀ chaque cycle
10Super ContexteTexte narratif enrichi injecté dans le méga-prompt : patterns matures, historique récentLecture mensuelle
11AnalyticsWin rate par pattern, PnL cumulé, distribution des scores, calibration BrierMensuel
12Analytics AvancéesClustering K-Means, matrices de transition, embeddings, déduplications sémantiquesMensuel
13Risk DashboardHHI, drawdown attendu, alertes concentration facteur, Kelly par positionAvant chaque trade
14ConfigParamètres système : seuils Kelly, capital, intervalles cycle, clé API, tickersInitial + rare
15Knowledge BaseBase de patterns manuels, demi-vie, tags géopolitiques, édition directeMensuel

2. Le Cycle Automatique — Simulation Complète Étape par Étape

Le système tourne un cycle complet toutes les 6 heures (configurable). Voici une simulation fidèle d'un cycle réel avec des données fictives mais réalistes.

09:00
Heure UTC · 17 Juin 2026
72%
Score Stagflation
68/100
Geo Score (Élevé)
24.3
VIX (+8.2%)

2.1 Les 9 Étapes du Cycle

Étape 0 — Collecte des données de marché (yfinance)

Input : Liste de tickers configurés (XLE, GLD, VIX, SPY, TLT, DXY, USDCAD, etc.)

Traitement : Appel yfinance pour prix spot, variation J-1, volume. Calcul des ratios dérivés.

Output (données simulées) :

TickerPrixVar. JourSignal
VIX24.3+8.2%Stress modéré
Brent$89.40+3.1%Choc offre
DXY104.2-0.4%Dollar faible
Or (GLD)$2,380+1.2%Flight-to-safety
Cuivre$3.82-1.8%Demande industrielle faible
Pente 10Y-3M-0.42%Inversion (récession)

Règle appliquée : Si VIX > 20 ET Brent > +2% → signal "choc d'offre pétrolier probable". Si pente < 0 → signal "risque récession". Ces deux signaux sont encodés et transmis à l'étape suivante.

Étape 1 — Calcul du Régime Macro

Input : ~50 indicateurs de marché (yfinance batch) couvrant 6 blocs : Liquidité, Crédit, Énergie, Métaux, Croissance, Dérivés.

Algorithme en 3 couches :

Couche 1 — Signaux multi-périodes (anti-bruit) : Chaque variation est un blend pondéré pour éliminer le bruit intraday.

signal_brent = 0.20 × change_1j + 0.50 × change_5j + 0.30 × change_10j → Exemple : change_1j = +3.2%, change_5j = +0.8%, change_10j = -0.4% signal_brent = 0.20×3.2 + 0.50×0.8 + 0.30×(-0.4) = 0.64 + 0.40 - 0.12 = +0.92% (bien moins agressif que le +3.2% brut)

Couche 2 — Scoring par règles sur 8 régimes : Goldilocks, Désinflation, Soft Landing, Reflation, Stagflation, Choc Inflationniste, Récession, Crise de Liquidité. Chaque régime accumule des points (0–100) via ~15 conditions if/elif sur les signaux blendés.

Score_Stagflation (brut) = Brent↑↑ (+30) + Courbe plate (+10) + Or↑ (+15) + Cuivre↓ (+15) + Défensifs>Tech (+8) = 78/100 Score_Goldilocks (brut) = VIX<18 (+20) + S&P>200j (+15) + HYG↑ (+15) + SKEW<115 (+6) + VVIX<85 (+5) = 61/100

Couche 3 — Lissage Bayésien + persistance : Les scores bruts sont blendés avec la moyenne glissante des 3–25 derniers jours (poids prior : 15%→45% selon la profondeur d'historique). Un régime résiste au changement si le nouveau leader ne le dépasse pas de 10 pts.

score_lissé[regime] = (1 - w_prior) × score_brut + w_prior × moyenne_historique w_prior = min(0.45, 0.05 × nb_jours_historique) → 5 jours : w=25% · 9 jours : w=45% (plateau) Persistance : si score_lissé[nouveau] - score_lissé[ancien] < 10 → ancien régime maintenu

Bootstrap au démarrage : Au premier chargement, le système rejoue automatiquement les 20 derniers jours de cotations (via yf.download batch 45j) pour pré-remplir l'historique. La détection est stable dès la première ouverture de la page.

Output : Régime dominant lissé + score de stabilité (nombre de jours consécutifs) + biais par classe d'actifs. Affiché en bandeau sur la page Régime Macro.

Note Algorithme
Quand deux régimes sont à moins de 10 pts après lissage (ex: Stagflation 68%, Soft Landing 61%), le système résiste à tout changement de dominant. Évite les oscillations qui rendaient la détection inutilisable en séance.
Étape 2 — Collecte RSS, Enrichissement IA & Calcul du Geo Score

Input : 7 flux RSS (Reuters World/Business/Commodities, AP, Al Jazeera, FT, Bloomberg) — jusqu'à 50 articles, cache 1h.

Pipeline en 3 couches :

Couche 1 — Classification déterministe (sans IA) :

Couche 2 — Enrichissement GPT-4o-mini GPT-4o-mini (jusqu'à 20 news, 1 seul appel batch) :

Pour chaque news, GPT-4o-mini retourne : impact_score → corrigé (0.0–1.0) — "Trump joue au golf" reste faible ai_dir_energy → "bullish" | "bearish" | "neutral" ai_dir_metals → "bullish" | "bearish" | "neutral" ai_dir_indices → "bullish" | "bearish" | "neutral" ai_resolution → true si cessez-le-feu / accord / désescalade ai_insight → "L'accord de cessez-le-feu pèse sur le pétrole malgré les tensions"

Couche 3 — Alignement IA sur les patterns (dans compute_pattern_relevance()) :

base_relevance = (trigger_match × 0.5 + keyword_match × 0.5) × 100 ← string matching ai_alignment = f(bullish_count, bearish_count, resolution_count) ← -25..+25 pts → Pattern "Oil Spike" (expected_move > 0, asset=energy) : ai_dir_energy majoritairement "bullish" → +20 pts ai_dir_energy majoritairement "bearish" OU ai_resolution=True → -15 pts (cessez-le-feu Gaza → flagged "contre-signal ⚠") final_relevance = clamp(base_relevance + ai_alignment, 0, 100)

Score géo calculé : utilise les impact_score corrigés par l'IA (plus de faux positifs sur les articles culturels ou sportifs mentionnant "Iran").

Ce qui s'affiche dans le Radar
Onglet Actualités : chaque news affiche (au clic) l'insight IA en bleu, les flèches directionnelles ⛽↑ 🥇↓ 📊↓ par classe d'actif, et le badge "🕊 résolution" si l'article signale une désescalade.
Onglet Patterns : badge vert "🤖 IA aligné +18pts" ou rouge "🤖 contre-signal -12pts" sur chaque pattern, avec les phrases d'insight des news correspondantes en dessous. La pertinence de base (string matching) est affichée séparément pour comparaison.
Graceful Degradation
Si OpenAI n'est pas configuré, le pipeline tombe en silence sur le mode déterministe seul. L'enrichissement IA est facultatif et non bloquant.
Étape 3 — Calcul des Métriques Options (Phase 1)

Input : Liste des tickers options (XLE, GLD, SPY, QQQ, TLT, USDCAD, VIX)

Traitement : Pour chaque ticker, calcul de IV Rank, IV Percentile, Term Structure (déformation courbe IV), Put/Call OI Ratio.

Résultats simulés :

TickerIV ActuelleIV RankIV PctileStructurePC RatioSignal
XLE32%35%73%Contango0.82Vente vol possible
GLD18%22%41%Plat1.15Acheter protection
SPY21%48%59%Légère backwardation1.38Neutre — attendre
TLT15%18%32%Contango1.05IV Rank trop bas
USDCAD8%52%61%Plat0.94Neutre
QQQ24%78%82%Backwardation1.52Vendre vol
VIX24.361%68%BackwardationVol short terme élevée

Ces données sont encodées dans le méga-prompt de l'Étape 5.

Étape 4 — Construction du Super Contexte

Input : Base de données Knowledge Base (patterns historiques), trades des 90 derniers jours, insights récents avec scores de fiabilité

Gate de 6 heures : Le Super Contexte n'est régénéré que si le précédent a plus de 6 heures. Ceci évite de surcharger le contexte GPT-4o avec des données quasi-identiques entre deux cycles rapprochés.

Contenu généré (extrait simulé) :

Super Contexte — Extrait (généré 17 juin 2026 03:00 UTC)
PATTERNS HISTORIQUES FIABLES (score > 1.5) :
✓ "Choc Pétrolier Moyen-Orient" → score 2.27 · 28 trades · 68% WR · long XLE calls
✓ "Hausse Or Flash-To-Safety" → score 1.87 · 19 trades · 72% WR · long GLD calls

TRADES RÉCENTS (30j) :
✓ Long XLE call spread $88/$95 → +14.2% (ouvert, mature à 67%)
✗ Short SPY put $480 → -8.1% (fermé, rally surprise post-CPI)

PORTEFEUILLE ACTUEL :
⚠ Facteur dollar : 53% — SATURÉ (seuil 40%)
⚠ Facteur géopolitique : 60% — SATURÉ (seuil 50%)
✓ HHI : 0.278 — bien diversifié (seuil alerte : 0.35)

Règle "trades matures uniquement" : Seuls les trades ayant consommé plus de 40% de leur horizon temporel sont inclus dans le contexte. Un trade ouvert depuis 5 jours pour 90 jours (5.5%) n'est pas encore informatif.

Étape 5 — Le Méga-Prompt GPT-4o

Structure du prompt (voir Section 7 pour le détail complet) :

Coût estimé : ~4,500 tokens input + ~800 tokens output ≈ 0.058$ par cycle (à 6h → ~0.23$/jour)

Étape 6 — Parsing & Validation des Patterns

Input : Réponse JSON brute de GPT-4o

Filtres appliqués :

Output : 2–4 patterns validés, stockés dans la table analyses_ia

Étape 7 — Mise à jour Bayésienne des Patterns

Input : Tous les trades fermés depuis le dernier cycle avec résultat (win/loss)

Traitement : Pour chaque pattern associé à un trade fermé, mise à jour du posterior bayésien (α, β). Le score GPT initial est utilisé comme prior. Voir Section 6.1 pour le détail.

Output : Tables pattern_performance et bayesian_estimates mises à jour

Étape 8 — Notification & Affichage

Input : Patterns validés, alertes risque, signaux d'invalidation détectés

Output : Mise à jour du frontend React (polling toutes les 60 secondes), envoi d'une notification push si score > 75 ou alerte risque critique

Durée totale du cycle : 47–120 secondes (selon disponibilité API OpenAI)

2.2 Exemple de Sortie GPT-4o Simulée

Sortie GPT-4o — Cycle 17 juin 2026 09:00 UTC (simulé)
{
  "analyse_globale": "Le contexte de stagflation confirmé (72%) combiné à un choc pétrolier en cours (Brent +3.1%, OPEC+ réunion d'urgence) et aux tensions en Asie du Nord-Est crée un environnement favorable aux stratégies longues volatilité sur l'énergie et aux protections défensives sur les indices. L'inversion de la courbe (-0.42%) renforce le risque de récession à 6-9 mois.",
  "patterns": [
    {
      "nom": "Choc Pétrolier Corée du Nord — Perturbation Routes Énergétiques",
      "strategie": "Long call spread XLE $90/$98 — expiration Septembre 2026",
      "ticker_principal": "XLE",
      "score_confiance": 78,
      "probabilite_succes": 0.68,
      "horizon_jours": 75,
      "taille_kelly_pct": 12.4,
      "raisonnement": "Le tir de missile nord-coréen perturbe les routes de navigation en mer du Japon et amplifie l'effet OPEC+. L'IV Rank de XLE à 35% est raisonnable pour acheter des calls. Le call spread limite le coût si la hausse est progressive.",
      "contre_these": "Si les négociations diplomatiques US-Corée du Nord reprennent rapidement, la prime de risque géopolitique se dégonfle. Probabilité : 28%.",
      "trigger_invalidation": "Annonce de contacts diplomatiques US-RPDC ou retrait des forces navales nord-coréennes",
      "facteurs_risque": ["géopolitique", "énergie"],
      "ajustement_cluster": "Facteur géo à 60% — taille réduite de 50%"
    },
    {
      "nom": "Flight-to-Safety Or — Dollar Faible + VIX Hausse",
      "strategie": "Long call GLD $195 — expiration Août 2026",
      "ticker_principal": "GLD",
      "score_confiance": 71,
      "probabilite_succes": 0.65,
      "horizon_jours": 45,
      "taille_kelly_pct": 8.7,
      "raisonnement": "Or à +1.2% en même temps que dollar faible (-0.4%) et VIX hausse = configuration classique de fuite vers la sécurité. IV Rank GLD à 22% (cheap) → acheter de la vol est justifié. Objectif $2,450.",
      "contre_these": "Si le dollar rebondit sur des données économiques US solides (NFP, CPI surprise), l'or recule mécaniquement.",
      "trigger_invalidation": "DXY +1.5% sur une session / NFP > 300K / CPI core < 2.8%",
      "facteurs_risque": ["dollar", "inflation"],
      "ajustement_cluster": "Facteur dollar saturé (53%) — taille réduite de 50%"
    },
    {
      "nom": "Compression Volatilité QQQ — Pic VIX Technologique",
      "strategie": "Short strangle QQQ $460/$510 — expiration Juillet 2026",
      "ticker_principal": "QQQ",
      "score_confiance": 64,
      "probabilite_succes": 0.61,
      "horizon_jours": 30,
      "taille_kelly_pct": 6.2,
      "raisonnement": "QQQ IV Rank à 78% (cher) avec backwardation → vendre de la vol. Le stress géo actuel est concentré sur l'énergie et l'Asie du Nord-Est, pas sur les techs. Short strangle profite du time decay si le marché reste dans la range.",
      "contre_these": "Si NVDA ou MSFT publie des résultats décevants ou si une escalade géopolitique touche les semi-conducteurs (Taiwan), mouvement directionnel brutal.",
      "trigger_invalidation": "VIX > 30 / Annonce guerre Taiwan / Earnings QQQ -10% gap",
      "facteurs_risque": ["liquidité", "technologie"],
      "ajustement_cluster": "Facteurs non saturés — taille nominale maintenue"
    }
  ]
}
Ce que le Trader voit
Les 3 patterns apparaissent dans la page "Patterns IA" avec leurs scores, tailles, contre-thèses, et indicateurs de cluster. Le trader clique sur "Valider" pour enregistrer son intérêt ou "Rejeter" pour exclure le pattern du contexte futur.

3. Phase 1 — Volatilité Implicite & Structure Marché

3.1 IV Rank & IV Percentile

La volatilité implicite (IV) d'une option mesure ce que le marché "pense" de la volatilité future du sous-jacent. Mais une IV de 32% est-elle chère ou pas chère ? Tout dépend de l'historique récent. C'est le rôle de l'IV Rank et de l'IV Percentile.

Formules

IV Rank = (IV_actuelle - IV_min_52s) / (IV_max_52s - IV_min_52s) × 100 IV Percentile = (Nombre de jours sur 252 où IV < IV_actuelle) / 252 × 100
Exemple Complet — XLE (Energy ETF)

Données : IV actuelle = 32% · IV min 52 semaines = 18% · IV max 52 semaines = 58%

IV Rank = (32 - 18) / (58 - 18) × 100 = 14 / 40 × 100 = 35% → CHEAP (en dessous du 50ème centile historique)

Interprétation IV Rank 35% : La volatilité actuelle est dans le tiers inférieur de sa plage annuelle. Elle est relativement bon marché par rapport à son propre historique récent.

IV Percentile : Sur les 252 derniers jours de trading, 73% des jours avaient une IV < 32%. → IV Percentile = 73%

Divergence IV Rank vs IV Percentile : IV Rank = 35% mais IV Percentile = 73% — c'est possible ! Cela signifie que l'IV a passé beaucoup de temps sous 32%, mais les pics (jusqu'à 58%) tirent la moyenne haute. Le Rank est distordu par ce pic exceptionnel. Dans ce cas, le Percentile est plus informatif.

Table simulée — 8 Tickers avec IV Rank

TickerIV ActuelleIV Min 52sIV Max 52sIV RankIV PctileSignal
XLE32%18%58%35% (cheap)73%Acheter vol prudent
GLD18%12%34%27% (cheap)41%IV bon marché
QQQ24%14%38%83% (cher)82%Vendre vol
SPY21%13%42%55% (neutre)59%Attendre
TLT15%11%28%24% (cheap)36%Acheter protection
IWM28%16%48%38% (neutre-bas)52%Neutre
USO41%22%65%44% (neutre)61%Attendre
VXX62%45%120%23% (cheap)38%Acheter vol longue
Règle de Trading — IV Rank
IV Rank < 25% : L'IV est historiquement basse → acheter de la volatilité est bon marché (long straddle, long calls/puts, long spreads). Le coût est faible, la chance de pic est élevée.

IV Rank 25–75% : Zone neutre → aucune stratégie volatilité n'a d'avantage marqué. Privilégier les spreads directionnels.

IV Rank > 75% : L'IV est historiquement haute → vendre de la volatilité est favorable (short strangle, iron condor, cash-secured puts). La prime est élevée, le mean reversion est probable.

3.2 Term Structure & Skew

La term structure décrit la forme de la courbe d'IV selon les expirations. Le skew décrit l'asymétrie de l'IV entre les puts et calls pour une même expiration.

Contango (marché normal)

Exemple XLE en juin 2026 : IV30 = 22% (expiration 30 jours) IV60 = 25% (expiration 60 jours) IV90 = 27% (expiration 90 jours) IV180 = 30% (expiration 180 jours) Pente = (IV180 - IV30) / 150 jours = +8pts / 150j = +0.053 pt/jour → CONTANGO IV (%) 30 ┤ ●────── IV180=30 │ ●────────── │ ●───────── 22 ● └──────────────────────────────────────────── 30j 60j 90j 120j 150j 180j jours Interprétation : Marché calme à court terme. La vol longue est plus chère. → Stratégie : vendre de la vol courte terme (short put 30j), acheter protection longue (long put 180j).

Backwardation (stress court terme)

Exemple SPY pendant choc géopolitique : IV30 = 38% (panique court terme) IV60 = 32% IV90 = 28% IV180= 24% Pente = (IV180 - IV30) / 150j = -14pts / 150j = -0.093 pt/jour → BACKWARDATION IV (%) 38 ● │ ●────── │ ●────────── 24 │ ●────────────────── └──────────────────────────────────────────── 30j 60j 90j 120j 150j 180j jours Interprétation : Stress court terme élevé. Acheter protection court terme est cher. → Stratégie : acheter vol longue terme (moins chère), vendre vol court terme contre. → Exemple : calendar spread — vendre IV30, acheter IV90.

Put/Call Skew

Skew = IV_put_25delta - IV_call_25delta Exemple XLE : IV_put_25delta = 28% (puts à 25 delta = puts légèrement OTM) IV_call_25delta = 22% (calls à 25 delta) Skew = 28% - 22% = +6 points → Puts plus chers que calls de 6 points → PROTECTION DEMAND élevée → Les institutionnels achètent massivement des puts → anticipent une baisse Skew négatif (Skew < 0) : calls plus chers → anticipation de hausse explosive (ex: squeeze). Skew neutre (±1pt) : marché non directionnel, vol distribuée symétriquement.
Implication Trading
Un skew de +6pts sur XLE signifie que les puts sont surévalués par rapport aux calls. Si vous voulez une protection baisse sur XLE, vous payez une prime supplémentaire. Alternativement, vendre des puts dans ce contexte donne plus de prime — mais le risque est asymétrique (les institutionnels qui achètent ces puts voient peut-être quelque chose que vous ne voyez pas).

3.3 Options Flow & Open Interest

Put/Call OI Ratio

PC_Ratio = Open_Interest_Puts / Open_Interest_Calls Valeur > 1.2 → Institutionnels en mode défensif (achat puts = protection portefeuille) Valeur < 0.7 → Sentiment haussier dominant (calls spéculatifs) Valeur 0.7–1.2 → Neutre / équilibré
Exemple — Open Interest Inhabituel sur XLE

Observation : Strike Call XLE $92 · Expiration Septembre 2026

StrikeOI CallsOI PutsOI Moyen Calls (12m)Signal
$8812,40018,6009,200Normal
$9022,80015,20011,000Légèrement élevé
$9245,0008,4008,000INHABITUEL — 5.6x moyenne
$9518,2006,1007,500Élevé mais explicable
$989,6004,2005,200Normal

Interprétation : OI calls $92 = 45,000 contrats vs moyenne 8,000 → mur de résistance potentiel à $92. Deux scénarios possibles :

Dealer Gamma Estimation

Le Dealer Gamma mesure si les market makers sont globalement "long gamma" ou "short gamma". C'est une estimation basée sur l'OI et les grecs approximatifs.

Gamma_net_dealer = Σ (OI × Gamma × sens_position) Short Gamma Dealer (Gamma < 0) : → Pour se couvrir, ils doivent VENDRE quand le marché baisse et ACHETER quand il monte → Amplifie les mouvements → marché plus volatil Long Gamma Dealer (Gamma > 0) : → Pour se couvrir, ils doivent ACHETER quand le marché baisse et VENDRE quand il monte → Amortit les mouvements → marché plus stable, range-bound
Règle Pratique
En période de gamma short (dealers court gamma), les mouvements de marché de ±1% peuvent rapidement devenir ±3%. C'est pourquoi les options sont soudainement sous-évaluées juste avant un mouvement violent — le marché n'anticipe pas l'amplification mécanique du dealer hedging.

4. Phase 2 — Fiabilité & Calibration

4.1 Pattern Reliability Score

Le Pattern Reliability Score (PRS) mesure la fiabilité statistique d'un pattern basé sur son historique de trades réels. Il pénalise les petits échantillons et récompense les win rates élevés sur de nombreux trades.

Formule

Score_Fiabilité = win_rate × log(n + 1) où : win_rate = proportion de trades gagnants (0.0 à 1.0) n = nombre total de trades sur ce pattern log() = logarithme naturel (base e) Propriétés : - Score nul si win_rate = 0 (aucun trade gagnant) - Score croît lentement avec n (diminishing returns de l'expérience) - n=4 → log(5) = 1.61 · n=28 → log(29) = 3.37 (seulement 2× plus, pour 7× plus de trades)

Table simulée — Patterns avec Scores de Fiabilité

PatternTradesWinsWin RatePnL MoyenScore FiabilitéStatut
Choc Pétrolier Moyen-Orient281968%+12.4%2.27Fiable
Hausse Or Flight-to-Safety191472%+9.8%1.87Fiable
Escalade Taiwan Strait12758%+8.1%1.28Prometteur
Hausse Taux Fed Surprise7343%-2.3%0.55Faible
Crise Dollar Marchés Émergents4375%+18.2%1.04 ⚠Petit échantillon
Pénurie Blé Ukraine Escalade3133%-5.1%0.46 🔴Insuffisant
Pourquoi 75% sur 4 trades (1.04) < 68% sur 28 trades (2.27) ?
"Crise Dollar EM" : 0.75 × log(4+1) = 0.75 × 1.609 = 1.04 "Choc Pétrolier" : 0.68 × log(28+1) = 0.68 × 3.367 = 2.27

Avec seulement 4 trades, l'intervalle de confiance binomial à 95% pour un win rate de 75% est [19.4%, 99.4%]. C'est extrêmement large. Le vrai win rate pourrait tout aussi bien être 20% ou 99%.

Avec 28 trades, l'intervalle est [48.8%, 83.1%] — beaucoup plus informative. La formule reflète naturellement cette réalité : le score "achète" de la crédibilité au fil des trades.

Règle du Système
Patterns avec n < 5 → badge "⚠ petit échantillon" visible dans l'UI. Patterns avec n < 3 → exclus des suggestions automatiques (flag score_insuffisant = True en DB).

4.2 Contre-Thèses & Invalidation

Chaque pattern généré par GPT-4o inclut obligatoirement une contre-thèse et un trigger d'invalidation. C'est l'une des protections les plus importantes du système contre le biais de confirmation.

Exemple Complet — Thèse / Contre-Thèse / Surveillance
Thèse"L'escalade en mer de Chine méridionale va perturber les routes pétrolières et faire monter XLE" → Long XLE calls $90, expiration Septembre 2026
Contre-thèse"La Chine bluff diplomatiquement pour forcer des concessions commerciales. Si les négociations reprennent, la prime de risque disparaît et le pétrole recule de 5–8%."
Triggers d'invalidation1. Annonce de pourparlers diplomatiques directs US-Chine en mer de Chine
2. Retrait des navires militaires chinois de la zone contestée
3. Déclaration conjointe ASEAN de "de-escalation"
4. Brent recule de plus de 4% en une séance
Probabilité d'invalidation35% (estimée par GPT-4o, à ajuster si des nouvelles émergent)
Action si trigger détectéAlerte rouge dans l'interface, suggestion de fermer ou de réduire la position de 50%

Surveillance Automatique des Triggers

À chaque cycle (6h), le système passe les titres RSS dans GPT-4o-mini avec les triggers stockés en base pour chaque position ouverte. Si une correspondance sémantique est détectée (score cosinus > 0.82), une alerte d'invalidation est générée.

4.3 Score de Brier & Calibration

Le score de Brier mesure la précision des probabilités estimées par GPT-4o. Un modèle bien calibré annonce 70% quand la réalité est vraie 70% du temps.

Brier Score = (1/N) × Σ (prédiction_i - résultat_i)² Interprétation : Brier < 0.10 → Excellent Brier 0.10–0.20 → Bon à modéré Brier 0.20–0.33 → Moyen Brier = 0.25 → Équivalent à une pièce de monnaie aléatoire Brier > 0.33 → Pire qu'aléatoire

Table de calibration simulée

Bucket PréditNb TradesTaux RéelBiaisDiagnostic
10–20%813%-3%Bien calibré
30–40%1838%-1%Excellent
50–60%3152%-6%Légèrement surconfiant
60–70%2842%-23%SURCONFIANT
80–90%1461%-25%TRÈS SURCONFIANT
Brier Score simulé ≈ 0.18 → "Modérément calibré" Bucket 30-40%: 18 × (0.35 - 0.38)² = 18 × 0.0009 = 0.016 Bucket 60-70%: 28 × (0.65 - 0.42)² = 28 × 0.0529 = 1.481 Bucket 80-90%: 14 × (0.85 - 0.61)² = 14 × 0.0576 = 0.806 Total / 157 trades ≈ 0.18
Interprétation Clé
Quand GPT-4o annonce 80–90%, il n'a raison qu'à 61–67% du temps. Ne jamais miser plus sur un pattern parce que son score est de 85% vs 65% — la différence réelle de performance est bien plus faible. Le système corrige cela via l'ajustement bayésien (Section 6.1).

4.4 Demi-vie des Insights KB

Les insights de la Knowledge Base ont une durée de vie limitée. Le système gère une demi-vie de 180 jours (configurable) pour déprécier automatiquement les insights anciens.

Poids_actuel = poids_initial × e^(-λ × âge_jours) λ = ln(2) / demi_vie = 0.693 / 180 = 0.00385 Après 180j : poids = 0.50 Après 360j : poids = 0.25 Après 540j : poids = 0.125 → insight marginalisé
DateÂgePoidsStatut
Oct 2025 (création)0j1.00Actif, prioritaire
Jan 202690j0.71Actif, légèrement déprécié
Avr 2026180j0.50Demi-vie atteinte
Oct 2026360j0.25Archivage recommandé

Règle système : Si poids < 0.15 ET l'événement géopolitique n'est plus détecté dans les flux RSS depuis 30 jours → insight archivé automatiquement et exclu du Super Contexte.

5. Phase 3 — Portfolio & Risk Engine

5.1 Vue Portefeuille Consolidée

PositionSecteurScore EntréeP&L% HorizonTaille €Statut
Long XLE call spread $90/$98 Sept26Énergie78+14.2%67%1,240€Mature — surveiller sortie
Long GLD call $195 Août26Métaux62-3.1%18%820€Début — laisser courir
Short VIX straddle $22/$28 Juil26Indices71+8.7%52%980€Mature — surveiller VIX
Long USDCAD call 1.39 Juil26Forex55+2.3%8%460€Trop tôt — patience

Concentration par Secteur

Énergie
35%
Indices
28%
Métaux
25%
Forex
12%
Règle de Lecture
Un trade en début de vie (% horizon < 20%) qui perd -3% doit être ignoré — la thèse n'a pas encore eu le temps de se déployer. Un trade mature (>60% horizon) en profit doit être suivi de près pour une sortie partielle avant l'accélération du time decay.

5.2 Risk Cluster Engine

Deux positions dans des secteurs différents peuvent être exposées au même facteur de risque sous-jacent. Le Cluster Engine identifie ces dépendances cachées.

PositionFacteur GéopolitiqueFacteur InflationFacteur DollarFacteur Liquidité
Long XLE call spread60%40%0%0%
Long GLD call20%50%80%0%
Short VIX straddle0%0%0%80%
Long USDCAD call0%20%70%10%
Exposition consolidée Facteur Dollar : 0.35×0% + 0.25×80% + 0.28×0% + 0.12×70% = 0% + 20% + 0% + 8.4% = 28% (Avec pondération par valeur de position : Énergie 35%, Métaux 25%, Indices 28%, Forex 12%) Facteur Géopolitique : 0.35×60% + 0.25×20% = 21% + 5% = 26% Facteur Dollar : 0.25×80% + 0.12×70% = 20% + 8.4% = ~28% Facteur Inflation : 0.35×40% + 0.25×50% + 0.12×20% = ~29% Facteur Liquidité : 0.28×80% + 0.12×10% = ~24%
Alerte Concentration — Facteur Dollar 53%
Dans notre exemple simulé, si l'on comptabilise GLD (fortement anti-dollar) et USDCAD (direct forex dollar), le facteur dollar dépasse 53% du portefeuille — au-dessus du seuil configuré de 40%.

Injection dans le méga-prompt : "⚠️ Facteur dollar saturé (53%) — pénaliser fortement les nouveaux patterns dépendants du dollar. Taille Kelly réduite de 50% sur tout pattern à facteur dollar."

5.3 Position Sizing — Kelly Fractionnel

Kelly complet : f* = (p × G - (1 - p)) / G Exemple — Pattern "Choc Pétrolier Moyen-Orient" : p = 0.68 (win rate sur 28 trades) G = 2.50 (gain moyen +12.4% / perte moyenne -4.9%) f* = (0.68 × 2.50 - 0.32) / 2.50 = (1.70 - 0.32) / 2.50 = 1.38 / 2.50 = 0.552 = 55.2% → Kelly complet Kelly fractionnel (×1/3) : 55.2% × 0.333 = 18.4% Ajustement cluster (facteur géopolitique saturé) : 18.4% / 2 = 9.2% Capital disponible 10,000€ → Taille : 920€
ApprocheFraction KellyTaille (10k€)Drawdown max espéréRecommandation
Kelly Complet55.2%5,520€-65% (ruine possible)JAMAIS
Kelly × 1/227.6%2,760€-38%Agressif
Kelly × 1/318.4%1,840€-22%Recommandé
Kelly × 1/413.8%1,380€-15%Conservateur
Kelly × 1/3 + ajust. cluster9.2%920€-10%Appliqué ici
Pourquoi pas le Kelly Complet ?
Le Kelly Complet maximise log(richesse) théoriquement mais produit des drawdowns de 50–70% psychologiquement insoutenables. Il suppose aussi une connaissance exacte de p et G. Kelly/3 donne 75% de la croissance théorique pour 30% du risque — consensus académique (Ed Thorp, Poundstone).

5.4 HHI & Score de Diversification

HHI = Σ (part_secteur_i)² Portefeuille actuel : HHI = 0.35² + 0.25² + 0.28² + 0.12² = 0.1225 + 0.0625 + 0.0784 + 0.0144 = 0.278 N effectif = 1 / 0.278 = 3.6 positions indépendantes Score Diversification = 3.6 / 4 = 90% → Bien diversifié Seuils : HHI < 0.25 → Bien diversifié HHI 0.25–0.35 → Acceptable HHI > 0.35 → CONCENTRÉ — alerte
Interprétation N Effectif
Avec 4 positions réelles, le N effectif est 3.6. Le portefeuille se comporte comme 3.6 positions indépendantes — la légère corrélation entre énergie et inflation (XLE et GLD tous deux sensibles à l'inflation) explique pourquoi on n'atteint pas le maximum théorique de 4.0.

5.5 Drawdown Attendu

DD_attendu = Σ (allocation_facteur_i × volatilité_facteur_i) Volatilités historiques annualisées : Géopolitique : 40% · Inflation : 30% · Dollar : 25% · Liquidité : 35% DD_attendu = 0.26×40% + 0.29×30% + 0.28×25% + 0.24×35% = 10.4% + 8.7% + 7.0% + 8.4% = 34.5% Correction diversification (HHI=0.278) : DD_effectif ≈ 34.5% × √(N_effectif) / N_réel ≈ 34.5% × √3.6 / 4 ≈ 34.5% × 0.474 ≈ 16.4% Seuil d'alerte Risk Committee : > 25% → ici 16.4% = zone acceptable

6. Phase 4 — IA Probabiliste & Apprentissage

6.1 Mise à Jour Bayésienne

La mise à jour bayésienne permet au système d'apprendre des résultats réels pour corriger les probabilités estimées par GPT-4o.

Prior : β(α₀=1, β₀=1) — prior neutre de Jeffreys Mise à jour : Si win → α = α + 1 Si loss → β = β + 1 Posterior mean = α / (α + β) IC 95% ≈ ± 1.96 × √(α×β / ((α+β)² × (α+β+1)))
Évolution Bayésienne — "Escalade Tarifaire US-Chine" (Prior GPT = 65%)
ÉtapeTradesWinsαβPosteriorIC 95%
Initial (prior neutre)01150.0%±35%
5 trades (3 wins)534357.1%±28%
12 trades (8 wins)1289564.3%±18%
28 trades (19 wins)2819201066.7%±9.2%

Conclusion : Prior GPT (65%) et posterior (66.7%) convergent. GPT-4o était bien calibré sur ce pattern. Intervalle final : [57.5%, 75.9%].

Dérive Massive — "Coup d'État Afrique Subsaharienne" (Prior GPT = 80%)
ÉtapeTradesWinsPosteriorDérive vs Prior
5 trades (2 wins)5242.9%-37.1%
10 trades (4 wins)10441.7%-38.3%
15 trades (7 wins)15747.1%-32.9%

Diagnostic : Dérive de -32.9% — GPT surestimait massivement. Biais probable : sur-représentation médiatique des coups d'état africains dans le training data. Pattern automatiquement déclassé.

Table Comparative — 6 Patterns Prior vs Posterior

PatternPrior GPTTradesPosteriorDériveVerdict
Choc Pétrolier MO65%2866.7%+1.7%Bien calibré
Hausse Or Safety70%1972.4%+2.4%Bien calibré
Escalade Tarifaire US-CN65%1258.3%-6.7%Légèrement surconfiant
Coup d'État Afrique80%1547.1%-32.9%TRÈS SURCONFIANT
Recession Tech Short55%950.0%-5.0%Acceptable
Hausse Taux Fed Surprise60%737.5%-22.5%Surconfiant

6.2 Clustering de Régimes K-Means

Le clustering K-Means (implémenté en pur Python) identifie automatiquement le régime macroéconomique actuel.

Les 7 Features

FeatureMesureSignal Principal
VIXNiveau absolu (z-score 252j)Stress / Panique
slope_10y3mSpread taux 10Y - 3MRécession (si <0)
DXY_changeVariation 1 mois dollarRisk-off si fort
Brent_changeVariation 1 mois pétroleInflation / Géopolitique
Gold_changeVariation 1 mois orFlight-to-safety
Copper_changeVariation 1 mois cuivreDemande industrielle
SPX_vs_200dSPX / MA200 - 1Trend bull/bear

3 Snapshots Illustratifs

DateVIXSlopeDXYBrentGoldCopperSPX/200dCluster Identifié
Oct 202232-0.8%+2.1%+4.5%-1.2%-2.3%-15%Cluster 2 — Récession/Risk-Off
Mar 202414+0.2%-0.3%+0.5%+0.8%+1.2%+12%Cluster 1 — Expansion Tranquille
Juin 202624-0.42%-0.4%+3.1%+1.2%-1.8%-2%Cluster 0 — Stress Géopolitique

Matrice de Transition Simulée

De / Vers →ExpansionStress GéoRécessionStagflation
Expansion68%12%8%12%
Stress Géo18%52%15%15%
Récession22%8%58%12%
Stagflation10%20%15%55%
Lecture Matrice
En Stress Géopolitique : 52% de chance d'y rester, 18% de retour à l'Expansion. 48% de probabilité de changement de régime dans la semaine → privilégier horizons < 30 jours en Stress Géo.

Détection d'Anomalies

Distance au centroïde = √(Σ (feature_i - centroide_i)²) Anomalie si distance > μ_distance + 3σ_distance Exemple — Crash COVID Mars 2020 : VIX = 48 → z-score = +4.8σ SPX_vs_200d = -28% → z-score = -5.2σ Distance au centroïde Récession = 6.8σ → 6.8σ > seuil 3σ → ANOMALIE MARQUÉE → Exclu du calcul des centroïdes pour ne pas distordre les clusters → Analyse IA note : "Conditions hors-norme — historique limité disponible"

6.3 Embeddings Sémantiques

Avant d'ajouter un pattern à la KB, le système vérifie l'absence de doublon sémantique. Jaccard (mots communs) rate la majorité des doublons réels. Les embeddings capturent le sens.

Exemple 1 — Doublon Manqué par Jaccard

Pattern A : "Escalade tensions Taiwan Strait" · Pattern B : "Taiwan military conflict risk"

Jaccard : {taiwan} / {escalade,tensions,taiwan,strait,military,conflict,risk} = 1/7 = 14% → SOUS 30% → Accepté (FAUX NÉGATIF) Cosine : 0.89 → AU-DESSUS 0.75 → REJETÉ (CORRECT)
Exemple 2 — Zéro Mot Commun, Même Sens

Pattern C : "Fed rate hike cycle accelerates" · Pattern D : "Monetary policy tightening pressure"

Jaccard : 0/9 = 0% → SOUS 30% → Accepté (FAUX NÉGATIF) Cosine : 0.82 → AU-DESSUS 0.75 → REJETÉ (CORRECT)

Table — 5 Candidats Évalués

CandidatPattern ExistantJaccardCosineDécision
Escalade Taiwan StraitTaiwan military conflict14%0.89REJETÉ (cosine)
Fed rate hike cycleMonetary policy tightening0%0.82REJETÉ (cosine)
OPEC supply cut shockChoc pétrolier MO8%0.78REJETÉ (cosine)
Crypto crash régulationChoc pétrolier MO0%0.12ACCEPTÉ — nouveau pattern
Pénurie céréales IndePénurie Blé Ukraine22%0.71ACCEPTÉ — distinct

6.4 Analytics Dashboard

SectionContenuQuestion CléAction si Problème
Calibration BrierCourbe prédit vs réalisé par bucket, score Brier global, trend 6 mois"GPT-4o est-il trop confiant ?"Appliquer un facteur de déflation sur scores >65%
Analyse BayésiennePrior vs posterior par pattern, dérive, IC 95%, convergence"Le modèle apprend-il dans la bonne direction ?"Déclasser patterns avec dérive >20%
Clustering RégimesProjection 2D (PCA), centroides, matrice transition, anomalies"Dans quel régime sommes-nous ?"Si >3 changements en 30j → réduire tailles
Déduplication KBHeatmap similarités cosine, clusters sémantiques"La KB a-t-elle des doublons ?"Fusions manuelles si cosine > 0.85

7. Les Prompts IA — Boîte Noire Ouverte

GeoOptions utilise 6 appels GPT distincts, chacun avec un rôle précis et une structure optimisée.

Prompt 1 — Enrichissement News & Scoring Directionnel

GPT-4o-mini ~800 tokens · 1 appel batch jusqu'à 20 news
ÉlémentContenuPourquoi
Système"Analyste géopolitique spécialisé en risques de marché financier."Contextualise sur le cas d'usage financier, évite les analyses politiques sans lien trading
InputJusqu'à 20 news (titre + 150 chars résumé), indexées 0..NBatch unique pour minimiser les appels API — réponse JSON structurée par index
InstructionPar news : impact_score corrigé, dir_energy/metals/indices (bullish|bearish|neutral), resolution (bool), insight (1 phrase FR sur l'effet marché)Les signaux directionnels permettent de détecter les contre-signaux sur les patterns (cessez-le-feu → pétrole baissier même si le mot "Iran" est présent)
ExclusionsPas de contexte macro, pas d'historique de trades, pas de positions ouvertesÉvite le biais de confirmation — l'IA évalue la news indépendamment du portefeuille
CacheFlag ai_scored par item — pas de double scoring sur le même cache 1hÉconomie : chaque news n'est scorée qu'une fois par cycle
Cas clé — Détection de contre-signal
Pattern "Middle East Military Escalation → Oil Spike" (expected_move = +12%) :
Avant : Un article "Gaza ceasefire agreement reached" → keyword "Gaza" présent → similarity +15% → trade suggéré bull call sur XLE.
Après : GPT-4o-mini score ai_dir_energy="bearish", ai_resolution=true → alignment = -20 pts → similarity passe de 60% à 40% → pattern downranké, badge rouge "🤖 contre-signal".

Prompt 2 — Régime Macro

GPT-4o-mini ~800 tokens
Structure du Prompt 2
SYSTÈME : "Expert en macroéconomie et cycles économiques. Classifiez le régime
actuel parmi : Expansion, Stagflation, Récession, Stress Géopolitique."

INPUT : VIX, slope 10Y-3M, DXY change, Brent change, Gold change,
        Copper change, SPX vs MA200, CPI, PMI Manufacturing

OUTPUT JSON :
{
  "regime_dominant": "STAGFLATION",
  "score_dominant": 72,
  "regimes": {"expansion": 11, "stagflation": 72, "recession": 42, "stress_geo": 63},
  "indicateurs_cles": ["Brent +3.1%", "Cuivre -1.8%", "Pente -0.42%"],
  "duree_regime_estimee_jours": 45
}
Anti-Biais Clé
Le prompt Régime Macro ne contient aucune information sur les positions ouvertes ni sur les patterns précédents. L'IA évalue le régime indépendamment. Sinon, elle tendrait à confirmer un régime "favorable aux positions ouvertes" par biais de cohérence.

Prompt 3 — Super Contexte

GPT-4o ~1,200 tokens input · gate 6h
Élément injectéSourceCondition d'inclusion
Patterns KB fiablesTable knowledge_baseScore fiabilité > 1.5 ET poids demi-vie > 0.3
Trades récents fermésTable tradesFermés dans les 30 derniers jours ET maturité > 40%
Trades ouvertsTable portfolioMaturité horizon > 40% (trades "informatifs")
Alertes portefeuilleRisk EngineToujours inclus — filtres permanents
Patterns récents refusésTable analyses_iaRejetés par le trader dans les 14 derniers jours

Prompt 4 — Méga-Prompt (Génération Patterns)

GPT-4o ~4,500 tokens input · ~800 tokens output
Structure du Méga-Prompt (condensé)
SYSTÈME : "Expert options trader spécialisé en géopolitique, macroéconomie et
volatilité implicite. Suggérer 3 à 5 patterns pour trader individuel ~1,000€
par position, horizon 3 mois, Interactive Brokers."

CONTEXTE MARCHÉ    : [Prix, VIX, Brent, DXY, Or, pente 10Y-3M...]
RÉGIME MACRO       : [Output Prompt 2 : STAGFLATION 72%...]
CONTEXTE GÉO       : [Output Prompt 1 : Geo Score 68, tensions par région...]
MÉTRIQUES OPTIONS  : [IV Rank, term structure, skew, PC Ratio par ticker...]
SUPER CONTEXTE     : [Output Prompt 3 : patterns fiables, trades récents, risques]

CONTRAINTES OBLIGATOIRES :
- Chaque pattern inclut : ticker, stratégie (strikes estimés), probabilité 0.0-1.0,
  horizon jours, contre-thèse, trigger invalidation, facteurs risque, taille Kelly%
- IV Rank doit correspondre à la stratégie (vendre vol si rank >75%)
- Ne pas suggérer patterns sur facteurs saturés sans réduction taille notée

FORMAT : JSON strict avec champs définis.

Prompt 5 — Surveillance des Triggers

GPT-4o-mini ~400 tokens · exécuté à chaque cycle
SYSTÈME : "Évaluez si les news suivantes correspondent aux triggers d'invalidation d'une position de trading." INPUT : triggers de la position + titres RSS des 6 dernières heures OUTPUT : {"triggers_détectés": [{"trigger": "...", "confidence": 0.87, "citation": "..."}]} Seuil : confidence > 0.75 → ALERTE INVALIDATION générée dans l'UI

Prompt 6 — Rapport IA Narratif

GPT-4o ~2,000 tokens input · ~600 tokens output

Une fois les patterns filtrés et validés algorithmiquement, ce prompt crée le rapport narratif visible dans la page "Rapport IA". Il explique le raisonnement, les patterns refusés et les risques à surveiller.

Séparation Décision / Communication
Le Méga-Prompt (P4) génère des données structurées pour les algorithmes. Le Rapport IA (P6) génère du texte pour le trader humain. Cette séparation évite qu'un texte persuasif n'influence la décision — les patterns sont déjà filtrés quantitativement avant la rédaction du rapport.

8. Tables de la Base de Données

Groupe 1 — Données de Marché & Signaux

TableColonnes ClésRôleRétention
market_dataticker, timestamp, price, change_pct, volume, iv_current, iv_rank, iv_percentilePrix et métriques marché par cycle180 jours
geo_signalstimestamp, region, score, events_json, impact_oil, impact_gold, impact_usdScores géopolitiques par région, par cycle365 jours
macro_regimetimestamp, regime_dominant, score_expansion, score_stagflation, score_recession, score_stress_geo, indicateurs_jsonHistorique des régimes macroéconomiquesPermanent
options_flowticker, timestamp, strike, expiration, oi_calls, oi_puts, pc_ratio, iv_term_structure_jsonOpen Interest et structure de la volatilité90 jours

Groupe 2 — IA & Patterns

TableColonnes ClésRôle
analyses_iaid, timestamp, cycle_id, patterns_json, rapport_narratif, tokens_used, cost_usd, regime_at_timeArchive de toutes les sorties GPT-4o avec coûts
knowledge_baseid, nom, description, strategie, ticker, facteurs_risque, score_fiabilite, nb_trades, win_rate, pnl_moyen, created_at, last_updated, halflife_weight, embedding_vectorBase de patterns avec scores et embeddings sémantiques
pattern_performancepattern_id, trade_id, resultat, pnl_pct, score_entree, regime_entree, regime_sortieLien entre patterns et résultats réels des trades
super_contexteid, timestamp, contenu_text, tokens_count, last_generated_atCache du Super Contexte avec gate 6 heures

Groupe 3 — Portefeuille & Trades

TableColonnes ClésRôle
portfolioid, ticker, strategie, direction, score_entree, taille_eur, date_entree, date_expiration, pnl_actuel_pct, facteurs_risque_json, triggers_invalidation_json, statutPositions options ouvertes avec métadonnées complètes
tradesid, portfolio_id, date_fermeture, pnl_final_pct, raison_fermeture, notes_traderHistorique complet des trades fermés
invalidation_alertsid, portfolio_id, trigger_text, confidence, news_citation, timestamp, acquitteeAlertes d'invalidation détectées et leur statut

Groupe 4 — Phase 4 (IA Probabiliste) — Nouvelles Tables

TableColonnes ClésRôle
bayesian_estimatespattern_id, alpha, beta, prior_gpt, posterior_mean, posterior_ic95_low, posterior_ic95_high, n_updates, last_updatedPosteriors bayésiens par pattern — le cœur de l'apprentissage
regime_clusterstimestamp, cluster_id, cluster_label, centroid_json, features_json, distance_to_centroid, is_anomalyHistorique du clustering K-Means avec coordonnées
brier_trackingcycle_id, pattern_id, predicted_proba, actual_outcome, brier_contrib, bucketDonnées brutes pour calcul du score de Brier
configkey, value, description, updated_atParamètres système (seuils Kelly, capital, demi-vie KB)
Relations Clés
portfolio.idtrades.portfolio_id · knowledge_base.idpattern_performance.pattern_id · knowledge_base.idbayesian_estimates.pattern_id · analyses_ia.idbrier_tracking.cycle_id

9. Guide Trader — Lire le Cockpit Page par Page

Page 1 — Dashboard

Regarder en premier : Bandeau supérieur — régime dominant + geo score. Si géo > 60 (rouge) ou VIX > 25 → journée à risque élevé.

Quand agir : Si "Nouveaux patterns disponibles" avec score > 70 → aller sur page Patterns avant l'ouverture de marché.

Page 2 — Radar Géopolitique

Onglet Actualités — regarder en premier : Geo Score global en haut à droite (rouge ≥ 75 = extrême). Sur chaque news, cliquer pour voir l'insight IA (phrase bleue en italique), les flèches directionnelles ⛽↑ 🥇↓ 📊↓ et le badge "🕊 résolution" si l'article signale une désescalade. Impact corrigé par l'IA affiché à droite (0–100).

Onglet Patterns — regarder en premier : Patterns classés par relevance (= keyword matching + alignement IA). Badge vert "🤖 IA aligné" = l'IA confirme la direction du pattern. Badge rouge "🤖 contre-signal" = les news pointent dans le sens inverse — ne pas ouvrir ce trade. La pertinence de base (pure keyword) est affichée en gris sous le score ajusté.

Quand agir : Pattern avec relevance ≥ 60% ET badge IA vert ET IV Rank du sous-jacent favorable → candidat prioritaire pour le cycle. Si badge rouge même sur relevance élevée → attendre confirmation de marché.

Page 3 — Marchés

Regarder en premier : Brent, Or, VIX, DXY — les 4 baromètres du régime. Ensuite ETF sectoriels (XLE, GLD, TLT).

Quand agir : Si XLE +3% ET VIX +8% le même jour → configuration "choc offre" → vérifier patterns énergie disponibles.

Page 4 — Régime Macro

Regarder en premier : Régime dominant et le badge "stable Xj" affiché à côté du score. Un régime stable depuis 5+ jours (lissage Bayésien actif) est fiable. "0j d'historique" = premier chargement, le bootstrap est en cours.

Comprendre le score % : Ce n'est pas une probabilité — c'est un score 0–100 d'accumulation de signaux concordants, lissé sur l'historique. Un score de 65% ne signifie pas "65% de chances". Deux scénarios à 60% et 55% indiquent une ambiguïté réelle.

Quand agir : Si deux régimes à moins de 10 points après lissage → le système maintient l'ancien dominant et le badge "stable" reste fixe. Signe de transition — ne pas ouvrir de positions fortement directionnelles.

Page 5 — Options Lab

Regarder en premier : Tableau IV Rank. Vert (IV Rank < 30%) = opportunités d'achat vol. Rouge (> 75%) = opportunités de vente vol.

Quand agir : TOUJOURS consulter avant de valider un pattern. Si le pattern suggère "long call XLE" mais IV Rank = 80% → l'achat est très cher → attendre un pullback de vol.

Page 6 — Patterns IA

Regarder en premier : Patterns classés par score décroissant. Ne considérer que les scores > 65. Vérifier taille Kelly et disponibilité en capital.

Quand agir : Valider = enregistrer l'intention. L'exécution est sur Interactive Brokers. Cliquer "Rejeter" évite la représentation dans les 2 prochains cycles.

Règle d'Or
Lire TOUJOURS la contre-thèse avant de valider. Si elle vous semble plus probable que la thèse, rejeter le pattern même si le score est élevé. L'IA ne connaît pas votre contexte informationnel personnel.

Page 7 — Portefeuille

Regarder en premier : Alertes de cluster (facteur saturé) en rouge. Puis P&L des positions matures (>60% horizon).

Quand agir : Position mature en profit +15% → prise de bénéfices partielle. Perte >20% avec trigger d'invalidation détecté → fermer immédiatement.

Page 8 — Journal de Bord

Regarder en premier : Win rate par régime macro. Si win rate en "Stagflation" = 42% mais global = 65% → problème structurel avec ce régime.

Quand agir : Revue mensuelle. Pattern répété > 5 fois avec win rate < 45% → exclure de la KB ou réduire le score fiabilité manuellement.

Page 9 — Rapport IA

Regarder en premier : Section "Risques à Surveiller" — liste les catalyseurs à calendrier connu (réunions Fed, publications PMI, élections).

Quand agir : Si catalyseur attendu dans les 5 prochains jours, vérifier que les positions ouvertes ne sont pas directement exposées.

Page 10 — Super Contexte

Lecture mensuelle. Vérifier que les patterns "obsolètes" (événements > 6 mois) sont archivés. Le texte narratif doit refléter la réalité actuelle, pas l'histoire.

Page 11 — Analytics

Métriques de santé : Brier Score (viser < 0.20), N effectif (viser > 3.0), taux de patterns validés vs rejetés (si < 30% validés → filtres trop stricts ou qualité IA insuffisante).

Quand agir : Win rate en tendance baissière sur 3 mois → le marché a changé, revoir les paramètres.

Page 12 — Analytics Avancées

Usage mensuel avancé. Contrôler la courbe de calibration Brier pour détecter une surconfiance croissante. Vérifier la matrice de transition pour ajuster les horizons selon la stabilité du régime.

Page 13 — Risk Dashboard

Regarder en premier : Alertes rouges (saturation facteur, drawdown élevé). Puis tableau Kelly par position.

Quand agir : OBLIGATOIREMENT avant toute nouvelle position. Vérifier que l'ajout ne fait pas monter HHI > 0.35 ou un facteur > 50%.

Page 14 — Config

Révision trimestrielle : capital total, fraction Kelly, seuils de concentration. Ne jamais modifier le modèle GPT en production sans tester sur un cycle complet.

10. Décisions de Conception — Pourquoi Pas Autrement ?

DécisionAlternative RejetéeRaison du Choix
K-Means from scratchscikit-learn KMeansZéro dépendance lourde. K-Means = 40 lignes Python pur pour 4 clusters sur 7 features. Scikit-learn ajoute ~50 Mo pour fonctionnalité identique. Sur VPS léger, la différence est significative.
Cosine Similarity plutôt que JaccardJaccard, Levenshtein, TF-IDFLes patterns géopolitiques utilisent un vocabulaire riche et synonymique. Jaccard rate les doublons sans mots communs (60% des cas testés). Cosine via embeddings OpenAI capture la sémantique complète. Disponible sans coût additionnel via l'API existante.
Kelly × 1/3Taille fixe, Kelly × 1/2, Kelly completTaille fixe ignore l'edge du pattern. Kelly complet = draws de 60%+ psychologiquement insoutenables. Kelly × 1/3 = consensus académique (Ed Thorp, Poundstone) : 75% de la croissance théorique pour 30% du risque.
Gate 6h Super ContexteRégénérer à chaque cycleCoût : ~0.015$ à régénérer. Sur cycles 15min : ~1.44$/jour. Gate 6h → 0.06$/jour. Le contenu change rarement sur 6h (trades ouverts et patterns KB évoluent lentement).
Trades matures uniquement dans le Super ContexteInclure tous les trades ouvertsUn trade à 3.3% de son horizon (3j/90j) n'a pas testé la thèse. L'inclure envoie un signal bruit. Les trades matures (>40% horizon) ont subi l'épreuve du temps et sont véritablement informatifs.
SQLitePostgreSQL, MySQLUsage mono-utilisateur sur VPS. SQLite = sans serveur, portable (fichier unique), supporte des centaines de milliers de lignes sans problème pour ce cas d'usage. PostgreSQL est justifié pour multi-utilisateurs ou millions de lignes.
Prior neutre (α=β=1)Prior basé sur le score GPTSi l'on utilise le score GPT comme prior et que GPT est surconfiant (>65%), on initialise avec un biais. Le prior de Jeffreys (α=β=1) laisse les données réelles parler sans polluer avec la surconfiance GPT.
GPT-4o-mini pour prompts simplesGPT-4o pour toutScoring RSS et surveillance triggers ne nécessitent pas le raisonnement avancé de GPT-4o. GPT-4o-mini = 5× moins cher et suffisant pour classification et correspondance. Économie : ~60% du coût IA total.
Demi-vie KB de 180 joursPoids constant, demi-vie 365jLes événements géopolitiques ont des cycles de vie naturels. Une crise qui dure > 6 mois soit se normalise soit évolue structurellement. 180 jours = délai médian empirique entre émergence d'un événement géopolitique et intégration dans les prix.
4 régimes macro2 régimes (Risk-On/Off), 6 régimes2 régimes simplifient trop (ignorent stagflation vs récession = stratégies options radicalement différentes). 6+ régimes = sous-groupes trop petits pour matrices de transition statistiquement significatives. 4 régimes = quadrants classiques macro avec historique suffisant.

11. Glossaire

TermeDéfinition
IV (Implied Volatility)Volatilité future "anticipée" par le marché, calculée en inversant la formule de Black-Scholes à partir du prix observé d'une option. Exprimée en pourcentage annualisé.
IV RankRang de l'IV actuelle dans sa plage annuelle : (IV_actuelle - IV_min_52s) / (IV_max_52s - IV_min_52s). Score 0–100. <25 = cheap, >75 = cher.
IV PercentileProportion des jours de l'année où l'IV était inférieure à l'IV actuelle. Plus robuste que l'IV Rank car ne dépend pas d'un seul pic ou creux extrême.
Term StructureCourbe de l'IV en fonction des expirations. Contango = IV croissante (normal). Backwardation = IV décroissante (stress court terme).
SkewIV_put_25delta - IV_call_25delta. Skew positif = puts plus chers = protection demand. Indique l'asymétrie anticipée par le marché.
Open Interest (OI)Nombre de contrats options ouverts (non fermés). Spike d'OI sur un strike = intérêt institutionnel marqué = mur de résistance/support potentiel.
Put/Call RatioOI puts / OI calls. >1.2 = sentiment défensif institutionnel. <0.7 = sentiment spéculatif haussier. Indicateur contrarian.
DeltaSensibilité du prix de l'option au mouvement du sous-jacent. Delta 0.25 = l'option gagne 0.25€ pour chaque +1€ du sous-jacent. Option ATM ≈ Delta 0.50.
GammaVitesse de changement du delta. Dealer gamma négatif = les market makers amplifient les mouvements. Dealer gamma positif = ils amortissent les mouvements.
Thêta (Time Decay)Érosion de la valeur d'une option avec le temps. Accélère dans les 30 derniers jours. Vendeurs bénéficient, acheteurs luttent contre lui.
Kelly CriterionFormule de sizing optimal : f* = (p×G - (1-p)) / G. Maximise la croissance géométrique du capital à long terme.
Kelly FractionnelKelly × 1/k (k=2, 3 ou 4). GeoOptions utilise k=3. Réduit le risque au détriment d'une partie de la croissance optimale, mais psychologiquement tenable.
HHI (Herfindahl-Hirschman Index)Mesure de concentration : Σ(part_i)². De 0 (parfaitement diversifié) à 1.0 (monopole total). <0.25 = bien diversifié, >0.35 = concentré.
N Effectif1/HHI. Nombre de positions "complètement indépendantes" équivalentes dans le portefeuille. 6 positions corrélées peuvent avoir N effectif = 2.5.
Brier ScoreMétrique de calibration probabiliste : Σ(prédiction - résultat)²/N. 0 = parfait, 0.25 = équivalent aléatoire. Mesure si les probabilités annoncées correspondent aux fréquences réelles.
Prior (Bayésien)Probabilité initiale avant d'observer des données. GeoOptions utilise un prior neutre (α=β=1) qui est progressivement écrasé par les données réelles.
Posterior (Bayésien)Probabilité mise à jour après observation : α/(α+β). Converge vers le vrai win rate avec suffisamment de trades.
Distribution BêtaDistribution sur [0,1] paramétrée par (α, β). Utilisée pour modéliser l'incertitude sur un taux de succès. Conjuguée de la vraisemblance binomiale → mise à jour analytique simple.
Intervalle de Confiance IC95Plage contenant le vrai paramètre avec 95% de probabilité. IC large = incertitude élevée (peu de données). IC étroit = estimation fiable.
K-MeansAlgorithme de clustering non supervisé. Partitionne N points en K groupes en minimisant la variance intra-groupe. Itère entre attribution au centroïde le plus proche et recalcul des centroïdes.
CentroïdeCentre d'un cluster K-Means. Moyenne de toutes les observations assignées à ce cluster sur toutes les dimensions. Représente le "point typique" du régime.
Matrice de TransitionMatrice K×K où l'entrée (i,j) = probabilité de passer du régime i au régime j. Permet d'anticiper les transitions et d'ajuster les horizons de trading.
Anomalie K-MeansPoint à plus de 3σ du centroïde de son cluster. Signale des conditions hors-norme sans précédent récent (ex: VIX=48 en mars 2020). Exclu du calcul des centroïdes.
Embedding VectorielReprésentation d'un texte comme vecteur haute dimension (1536 dims pour text-embedding-ada-002). Textes sémantiquement similaires → vecteurs proches (angle faible).
Cosine Similaritycos(θ) = (A·B)/(|A|×|B|). De -1 (opposés) à +1 (identiques). Mesure la direction (le sens) indépendamment de la norme. Seuil GeoOptions : >0.75 = doublon.
Jaccard Similarity|A∩B|/|A∪B|. Mesure les mots communs entre deux textes. Simple mais aveugle aux synonymes et au sens sémantique. Seuil GeoOptions : >0.30 = doublon.
DBSCANAlgorithme de clustering alternatif qui découvre des clusters de forme arbitraire et identifie les outliers. Non utilisé dans GeoOptions (K-Means suffisant pour 4 régimes fixes).
StraddleAchat (ou vente) simultanée d'un call et d'un put de même strike et expiration. Long straddle = parie sur un mouvement important. Short straddle = parie sur la stabilité.
StrangleComme le straddle mais avec des strikes différents (call OTM + put OTM). Moins cher à acheter. Short strangle = stratégie de vente de vol populaire en IV Rank élevé.
Call Spread (Bull)Achat call strike bas + vente call strike élevé. Coût réduit vs call seul, profit plafonné. Idéal pour hausse modérée en IV élevée.
OTM / ATMOut-of-The-Money : strike moins favorable que le prix actuel. At-The-Money : strike proche du prix actuel (maximum de gamma et valeur temps).
Calendar SpreadVente d'option court terme + achat même strike long terme. Profite de la décroissance plus rapide du time value court. Adapté en backwardation.
Contango / BackwardationContango : IV croissante avec la maturité (marché calme). Backwardation : IV décroissante (stress aigu court terme). Signaux opposés pour les stratégies de vol.
Demi-vie (Half-life)Temps nécessaire pour que le poids d'un insight KB diminue de moitié. w(t) = e^(-λt), λ = ln(2)/demi_vie. GeoOptions : 180 jours par défaut.
Pattern Reliability Scorewin_rate × log(n+1). Pénalise les petits échantillons et valorise la cohérence sur de nombreux trades. >1.5 = fiable, <0.5 = insuffisant.
Régime MacroÉtat macroéconomique parmi 8 scénarios : Goldilocks, Désinflation, Soft Landing, Reflation, Stagflation, Choc Inflationniste, Récession, Crise de Liquidité. Déterminé par scoring règle-basé sur ~50 indicateurs (signaux blendés 1j/5j/10j) + lissage Bayésien sur 25 jours d'historique. Score 0–100 par régime, non normalisé (pas des probabilités). Badge "stable Xj" = nombre de jours consécutifs du dominant actuel.
Géo ScoreScore agrégé de tension géopolitique mondiale, 0–100. Calculé par moyenne pondérée des scores régionaux. >60 = élevé, >75 = critique. Impacte directement les suggestions IA.
Trigger d'InvalidationÉvénement spécifique dont l'occurrence remet en cause la thèse d'un trade. Surveillance automatique via RSS + GPT-4o-mini à chaque cycle. Alerte si confidence > 0.75.
Factor ClusteringClassification des positions par facteur de risque sous-jacent (géopolitique, inflation, dollar, liquidité) pour détecter les corrélations cachées entre positions de secteurs différents.