- Retire l'onglet Atlanta Fed MPT (USD) : jugé sans valeur ajoutée réelle.
- EUR/GBP n'avaient qu'un unique point synthétique (agrégat year-end
InvestingLive) gonflé en fausses réunions plates à 0% sur Courbe/
Probabilités/Réunions — d'où l'aspect cassé. Investing.com n'a de Rate
Monitor pré-calculé (comme pour la Fed) ni pour la BCE ni pour la BoE
(404 confirmé), donc pas d'équivalent direct au pipeline USD.
- Remplace ce point unique par un vrai scrape des futures Euribor 3M
(Eurex) et Three-Month SONIA (ICE), cotés sur investing.com (delayed,
gratuit, pas de login) : conversion prix→taux (100−prix), mapping sur
le calendrier réel BCE/BoE (échéance la plus proche ≥ date de réunion,
fenêtre de grâce de 60j au-delà du dernier contrat coté, sinon on
s'arrête plutôt que d'inventer), probabilité approximée avec la
convention bps/25 déjà utilisée pour le fallback InvestingLive.
- Résolution plus grossière que l'USD (mensuelle EUR, trimestrielle GBP)
et clairement étiquetée comme telle dans un footnote dédié.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Nouvel onglet principal "Scénario", logique inversée par rapport aux autres
onglets Taux : au lieu de déduire une probabilité depuis les prix de marché,
l'utilisateur choisit lui-même un scénario de hikes/cuts à chaque réunion FOMC
et l'outil déduit où devrait se situer le SOFR implicite si ce scénario se
réalisait — exactement la logique de CME SOFRWatch.
Méthodologie (2 spreads, comme SOFRWatch) :
SOFR implicite ≈ borne basse Fed + (EFFR − borne basse) + (SOFR − EFFR)
CME calcule ces spreads depuis les prix forward des futures SOFR 1 mois vs Fed
Funds (SR1−ZQ, données de marché propriétaires). On les approxime avec la
moyenne réalisée historique EFFR/SOFR (FRED, gratuit) — limite clairement
documentée dans l'UI et le code, ce n'est pas un prix forward-looking.
- app/api/scenario-spreads/route.ts : calcule les 2 spreads depuis FRED
(EFFR, SOFR, fenêtre ~60j) + la fourchette Fed actuelle (rate_decisions.json).
- components/ScenarioTab.tsx : constructeur de scénario par réunion FOMC
(réutilise les dates déjà maintenues dans rate-probabilities.json), chart
comparatif "Votre scénario" vs "Marché (OIS)" sur l'échelle SOFR.
Vérifié en direct : les spreads calculés (EFFR +13bps, SOFR-EFFR -1bps)
donnent un SOFR implicite actuel de 3.62%, qui correspond exactement au SOFR
réel du jour — et les clics sur le constructeur de scénario cumulent
correctement (step-line vérifié visuellement sur 2 hikes successifs).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Nouveau sous-onglet "Atlanta Fed" dans le bloc OIS de la card USD, méthodologie
alternative aux 30-day Fed Fund Futures demandée : distribution du niveau de
taux Fed déduite des options sur futures SOFR 3 mois (CME), publiée
quotidiennement par la Fed d'Atlanta (Market Probability Tracker). Affiche
Cut/Hold/Hike, la fourchette de taux SOFR implicite (25e-75e percentile), et
la distribution complète par fourchette de 25bps pour la fenêtre trimestrielle
la plus proche.
- .github/scripts/fetch-atlanta-mpt.mjs : télécharge et parse mpt_histdata.xlsx
(Atlanta Fed) avec un lecteur ZIP/OOXML maison — le paquet npm "xlsx" a des
CVE critiques non patchées sur le registre public (SheetJS a arrêté d'y
publier), donc pas de dépendance ajoutée pour ça.
- .github/workflows/fetch-atlanta-mpt.yml : quotidien (donnée mise à jour 1x/jour
par l'Atlanta Fed), + déclenchement manuel.
- lib/atlantaFedMpt.ts + app/api/macro/route.ts : expose la donnée (USD only)
via l'API macro existante.
Sous-onglet "Réunions" (USD) : ajout du libellé de méthodologie demandé —
"Probabilités = somme des % associés à chaque fourchette au-dessus/en-dessous
de la fourchette actuelle · Investing.com Fed Rate Monitor, calculées à partir
des 30-day Fed Fund Futures (CME)".
Vérifié en direct : les deux sous-onglets s'affichent et les chiffres
correspondent aux données brutes (72.4% hike / 1.1% cut / distribution
27.2-45.7-21.4-5.7% pour la fenêtre Sep 2026).
Note en marge (hors scope, découverte pendant les tests) : /api/expectations
prend ~24s à répondre, ce qui bloque l'affichage complet du dashboard
(Promise.allSettled attend les 8 fetches). À investiguer séparément.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Le premier crop gardait le carre creme complet + marge transparente autour :
le globe ne remplissait qu'environ 49% de la largeur totale, illisible en
taille onglet (16x16). Recadre desormais sur le bounding box du carre creme
lui-meme (mesure par scan de pixels), ce qui grossit le globe tout en
preservant les coins arrondis de la carte (un premier essai trop serre sur
le globe seul les avait coupes).
Header (app/page.tsx) : remplace l'icone Activity (lucide) generique par le
vrai favicon (/icon.png), agrandi et aligne verticalement avec le titre.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Central bank governance (nouvel onglet Banques centrales) :
- lib/centralBankGovernance.ts + app/api/central-bank-sources : scraping live du
vote de la derniere reunion, dot plot Fed (SEP), et desormais les previsions
macro (PIB + inflation) publiees par chaque BC elle-meme (Fed SEP, Eurosystem
staff projections, BoJ Outlook Report PDF, SNB conditional forecast, BoC MPR,
RBA SMP). GBP/NZD laisses honnetement vides quand aucune source chiffree
fiable n'est accessible (RBNZ bloque par Cloudflare).
- components/CentralBankSourcesTab.tsx : nouvel onglet avec cards par banque.
Taux directeurs + Money Supply M3 :
- data/rate_decisions.json corrige (JPY, EUR, NZD etc. etaient perimes d'1-2
decisions) et desormais auto-maintenu : .github/workflows/update-rate-decisions.yml
(horaire) detecte les changements de taux via Trading Economics et fait
glisser current -> prev sans perte de donnee.
- data/money-supply-m3.json (nouveau) + .github/workflows/fetch-money-supply.yml
(hebdo) : M3 par devise (proxy M2 pour l'USD, la Fed ne publiant plus M3
depuis 2006), affiche dans CurrencyCard.
Calendrier economique elargi :
- lib/calendar-countries.ts, lib/calendar-taxonomy.ts, lib/fxstreetCalendar.ts :
couverture pays elargie + classification des evenements + source FXStreet.
Fix InvestingLive :
- lib/investinglive.ts : l'ancienne API WordPress (wp-json) renvoyait 404 depuis
leur migration Nuxt.js -> reecrit vers api.investinglive.com/api/homepage/articles,
+ fix crash silencieux (Tldr pas toujours un tableau).
Divers :
- .vercel/ ajoute au .gitignore (ne doit jamais etre commite, cf. son propre README).
- scripts/ (lancement PWA, push env Vercel), captures d'ecran, cache InvestingLive.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
When sync is active, clicking any tab/indicator on any card propagates
to all other cards (overview/mispricing/focus + ois/cot/sent + mon/infl/cro/empl).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Calendar — "Semaine dernière" tab:
- API now fetches from last Monday (instead of today) and tags events as "prev"
- New tab in CalendarTab with last week's published events (actual values visible)
- fromDate filter bypassed for prev tab; week banner styled in slate
Dashboard — fullscreen:
- Maximize2/Minimize2 button in header using Fullscreen API
- Listens to fullscreenchange to sync icon state
Report — AI "Faits marquants":
- New report_highlights mode in /api/narrative: reads published events from
prev+current week + drivers, generates 3 structured highlights via Groq
- AiHighlightsButton next to "Faits marquants de la semaine" label
- Parses AI response (-- delimited) into title+body Theme objects
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ajout des onglets COT, Weekly Report, TvChart. Refonte Sentiment, News,
Calendar, Drivers. Nouvelles API cot-history et fx-weekly. Intégration FinancialJuice.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Client — lib/localCache.ts (nouveau) :
- saveCache / loadCache : wrapper localStorage préfixé "forex_v1_"
- formatCacheDate : affiche l'âge du cache (< 1h, 2h, 3j…)
Client — CurrencyCard.tsx :
- Sauvegarde chaque réponse macro réussie dans localStorage (clé macro_{currency})
- Si l'API échoue → charge la dernière valeur connue depuis localStorage
- Badge 🗄 "cache Xh" visible dans le header de la carte quand données stale
Client — page.tsx :
- Même logique pour drivers, expectations, yields
- Badge cache affiché dans le header à côté de l'heure
- Footer : Bytez → Groq
Serveur — macro/route.ts :
- stale-if-error : si tous les indicateurs reviennent null (panne API)
et qu'un cache serveur précédent existe → le renvoie avec stale:true
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>