France 10Y Government Bond Yield — Daily CSV Download

ECB Dataset · Interest Rates

France 10-Year Government Bond Yield — OAT (1993–2026)

The OAT — the second largest sovereign bond market in the euro area. The OAT-Bund spread, historically stable at 30–50 bps, widened sharply in 2024 amid French fiscal and political uncertainty, creating a new fragmentation risk for the euro area.

Source
ECB / Banque de France
Frequency
Monthly
Coverage
1993–Present
Unit
% per annum

France as a new fragmentation risk

For most of the euro era, France was considered a near-core sovereign — the OAT-Bund spread rarely exceeded 80 bps outside of acute crises. This changed in 2024 when political instability (snap elections, coalition fragmentation) and fiscal concerns (deficit above 5% of GDP, debt approaching 115% of GDP) pushed the spread to levels not seen since the 2012 sovereign crisis.

France’s fiscal trajectory is the key variable: unlike Germany (constitutional debt brake) or Spain (improving fiscal balance), France faces structural deficits driven by pension commitments, defense spending, and political constraints on austerity. A sustained spread above 80 bps signals that markets are re-pricing France from ‘quasi-core’ to ‘semi-periphery’ — a significant shift in the euro area’s credit landscape.

Implications for ECB policy

French spread widening complicates ECB policy because France is too large to rescue through the TPI (Transmission Protection Instrument) without moral hazard concerns, yet too important to let fail. The OAT-Bund spread is now arguably as policy-relevant as the BTP-Bund spread — a development that would have been unthinkable five years ago.

CSV Data Dictionary

ColumnTypeDescription
dateYYYY-MM-DDFirst day of the reference month
oat_10y_yieldfloatFrench 10-year government bond yield (% per annum, convergence criterion)

Python Code Example

import pandas as pd
from io import StringIO
import requests

url = "https://data-api.ecb.europa.eu/service/data/IRS/M.FR.L.L40.CI.0000.EUR.N.Z"
resp = requests.get(url, params={"format": "csvdata"})
raw = pd.read_csv(StringIO(resp.text))

df = raw[["TIME_PERIOD", "OBS_VALUE"]].copy()
df.columns = ["date", "oat_10y_yield"]
df["date"] = pd.to_datetime(df["date"] + "-01")
df = df.sort_values("date").set_index("date")

df.plot(title="France 10Y OAT Yield", figsize=(12, 5))

Source & Methodology

Source: ECB / Banque de France — Long-term convergence criterion interest rate

Series key: IRS/M.FR.L.L40.CI.0000.EUR.N.Z

License: ECB open data — free reuse with attribution.

Cite This Dataset