🗺️

# GeoOptions Intelligence

Roadmap de Développement — Vers le Niveau Hedge Fund
Basé sur l'audit expert · Juin 2026 · 4 Phases · ~6 mois

## État actuel vs Cibles

L'audit positionne le système à 6,5/10 au niveau "fonds professionnel" avec des notes excellentes sur l'architecture IA et la discipline de recherche, mais des lacunes importantes sur le côté purement options (volatilité implicite, structure de marché, sizing). Ce roadmap adresse chacune.

Trading d'Options
5/10
→ Cible : 8/10 (Phase 1 + 2)
Gestion du risque
6/10
→ Cible : 8.5/10 (Phase 3)
Niveau Fonds Pro
6.5/10
→ Cible : 8.5/10 (Phase 1→3)
Architecture IA
8.5/10
→ Cible : 9.5/10 (Phase 2 + 4)

## Vue d'ensemble — 6 mois

1
Phase 1
IV & Vol
S1–S6
2
Phase 2
Fiabilité & Thèses
S7–S12
3
Phase 3
Portefeuille & Risk
S13–S20
4
Phase 4
Moteur Quantitatif
S21–S26

Phase | Thème | Durée | Lacune adressée | Impact note globale
--- | --- | --- | --- | ---
1 | Volatilité implicite & structure du marché options | 6 semaines | Trading options 5/10 → 7.5/10 | +1.5 pts niveau pro
2 | Fiabilité historique, contre-thèses & calibration | 6 semaines | Architecture IA 8.5/10 → 9.5/10 | +0.8 pts niveau pro
3 | Portefeuille, corrélations & position sizing | 8 semaines | Gestion risque 6/10 → 8.5/10 | +1.2 pts niveau pro
4 | Moteur probabiliste & apprentissage automatique | 6 semaines | Calibration statistique / ML | Niveau recherche quant

🔴 Phase 1 — Volatilité Implicite & Structure Marché Options
Semaines 1–6 · PRIORITÉ CRITIQUE · Lacune la plus impactante
Pourquoi c'est la priorité absolue
"Tu trades des options. IV Rank, term structure, skew sont les paramètres fondamentaux de valorisation d'une option. Sans eux, une bonne thèse géopolitique peut quand même produire un mauvais trade : si l'IV est déjà au 95e percentile, tu paies 3× trop cher pour la convexité." — Audit expert
Sprint 1.1
IV Rank & IV Percentile par underlying
data backend frontend S1 – S2
Livrables

- Endpoint `GET /api/options/iv/{ticker}` retournant IV actuelle, IV Rank, IV Percentile (52 semaines)
- Service `iv_engine.py` : récupère les options chains yfinance, calcule IV par Black-Scholes inverse (ou utilise la mid-price des ATM options)
- Table DB `iv_history` : stockage journalier de l'IV par underlying (pour calculer Rank/Percentile)
- Affichage dans Journal de Bord : badge "IV Rank 78%" coloré (vert <25%, orange 25–75%, rouge >75%)
- Affichage dans Cockpit : section "Options Atmosphere" avec IV des actifs clés

Pourquoi ces choix

- IV Rank = (IV actuelle − IV min 52s) / (IV max 52s − IV min 52s) → signal cheap/cher universel
- IV Percentile = % jours où IV était inférieure → plus robuste aux pics extrêmes
- yfinance donne accès aux options chains gratuitement sur les actions US et ETFs
- Stockage journalier nécessaire : sans historique, pas de Rank/Percentile

Contraintes

- yfinance : données options limitées aux actions US/ETF (pas les futures)
- Calcul BS inverse peut être instable sur les options très OTM — utiliser uniquement les ATM proches

Sprint 1.2
Term Structure & Skew
data backend frontend S3 – S4
Livrables

- Term structure : IV à 30j, 60j, 90j, 180j — affiché comme courbe dans une nouvelle page "Options Lab"
- Indicateur contango/backwardation : `structure = "contango" | "backwardation" | "flat"`
- Put/Call skew : IV put 25-delta − IV call 25-delta (proxy de protection de marché)
- Injection dans le prompt de scoring : "IV Rank=78%, structure=backwardation, skew=+4pts → IV élevée, marché achète des puts"
- Règle dans le prompt : si IV Rank > 80%, pénaliser les stratégies acheteuses de vol (long straddle, long call)

