Leitwerk traces how one European Central Bank rate decision ripples through the euro-area economy — policy rates, bank lending, money and credit, inflation, and finally markets — pulling data straight from the ECB's official statistical API into a single, synchronised view.
It is a full-stack, data-engineering project. A Python pipeline fetches and parses eight datasets over SDMX — the statistical-data standard behind the ECB, Eurostat, the IMF and the BIS — and caches them in SQLite; a Rust web app (Leptos + Axum) reads that cache and renders every chart as hand-written SVG, with no charting library and no API keys. Hover any panel and a crosshair reads all seven at the same instant. It runs end-to-end from a single command.
Rust
Leptos
Axum
Python
SDMX / ECB data
SQLite
Hand-written SVG
Server-rendered
Why I built this
I wanted to build something around a specific question a central-bank analyst would actually ask, rather than another page of charts. Monetary policy works with long and variable lags. For instance, the ECB moves a rate and only months later does it surface in what banks charge, in money and credit, and eventually in inflation. That chain is usually described in prose or scattered across separate data releases, so I wanted to put the whole thing on one synchronised timeline and trace a single decision as it propagates: the policy rate, bank pass-through, money and credit, prices, and finally the market signals investors watch. So ultimately it relates back to my own interests in financial research and investment strategies. Everything is pulled straight from the ECB's own statistical API over SDMX, which is the same standard the ECB, Eurostat, and the Bundesbank actually use. Building it meant working with real data infrastructure rather than a tidied-up copy. Wiring the panels together and watching a hike ripple down the chain, lag by lag, made the transmission mechanism concrete for me in a way that a static textbook diagram usually doesn't.
State of transmission
Deposit facility rate
2.25%
tightening
Real policy rate
+0.35 pp
restrictive
HICP inflation
1.9%
near 2% target
Yield curve (10y-2y)
+0.53 pp
positive slope
Bank lending margin
+1.61 pp
NFC loan - deposit
How to read this. Each panel is a link in the monetary transmission chain: a rate change in Panel A propagates, with lags, through bank pricing (B), money and credit (C), and finally prices (D), while Panels E-G track the market signals investors watch (real rates, the yield curve, and asset prices). Hover any panel for a synchronised readout across every panel; faint verticals mark ECB rate decisions; click a legend entry to isolate a series.
The ECB's policy path. Since 2022 the deposit facility rate is the effective floor steering money-market rates (EURIBOR).
Panel B · Bank pass-through
MFI interest rates, new business
Pass-through: how fast bank lending and deposit rates track policy. Slow or partial pass-through means looser conditions than the headline rate implies.
Panel C · Credit and money
Monetary aggregates and credit, annual growth
The quantity channel. A sharp slowdown — or the 2023 M1 contraction — shows tightening biting before it reaches prices.
Panel D · Prices
HICP inflation, annual rate
The objective: HICP back to 2%. The lag from a rate change to inflation is long — compare the timing here against Panel A.
Panel E · Real policy rate
Deposit facility rate minus HICP (percentage points)
Real rates (nominal minus inflation) drive valuations, gold and duration. Deeply negative in 2022; positive real rates mean genuinely restrictive policy.
Panel F · Yield curve & spreads
10y-2y term spread and the bank lending margin
An inverted curve (10y-2y below 0) has preceded euro-area downturns; the lending margin is a read on bank profitability.
Panel G · Markets
Euro-area equities and the euro, indexed to 100 (Jan 2015 = 100)
Euro-area equities (DAX) and the euro (EUR/USD), rebased to 100. On the same policy timeline, this shows how markets moved around ECB decisions — the macro-to-markets link.