What a recession does to a loan book, from the macro path to the capital ratio.
Unemployment, growth, rates, the exchange rate and collateral prices go in. Default rates, provisions and the capital ratio come out, through a Merton model and a vintage hazard model running side by side on the same book. The gap between the two is on the page, because that gap is the model risk, and a stress test that reports one number has not measured less uncertainty, it has just stopped showing it.
––
–
–
–
The book being tested
Seven segments, because the whole exercise turns on them behaving differently. A mortgage and a credit card do not default for the same reason, do not recover the same way afterwards, and do not attract the same capital, and a stress test run on a single portfolio-average borrower gets all three of those wrong at once.
Correlation is Basel's, by exposure class: fixed at 0.15 for mortgages and 0.04 for revolving retail, and a function of the default rate for everything else. It is the share of a borrower's fortunes that is the economy's rather than its own, and it is what decides whether a bad year is a bad year for one borrower or for all of them at once.
From a macro path to a default rate
A borrower defaults when what it owns is worth less than what it owes. Write the change in what it owns as one piece everybody shares and one piece that is its own:
Ai = √ρ · Z + √(1 − ρ) · εi
Z is the economy, in standard deviations. Default is Ai falling below a threshold, and the threshold that reproduces a long-run default rate PD is Φ⁻¹(PD). Hold Z fixed and ask what fraction defaults, and the whole model is one line:
PD(Z) = Φ[ (Φ⁻¹(PD) − √ρ · Z) / √(1 − ρ) ]
So the entire macro half of a stress test is the job of turning six economic series into one number, Z. Here each variable's distance from where it started is divided by its own standard deviation and weighted by what that variable does to that segment. The weights sum to one, which fixes the scale: a scenario where everything is two standard deviations bad is a shock of exactly two, in every segment. Segments differ in which variables hurt them, not in how loudly a shock speaks.
The long-run average default rate is not the rate of a typical year. Default rates are right-skewed: a few terrible years pull the average above the median, so the year that actually produces the average rate is already a mildly bad one, at – on this scale. Starting a stress test from Z = 0 quietly assumes the book is currently running better than its own long-run experience, and the base case then shows provision releases in a year where nothing has happened. That was the first version of this model, and the base case printing a profit is what gave it away.
–
The same question, asked from the book instead
The second engine never mentions asset values. It says a loan's default rate depends on how old it is, which cohort wrote it, and what the economy is doing now:
hazard(age, vintage, t) = lifecycle(age) · quality(vintage) · eγ·s
Loans default on a hump: quiet in the first months, worst somewhere between one and three years depending on the product, tailing off after. A book written in a boom is a worse book and stays worse for its whole life. Both of those come off the book itself and neither is a forecast; only the last term is.
Solid to today, dashed after: the dashed half is this scenario, not a record of anything. The lines separate before the scenario starts, which is the cohort effect and not the macro one: the 2022 book was written into a boom at looser standards and it is still paying for it.
Where the two engines disagree, and why that is the finding
The two links are tied together at two points: no shock at all, and a one-standard-deviation shock. Everything they do after that comes from the shape of the link and nothing else, a probit against a log. The log has no ceiling and the probit does, so past two standard deviations the hazard model is the more pessimistic of the pair.
–
–
Loss given default is not a constant, and neither is exposure
A lender that can seize collateral worth C against an exposure of 1 loses max(0, 1 − C net of selling costs). That is a put option struck at the exposure, so the loss given default of a secured segment is the expected value of a put across borrowers whose coverage varies:
LGD = Φ(−d₂) − F · Φ(−d₁), d₁ = (ln F + σ²/2) / σ, d₂ = d₁ − σ
The level is not the interesting part, since σ is solved so that the formula reproduces each segment's stated loss given default when prices have not moved. The shape is. A well-secured book has a low delta: the first few per cent off collateral cost almost nothing, because the cushion absorbs them. Keep going and the loss accelerates, into exactly the quarter the default rate is peaking. Holding loss given default constant through a stress test is holding an option's value fixed while its underlying moves.
Exposure moves too. A borrower heading for default draws what is still available on a revolving line first, so the exposure at default on cards, working capital and corporate limits is above the balance showing today. That is what the credit conversion factor is for, and it is the one input in a stress test that is reliably underestimated because it cannot be seen on the balance sheet at all.
IFRS 9, and the cliff nobody put there on purpose
Under IFRS 9 a performing loan carries twelve months of expected loss until its credit risk has increased significantly, at which point it carries the loss expected over its whole remaining life. For a five-year mortgage that is a step change of several times, applied to a loan that has not missed a payment.
The share of a book that has crossed the line is not assumed here, it is derived. Individual loans deteriorate by different amounts around the segment average; take the spread as lognormal and the share past a trigger is one evaluation of Φ:
stage 2 share = Φ[ (ln R − ln k) / σ ]
R is how far the average loan's default rate has risen and k is the trigger. When R reaches k, half the book moves at once. That is the cliff, and it falls out of the arithmetic rather than being put in by hand.
–
Two conventions worth stating, because they move the answer more than most of the sliders. Lifetime probability of default follows the scenario for as long as the scenario runs and then reverts to the long-run rate, rather than holding today's stressed rate flat for five years: assuming a recession lasts forever is not prudence, it is a different forecast, and it roughly doubled the peak charge when this model did it. And the allowance is undiscounted, which overstates it by a few per cent.
Capital: losses, and the same loans measured as riskier
The capital requirement is not a different model. It is this one, read at a fixed severity:
K = LGD · Φ[(Φ⁻¹(PD) + √ρ · Φ⁻¹(0.999)) / √(1 − ρ)] − PD · LGD
which is the conditional default rate at Z = −3.09, the economy a one-in-a-thousand year would produce, less the expected loss that provisions are already meant to cover. Capital is for the difference. So the capital rule and the stress test are the same equation read at two severities, and this scenario can be placed on the same axis as the rule.
–
–
Basel's probabilities of default are meant to be long-run averages, so on a strict reading a risk weight should not move with the cycle at all: only the downturn loss given default should. In practice ratings migrate, so measured default rates do rise in a downturn and risk weights rise with them, and the same loans, unchanged, consume half as much capital again. That is the procyclicality argument, and it is a switch above rather than a buried assumption because the gap between the three settings is a result.
–
The question a supervisor actually asks
Not "what happens in this scenario". That one has an answer above. The harder question is which scenario breaks the bank, and it is answered by inverting the model rather than running it: bisect on the severity of the whole macro path until the capital ratio lands exactly on the requirement.
–
Stated in unemployment because that is the variable people have an intuition about, but the multiple applies to the whole path: growth, rates, inflation, the exchange rate and collateral prices all move with it. A reverse stress test that moves one variable alone finds a much larger number and a much less useful one.
What is actually driving the answer
–
Green passes the 7.0% requirement, amber fails it. Every cell is a complete twelve-quarter run over all seven segments, not an interpolation between the corners. Click one to adopt it.
Run this on a real book
Five columns: a segment name, exposure, probability of default, loss given default, and which of the four Basel treatments it takes. Percentages or decimals, either way. Everything else, the macro sensitivities, the seasoning curve, the vintage mix, comes from the shipped segment of the same kind. Nothing is uploaded: the parsing and the model run in your browser, and the file never leaves your machine.
What this is not, ranked by how much it matters
Six weights, and no regression behind them
In a real engagement the macro weights come from a regression of segment default rates on macro series, with the diagnostics attached and the out-of-sample record shown. Here they are set by hand to sensible values. That is the honest weak point of the whole page, and it is why the transmission dial is the first slider rather than a hidden constant.
Everything correlated through a single Z
A one-factor model cannot express a shock that hits construction and spares textiles. Segments differ in their sensitivity here but not in what they are sensitive to, so a genuinely sectoral scenario needs a multi-factor version of the same arithmetic.
The bank does not react
It does not shrink the book, sell a portfolio, cut costs, raise equity or stop lending. That is the supervisory convention, and it makes this a test of the book rather than a forecast of the business. Management actions are what the second half of a real exercise is about, and they belong in a separate layer rather than mixed into this one.
Composite in shape, nobody's filed accounts
The segment mix, default rates, collateral coverage and capital position are in the region a mid-sized private commercial bank occupies. They are not any bank's numbers, which is why the CSV panel exists: the method is the part that transfers.
No market, operational or liquidity risk
A real exercise adds trading losses, operational risk events and a funding squeeze, and in an emerging market the funding squeeze is often the part that actually arrives first. This page stops at the loan book.
Deferred tax, minorities and Tier 2 left out
Only common equity and the credit charge move. A real capital plan carries deferred tax assets whose recognition changes exactly when it hurts, and an add-back for provisions above expected loss that softens the fall.
Two engines, kept honest by each other
A structural model and a hazard model, calibrated to agree at two points and left to diverge everywhere else. Where they part company is where the answer stops being a fact and starts being a modelling choice, and that number is printed rather than picked between.
The capital rule is the same equation
The IRB formula is this model read at a one-in-a-thousand year economy. Building both out of one function means the scenario can be placed on the same severity axis as the rule that sets the requirement, instead of being described as "severe" and left there.
Loss given default is an option
Recovering out of collateral is a put struck at the exposure, so a price fall bites slowly and then quickly. The dispersion is solved to reproduce each segment's stated loss given default at today's prices, so the level is preserved and only the response to the scenario is modelled.
The provision cliff is derived
The share of the book on lifetime allowance comes out of a distribution of loan-level deterioration against a trigger, which is one evaluation of Φ. Nothing about the cliff is asserted, which is why it moves properly when the trigger or the spread moves.
Reversible, not just runnable
Bisecting the whole model to find the scenario that lands exactly on the requirement is the question a supervisor asks and a board understands. It costs forty full runs of the model and returns in under a tenth of a second, which is the argument for a DOM-free engine.
168 checks on the engine
Basel's own published risk weights, the normal distribution against printed quantiles, the conditional default rate integrated over the cycle to see whether it gives the long-run rate back, exposure conservation, the provision identity, and the reverse stress test put back through the model to see whether it lands where it said it would.
Need a stress test that survives a supervisor?
Scenario design, PD and LGD modelling, IFRS 9 staging, capital projection and reverse stress testing, in Excel or Python, with the assumptions in one place and every convention stated on the page rather than in a footnote.