2026-05-27 13:18:45 +02:00
|
|
|
import { NextResponse } from "next/server";
|
2026-06-01 23:16:18 +02:00
|
|
|
import { fetchTEBondYields } from "@/lib/tebonds";
|
2026-05-27 13:18:45 +02:00
|
|
|
|
2026-06-01 23:16:18 +02:00
|
|
|
// 10Y sovereign yields — source unique : tradingeconomics.com/bonds (HTML statique)
|
|
|
|
|
// Remplace les sources précédentes (FRED DGS10 + IRLTLT01XXM156N mensuel + ECB/BoE APIs)
|
|
|
|
|
// qui avaient des décalages allant de 1 jour (FRED daily) à 1 mois (FRED monthly JPY/CHF/AUD/NZD).
|
|
|
|
|
// TE bonds = données du jour pour les 8 devises, cache 1h.
|
2026-05-27 13:18:45 +02:00
|
|
|
|
|
|
|
|
export async function GET() {
|
2026-06-01 23:16:18 +02:00
|
|
|
const bondData = await fetchTEBondYields();
|
2026-05-27 13:18:45 +02:00
|
|
|
|
2026-06-01 23:16:18 +02:00
|
|
|
const yields: Record<string, number | null> = {
|
|
|
|
|
USD: bondData.USD?.yield10y ?? null,
|
|
|
|
|
EUR: bondData.EUR?.yield10y ?? null,
|
|
|
|
|
GBP: bondData.GBP?.yield10y ?? null,
|
|
|
|
|
JPY: bondData.JPY?.yield10y ?? null,
|
|
|
|
|
CHF: bondData.CHF?.yield10y ?? null,
|
|
|
|
|
CAD: bondData.CAD?.yield10y ?? null,
|
|
|
|
|
AUD: bondData.AUD?.yield10y ?? null,
|
|
|
|
|
NZD: bondData.NZD?.yield10y ?? null,
|
|
|
|
|
};
|
2026-05-27 13:18:45 +02:00
|
|
|
|
2026-06-01 23:16:18 +02:00
|
|
|
const dayDeltas: Record<string, number | null> = {
|
|
|
|
|
USD: bondData.USD?.dayDelta ?? null,
|
|
|
|
|
EUR: bondData.EUR?.dayDelta ?? null,
|
|
|
|
|
GBP: bondData.GBP?.dayDelta ?? null,
|
|
|
|
|
JPY: bondData.JPY?.dayDelta ?? null,
|
|
|
|
|
CHF: bondData.CHF?.dayDelta ?? null,
|
|
|
|
|
CAD: bondData.CAD?.dayDelta ?? null,
|
|
|
|
|
AUD: bondData.AUD?.dayDelta ?? null,
|
|
|
|
|
NZD: bondData.NZD?.dayDelta ?? null,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Spread vs USD (bps)
|
|
|
|
|
const usd = yields.USD;
|
2026-05-27 13:18:45 +02:00
|
|
|
const spreads: Record<string, number | null> = {};
|
|
|
|
|
for (const [ccy, yld] of Object.entries(yields)) {
|
|
|
|
|
if (ccy === "USD" || yld === null || usd === null) {
|
|
|
|
|
spreads[ccy] = null;
|
|
|
|
|
} else {
|
2026-06-01 23:16:18 +02:00
|
|
|
spreads[ccy] = Math.round((yld - usd) * 100);
|
2026-05-27 13:18:45 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-06-01 23:16:18 +02:00
|
|
|
return NextResponse.json({ yields, spreads, dayDeltas, timestamp: Date.now() });
|
2026-05-27 13:18:45 +02:00
|
|
|
}
|