Pourquoi ces choix

- Contango (IV court terme < long terme) = marché calme, bon pour vendre de la vol courte
- Backwardation (IV court terme > long terme) = stress, bon pour acheter de la protection courte
- Skew positif (puts plus chers que calls) = marché se protège → biais baissier implicite
- Injecter dans le scoring change concrètement les recommandations de stratégie d'option

Lié à

- Sprint 1.1 (infrastructure IV)
- Modifie le prompt de scoring (étape 4 du cycle)

Sprint 1.3
Options Flow (proxy Open Interest)
data backend S5 – S6
Livrables

- Calcul du Put/Call Open Interest Ratio par underlying (via yfinance options chains)
- Détection des strikes avec OI inhabituel (OI > 2σ de la moyenne sur 20j)
- Indicateur "Dealer Gamma" simplifié : net gamma des market makers estimé depuis l'OI puts/calls ATM
- Signal injecté dans le prompt : "OI puts/calls = 1.8 → smart money défensif" ou "gros OI call sur strike 550 → mur de résistance potentiel"

Pourquoi ces choix

- Options flow = ce que font réellement les institutionnels, pas ce qu'ils disent
- Gamma exposure élevée des dealers → ils vont hedger → amortit les mouvements de prix
- yfinance permet d'accéder à l'OI sans abonnement premium (limité aux US)

Contraintes

- Gamma dealer exact nécessite des données tick-by-tick (abonnement SpotGamma ~$50/mois si souhaité plus tard)
- Proxy OI est une approximation — le labeler "estimation" dans l'UI

🟠 Phase 2 — Fiabilité Historique, Contre-Thèses & Calibration
Semaines 7–12 · PRIORITÉ HAUTE · Renforce l'intégrité de l'apprentissage
Enjeu
"Tous les patterns sont traités pareil. Or un pattern avec 28 trades à 68% de win rate mérite beaucoup plus de crédit qu'un pattern avec 3 trades à 100% (biais de petit échantillon)." — Audit expert
Sprint 2.1
Pattern Reliability Score
backend frontend prompt S7 – S8
Livrables

- Vue DB `pattern_reliability` : pour chaque pattern, calcule trades_count, win_rate, avg_pnl_pct, max_pnl, max_loss sur les trades matures uniquement
- Score de fiabilité composite = win_rate × log(trades_count + 1) (pénalise les petits échantillons)
- Endpoint `GET /api/patterns/reliability`
- Affichage dans la page Patterns : tableau avec colonnes Trades / Win Rate / Avg P&L / Fiabilité
- Badge dans Journal de Bord : "⭐ 68% sur 28 trades" ou "🔬 2 trades — données insuffisantes"
- Injection dans le prompt de suggestion : tableau de fiabilité des 10 meilleurs patterns → GPT-4o ne suggère pas de variantes d'un pattern déjà fiable si le contexte n'a pas changé

Pourquoi ces choix

- Un pattern nouveau n'a aucune track record → sa "fiabilité" = 0 jusqu'à accumulation de données
- Le multiplicateur log(n+1) évite qu'un pattern à 100% sur 2 trades écrase un pattern à 65% sur 30 trades
- Injecter dans le prompt de suggestion : GPT-4o peut adapter ses thèses en connaissant ce qui a empiriquement fonctionné
- Critique = base uniquement sur trades MATURES pour éviter le bruit (cohérence avec le principe fondamental)

Sprint 2.2
Contre-Thèses & Événements Invalidants
backend frontend prompt S9 – S10
Livrables

