mirror of
https://github.com/caty21/forex-dashboard.git
synced 2026-07-27 20:37:45 +00:00
feat: Atlanta Fed MPT (options SOFR) + libellé méthodologie Réunions USD
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>
This commit is contained in:
@@ -6,6 +6,7 @@ export const dynamic = "force-dynamic";
|
||||
import cpiOverridesRaw from "@/data/cpi_overrides.json";
|
||||
import rateDecisionsRaw from "@/data/rate_decisions.json";
|
||||
import moneySupplyM3Raw from "@/data/money-supply-m3.json";
|
||||
import { getAtlantaFedMpt } from "@/lib/atlantaFedMpt";
|
||||
import { fetchFFThisWeek, fetchFFEvents } from "@/lib/forexfactory";
|
||||
import type { FFEvent } from "@/lib/forexfactory";
|
||||
import { fetchTECoreInflation, fetchTEMoMInflation, fetchTEInflationYoY, fetchTECoreCPIMoM, fetchTECoreConsumerPricesIndex, fetchTEPPIMoM, fetchTECoreInflationPages, fetchTEInflationYoYPages, fetchTEAUDCommodityYoY, fetchTEGDPGrowthRate, fetchTEUnemploymentRate, fetchTESTIRRate, fetchTEEmploymentChange } from "@/lib/tecpi";
|
||||
@@ -1426,6 +1427,7 @@ export async function GET(req: NextRequest) {
|
||||
const data = {
|
||||
currency, indicators,
|
||||
moneySupplyM3: getMoneySupplyM3(currency),
|
||||
atlantaFedMpt: currency === "USD" ? getAtlantaFedMpt() : null,
|
||||
forecasts: {
|
||||
// CPI — TE calendar forecast (priorité) puis ForexFactory
|
||||
cpi: parseTeF(teCpiForecast?.cpiYoY) ?? ffForecasts.cpi ?? null,
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@ export default function Dashboard() {
|
||||
const [globalMacroSlide, setGlobalMacroSlide] = useState<"mon"|"infl"|"cro"|"empl">("mon");
|
||||
const [globalCardTab, setGlobalCardTab] = useState<"overview"|"mispricing"|"focus">("overview");
|
||||
const [globalSignauxSlide, setGlobalSignauxSlide] = useState<"ois"|"cot"|"sent">("ois");
|
||||
const [globalOisChartTab, setGlobalOisChartTab] = useState<"curve"|"probas"|"meetings">("curve");
|
||||
const [globalOisChartTab, setGlobalOisChartTab] = useState<"curve"|"probas"|"meetings"|"atlanta">("curve");
|
||||
const [macroSyncEnabled, setMacroSyncEnabled] = useState(false);
|
||||
|
||||
// ── Sentiment multi-paires Myfxbook → {CCY: {longPct, shortPct, pair}} ──────
|
||||
|
||||
Reference in New Issue
Block a user