France Germany 10Y Spread — Daily CSV Download

ECB Dataset · Credit & Spreads

France–Germany 10Y Sovereign Spread — OAT-Bund (1993–2026)

The spread between French and German 10-year government bond yields. Historically stable at 30–50 bps, it widened sharply in 2024 amid French fiscal and political uncertainty — signaling a potential structural repricing of French sovereign risk within the euro area.

Source
Eco3min composite
Frequency
Monthly
Coverage
1993–Present
Unit
Percentage points

France — from quasi-core to semi-periphery?

For most of the euro era, France was priced as a near-core sovereign — the OAT-Bund spread averaged 30–50 bps and rarely exceeded 80 bps outside of acute crisis episodes. This reflected France’s status as the second-largest euro area economy with a credible fiscal framework and stable political system.

The 2024 widening marked a regime shift: snap elections, coalition fragmentation, a deficit above 5% of GDP, and debt approaching 115% of GDP converged to push the spread above 80 bps — levels last seen during the 2012 sovereign crisis. Unlike Italy (where spreads reflect a decades-long structural risk premium), the French widening represents a deterioration from a previously stable baseline.

Systemic implications

France is fundamentally different from Italy for the ECB: it is too large (~20% of euro area GDP) for the TPI to credibly backstop, yet its fiscal trajectory creates genuine market concern. A sustained OAT-Bund spread above 80 bps would increase borrowing costs for French banks, corporates, and the sovereign, potentially creating a negative feedback loop. This dataset tracks whether the 2024 widening proves transient or structural.

CSV Data Dictionary

ColumnTypeDescription
dateYYYY-MM-DDFirst day of the reference month
spread_fr_defloatFrance 10Y yield minus Germany 10Y yield (percentage points)
oat_10y_yieldfloatFrench 10Y yield (%)
bund_10y_yieldfloatGerman 10Y yield (%)

Python Code Example

import pandas as pd

# From Eco3min pre-cleaned CSV (composite dataset)
df = pd.read_csv("https://eco3min.fr/dataset/ecb/ecb-france-germany-spread.csv")
df["date"] = pd.to_datetime(df["date"])
df = df.set_index("date")

df["spread_fr_de"].plot(title="OAT-Bund 10Y Spread", figsize=(12, 5))

Source & Methodology

Source: Eco3min composite — ECB/IRS France minus Germany convergence rates

Series key: Composite: IRS/M.FR − IRS/M.DE

License: ECB open data — free reuse with attribution.

Cite This Dataset