Backend: - iv_engine.py: ATM IV, term structure (30/60/90/180j), put/call skew, options flow (P/C OI ratio, unusual strikes, gamma bias), proxy map for futures→ETFs - database.py: iv_history table + save_iv_snapshot, get_iv_rank_percentile, get_iv_history - routers/options_vol.py: /api/options-vol/ endpoints (snapshot, batch, watchlist, history) - auto_cycle.py: inject IV context string into scoring prompt (step 3.5) - ai_analyzer.py: score_patterns_with_context accepts iv_context param - main.py: register options_vol router Frontend: - pages/OptionsLab.tsx: full IV dashboard (watchlist by IVR, term structure, skew, flow, sparkline) - pages/JournalDeBord.tsx: IvRankCell component + IV Rank column per trade - hooks/useApi.ts: useIvSnapshot, useIvWatchlist, useIvBatch, useIvHistory, useIvForTrade Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
971 lines
43 KiB
HTML
971 lines
43 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="fr"><head>
|
||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>GeoOptions Intelligence — Documentation Système</title>
|
||
<style>
|
||
/* ── Base ── */
|
||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||
|
||
body {
|
||
font-family: 'Georgia', 'Times New Roman', serif;
|
||
font-size: 11pt;
|
||
line-height: 1.7;
|
||
color: #1a1a2e;
|
||
background: #fff;
|
||
max-width: 900px;
|
||
margin: 0 auto;
|
||
padding: 40px 48px;
|
||
}
|
||
|
||
/* ── Typography ── */
|
||
h1 { font-size: 24pt; font-weight: 700; color: #0f2d6b; margin-bottom: 6px; letter-spacing: -0.5px; }
|
||
h2 { font-size: 15pt; font-weight: 700; color: #0f2d6b; margin: 36px 0 12px; border-bottom: 2.5px solid #0f2d6b; padding-bottom: 6px; }
|
||
h3 { font-size: 12pt; font-weight: 700; color: #1a3a7c; margin: 24px 0 8px; }
|
||
h4 { font-size: 10.5pt; font-weight: 700; color: #2d5a9e; margin: 16px 0 6px; }
|
||
p { margin-bottom: 10px; }
|
||
|
||
/* ── Cover ── */
|
||
.cover {
|
||
text-align: center;
|
||
padding: 60px 0 48px;
|
||
border-bottom: 3px solid #0f2d6b;
|
||
margin-bottom: 48px;
|
||
}
|
||
.cover .subtitle { font-size: 13pt; color: #4a6fa5; margin-top: 8px; font-style: italic; }
|
||
.cover .meta { font-size: 9.5pt; color: #7a8aaa; margin-top: 24px; font-family: 'Courier New', monospace; }
|
||
.cover .logo { font-size: 36pt; margin-bottom: 16px; }
|
||
|
||
/* ── Callout boxes ── */
|
||
.callout {
|
||
border-left: 4px solid;
|
||
padding: 12px 16px;
|
||
margin: 18px 0;
|
||
border-radius: 0 6px 6px 0;
|
||
}
|
||
.callout.blue { border-color: #2d6be4; background: #eef4ff; }
|
||
.callout.green { border-color: #16a34a; background: #f0fdf4; }
|
||
.callout.amber { border-color: #d97706; background: #fffbeb; }
|
||
.callout.red { border-color: #dc2626; background: #fff5f5; }
|
||
.callout .label { font-weight: 700; font-size: 9pt; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 4px; }
|
||
.callout.blue .label { color: #2d6be4; }
|
||
.callout.green .label { color: #16a34a; }
|
||
.callout.amber .label { color: #d97706; }
|
||
.callout.red .label { color: #dc2626; }
|
||
|
||
/* ── Tables ── */
|
||
table { width: 100%; border-collapse: collapse; margin: 16px 0 24px; font-size: 10pt; }
|
||
th { background: #0f2d6b; color: #fff; padding: 9px 12px; text-align: left; font-size: 9pt; text-transform: uppercase; letter-spacing: 0.5px; }
|
||
td { padding: 8px 12px; border-bottom: 1px solid #e2e8f0; vertical-align: top; }
|
||
tr:nth-child(even) td { background: #f8fafc; }
|
||
tr:hover td { background: #eef2ff; }
|
||
|
||
/* ── Flow diagram ── */
|
||
.flow { display: flex; flex-direction: column; gap: 2px; margin: 20px 0; }
|
||
.flow-step {
|
||
display: flex;
|
||
align-items: flex-start;
|
||
gap: 14px;
|
||
padding: 12px 16px;
|
||
border-radius: 6px;
|
||
}
|
||
.flow-step.ai { background: #eef4ff; border: 1px solid #bfd1f5; }
|
||
.flow-step.data { background: #f0fdf4; border: 1px solid #bbf7d0; }
|
||
.flow-step.db { background: #fafafa; border: 1px solid #e2e8f0; }
|
||
.flow-step.bg { background: #fefce8; border: 1px solid #fde68a; }
|
||
.flow-num {
|
||
width: 26px; height: 26px; border-radius: 50%;
|
||
display: flex; align-items: center; justify-content: center;
|
||
font-size: 9pt; font-weight: 700; flex-shrink: 0; margin-top: 2px;
|
||
}
|
||
.flow-step.ai .flow-num { background: #2d6be4; color: #fff; }
|
||
.flow-step.data .flow-num { background: #16a34a; color: #fff; }
|
||
.flow-step.db .flow-num { background: #64748b; color: #fff; }
|
||
.flow-step.bg .flow-num { background: #d97706; color: #fff; }
|
||
.flow-title { font-weight: 700; font-size: 10.5pt; margin-bottom: 2px; }
|
||
.flow-step.ai .flow-title { color: #1e3a8a; }
|
||
.flow-step.data .flow-title { color: #14532d; }
|
||
.flow-step.db .flow-title { color: #334155; }
|
||
.flow-step.bg .flow-title { color: #92400e; }
|
||
.flow-desc { font-size: 9.5pt; color: #475569; }
|
||
.flow-arrow { text-align: center; color: #94a3b8; font-size: 14pt; line-height: 1; }
|
||
|
||
.badge {
|
||
display: inline-block;
|
||
padding: 1px 8px;
|
||
border-radius: 20px;
|
||
font-size: 8.5pt;
|
||
font-weight: 700;
|
||
font-family: 'Courier New', monospace;
|
||
}
|
||
.badge-ai { background: #dbeafe; color: #1e40af; }
|
||
.badge-mini { background: #ede9fe; color: #5b21b6; }
|
||
.badge-db { background: #f1f5f9; color: #475569; border: 1px solid #cbd5e1; }
|
||
.badge-bg { background: #fef9c3; color: #854d0e; }
|
||
|
||
ul { margin: 8px 0 12px 20px; }
|
||
li { margin-bottom: 4px; }
|
||
li::marker { color: #2d6be4; }
|
||
|
||
code {
|
||
font-family: 'Courier New', monospace;
|
||
font-size: 9pt;
|
||
background: #f1f5f9;
|
||
padding: 1px 5px;
|
||
border-radius: 3px;
|
||
color: #1e3a8a;
|
||
}
|
||
|
||
.section-intro { font-size: 10.5pt; color: #475569; font-style: italic; margin-bottom: 20px; }
|
||
|
||
/* ── Prompt anatomy cards ── */
|
||
.prompt-card {
|
||
border: 1.5px solid #bfd1f5;
|
||
border-radius: 8px;
|
||
margin: 20px 0;
|
||
overflow: hidden;
|
||
}
|
||
.prompt-card-header {
|
||
background: #0f2d6b;
|
||
color: #fff;
|
||
padding: 10px 16px;
|
||
font-weight: 700;
|
||
font-size: 10pt;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
}
|
||
.prompt-card-body { padding: 14px 16px; }
|
||
.prompt-section { margin-bottom: 12px; }
|
||
.prompt-section-title { font-weight: 700; font-size: 9pt; text-transform: uppercase; letter-spacing: 0.8px; color: #2d6be4; margin-bottom: 4px; }
|
||
.included { color: #15803d; }
|
||
.excluded { color: #dc2626; }
|
||
.check::before { content: "✓ "; font-weight: 700; }
|
||
.cross::before { content: "✗ "; font-weight: 700; }
|
||
|
||
/* ── Maturity viz ── */
|
||
.maturity-bar { display: flex; height: 24px; border-radius: 4px; overflow: hidden; margin: 12px 0 6px; }
|
||
.mat-seg { display: flex; align-items: center; justify-content: center; font-size: 8pt; font-weight: 700; color: #fff; }
|
||
.mat-trop-tot { background: #94a3b8; flex: 10; }
|
||
.mat-debut { background: #f59e0b; flex: 25; }
|
||
.mat-mature { background: #22c55e; flex: 40; }
|
||
.mat-fin { background: #3b82f6; flex: 25; }
|
||
.mat-legend { display: flex; gap: 16px; flex-wrap: wrap; font-size: 8.5pt; margin-top: 4px; }
|
||
.mat-legend span { display: flex; align-items: center; gap: 5px; }
|
||
.mat-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; flex-shrink: 0; }
|
||
|
||
.page-break { page-break-before: always; }
|
||
hr { border: none; border-top: 1px solid #e2e8f0; margin: 32px 0; }
|
||
|
||
/* ── Print ── */
|
||
@media print {
|
||
body { padding: 20px 28px; font-size: 10pt; }
|
||
h1 { font-size: 20pt; }
|
||
h2 { font-size: 13pt; }
|
||
.cover { padding: 30px 0 30px; }
|
||
.callout, .prompt-card { break-inside: avoid; }
|
||
.flow-step { break-inside: avoid; }
|
||
a { text-decoration: none; color: inherit; }
|
||
@page { margin: 1.5cm 1.8cm; size: A4; }
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
|
||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||
COVER
|
||
══════════════════════════════════════════════════════════════════════════ -->
|
||
<div class="cover">
|
||
<div class="logo">⚡</div>
|
||
<h1>GeoOptions Intelligence</h1>
|
||
<div class="subtitle">Architecture du Système & Logique des Prompts IA</div>
|
||
<div class="meta">
|
||
Version 2.0 · Juin 2026 · FastAPI + React + GPT-4o
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||
1. CONCEPT GÉNÉRAL
|
||
══════════════════════════════════════════════════════════════════════════ -->
|
||
<h2>1. Concept Général</h2>
|
||
|
||
<p class="section-intro">
|
||
GeoOptions Intelligence est un cockpit de trading d'options dont
|
||
l'intelligence centrale repose sur un cycle itératif : collecter les
|
||
signaux macro-géopolitiques, identifier les patterns d'opportunité,
|
||
scorer leur pertinence en temps réel, puis apprendre des performances
|
||
passées pour affiner les cycles suivants.
|
||
</p>
|
||
|
||
<h3>1.1 Philosophie fondamentale</h3>
|
||
|
||
<p>
|
||
Le système est construit autour d'une idée simple : <strong>les options sur dérivés géopolitiques suivent des patterns répétables</strong>.
|
||
Une escalade tarifaire US-Chine génère systématiquement de la
|
||
volatilité sur les semi-conducteurs. Un choc pétrolier bénéficie aux
|
||
stratégies long sur l'énergie. Le défi n'est pas de <em>créer</em> ces patterns, mais de les <em>détecter</em> assez tôt pour agir avant le consensus.
|
||
</p>
|
||
|
||
<p>
|
||
L'IA (GPT-4o) joue le rôle d'un <strong>stratège senior externe</strong>
|
||
qui lit les news, connaît les régimes macro, et enrichit la base de
|
||
patterns — mais ce sont des règles humaines explicites qui décident si
|
||
un trade est logué, si une analyse est valide, et si les leçons passées
|
||
sont fiables.
|
||
</p>
|
||
|
||
<div class="callout blue">
|
||
<div class="label">Principe directeur</div>
|
||
L'IA propose, les règles quantitatives filtrent, l'historique de performance valide. Le cycle répète et apprend.
|
||
</div>
|
||
|
||
<h3>1.2 Les trois mémoires du système</h3>
|
||
|
||
<table>
|
||
<tbody><tr>
|
||
<th>Mémoire</th>
|
||
<th>Contenu</th>
|
||
<th>Durée de vie</th>
|
||
<th>Usage</th>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Rapport Portfolio</strong></td>
|
||
<td>Analyse post-mortem des trades matures : gagnants, perdants, leçons clés</td>
|
||
<td>~7–30 jours (jusqu'au prochain rapport)</td>
|
||
<td>Injecté dans les prompts de suggestion et scoring du cycle suivant</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Super Contexte</strong></td>
|
||
<td>Synthèse évolutive : régimes, patterns récurrents, erreurs, corrélations macro</td>
|
||
<td>Permanent — s'enrichit à chaque cycle (max 1×/6h)</td>
|
||
<td>Contexte de fond pour tout le raisonnement IA</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Base de Connaissances (KB)</strong></td>
|
||
<td>Entrées structurées par catégorie (régimes, patterns, erreurs) avec score de confiance</td>
|
||
<td>Permanent — géré manuellement ou auto-ajouté par synthèse</td>
|
||
<td>Consulté lors de la synthèse du Super Contexte</td>
|
||
</tr>
|
||
</tbody></table>
|
||
|
||
|
||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||
2. WORKFLOW D'UN CYCLE
|
||
══════════════════════════════════════════════════════════════════════════ -->
|
||
<div class="page-break"></div>
|
||
<h2>2. Workflow d'un Cycle Complet</h2>
|
||
|
||
<p class="section-intro">
|
||
Un cycle se déclenche automatiquement (toutes les N heures) ou
|
||
manuellement. La durée typique est de 2 à 5 minutes pour les étapes
|
||
synchrones, plus 1 à 3 minutes en background selon la disponibilité des
|
||
données.
|
||
</p>
|
||
|
||
<div class="flow">
|
||
|
||
<div class="flow-step db">
|
||
<div class="flow-num">0</div>
|
||
<div>
|
||
<div class="flow-title">Chargement du contexte mémoriel <span class="badge badge-db">DB</span></div>
|
||
<div class="flow-desc">Charge le dernier Rapport Portfolio et le Super Contexte depuis la base de données. Ces données enrichiront <em>tous</em> les prompts IA du cycle courant.</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="flow-arrow">↓</div>
|
||
|
||
<div class="flow-step data">
|
||
<div class="flow-num">1</div>
|
||
<div>
|
||
<div class="flow-title">Collecte des données de marché <span class="badge badge-mini">GPT-4o-mini</span></div>
|
||
<div class="flow-desc">
|
||
Récupère les news géopolitiques (RSS, GDELT), les prix de marché
|
||
(yfinance), les indicateurs macro (VIX, pente de courbe, DXY, Brent,
|
||
or, cuivre, S&P vs moyenne 200j) et le calendrier économique.
|
||
<br>→ <strong>Appel IA :</strong> GPT-4o-mini score chaque news (impact 0–100, classification géopolitique) en batch.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="flow-arrow">↓</div>
|
||
|
||
<div class="flow-step ai">
|
||
<div class="flow-num">2</div>
|
||
<div>
|
||
<div class="flow-title">Suggestion de nouveaux patterns <span class="badge badge-ai">GPT-4o</span></div>
|
||
<div class="flow-desc">
|
||
GPT-4o reçoit le contexte complet (news + prix + macro +
|
||
calendrier + Super Contexte + leçons portfolio) et propose des nouvelles
|
||
thèses de trading structurées.
|
||
<br>Retourne : nom, description, thèse macro, trades suggérés, keywords, probabilité, horizon cible.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="flow-arrow">↓</div>
|
||
|
||
<div class="flow-step db">
|
||
<div class="flow-num">3</div>
|
||
<div>
|
||
<div class="flow-title">Filtre anti-doublons (Jaccard) <span class="badge badge-db">Règle</span></div>
|
||
<div class="flow-desc">
|
||
Chaque pattern suggéré est comparé aux patterns existants par
|
||
similarité de keywords (distance de Jaccard). Si la similarité dépasse
|
||
le seuil configuré (défaut : 30%), le pattern est rejeté comme doublon.
|
||
Seuls les patterns vraiment nouveaux sont sauvegardés.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="flow-arrow">↓</div>
|
||
|
||
<div class="flow-step ai">
|
||
<div class="flow-num">4</div>
|
||
<div>
|
||
<div class="flow-title">Scoring de TOUS les patterns <span class="badge badge-ai">GPT-4o</span></div>
|
||
<div class="flow-desc">
|
||
GPT-4o score l'ensemble des patterns (nouveaux + existants) en
|
||
les confrontant au contexte marché actuel. Retourne pour chaque pattern :
|
||
score de pertinence (0–100), niveau de confiance, catalyseur clé,
|
||
résumé, trade recommandé avec stratégie (call spread, put, straddle...).
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="flow-arrow">↓</div>
|
||
|
||
<div class="flow-step db">
|
||
<div class="flow-num">5</div>
|
||
<div>
|
||
<div class="flow-title">Logging et journal <span class="badge badge-db">DB</span></div>
|
||
<div class="flow-desc">
|
||
Sauvegarde les scores en historique, log les prix d'entrée des
|
||
trades passant les filtres EV/score, enregistre l'alerte géo et le
|
||
régime macro. Traces de raisonnement (input/output de chaque appel IA)
|
||
persistées pour audit.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="flow-arrow">↓</div>
|
||
|
||
<div class="flow-step ai">
|
||
<div class="flow-num">6</div>
|
||
<div>
|
||
<div class="flow-title">Commentaire de cycle <span class="badge badge-ai">GPT-4o</span></div>
|
||
<div class="flow-desc">
|
||
Synthèse narrative courte (4–6 phrases) expliquant pourquoi les
|
||
patterns scorent ainsi aujourd'hui, quel est le risque principal, et
|
||
quelle recommandation tactique pour le prochain cycle. Affiché dans
|
||
l'interface.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="flow-arrow">↓ <em style="font-size:9pt;color:#94a3b8">Thread background (non-bloquant)</em></div>
|
||
|
||
<div class="flow-step bg">
|
||
<div class="flow-num">7</div>
|
||
<div>
|
||
<div class="flow-title">Rapport Portfolio automatique <span class="badge badge-ai">GPT-4o</span> <span class="badge badge-bg">Background</span></div>
|
||
<div class="flow-desc">
|
||
Déclenché seulement si ≥ 2 trades matures avec |P&L| >
|
||
0.1% sont disponibles. GPT-4o analyse les performances réelles des
|
||
trades matures et génère un rapport structuré (headline, analyse
|
||
gagnants/perdants, leçons clés, angles morts). Ce rapport sera injecté
|
||
au cycle suivant.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="flow-arrow">↓</div>
|
||
|
||
<div class="flow-step bg">
|
||
<div class="flow-num">8</div>
|
||
<div>
|
||
<div class="flow-title">Mise à jour du Super Contexte <span class="badge badge-ai">GPT-4o</span> <span class="badge badge-bg">Background</span></div>
|
||
<div class="flow-desc">
|
||
Déclenché seulement si le dernier Super Contexte a plus de 6
|
||
heures. GPT-4o agrège tous les rapports portfolio, tous les trades (90j)
|
||
et la base de connaissances pour produire une synthèse évolutive riche.
|
||
Nouvelles entrées KB auto-ajoutées.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="callout green">
|
||
<div class="label">Résumé des appels IA par cycle</div>
|
||
<strong>Synchrones (systématiques) :</strong> 1× GPT-4o-mini (scoring news) + 3× GPT-4o (suggestion patterns, scoring patterns, commentaire)<br>
|
||
<strong>Background (conditionnels) :</strong> 0–2× GPT-4o selon la disponibilité de trades matures et la fraîcheur du Super Contexte
|
||
</div>
|
||
|
||
|
||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||
3. ANATOMIE DES PROMPTS
|
||
══════════════════════════════════════════════════════════════════════════ -->
|
||
<div class="page-break"></div>
|
||
<h2>3. Anatomie des Prompts IA — Ce qu'on Inclut et Pourquoi</h2>
|
||
|
||
<p class="section-intro">
|
||
Chaque prompt est construit pour donner à GPT-4o exactement ce dont il
|
||
a besoin pour être pertinent — sans surcharge inutile qui diluerait le
|
||
signal ou augmenterait le coût.
|
||
</p>
|
||
|
||
<!-- ── 3.1 Scoring des news ── -->
|
||
<h3>3.1 Scoring des news (GPT-4o-mini)</h3>
|
||
|
||
<div class="prompt-card">
|
||
<div class="prompt-card-header">
|
||
<span>Prompt : Classification et scoring d'impact des news</span>
|
||
<span class="badge badge-mini">GPT-4o-mini</span>
|
||
</div>
|
||
<div class="prompt-card-body">
|
||
|
||
<div class="prompt-section">
|
||
<div class="prompt-section-title included">✓ Ce qui est inclus</div>
|
||
<ul>
|
||
<li><strong>Titre + source + date de chaque news</strong> — le minimum nécessaire pour scorer l'impact</li>
|
||
<li><strong>Liste des catégories cibles</strong> (énergie, métaux, indices, forex, agriculture) — ancre le scoring sur nos actifs réels</li>
|
||
<li><strong>Schéma de sortie strict</strong> (score 0–100, catégorie, keywords) — pour être parsé de manière fiable</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="prompt-section">
|
||
<div class="prompt-section-title excluded">✗ Ce qui est exclu</div>
|
||
<ul>
|
||
<li><strong>Corps complet des articles</strong> — le titre suffit pour scorer l'impact géopolitique ; le corps alourdit le contexte sans gain mesurable</li>
|
||
<li><strong>Historique des scores passés</strong> — scorer une news est une tâche stateless ; l'historique n'apporterait rien</li>
|
||
<li><strong>Données de marché</strong> — inutiles pour déterminer l'impact géopolitique d'une news</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="callout amber">
|
||
<div class="label">Pourquoi GPT-4o-mini ici ?</div>
|
||
Le scoring des news est une tâche de classification répétitive sur
|
||
des centaines d'items. GPT-4o-mini est 10× moins cher que GPT-4o pour
|
||
une qualité de classification identique sur des tâches structurées
|
||
courtes. On garde GPT-4o pour le raisonnement stratégique complexe.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── 3.2 Suggestion de patterns ── -->
|
||
<h3>3.2 Suggestion de nouveaux patterns (GPT-4o)</h3>
|
||
|
||
<div class="prompt-card">
|
||
<div class="prompt-card-header">
|
||
<span>Prompt : Identification de nouvelles thèses de trading</span>
|
||
<span class="badge badge-ai">GPT-4o</span>
|
||
</div>
|
||
<div class="prompt-card-body">
|
||
|
||
<div class="prompt-section">
|
||
<div class="prompt-section-title included">✓ Ce qui est inclus</div>
|
||
<ul>
|
||
<li><strong>Top N news scorées avec leur impact</strong> — les signaux géopolitiques qui motivent les thèses</li>
|
||
<li><strong>Régime macro dominant</strong> (stagflation, crise géo, expansion...) + scores de tous les scénarios — ancre les suggestions dans la réalité macro du moment</li>
|
||
<li><strong>Prix clés</strong> (VIX, DXY, Brent, or, cuivre) — oriente vers des actifs avec momentum</li>
|
||
<li><strong>Calendrier économique à venir</strong> — évite de suggérer des thèses juste avant un catalyseur qui les invaliderait</li>
|
||
<li><strong>Super Contexte</strong> (narrative + priorités stratégiques + erreurs récurrentes) — le "cerveau" accumulé qui guide le style de suggestions</li>
|
||
<li><strong>Leçons du dernier rapport portfolio</strong> (headline + leçons clés) — ancre dans ce qui a marché ou échoué récemment</li>
|
||
<li><strong>Schéma de sortie complet</strong> (nom, description, thèse macro, keywords, trades suggérés, horizon, probabilité)</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="prompt-section">
|
||
<div class="prompt-section-title excluded">✗ Ce qui est exclu</div>
|
||
<ul>
|
||
<li><strong>Liste des patterns existants</strong> — le filtre
|
||
Jaccard (étape 3) gère les doublons algorithmiquement ; l'inclure dans
|
||
le prompt créerait du bruit et biaiserait GPT-4o vers des variations des
|
||
patterns actuels</li>
|
||
<li><strong>Historique complet des scores</strong> — on injecte seulement le résumé des leçons (rapport portfolio) pas les données brutes ; plus compact, plus signal</li>
|
||
<li><strong>Données de trades individuels</strong> — trop granulaires pour la suggestion ; les leçons agrégées suffisent</li>
|
||
<li><strong>Prix d'entrée et P&L des positions ouvertes</strong> — crée un biais d'ancrage ; on veut des suggestions basées sur le marché actuel, pas sur nos positions</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── 3.3 Scoring des patterns ── -->
|
||
<h3>3.3 Scoring des patterns (GPT-4o)</h3>
|
||
|
||
<div class="prompt-card">
|
||
<div class="prompt-card-header">
|
||
<span>Prompt : Évaluation de pertinence de chaque pattern dans le contexte actuel</span>
|
||
<span class="badge badge-ai">GPT-4o</span>
|
||
</div>
|
||
<div class="prompt-card-body">
|
||
|
||
<div class="prompt-section">
|
||
<div class="prompt-section-title included">✓ Ce qui est inclus</div>
|
||
<ul>
|
||
<li><strong>Tous les patterns</strong> (nom, description, thèse,
|
||
keywords, trades suggérés) — GPT-4o doit évaluer chacun dans le même
|
||
appel pour maintenir une cohérence relative des scores</li>
|
||
<li><strong>Contexte marché complet</strong> (régime macro, prix, news) — le même contexte que la suggestion, pour cohérence</li>
|
||
<li><strong>Super Contexte</strong> — les erreurs récurrentes et
|
||
priorités stratégiques permettent de pénaliser les patterns qui
|
||
répètent des patterns d'échec connus</li>
|
||
<li><strong>Biais par classe d'actif</strong> (calculé depuis le régime dominant) — oriente les scores vers les classes qui profitent du régime</li>
|
||
<li><strong>Score de risque géopolitique global</strong> — affecte les scores des patterns directionnels risqués</li>
|
||
<li><strong>Schéma de sortie structuré</strong> (score, confiance, buckets d'évaluation, trade recommandé avec détails option)</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="prompt-section">
|
||
<div class="prompt-section-title excluded">✗ Ce qui est exclu</div>
|
||
<ul>
|
||
<li><strong>Scores historiques de chaque pattern</strong> —
|
||
créerait un biais d'ancrage ; un pattern qui scorait 80 il y a 3
|
||
semaines ne devrait pas nécessairement scorer 80 aujourd'hui si le
|
||
régime a changé</li>
|
||
<li><strong>P&L réel des trades logués</strong> — même raison : GPT-4o doit évaluer le marché aujourd'hui, pas être influencé par nos performances passées</li>
|
||
<li><strong>Identité des traders</strong> — non pertinent pour l'évaluation macro</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── 3.4 Commentaire de cycle ── -->
|
||
<h3>3.4 Commentaire de cycle (GPT-4o)</h3>
|
||
|
||
<div class="prompt-card">
|
||
<div class="prompt-card-header">
|
||
<span>Prompt : Narration du cycle pour le trader</span>
|
||
<span class="badge badge-ai">GPT-4o</span>
|
||
</div>
|
||
<div class="prompt-card-body">
|
||
|
||
<div class="prompt-section">
|
||
<div class="prompt-section-title included">✓ Ce qui est inclus</div>
|
||
<ul>
|
||
<li><strong>Top 5 patterns scorés</strong> (nom, score, résumé) — ce que le cycle a retenu comme pertinent maintenant</li>
|
||
<li><strong>Régime dominant + scores macro</strong> — pour expliquer pourquoi ces patterns scorent ainsi</li>
|
||
<li><strong>Indicateurs macro clés</strong> (VIX, pente de courbe, DXY, Brent, or, cuivre) — les chiffres bruts pour ancrer la narration</li>
|
||
<li><strong>Top 5 news à fort impact</strong> — les catalyseurs qui expliquent le contexte du cycle</li>
|
||
<li><strong>Trades logués ces 7 derniers jours</strong> (pattern, underlying, stratégie) — pour commenter l'alignement positions/contexte</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="prompt-section">
|
||
<div class="prompt-section-title excluded">✗ Ce qui est exclu</div>
|
||
<ul>
|
||
<li><strong>P&L des trades</strong> — le commentaire doit rester sur le <em>contexte marché</em>, pas sur les performances (risque de biais confirmationiste)</li>
|
||
<li><strong>Toutes les news</strong> — seules les top 5 à fort impact sont pertinentes pour une synthèse narrative</li>
|
||
<li><strong>Super Contexte complet</strong> — le commentaire est une analyse ponctuelle du cycle actuel, pas une synthèse mémorielle</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── 3.5 Rapport portfolio ── -->
|
||
<h3>3.5 Rapport Portfolio automatique (GPT-4o)</h3>
|
||
|
||
<div class="prompt-card">
|
||
<div class="prompt-card-header">
|
||
<span>Prompt : Post-mortem de performance sur trades matures</span>
|
||
<span class="badge badge-ai">GPT-4o</span>
|
||
</div>
|
||
<div class="prompt-card-body">
|
||
|
||
<div class="prompt-section">
|
||
<div class="prompt-section-title included">✓ Ce qui est inclus</div>
|
||
<ul>
|
||
<li><strong>Uniquement les trades MATURES</strong> avec P&L réel — seule source fiable d'apprentissage (voir section 4)</li>
|
||
<li><strong>Classification explicite</strong> (matures gagnants / matures perdants / immatures à ne pas juger)</li>
|
||
<li><strong>Score d'entrée de chaque trade</strong> — permet de corréler "le système a bien scoré ET le trade a marché" vs les faux positifs</li>
|
||
<li><strong>Indicateur de maturité</strong> de chaque trade (% de l'horizon écoulé) — contexte pour interpréter le P&L</li>
|
||
<li><strong>Règle de timing explicite dans le system prompt</strong> — interdit de tirer des conclusions sur les trades immatures</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="prompt-section">
|
||
<div class="prompt-section-title excluded">✗ Ce qui est exclu</div>
|
||
<ul>
|
||
<li><strong>Trades immatures comme base d'apprentissage</strong> — un trade ouvert depuis 2 jours sur un horizon de 60 jours ne dit rien de fiable sur la qualité de la thèse</li>
|
||
<li><strong>Contexte macro actuel</strong> — le rapport analyse le passé (pourquoi les matures ont marché), pas le présent</li>
|
||
<li><strong>Données de marché en temps réel</strong> — hors sujet pour un post-mortem</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── 3.6 Super Contexte ── -->
|
||
<h3>3.6 Synthèse Super Contexte (GPT-4o)</h3>
|
||
|
||
<div class="prompt-card">
|
||
<div class="prompt-card-header">
|
||
<span>Prompt : Mise à jour de la base de raisonnement évolutive</span>
|
||
<span class="badge badge-ai">GPT-4o</span>
|
||
</div>
|
||
<div class="prompt-card-body">
|
||
|
||
<div class="prompt-section">
|
||
<div class="prompt-section-title included">✓ Ce qui est inclus</div>
|
||
<ul>
|
||
<li><strong>10 derniers rapports portfolio</strong> (headline, stats, analyse gagnants/perdants, leçons) — la matière première de l'apprentissage</li>
|
||
<li><strong>Tous les trades (90j)</strong> classés par maturité avec P&L — la base empirique</li>
|
||
<li><strong>Base de connaissances existante</strong> (par catégorie : régimes, patterns, erreurs) — évite de repartir de zéro et préserve les insights validés</li>
|
||
<li><strong>Règle de timing dans le system prompt</strong> — même garde-fou que pour le rapport portfolio</li>
|
||
<li><strong>Instruction de conservation des insights existants</strong> si peu de matures disponibles — évite que la synthèse "oublie" les leçons validées à cause d'un manque de données récentes</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="prompt-section">
|
||
<div class="prompt-section-title excluded">✗ Ce qui est exclu</div>
|
||
<ul>
|
||
<li><strong>News du jour</strong> — le Super Contexte est une mémoire long terme, pas une analyse quotidienne</li>
|
||
<li><strong>Prix de marché actuels</strong> — même raison ; les régimes et corrélations sont déduits des performances, pas des prix instantanés</li>
|
||
<li><strong>Plus de 10 rapports</strong> — au-delà de 10
|
||
rapports, le prompt dépasserait la fenêtre utile ; les rapports les plus
|
||
anciens ont aussi moins de pertinence dans un marché qui évolue</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||
4. LA MATURITÉ DES TRADES
|
||
══════════════════════════════════════════════════════════════════════════ -->
|
||
<div class="page-break"></div>
|
||
<h2>4. La Maturité des Trades — Pourquoi C'est Central</h2>
|
||
|
||
<p class="section-intro">
|
||
C'est l'une des décisions d'architecture les plus importantes du
|
||
système. Un P&L observé sur une option après 3 jours est du bruit
|
||
statistique. Après 70% de son horizon, c'est un signal. Mélanger les
|
||
deux dans les prompts IA pollue l'apprentissage.
|
||
</p>
|
||
|
||
<h3>4.1 Définition des stades</h3>
|
||
|
||
<div class="maturity-bar">
|
||
<div class="mat-seg mat-trop-tot">0–10%</div>
|
||
<div class="mat-seg mat-debut">10–35%</div>
|
||
<div class="mat-seg mat-mature">35–75%</div>
|
||
<div class="mat-seg mat-fin">>75%</div>
|
||
</div>
|
||
<div class="mat-legend">
|
||
<span><span class="mat-dot" style="background:#94a3b8"></span><strong>Trop tôt</strong> (0–10%) — Signal nul, ne pas analyser</span>
|
||
<span><span class="mat-dot" style="background:#f59e0b"></span><strong>Début</strong> (10–35%) — Signal faible, surveiller</span>
|
||
<span><span class="mat-dot" style="background:#22c55e"></span><strong>Mature</strong> (35–75%) — Signal fiable, apprendre</span>
|
||
<span><span class="mat-dot" style="background:#3b82f6"></span><strong>Fin d'horizon</strong> (>75%) — Signal fort, leçons définitives</span>
|
||
</div>
|
||
|
||
<h3>4.2 Impact sur chaque étape du système</h3>
|
||
|
||
<table>
|
||
<tbody><tr>
|
||
<th>Composant</th>
|
||
<th>Traitement des immatures</th>
|
||
<th>Traitement des matures</th>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Rapport Portfolio</strong></td>
|
||
<td>Listés pour transparence, étiquetés "ne pas juger", pas dans les calculs P&L</td>
|
||
<td>Base exclusive des analyses, leçons et statistiques</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Super Contexte</strong></td>
|
||
<td>Listés avec étiquette, exclus des insights de performance</td>
|
||
<td>Matures gagnants et perdants analysés pour régimes et patterns</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Journal de Bord</strong></td>
|
||
<td>Badge gris/orange + barre de progression courte</td>
|
||
<td>Badge vert/bleu + P&L affiché comme signal fiable</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Gate rapport portfolio</strong></td>
|
||
<td colspan="2">Au moins 2 trades matures avec |P&L| > 0,1% requis pour déclencher la génération GPT-4o</td>
|
||
</tr>
|
||
</tbody></table>
|
||
|
||
<div class="callout red">
|
||
<div class="label">Risque évité</div>
|
||
Sans ce filtre de maturité, GPT-4o pourrait tirer des leçons d'un
|
||
trade ouvert depuis 2 heures qui montre −5% (normal sur une option). Il
|
||
conclurait "la stratégie straddle est mauvaise sur le secteur énergie"
|
||
et dégraderait les cycles suivants. Le filtre de maturité protège
|
||
l'intégrité de l'apprentissage.
|
||
</div>
|
||
|
||
|
||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||
5. RÈGLES DE FILTRAGE DES TRADES LOGUÉS
|
||
══════════════════════════════════════════════════════════════════════════ -->
|
||
<h2>5. Règles de Filtrage des Trades Logués</h2>
|
||
|
||
<p class="section-intro">
|
||
Tous les patterns scorés ne génèrent pas un trade dans le Journal de Bord. Deux filtres quantitatifs contrôlent l'entrée.
|
||
</p>
|
||
|
||
<h3>5.1 Les deux filtres</h3>
|
||
|
||
<table>
|
||
<tbody><tr>
|
||
<th>Filtre</th>
|
||
<th>Formule</th>
|
||
<th>Paramètre</th>
|
||
<th>Logique</th>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Score minimum</strong></td>
|
||
<td><code>score ≥ min_score</code></td>
|
||
<td>Configurable (défaut : 0)</td>
|
||
<td>Rejette les patterns jugés peu pertinents par GPT-4o dans le contexte actuel</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>EV nette minimum</strong></td>
|
||
<td><code>p × G − (1−p) ≥ min_ev</code></td>
|
||
<td>Configurable (défaut : 0.0)</td>
|
||
<td>Filtre les trades à espérance mathématique négative (p = probabilité, G = gain/perte max)</td>
|
||
</tr>
|
||
</tbody></table>
|
||
|
||
<h3>5.2 Les profils de risque</h3>
|
||
|
||
<p>
|
||
Les profils de risque définissent des <em>frontières d'acceptation</em> nommées (Conservateur, Standard, Agressif...). Un trade est logué s'il passe <strong>au moins un</strong>
|
||
profil activé. Chaque profil définit un score minimum et un gain
|
||
minimum attendu, et affiche la formule EV nette à la frontière pour
|
||
vérifier la cohérence mathématique.
|
||
</p>
|
||
|
||
<div class="callout green">
|
||
<div class="label">Intérêt de l'approche multi-profil</div>
|
||
Un même pattern peut être rejeté par le profil Conservateur (score 60,
|
||
gain 50% requis) mais accepté par le profil Agressif (score 40, gain
|
||
200% requis). Cela permet de logger des opportunités à fort potentiel
|
||
sans abaisser la barre globale.
|
||
</div>
|
||
|
||
|
||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||
6. GATE 6H DU SUPER CONTEXTE
|
||
══════════════════════════════════════════════════════════════════════════ -->
|
||
<h2>6. La Gate de 6 Heures du Super Contexte</h2>
|
||
|
||
<p>
|
||
Le Super Contexte est une synthèse mémorielle fondée sur des
|
||
performances de trades à 30–90 jours. Le relancer toutes les 3 heures (à
|
||
chaque cycle) serait non seulement coûteux, mais contre-productif : un
|
||
nouveau trade immature ne devrait jamais remettre en cause des
|
||
conclusions issues de mois d'observations.
|
||
</p>
|
||
|
||
<table>
|
||
<tbody><tr>
|
||
<th>Scénario</th>
|
||
<th>Comportement</th>
|
||
<th>Raison</th>
|
||
</tr>
|
||
<tr>
|
||
<td>Dernier Super Contexte < 6h</td>
|
||
<td>Synthèse ignorée, le SC existant est utilisé</td>
|
||
<td>Préserve les insights solides, évite le bruit des trades immatures</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Dernier Super Contexte > 6h</td>
|
||
<td>Nouvelle synthèse GPT-4o déclenchée</td>
|
||
<td>Intègre les nouvelles données de performance accumulées</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Trigger manuel avec <code>?force=true</code></td>
|
||
<td>Synthèse forcée quelle que soit l'ancienneté</td>
|
||
<td>Permet une mise à jour immédiate si l'utilisateur le décide</td>
|
||
</tr>
|
||
</tbody></table>
|
||
|
||
<div class="callout amber">
|
||
<div class="label">Analogie</div>
|
||
Le Super Contexte est comme un livre de règles qui s'enrichit après
|
||
chaque trimestre d'opérations. On ne réécrit pas le livre parce qu'un
|
||
trade ouvert ce matin montre −2%.
|
||
</div>
|
||
|
||
|
||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||
7. DÉDUPLICATION PAR JACCARD
|
||
══════════════════════════════════════════════════════════════════════════ -->
|
||
<h2>7. Filtre Anti-doublon par Distance de Jaccard</h2>
|
||
|
||
<p>
|
||
GPT-4o, s'il reçoit les mêmes news deux cycles de suite, risque de
|
||
suggérer des patterns très proches. La distance de Jaccard mesure le
|
||
chevauchement entre les <em>keywords</em> de deux patterns.
|
||
</p>
|
||
|
||
<div class="callout blue">
|
||
<div class="label">Formule</div>
|
||
<code>Jaccard(A, B) = |A ∩ B| / |A ∪ B|</code>
|
||
<br>Où A et B sont les ensembles de keywords (en minuscules) de deux patterns.
|
||
<br><br>
|
||
Si la similarité maximale entre le candidat et <em>n'importe quel</em> pattern existant dépasse le seuil (défaut 30%), le candidat est rejeté.
|
||
</div>
|
||
|
||
<table>
|
||
<tbody><tr>
|
||
<th>Seuil configuré</th>
|
||
<th>Comportement</th>
|
||
<th>Usage recommandé</th>
|
||
</tr>
|
||
<tr>
|
||
<td>10% (strict)</td>
|
||
<td>Presque tout passe, peu de déduplications</td>
|
||
<td>Base de données de patterns vide ou très petite</td>
|
||
</tr>
|
||
<tr>
|
||
<td>30% (défaut)</td>
|
||
<td>Équilibre entre nouveauté et redondance</td>
|
||
<td>Usage normal avec >20 patterns existants</td>
|
||
</tr>
|
||
<tr>
|
||
<td>60–80% (permissif)</td>
|
||
<td>Seuls les quasi-doublons exacts sont rejetés</td>
|
||
<td>Veut maximiser le volume de patterns générés</td>
|
||
</tr>
|
||
</tbody></table>
|
||
|
||
|
||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||
8. ARCHITECTURE DES DONNÉES
|
||
══════════════════════════════════════════════════════════════════════════ -->
|
||
<div class="page-break"></div>
|
||
<h2>8. Architecture des Données</h2>
|
||
|
||
<table>
|
||
<tbody><tr>
|
||
<th>Table / Collection</th>
|
||
<th>Contenu</th>
|
||
<th>Consulté par</th>
|
||
</tr>
|
||
<tr>
|
||
<td><code>custom_patterns</code></td>
|
||
<td>Patterns créés manuellement ou par l'IA (nom, thèse, keywords, trades suggérés)</td>
|
||
<td>Scoring, suggestion (filtre Jaccard)</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>pattern_scores</code></td>
|
||
<td>Historique de chaque scoring run (score, confiance, catalyseur, trade recommandé)</td>
|
||
<td>Cockpit, Rapport IA, Journal</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>trade_entry_prices</code></td>
|
||
<td>Un enregistrement par trade logué : prix d'entrée, score à l'entrée, P&L courant</td>
|
||
<td>Journal de Bord, Rapport Portfolio, Super Contexte</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>ai_reports</code></td>
|
||
<td>Rapports portfolio générés par GPT-4o (JSON + stats + winners/losers)</td>
|
||
<td>Super Contexte (10 derniers), Rapport IA page</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>reasoning_states</code></td>
|
||
<td>Versions successives du Super Contexte (narrative + synthesis JSON)</td>
|
||
<td>Cycle (contexte mémoriel), Super Contexte page</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>kb_entries</code></td>
|
||
<td>Base de connaissances : entrées par catégorie avec confiance (0–100)</td>
|
||
<td>Synthèse Super Contexte, Super Contexte page</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>reasoning_traces</code></td>
|
||
<td>Input/output de chaque appel IA (suggestion + scoring) — audit complet</td>
|
||
<td>Débogage, traçabilité des décisions</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>cycle_runs</code></td>
|
||
<td>Métadonnées de chaque cycle (statut, patterns added/scored, commentary, régime)</td>
|
||
<td>Page Config, historique cycles</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>config</code></td>
|
||
<td>Clés API, paramètres auto-cycle, seuils EV/score</td>
|
||
<td>Startup, chaque cycle</td>
|
||
</tr>
|
||
</tbody></table>
|
||
|
||
|
||
<!-- ══════════════════════════════════════════════════════════════════════════
|
||
9. SYNTHÈSE DES CHOIX DE CONCEPTION
|
||
══════════════════════════════════════════════════════════════════════════ -->
|
||
<h2>9. Synthèse des Choix de Conception</h2>
|
||
|
||
<table>
|
||
<tbody><tr>
|
||
<th>Choix</th>
|
||
<th>Alternative rejetée</th>
|
||
<th>Raison</th>
|
||
</tr>
|
||
<tr>
|
||
<td>GPT-4o-mini pour le scoring des news</td>
|
||
<td>GPT-4o pour tout</td>
|
||
<td>Classification répétitive → coût 10× réduit sans perte qualité</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Filtre Jaccard pour déduplier (pas GPT-4o)</td>
|
||
<td>Demander à GPT-4o si un pattern est un doublon</td>
|
||
<td>Algorithmique = déterministe, gratuit, rapide</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Gate 6h sur le Super Contexte</td>
|
||
<td>Resynthétiser à chaque cycle</td>
|
||
<td>Protège l'intégrité mémorielle du bruit court terme</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Rapport portfolio en background thread</td>
|
||
<td>Bloquer le cycle jusqu'à la fin du rapport</td>
|
||
<td>Le rapport sert au cycle <em>suivant</em> — pas besoin qu'il soit prêt maintenant</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Filtres EV et score configurables par profil</td>
|
||
<td>Un seul seuil global fixe</td>
|
||
<td>Permet plusieurs appétits de risque sans modifier le code</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Injecter Super Contexte dans la suggestion</td>
|
||
<td>Laisser GPT-4o repartir de zéro</td>
|
||
<td>Le SC contient des mois d'apprentissage validé ; en partir sans le contexte serait un gaspillage</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Exclure les P&L du prompt de scoring</td>
|
||
<td>Donner à GPT-4o les performances passées pour scorer</td>
|
||
<td>Évite le biais d'ancrage et la circularité (un pattern qui a
|
||
bien scoré dans le passé ne mérite pas nécessairement un bon score
|
||
aujourd'hui)</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Cleanup des cycles "running" au démarrage</td>
|
||
<td>Laisser l'état incohérent</td>
|
||
<td>Un kill du processus laisse la DB en état "running" pour toujours ; le cleanup au startup garantit la cohérence</td>
|
||
</tr>
|
||
</tbody></table>
|
||
|
||
<hr>
|
||
|
||
<div class="callout blue">
|
||
<div class="label">En résumé</div>
|
||
Le système applique un principe de <strong>séparation claire entre signal et bruit</strong>
|
||
: l'IA reçoit ce qui lui permet de raisonner (contexte actuel + mémoire
|
||
validée), pas ce qui peut la biaiser (performances récentes non
|
||
matures, historique de scores bruts). Les règles quantitatives (Jaccard,
|
||
maturité, EV, gate 6h) protègent la qualité des outputs IA en amont et
|
||
en aval de chaque appel.
|
||
</div>
|
||
|
||
<p style="margin-top:40px; font-size:9pt; color:#94a3b8; text-align:center;">
|
||
GeoOptions Intelligence v2.0 · Document généré le 17 juin 2026 · FastAPI + React + SQLite + GPT-4o
|
||
</p>
|
||
|
||
|
||
|
||
</body></html> |