Italy-Germany 10Y Sovereign Spread: Monthly BTP-Bund Data Since 1991

ECB Dataset · Credit & Spreads

The most tracked fragmentation indicator in the euro area — the spread between Italian and German 10-year government bond yields. Widened to 550+ bps during the 2011 sovereign crisis, currently approximately 100–120 bps. Inversely correlated with ECB credibility and euro area cohesion.

Source
Eco3min composite
Frequency
Monthly
Coverage
1991–Present
Unit
Percentage points
Loading data…

The fragmentation barometer

The BTP-Bund spread compresses the market’s real-time assessment of Italian sovereign risk into a single number. It captures credit risk (Italy’s ~140% debt-to-GDP), political risk (coalition instability, policy uncertainty), ECB credibility (willingness and ability to backstop), and liquidity conditions (risk-on vs risk-off flows within the euro area). A complementary angle: The Italy-Germany yield gap.

Three regimes are visible in the data: pre-euro convergence (1991–1998, spread collapsed from nearly 700 bps in October 1992 to under 30 as Italy qualified for EMU), the ‘great compression’ (1999–2008, spreads near zero as markets priced no redenomination risk), and the post-crisis fragmentation era (2009–present, where the spread has fluctuated between 100 and 550 bps).

Critical thresholds

Market practitioners watch several levels: below 150 bps is considered ‘manageable,’ 200–300 bps signals stress requiring monitoring, and above 400 bps historically triggered ECB emergency interventions (SMP in 2011, OMT announcement in 2012, TPI creation in 2022). The current level (~100–120 bps) is well within the comfort zone but above the pre-2008 norm of near-zero. Based on the ECB Data Portal series for Italy 10-Year Government Bond Yield.

CSV Data Dictionary

ColumnTypeDescription
dateYYYY-MM-DDFirst day of the reference month
spread_it_defloatItaly 10Y yield minus Germany 10Y yield (percentage points)
btp_10y_yieldfloatItalian 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-italy-germany-spread.csv")
df["date"] = pd.to_datetime(df["date"])
df = df.set_index("date")

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

Source & Methodology

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

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

License: ECB open data — free reuse with attribution.

Cite This Dataset

Last updated — 21 September 2026

Disclaimer – Financial Information: The analyses, commentary, and content published on eco3min.fr are provided for informational and educational purposes only. They do not constitute investment advice or a solicitation to buy or sell financial instruments. Past performance is not indicative of future results. All investment decisions involve risk and are the sole responsibility of the reader.

Source terms. This series is produced by the European Central Bank (ECB Data Portal) and redistributed here under the ECB's copyright terms: free use provided the ECB is cited as the source, the data are reproduced accurately, and any modification (such as a spread or a real rate computed by Eco3min) is stated explicitly. Eco3min cannot sub-license it under Creative Commons: anyone reusing this file remains bound by the ECB terms, not by CC BY. Full terms.