Central banks / Methodology
Central-bank balance sheets: methodology
How the /central-banks module is built: five central banks' total assets,
each from its own primary portal (or FRED where FRED is the publisher's
machine-readable mirror), normalized to millions of native currency, with an
annual nominal-GDP denominator. Pipeline:
scripts/fetch_central_banks.py (raw, small, auditable files under
data/raw/central_banks/) then scripts/build_central_banks.py
(data/parquet/cb_balance_sheets.parquet), then every displayed number is
computed at build time by src/lib/centralBanks.ts. Nothing on the page is
typed by hand.
The series
| Bank | Series | Source | Frequency | Units as published | Coverage |
|---|---|---|---|---|---|
| Fed | WALCL, total assets (less eliminations from consolidation), Wednesday level | Federal Reserve H.4.1 release, via FRED | Weekly | Millions USD | 2002-12-18 onward |
| Fed (composition) | WSHOTSL (US Treasuries held outright), WSHOMCB (MBS held outright) | Federal Reserve H.4.1, via FRED | Weekly | Millions USD | 2002-12-18 onward |
| Eurosystem | ILM.W.U2.C.T000000.Z5.Z01, "Total assets/liabilities - Eurosystem" | ECB Data Portal (SDMX), weekly consolidated financial statement | Weekly | Millions EUR | 1999 onward |
| Bank of Japan | JPNASSETS, "Bank of Japan: Total Assets" | Bank of Japan accounts, via FRED | Monthly, end of period | 100 million yen | 1998-04 onward |
| Bank of England | RPQB75A, "Central Bank assets/liabilities total" (Table B1.1.3, consolidated balance sheet) | Bank of England Database (IADB) | Quarterly | Millions GBP | 2013-09-30 onward, five-quarter publication lag |
| SNB | snbbipo cube, item T0 ("Total", assets side) | SNB data portal | Monthly | Millions CHF | 1996-12 onward |
Unit and date normalizations (all stated, none silent)
- BoJ: FRED serves JPNASSETS in units of 100 million yen; the build multiplies by 100 to get millions of yen. FRED stamps each monthly observation on the first of the month; the build remaps it to the month END, which is the date the end-of-period position refers to.
- ECB: the weekly statement's SDMX time period is an ISO week
(
2026-W28). The Eurosystem weekly financial statement reports positions as at Friday, so each ISO week is mapped to its Friday. - SNB: monthly
YYYY-MMperiods are mapped to the month end. - Fed, BoE: dates kept exactly as published.
Why these series and not others
- Bank of England: the weekly Bank Return was discontinued on 2014-09-24 (a Plenderleith-review recommendation, to protect covert liquidity assistance). Its replacement, the Weekly Report (Table B1.1.2), covers only the assets and liabilities generated by monetary policy operations, typically over 90% of the balance sheet but not all of it. The honest total-assets series is therefore the QUARTERLY consolidated balance sheet (Table B1.1.3, series RPQB75A), which publishes with a five-quarter lag. The page states this lag wherever the BoE appears; the BoE line ends earlier than the others by construction.
- Bank of Japan: the BoJ time-series portal's csv endpoint is session-token gated and not cleanly fetchable non-interactively, so the module uses FRED's JPNASSETS mirror of the BoJ accounts (FRED's series notes carry the Bank of Japan's copyright; attribution is rendered on the page).
- People's Bank of China: deliberately absent. The PBoC's monthly balance sheet is released as hand-edited spreadsheets behind changing URLs, with no stable machine-readable endpoint. Rather than scrape fragilely or type numbers by hand (both forbidden here), the module skips the PBoC and says so.
The %GDP denominator
- US, Japan, UK, Switzerland: annual nominal GDP (
nGDP, native currency millions) from the Global Macro Database (GMD), 2026_06 vintage, capped at year 2024: GMD's nGDP column runs to 2030, but everything past 2024 is forecast, and forecasts are not used as denominators. - Euro area: GMD carries no euro-area aggregate, so the Eurosystem's
denominator is the ECB Data Portal's own euro-area annual nominal GDP
(MNA dataflow,
A.N.I9.W2.S1.S1.B.B1GQ._Z._Z._Z.EUR.V.N, current prices, millions EUR, changing composition), through its newest published year. - Each observation is divided by its own calendar year's GDP. Observations
after the newest GDP actual use that newest actual (carried forward), and
the parquet's
gdp_yearcolumn records exactly which year was used, so the divisor of every displayed ratio is auditable. - Because the denominator is annual and the numerator is weekly or monthly, the ratio has a small stairstep at year boundaries; that is a property of the construction, not of the balance sheets.
Build-time checks
- No duplicate (bank, series, date) keys; every TOTAL value strictly positive (Fed MBS composition is a true zero before 2009).
- ECB unit guard: the build aborts if the ILM csv stops reporting EUR / UNIT_MULT 6.
- GDP magnitude guards for 2024 against public figures (loose bands; the exact values are re-verified against the sources in the PR that shipped this module).
- The Fed's all-time peak must fall in 2022 between $8.8T and $9.2T (it is $8,965,487M on 2022-04-13 in the fetched series).
- Treasuries plus MBS held outright never exceed total assets, asserted in
the build and re-asserted at page build in
fedCompositionSeries(). - The BoJ's latest total assets must exceed 100% of GDP (a structural fact of the series; if it ever fails, the units broke).
Display conventions
- The comparable chart is monthly: each month carries a bank's last observation in that month. Weekly detail is preserved in the per-bank native panels and the Fed composition chart.
- Charts are decimated with the estate's min/max downsampler: every rendered point is a real observation; spikes survive exactly.
- No FX conversion anywhere: native currency per bank, %GDP for comparability.
Attribution and reuse
Series are displayed with attribution to the publishing institutions: Federal Reserve H.4.1 (via FRED, subject to the FRED terms of use), the European Central Bank (ECB Data Portal, reuse permitted with attribution), the Bank of Japan (copyright Bank of Japan, via FRED), the Bank of England (Bank of England Database), and the Swiss National Bank (data portal). Per this site's no-redistribution policy, series are displayed and charted with attribution; there are no bulk-download endpoints here. GDP: Global Macro Database (non-commercial research license) and ECB euro-area accounts.
Refresh cadence
Fetched by scripts/refresh.sh (daily tier, cheap and idempotent), but the
sources themselves move on their own clocks: the Fed H.4.1 weekly (Thursday
afternoon), the ECB weekly statement (Tuesday afternoon), the BoJ accounts
roughly every ten days with the month-end position monthly, the SNB monthly,
and the BoE quarterly (first Wednesday of the quarter, five-quarter lag).