caty21 465a81a27c feat: RBNZ — automatise la découverte + lecture du Monetary Policy Statement
rbnz.govt.nz bloque bien ses pages génériques (index, listing) derrière un
challenge Cloudflare, comme déjà documenté — mais vérifié en direct que
sitemap.xml, les pages de contenu individuelles qu'il référence, et les PDF
sous /-/media/ répondent normalement (200, sans challenge). C'est exactement
ce qu'indexerait un moteur de recherche : aucun contournement, juste des
ressources publiques non protégées.

.github/scripts/fetch-rbnz-mps.mjs :
  1. Lit sitemap.xml pour trouver la dernière page MPS ("...-filtered-listing-
     page/{year}/{month}-{id}/monetary-policy-statement-{month}-{year}")
  2. En extrait le lien du PDF officiel
  3. Parse le PDF (pdf-parse, déjà utilisé pour BoJ) et extrait la Table 6.5
     "Summary of economic projections" (CPI, OCR moyenne annuelle, GDP par
     année "March year")
Note technique : le fetch() natif de Node (undici) se prend un 403 sur ces
mêmes URLs alors que curl passe (200, vérifié à la seconde près, même
User-Agent) — Cloudflare fingerprinte la pile TLS/HTTP2 du client, pas
seulement l'en-tête. Le script shell out donc vers curl (préinstallé sur les
runners GitHub Actions).

.github/workflows/fetch-rbnz-mps.yml : quotidien (le MPS n'est publié
qu'~4x/an mais découverte + parsing sont légers), + déclenchement manuel.

lib/centralBankGovernance.ts : fetchRbnzGovernance() expose désormais un vrai
reportPdfUrl/statementUrl (au lieu de null) et un CBForecast — la 8e et
dernière banque centrale de l'onglet Banques centrales à avoir ses
prévisions, malgré le blocage du reste du site RBNZ.

Vérifié en direct : PIB/inflation 2026-2029 extraits correctement (+0.7 à
+3.4% PIB, +3.1 à +2.0% inflation), card RBNZ affiche le bloc "Prévisions"
et un vrai bouton "Rapport PDF" fonctionnel.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-08 23:46:31 +02:00
2026-05-27 13:18:45 +02:00
2026-05-27 13:18:45 +02:00
2026-06-01 23:25:49 +02:00
2026-05-27 13:18:45 +02:00
2026-05-27 13:18:45 +02:00
2026-05-27 13:18:45 +02:00
2026-06-02 17:52:36 +02:00
2026-06-02 20:51:20 +02:00

Forex Macro Dashboard — v8.0

Tableau de bord macroéconomique pour 8 devises majeures (USD, EUR, GBP, JPY, CHF, CAD, AUD, NZD).

Installation

1. Installer Node.js

Télécharger Node.js LTS sur nodejs.org (inclut npm).

2. Installer les dépendances

cd forex-dashboard
npm install

3. Configurer les clés API

Le fichier .env.local est déjà créé avec tes clés FRED et Bytez. Ajouter ta clé OANDA quand disponible :

OANDA_API_KEY=ta_clé_oanda_ici

Clé FRED gratuite : fred.stlouisfed.org → My Account → API Keys
Compte OANDA gratuit : oanda.com → demo → API Access → Generate token

4. Lancer en local

npm run dev

Ouvrir http://localhost:3000

Données rate expectations (banques centrales non-USD)

pip install requests beautifulsoup4
python scripts/investinglive_scraper.py --n 1 --output json --save data/rate_expectations.json

Un snapshot de démonstration (mai 2026) est inclus dans data/rate_expectations.json.

Structure

forex-dashboard/
├── app/
│   ├── page.tsx                    ← dashboard principal
│   ├── layout.tsx
│   ├── globals.css
│   └── api/
│       ├── fred/route.ts           ← proxy FRED (cache 1h)
│       ├── fx/route.ts             ← Frankfurter ECB (taux spot)
│       ├── cot/route.ts            ← CFTC COT parser
│       ├── sentiment/route.ts      ← OANDA retail sentiment
│       ├── expectations/route.ts   ← rate_expectations.json
│       ├── narrative/route.ts      ← Bytez LLM (Llama 3.1)
│       ├── yields/route.ts         ← obligations 10Y (FRED, ECB, BoE, BoC)
│       └── drivers/route.ts        ← Gold, Brent, VIX, HY/IG spreads
├── components/
│   ├── CurrencyCard.tsx            ← card par devise
│   ├── DriversBar.tsx              ← barre globale des drivers
│   └── NarrativeButton.tsx         ← bouton analyse IA Bytez
├── lib/
│   ├── types.ts                    ← types TypeScript
│   ├── constants.ts                ← séries FRED corrigées, COT codes
│   └── scoring.ts                  ← algorithme §4 + §6 (divergences)
├── scripts/
│   └── investinglive_scraper.py    ← scraper rate expectations
├── data/
│   └── rate_expectations.json      ← snapshot mensuel BC
└── .env.local                      ← clés API (gitignored)

Sources de données intégrées

Catégorie Source Clé
Taux directeurs, CPI, PIB, Retail Sales, Emploi FRED oui
FX Spot Frankfurter (ECB) non
Obligations 10Y USD FRED DGS10 oui
Obligations 10Y EUR ECB Data Portal non
Obligations 10Y GBP BoE API IUDMNPY non
Obligations 10Y CAD BoC API non
COT Positionnement CFTC CSV public non
Sentiment retail OANDA v20 API oui (OANDA)
Rate expectations BC investinglive.com scraper non
Analyse narrative Bytez (Llama 3.1) oui (Bytez)

Déploiement Vercel

git init && git add . && git commit -m "init forex dashboard"
# Créer repo privé sur github.com puis :
git remote add origin https://github.com/TONUSER/forex-dashboard.git
git push -u origin main

Sur vercel.com : New Project → importer le repo → Settings → Environment Variables → copier les variables de .env.local.

Note : le scraper Python ne tourne pas sur Vercel. Lancer localement puis committer data/rate_expectations.json.

S
Description
No description provided
Readme 77 MiB
Languages
TypeScript 91.7%
JavaScript 6.4%
Python 1.5%
VBScript 0.3%