ECB Dataset · Liquidity & Monetary Policy

Euro Area M3 Growth Rate — YoY (1981–2026)

The annual growth rate of M3 — the rate at which the euro area money supply is expanding or contracting. Contracted for the first time in euro era history in 2023. Now recovering at approximately 3.3%.

Source
ECB
Frequency
Monthly
Coverage
1981–Present
Unit
% YoY

Money supply growth and inflation

M3 growth is computed from an index of notional stocks (adjusted for reclassifications and other non-transaction changes) to isolate genuine money creation from statistical artifacts. This makes it a cleaner signal than raw stock changes, which can be distorted by bank mergers, regulatory reclassifications, and other non-monetary events.

The historical pattern is striking: M3 growth averaged ~8% in the 1980s, ~5% in the 2000s, and collapsed to near-zero during the 2012 sovereign crisis. The 2020–2021 spike to 12%+ was unprecedented and is now widely considered a leading indicator of the 2022 inflation surge. The subsequent contraction to −1% in late 2023 was equally unprecedented and signaled aggressive monetary tightening transmission.

Current reading and implications

M3 growth has recovered to ~3.3% as of early 2026, driven by recovering bank lending and stabilizing deposit flows. This is broadly consistent with the ECB’s implicit comfort zone and supports the view that inflationary pressures are normalizing — though the relationship between M3 and inflation has weakened in the short-run due to velocity shifts.

CSV Data Dictionary

ColumnTypeDescription
dateYYYY-MM-DDFirst day of the reference month
m3_growth_yoyfloatM3 annual growth rate (%, index of notional stocks, seasonally adjusted)

Python Code Example

import pandas as pd
from io import StringIO
import requests

url = "https://data-api.ecb.europa.eu/service/data/BSI/M.U2.Y.V.M30.X.I.U2.2300.Z01.A"
resp = requests.get(url, params={"format": "csvdata"})
raw = pd.read_csv(StringIO(resp.text))

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

df.plot(title="Euro Area M3 Growth Rate YoY", figsize=(12, 5))

Source & Methodology

Source: ECB — Monetary Statistics (BSI)

Series key: BSI/M.U2.Y.V.M30.X.I.U2.2300.Z01.A

License: ECB open data — free reuse with attribution.

Cite This Dataset