- Champs `counter_thesis`, `invalidation_trigger`, `invalidation_probability` ajoutés à la table `custom_patterns`
- Modification du prompt de suggestion : GPT-4o doit retourner pour chaque pattern {"thesis": ..., "counter_thesis": ..., "invalidation_trigger": ..., "invalidation_prob": 0-100}
- Affichage dans la page Patterns : onglet "Thèse / Contre-thèse / Invalidation" avec couleur de probabilité d'invalidation
- Système de surveillance : si une news matche le `invalidation_trigger` d'un trade ouvert → alerte dans le Journal de Bord
- Intégration dans le scoring : patterns avec forte probabilité d'invalidation imminente → score pénalisé

Pourquoi ces choix

- Force GPT-4o à raisonner en "steel man" de la position opposée → réduit le biais de confirmation
- Le trigger d'invalidation permet une gestion dynamique : si le trigger se réalise, sortir du trade
- Exemple : thèse = escalade Taiwan; contre-thèse = bluff diplomatique; invalidation = annonce négociations US-Chine

Impact Super Contexte

- Le rapport portfolio pourra distinguer "thèse correcte mais invalidation s'est réalisée" vs "thèse incorrecte dès le départ"

Sprint 2.3
Calibration Probabiliste & Demi-Vie des Insights
backend frontend S11 – S12
Livrables

- Stockage de la probabilité prédite (0–100) dans `pattern_scores` — issue du champ `probability` du pattern à la date de scoring
- À maturité du trade : comparaison probabilité prédite vs résultat binaire (P&L > 0)
- Courbe de calibration : "quand je prédis 75%, le taux de réussite réel est X%"
- Score de Brier affiché dans une page Analytics
- Demi-vie des insights KB : champ `expires_at` + `confidence_decay_days` sur les entrées KB. Les insights de plus de 90j sans confirmation voient leur confiance baisser automatiquement

Pourquoi ces choix

- Si le système annonce "80%" et n'a raison qu'à 52% → il est surconfiant → recalibrer le prompt
- Protège contre la dérive du Super Contexte : une leçon apprise en 2024 peut ne plus être valide en 2026 si le régime a changé
- Score de Brier = mesure standard de calibration probabiliste (0 = parfait, 1 = nul, 0.25 = aléatoire)

Adresse le risque expert

- Protège la boucle SC contre l'auto-confirmation : les insights expirent s'ils ne sont pas reconfirmés empiriquement

🔵 Phase 3 — Portefeuille, Corrélations & Position Sizing
Semaines 13–20 · PRIORITÉ HAUTE · Raisonnement portefeuille vs trade par trade
Enjeu
"Tu peux avoir 3 trades différents (pétrole, défense, short Europe) qui dépendent tous d'une seule variable : guerre au Moyen-Orient. En réalité, tu n'as qu'un seul risque concentré. Un Risk Engine révèle ça." — Audit expert
Sprint 3.1
Vue Portefeuille Consolidée
backend frontend S13 – S14
Livrables

