Nine Quarters

A credit loss stress model, built the way I watched them get built at a bank, on public Federal Reserve data instead of a portfolio.

Take the Fed's 2026 scenarios, or shape one yourself, and see what a card or consumer book would lose over the nine quarters that supervisory stress tests plan around. Built with Next.js and TypeScript; the model is estimated by a committed Node script from FRED and Federal Reserve sources.

If the Fed's severely adverse scenario began in 2026 Q3

$1.43B

in charge-offs on a $10B credit card book over nine quarters, 14.3% of balance. The baseline path loses $0.95B. Unemployment reaches 10% and house prices fall 30% in that scenario; the bootstrap puts the cumulative figure between 11.0% and 17.9%.

Open the lab
0%3%6%9%2020202120222023202420252026nine quarters2026 Q2 · 3.82%2008 replay 7.1%Severely adverse 6.9%Baseline 4.4%
Credit card charge-off rate, all commercial banks, annualized. Fan: severely adverse P10 to P90 and P25 to P75, 500 bootstrap paths.

Where this comes from

From 2015 to 2018 I wrote the documentation for M&T Bank's treasury and CCAR models, including the package that answered Federal Reserve findings on the bank's modeling practice. I knew the shape of a defensible loss model from the outside: what a reviewer asks for, where the arguments get thin, which limitations have to be written down before someone else writes them down for you. I had never built one.

This is the one I built. It uses forty years of aggregate charge-off data because that is what is public, and the documentation says plainly what that costs it. It sits next to RecessionRadar on purpose: that model asks whether a downturn is coming, this one asks what a downturn would cost a consumer credit book, and the investment case builder asks what it is worth doing about it. Those are the three questions a finance leader actually gets asked.

The model

Losses are modeled in logs, so a shock scales with the loss rate it lands on and projections cannot go negative. Last quarter's rate carries most of the information, because a charge-off is the end of a delinquency pipeline that started two quarters earlier; the persistence term comes out near 0.84, a half-life of about 4 quarters.

The labor variable is the change in unemployment over the past year rather than its level. Once persistence is in the equation the level takes the wrong sign, and in a blind run through 2008 it misses the 2009 peak by 5.6 points. The change specification misses it by 1.2. Each point of that change lifts losses 3.3% on impact and 23% if it stays there.

The pandemic indicator marks the six quarters when fiscal transfers held losses down through the sharpest labor shock in the sample. Without it the model concludes that unemployment barely matters, which is the wrong lesson to learn from 2020.

log COt = a + ρ · log COt−1 + β₁ · ΔUR₄ + β₂ · HPI + β₃ · pandemic + ε

ρ
0.841
persistence
β₁
0.0323
per point of ΔUR₄
β₂
-0.0018
per percent of house price growth
β₃
-0.207
pandemic quarters

OLS with Newey-West HAC standard errors (4 lags). 165 quarters through 2026 Q2, adjusted R² 0.93.

How it was checked

I re-estimated the model on data ending in 2000 and again in 2007, then ran it forward on the unemployment and house price path that actually followed. It tracks the shape of both recessions and comes in low at both peaks: 9.3% against 10.5% in 2009.

I left that in. Overlays exist for this reason, and a model tuned until it reproduced 2009 would say less about the next recession. Five challenger specifications sit in the lab with the same two tests applied, and the uncertainty bands come from a seeded bootstrap that redraws both the residuals and the coefficients.

Blind backtests through two recessions
Blind runModel peakActualRMSE
2001 recessionfit through 2000 Q45.54%7.65%0.96 pp
2008 crisisfit through 2007 Q49.34%10.54%1.51 pp

Before anyone relied on it

Portfolio data first. Vintage and segment loss curves would replace the industry aggregate, and the macro sensitivity estimated here would become a prior rather than the model. Delinquency buckets modeled explicitly, so the persistence the lag term proxies is observed instead of estimated. A quantified, approved overlay for the peak undershoot the backtests expose. And a second team: the challenger table and the blind runs here are the developer's own, which is exactly the situation model risk management exists to fix.

Open the labRecessionRadar

Data: FRED and the Federal Reserve Board. Model build 2026-09-08.