feat(COT/Idees): redesign COT chart + NC group + editeur riche IdeesTab

COT :
- Ajoute groupe NC (Non-Commercial Legacy) via Socrata API CFTC
- Graphique bidirectionnel (barres avec gradient, zéro centré, track complet)
- Barre L/S split sous chaque groupe, valeur nette + %L empilés
- Corrige verdict bug : amDominates vérifié avant hfIsShort
- Supprime 'k contrats', ajoute légende ΔL/ΔS/ΔNet

IdeesTab :
- Réécriture NotePane : contentEditable Notion-like avec images inline
- Toolbar riche : gras, italique, souligné, listes, alignement
- Redimensionnement image inline (25/40/60/80/100%)
- Archives : affichage complet screenshot + texte, restauration vers slot actif

Sentiment DXM :
- Affichage brut paire par paire (Myfxbook) pour vérification directe
- SentimentPair type + pairs[] dans SentimentEntry

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
caty21
2026-06-29 23:33:00 +02:00
co-authored by Claude Sonnet 4.6
parent 333ce5947a
commit 48d3b9c473
5 changed files with 766 additions and 352 deletions
+35 -18
View File
@@ -143,36 +143,53 @@ export interface FXRates {
timestamp: number;
}
export interface SentimentPair {
name: string; // ex: "EURUSD"
longPct: number; // % retail long SUR LA PAIRE (pas la devise)
shortPct: number;
longIsBaseLong: boolean; // si true, long paire = long devise affichée
}
export interface SentimentEntry {
longPct: number;
longPct: number; // agrégé pondéré (gardé pour les signaux existants)
shortPct: number;
pair: string;
pairs: SentimentPair[]; // données brutes paire par paire
}
export type MacroSection = "all" | "inflation" | "pmi" | "employment" | "gdp" | "policy";
export interface CotEntry {
// HF — Leveraged Money (spéculation directionnelle, hedge funds / CTAs)
net: number; // longs - shorts
hfLongs: number; // contrats long bruts
hfShorts: number; // contrats short bruts
longPct: number; // % longs / total HF
shortPct: number; // % shorts / total HF
totalLev: number; // total contrats HF
// AM — Asset Manager (hedging institutionnel, fonds pension / souverains)
amNet: number;
amLongs: number;
amShorts: number;
amLongPct: number; // % longs / total AM
amTotal: number;
// HF — Leveraged Money (hedge funds / CTAs — spéculation directionnelle)
net: number; // longs - shorts
hfLongs: number; // contrats long bruts
hfShorts: number; // contrats short bruts
longPct: number; // % longs / total HF
shortPct: number; // % shorts / total HF
totalLev: number; // total contrats HF
// AM — Asset Manager (fonds pension / souverains — hedging institutionnel)
amNet: number;
amLongs: number;
amShorts: number;
amLongPct: number; // % longs / total AM
amTotal: number;
// NC — Non-Commercial Legacy (grands spéculateurs — rapport COT classique CFTC)
ncNet: number;
ncLongs: number;
ncShorts: number;
ncLongPct: number; // % longs / total NC
ncTotal: number;
// Δ semaine précédente (null si pas de données J-7)
netDelta: number | null; // Δ net HF
longsDelta: number | null; // Δ longs HF (+= ajout de longs)
shortsDelta: number | null; // Δ shorts HF (+= ajout de shorts)
longsDelta: number | null; // Δ longs HF
shortsDelta: number | null; // Δ shorts HF
amNetDelta: number | null; // Δ net AM
amLongsDelta: number | null; // Δ longs AM
amShortsDelta: number | null; // Δ shorts AM
ncNetDelta: number | null; // Δ net NC
ncLongsDelta: number | null; // Δ longs NC
ncShortsDelta: number | null; // Δ shorts NC
// Métadonnées
weekDate: string;
prevWeekDate: string | null;
weekDate: string;
prevWeekDate: string | null;
}