02 · Income lab · 12 months to —

—

—

Units

01 · Bridge

From net interest income to net income

One dot per filer on a value axis; the shaded column is the middle 50% and the dashed rule the cohort median. Click a dot — or tab to it and press Enter — to load that institution into the bridge. Cohort: all conglomerates.

02 · Margin against risk

What the margin earns and what credit takes back

← thinner marginNIM, % of assetsfatter →

Bubble area is twelve-month net income. Dashed lines are cohort medians. Click a bank to load it into the bridge above.

03 · DuPont

How the top line becomes the return on equity

04 · Cross-section

The same ladder, one line per institution

How the bridge and the identity are built — and what they are not
Reported
Net income, net interest margin, cost of risk, average assets and the credit book all come from IF.Data, twelve months to the selected quarter.
Derived
Net interest income = NIM × total assets. Provision charge = cost of risk × credit book. Both are reconstructions from reported ratios, not filed statements.
Residual
Other result is net income less the two lines above: fee and treasury income, insurance, operating costs and tax, netted. IF.Data does not publish that split, so we never break it apart.
Why the bridge reconciles
The residual is solved, so the four bars always sum to reported net income. If NIM or cost of risk were mis-reported upstream, the error lands in “other result” and stays visible there.
Read with care

Margin definitions differ by institution. Where a bank's own release defines NIM on a different base — or where treasury and insurance results swing — the bridge moves while reported net income does not. The Income lab therefore never restates the reported line.

DuPont identity
ROE = leverage × (margin − cost of risk × credit share + other). Anchored on the two ratios each bank files, ROE and ROA, so the chain closes on the reported number rather than on a reconstruction of it.
What is solved
Other result is the only solved line: reported ROA less margin, plus the credit charge. It carries fees, treasury, insurance, operating costs and tax netted, because IF.Data does not publish that split.
Why two residuals can differ
Section 01 solves its residual on spot balances; the identity solves its own on the average-balance ratios the banks report. The gap is small but not zero, and it is printed rather than smoothed.
Attribution
Each contribution uses the midpoint convention — ΔA × average B + average A × ΔB — so the five bars sum to the reported change with no plug. A series the harness splits at a structural break is not attributed across the join.
Cohort ghost
The light shapes behind the bars are the median of each column across the active cohort — never a bank assembled out of medians. Each ghost bar is a median of that one line, so the ghost's steps and its closing column (the median bank's own return) need not agree; the dotted drop draws that difference instead of letting a plug absorb it. In the move reading the ghost is anchored where this bank started and takes the cohort's median step in each factor, so the comparison is of moves rather than levels.

Twelve-month flows, not annualised quarters. Missing quarters are gaps, never interpolated.