Deposit betas
Bank-level cumulative pass-through from quarterly-average fed funds changes to implied deposit rates across three complete hiking cycles.
- Registry slug:
- deposit-betas
- Visible surface:
- /banks/deposit-betas
Data and implementation
Vintage
Deposit rate and product panels each contain 666,701 bank-quarter observations for 10,858 banks from 2001Q1 through 2026Q1; cycle outputs contain 7,396, 5,261, and 4,572 banks, measured 2026-08-30
Data tables
- data/parquet/deposit_rates.parquet
- data/parquet/deposit_rates_by_product.parquet
- data/parquet/deposit_betas.parquet
Engine
Producer
scripts/build_deposit_betas.py
Outputs
- data/parquet/deposit_rates.parquet
- data/parquet/deposit_rates_by_product.parquet
- data/parquet/deposit_betas.parquet
Source: FFIEC Central Data Repository, public call-report bulk files; Federal Reserve Economic Data (FRED)
Method
The producer dequarterizes year-to-date Schedule RI deposit interest expense within each bank-year, pairs each quarterly flow with the average of current and prior quarter-end interest-bearing deposit balances, annualizes it, and stores both raw and bounded implied rates. The same construction is repeated by deposit product using the documented RC-E balance mappings.
For each complete hiking cycle, a bank must have valid implied rates at both endpoints. Its cumulative beta is the change in that implied rate divided by the change in quarterly-average FRED FEDFUNDS.
These are implied average rates from public regulatory filings, not posted consumer offers or account-level prices.
Methodology evidence
| Path and lines | Evidence |
|---|---|
| scripts/build_deposit_betas.py:72-85 | Defines dequarterization, the implied-rate construction, cumulative beta, and the three stored cycle endpoints. |
| scripts/build_deposit_betas.py:427-533 | Implements the implied total and product rates, quarterly FEDFUNDS averages, cycle betas, and all three outputs. |
| src/app/banks/deposit-betas/methodology/page.tsx:94-184 | Publishes the FFIEC and FRED sources, filing-item construction, dequarterization, implied-rate equation, product split, and cycle definition. |
Equations
implied_rate_pct = 100 * 4 * quarterly_deposit_interest_expense / average(current_balance, prior_quarter_balance)beta = (rate_end - rate_start) / (quarterly_average_FEDFUNDS_end - quarterly_average_FEDFUNDS_start)Validation
- deposit_rates.parquet and deposit_rates_by_product.parquet each contain 666,701 bank-quarter rows for 10,858 banks from 2001Q1 through 2026Q1.
- deposit_betas.parquet contains 7,396 banks for 2004-2006, 5,261 for 2015-2019, and 4,572 for 2022-2023.
- The producer enforces a JPMorgan dequarterization receipt, product-to-total expense and balance identities, rate drop counts, valid FEDFUNDS endpoints, and atomic writes.
Limitations
- Implied rates use expense over average quarter-end balances, not intra-quarter average balances or posted offers, and values outside 0% to 25% are treated as data errors.
- End-to-end cycle betas hide repricing timing, and cycle distributions exclude banks without valid filings at both endpoints, including institutions that failed or merged mid-cycle.
- The denominator convention is interest-bearing deposits for the total rate; product rates use total product balances, and the transaction product is a blended funding cost.
References
Metadata endpoint
| Path | Method | Returns | Example |
|---|---|---|---|
| /api/methods/[slug] | GET | Registry metadata, implementation paths, measured vintage, methodology evidence, validation, and limitations. No model observations or parquet contents. | /api/methods/deposit-betas |