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.
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
| Column | Type | Description |
|---|---|---|
| date | YYYY-MM-DD | First day of the reference month |
| spread_it_de | float | Italy 10Y yield minus Germany 10Y yield (percentage points) |
| btp_10y_yield | float | Italian 10Y yield (%) |
| bund_10y_yield | float | German 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))Related ECB Datasets
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.