- Nouvelle page "Portefeuille Global" : vue consolidée de toutes les positions ouvertes par classe d'actif
- Exposition nette par classe d'actif (énergie, métaux, indices US, Europe, Asie, forex)
- P&L agrégé et décomposé (par classe, par régime d'entrée, par pattern)
- Graphique d'évolution du P&L portefeuille dans le temps
- Indicateur de concentration : si >40% du portefeuille dans une classe → alerte

Pourquoi ces choix

- La vue par trade masque les concentrations : 5 trades en énergie = 1 gros pari sur le pétrole
- Décomposer par régime d'entrée permet de voir "ai-je sur-tradé en régime stagflation ?"

Sprint 3.2
Risk Cluster Engine
backend frontend prompt S15 – S16
Livrables

- Classification des trades ouverts par "facteur de risque" : géopolitique, inflation, récession, liquidité, dollar
- Calcul de l'exposition nette par facteur (en nb de trades ET en P&L potentiel)
- Heatmap des corrélations entre patterns (corrélation P&L historique entre paires de patterns)
- Alerte "Concentration Risque" : si exposition > seuil sur un facteur → alerte dans le Cockpit
- Injection dans le prompt de scoring : "Attention : 60% du portefeuille est déjà exposé au risque géopolitique Asie — pénaliser les nouveaux patterns dépendants de ce facteur"

Pourquoi ces choix

- Le Risk Cluster révèle le risque "caché" commun à des trades apparemment indépendants
- Injecter dans le scoring modifie concrètement les recommandations selon l'état du portefeuille
- Corrélation P&L historique : deux patterns corrélés à 0.8 ne sont pas deux opportunités indépendantes

Sprint 3.3
Position Sizing — Kelly Fractionnel
backend frontend S17 – S18
Livrables

- Calcul du Kelly fractionnel par trade : `f* = (p × G − (1−p)) / G` où p = probabilité estimée, G = gain max
- Kelly fractionnel : recommander 25–50% du Kelly théorique (standard institutionnel)
- Ajustement par Risk Cluster : si le facteur de risque est déjà saturé → diviser le sizing par 2
- Volatility targeting : ajuster la taille pour maintenir une contribution constante au risque portefeuille (ex : chaque trade cible 1% de VaR)
- Affichage dans Journal de Bord : colonne "Sizing suggéré" avec explication (Kelly brut / ajusté)

Pourquoi ces choix

- "Un signal moyen avec un sizing exceptionnel gagne de l'argent. L'inverse non." — Audit expert
- Kelly fractionnel (25–50%) est la norme : le Kelly complet sur-optimise et produit des drawdowns brutaux
- VaR contribution constante = technique de risk parity adaptée au sizing d'options

Sprint 3.4
Tableau de Bord Risque Global
frontend S19 – S20
Livrables

- Page "Risk Dashboard" : vue unique de tout le risque portefeuille
- Jauge de concentration par facteur (géo, inflation, récession, liquidité)
- Expected Drawdown du portefeuille estimé (basé sur corrélations historiques)
- Score de "diversification effective" : 1 (positions toutes corrélées) → N (positions parfaitement indépendantes)
- Recommandation automatique : "Portefeuille sur-concentré sur risque géo Asie — les 2 prochains trades devraient être sur d'autres facteurs"

Pourquoi ces choix

- Un Risk Committee sérieux regarde ce tableau avant chaque trade
- La recommandation automatique ferme la boucle : le Risk Engine alimente directement les suggestions du prochain cycle

🟣 Phase 4 — Moteur Probabiliste & Apprentissage Automatique
Semaines 21–26 · NIVEAU RECHERCHE · Vers le niveau quant fund
Enjeu
"Un fonds institutionnel voudrait : IA → hypothèse → Modèle statistique → validation. Aujourd'hui tu as LLM → score. Il manque la validation quantitative indépendante de GPT." — Audit expert
Sprint 4.1
Bayesian Updating des Scores
backend frontend S21 – S22
Livrables

- Chaque pattern a un prior bayésien (distribution Beta sur le win rate) mis à jour à chaque trade mature
- Score composite = α × score_GPT + (1−α) × score_bayesien où α décroît avec le nombre de trades (confiance croissante dans l'historique)
- Intervalles de confiance affichés : "Win rate estimé : 65% ± 12%" (beta distribution)
- Recalibration automatique du facteur alpha selon le score de Brier du système (Phase 2.3)

Pourquoi ces choix

- Beta(α,β) est le prior conjugué naturel pour un taux de succès → mise à jour simple et analytique
- Plus le pattern a de trades → plus l'historique prime sur l'opinion de GPT-4o
- Adresse directement le manque de calibration statistique identifié par l'expert

Sprint 4.2
Détection Automatique de Régimes (Clustering)
backend frontend S23 – S24
Livrables

- Clustering non supervisé (K-Means ou DBSCAN) sur les vecteurs macro journaliers (VIX, pente, DXY, Brent, or) pour auto-détecter les régimes latents
- Comparaison régime détecté vs régime nommé (stagflation, expansion...) → mesure d'alignement
- Auto-découverte de sous-régimes : "stagflation avec stress dollar" vs "stagflation avec fuite vers l'or"
- Affichage dans Régime Macro : "Cluster 3 (similaire à Oct 2022, Nov 2023)" avec performance historique des patterns dans ce cluster

Pourquoi ces choix

- Les régimes nommés à la main sont une approximation — le clustering découvre les régimes réels dans les données
- "Les marchés ne sont pas stationnaires" — le clustering aide à identifier quand le régime a changé
- Librairie sklearn (déjà dans l'environnement Python probable) — pas de dépendance lourde

Sprint 4.3
Embeddings de Patterns & Similarité Sémantique
backend API S25
Livrables

- Embedding de chaque pattern via l'API OpenAI (`text-embedding-3-small`) stocké en DB
- Remplacement du filtre Jaccard par similarité cosinus sur embeddings → détection de doublons sémantiques, pas juste des mots identiques
- Recherche sémantique : "trouver les patterns similaires à cette thèse" dans la page Patterns

Pourquoi ces choix

- Jaccard rate "Taiwan Tensions" et "Détroit de Taiwan Risk" comme différents — embeddings les détecte comme proches
- `text-embedding-3-small` = $0.002/1M tokens, quasi gratuit

Sprint 4.4
Tableau de Bord Analytique Complet
frontend S26
Livrables

- Page Analytics avec : courbe de calibration, Brier score, win rate par régime, performance par pattern, drawdown historique
- Comparaison score GPT vs résultat réel sur 6 mois : "le modèle sur-performe dans les régimes de crise, sous-performe en régime d'expansion"
- Export CSV de toutes les métriques pour analyse externe

## Récapitulatif Exécutif

Sprint | Feature | Durée | Dépendances | Impact
--- | --- | --- | --- | ---
1.1 | IV Rank & Percentile | 2s | — | ★★★★★
1.2 | Term Structure & Skew | 2s | 1.1 | ★★★★★
1.3 | Options Flow (proxy OI) | 2s | 1.1 | ★★★★☆
2.1 | Pattern Reliability Score | 2s | historique trades | ★★★★★
2.2 | Contre-thèses & Invalidation | 2s | — | ★★★★☆
2.3 | Calibration + Demi-vie KB | 2s | 2.1 | ★★★★☆
3.1 | Vue Portefeuille Consolidée | 2s | — | ★★★★☆
3.2 | Risk Cluster Engine | 2s | 3.1 | ★★★★★
3.3 | Position Sizing (Kelly) | 2s | 2.1, 3.2 | ★★★★★
3.4 | Risk Dashboard | 2s | 3.1, 3.2, 3.3 | ★★★☆☆
4.1 | Bayesian Updating | 2s | 2.1, 2.3 | ★★★★☆
4.2 | Clustering de Régimes | 2s | données macro | ★★★☆☆
4.3 | Embeddings Patterns | 1s | — | ★★★☆☆
4.4 | Analytics Dashboard | 1s | toutes phases | ★★★☆☆

### Décisions de démarrage immédiates

Question | Recommandation
--- | ---
Source des données IV ? | yfinance pour les sous-jacents US/ETF (gratuit). Pour les futures (Brent, or), explorer Yahoo Finance "BZ=F", "GC=F" — options disponibles mais limitées.
Stocker l'IV en DB ou calculer à la volée ? | Stocker journalièrement. IV Rank et Percentile ont besoin de 52 semaines d'historique — impossible à calculer à la volée sur yfinance sans cet historique.
Kelly sur quel capital de référence ? | Laisser l'utilisateur définir un capital de référence dans la Config (ex : 50 000€) — le sizing est exprimé en % et en € notionnel.
Embeddings : OpenAI ou local ? | OpenAI `text-embedding-3-small` pour démarrer ($0.002/1M tokens, négligeable). Migration vers un modèle local (sentence-transformers) possible en Phase 4 si nécessaire.

Projection des notes post-roadmap
Trading d'Options : 5/10 → 8.5/10 (Phase 1 + 2)
Gestion du Risque : 6/10 → 8.5/10 (Phase 3)
Niveau Fonds Pro : 6.5/10 → 8.5/10 (Phase 1 → 3)
Architecture IA : 8.5/10 → 9.5/10 (Phase 2 + 4)

GeoOptions Intelligence v2.0 — Roadmap de développement · Basé sur audit expert · Juin 2026