Skip to content
StockMarketAgent
§ Tool · Valuation calculator

Residual income calculator

The financials-only valuation lens: built for banks, insurers, and other balance-sheet-driven businesses where the standard DCF and earnings-multiple lenses fail. Uses the justified Price-to-Book formulation that links fair value to excess return over cost of equity.

§ What this is warning you about first

Residual income is only as good as book-value quality. For financials, credit marks and capital adequacy come before the midpoint. A 1.2× justified P/B is meaningless if the book itself is overstated: thin loan-loss provisions, securities marked at par when market value is lower, off-balance-sheet exposure not captured. The model values the stated book; you bring the credit-quality and capital-adequacy judgment.

Excess return
Model · residual_income
Book value
Primary input
Low / mid / high
Output range
sector_specific
Role · financial / bank
justified P/B
Headline output
§ Start with a preset
Three financial starting points — adjust anything after.
LensBook value per share × justified P/B = (ROE − g) / (Ke − g), with a normalized ROE signal and a dual-axis triple-stress envelope./en/tools/residual-income-calculator
01Book value anchor3 fields
$
The anchor. Leave at 0 and the model derives it from price ÷ P/B.
×
The market's current price-to-book — the reference the justified P/B is compared against.
$
Optional — for upside vs the fair-value range and to derive BVPS if missing.
02Return on equity2 fields
%
Trailing ROE. The model normalizes it against the forward signal — see the ROE panel for which path fired.
$
Used to derive forward ROE = forwardEps ÷ BVPS (capped at 25%). Drives the recovery blend.
03Discount + growth3 fields
%
The base hurdle rate. Must exceed terminal growth.
%
The bear-case Ke. If 0, the bear uses moderate + 1pp.
%
Long-run growth. Default 2.5% — below the DCFs' 3% (financial cash flows grow slower).
§ Fair value range · per share

Residual income · Bankrequired for archetype

reliability 85/100 · High
FV low · bear
$90.67
-30.3%
FV mid · base case
$140.80
+8.3% vs price
FV high · bull
$165.52
+27.3%
Price $130.00
methodology_version = valuation-calculators.v1model_id = residual_income · role = sector_specific
§ The headline

What multiple of book the fundamentals justify — vs what the market pays

justified_pb_mid1.47×model · (ROE − g) / (Ke − g)
vs
current_pb1.35×market · price / book
1.0× · book = fair
justified 1.47×
market 1.35×

The model thinks this financial should trade at 1.47× book against the market's 1.35× — the fundamentals justify a higher multiple than the market is paying, an undervalued-vs-book signal. Normalized ROE 15.0% sits above Ke 10.0% — value-creative, so justified P/B is above 1.0.

§ The normalized ROE signal

Which path the model used to resolve the most volatile input

Current ROE← fired

Trailing ROE is the anchor.

current_return_on_equity
Forward ROE

Only forward signal available — forwardEps / book value.

forward_eps_divided_by_book_value
70/30 recovery blend

Forward ≥ 1.5× current — a credit-cycle inflection. 70% forward + 30% current.

blend_forward_eps_roe_with_current_roe
current_roe15.00%
forward_roe
normalized_roe15.00%
§ Dual-axis triple-stress

ROE and Ke stressed independently — wider than a flat ±15% band

ScenarioROEKejustified P/Bfair valuestress
Bear11.00%11.50%0.94×$90.67ROE −4pp · Ke strict
Base13.50%10.00%1.47×$140.80ROE −1.5pp · Ke moderate
Bull15.00%9.75%1.72×$165.52ROE reported · Ke −0.25pp

The range output enforces monotonicity — low = min(bear, base) and high = max(bull, base) — so the labels stay semantically correct even if stress pushes one scenario into a degenerate region while base stays healthy.

§ Audit fields
book_value_per_share$96.00
normalized_roe15.00%
normalized_roe_sourcecurrent_return_on_equity
ke_moderate10.00%
ke_strict11.50%
terminal_growth2.50%
justified_pb_mid1.47×
current_pb1.35×
§ Lens positioning
role = sector_specific · archetype-hard-locked · dual-axis stress
required = true · archetype = bank

Residual income is required for the Bank archetype — the justified P/B framework is the only lens in the suite built for balance-sheet-driven businesses. It is paired with the dividend discount model (for dividend-paying financials) and REIT NAV/AFFO as the three archetype-locked specialized models. The fair value here reconciles exactly with the per-stock report's residual_income output for the same inputs.

§ Reliabilityscore 85/100
Fixed at 0.85 with no penalty factors — the model is structurally well-grounded for financials once the gates pass. The judgment the model cannot make for you is book-value quality.
§ Formula trace

Every step, derived

  1. book_value_per_share = 96.00 (explicit)
  2. normalized_roe = 15.00% · source = current_return_on_equity
  3. current_roe = 15.00%
  4. bear : ROE 11.00% (−4pp) · Ke 11.50% (strict)
  5. base : ROE 13.50% (−1.5pp) · Ke 10.00% (moderate)
  6. bull : ROE 15.00% (reported) · Ke 9.75% (moderate −0.25pp)
  7. justified BV: low 90.67 · mid 140.80 · high 165.52
  8. range (monotonic) = { low 90.67, mid 140.80, high 165.52 }
  9. justified_pb_mid = 1.47× · current_pb = 1.35×
§ Calculator contract

One stable kernel contract — same as the reports

Reference the model by its stable id residual_income, not the display label. The dedicated page, the all-model workbook, and the report pipeline all hit the same endpoint and reconcile to the same fair value.

Slug/en/tools/residual-income-calculator
Kernel model idresidual_income · role sector_specific
Valuation lensJustified P/B residual income · book value × (ROE − g) / (Ke − g)
Primary inputBook value / share + ROE + moderate Ke + terminal growth
Run endpointPOST /api/v1/valuation-calculators/run · model_id: "residual_income"
SensitivityPOST /api/v1/valuation-calculators/sensitivity · ROE × Ke grid
Response contractresult.status (computed / excluded / failed) + result.fairValue (low / mid / high) + justified_pb_mid + normalized_roe_source + reliability
§ Notes

This surface is stateless. The same kernel powers the per-stock reports, so the fair value here reconciles exactly with the report's residual_income output for the same inputs. For a dividend-paying bank, run this alongside the dividend discount model — the two give complementary lenses (justified premium-to-book + the dividend stream). For an insurer with stable earnings, the PEG-adjusted peer calculator is a useful cross-check, and the discounted earnings EPS DCF handles the cyclical-but-positive-earnings cases.

All-model workbook →Dividend discountRead methodologymethodology_version = valuation-calculators.v1
§ FAQ

Six things worth knowing

Q01Why is this model hard-locked to financials and banks?+
Because the justified P/B framework only makes sense for balance-sheet-driven businesses. The other ten models in the suite either fail or distort for banks and insurers: FCFF DCF has no meaning when the balance sheet is the operations, owner earnings is excluded by archetype, and EPS DCFs systematically miscalibrate because provision-cycle volatility dominates the projection. Residual income says a financial is worth its book value plus the present value of every dollar of excess return it earns above its cost of equity. Applying that to a tech company would silently produce a meaningless number, so the model refuses to run for non-financials, exactly the same design as the EV/Revenue and REIT NAV/AFFO calculators.
Q02What does the justified P/B actually tell me?+
It is the multiple of book value the fundamentals justify: justified P/B = (ROE − g) / (Ke − g). If ROE equals Ke, justified P/B is exactly 1.0 (the company earns just enough to cover its cost of equity, so book value is fair value). If ROE exceeds Ke the multiple rises above 1.0 (excess return), and if ROE is below Ke it falls under 1.0 (the bank is destroying value on each dollar of book equity and should trade at a discount to stated book). The headline output is justified_pb_mid; compare it against current_pb (what the market is paying now) and the gap is the platform's clearest over/undervalued-vs-fundamentals signal for the financial archetype.
Q03How does the model handle a bank coming out of a credit cycle?+
Through the normalized ROE signal. ROE is the most volatile input for financials: provision cycles, one-time gains, structural recovery. When the forward ROE (derived as forward EPS ÷ book value) is at least 1.5× the current ROE, that signals a genuine recovery, so the model blends 70% forward + 30% current rather than fully trusting either. A bank moving from a 6% trough to a 12% forward gets 0.70 × 12% + 0.30 × 6% = 9.9% as the normalized figure, and the audit shows blend_forward_eps_roe_with_current_roe so you know the blend fired. A bank going from 11% to 13% (no real inflection) just uses current ROE.
Q04Why cap forward ROE at 25%?+
Because a forward EPS that implies an ROE above 25% almost always reflects a data anomaly: a one-time reserve release, a merger gain, analysts pricing a sudden capital event that will not recur. If the model trusted it, the recovery blend would be dominated by a number that has nothing to do with the bank's steady-state earning power. Above the cap, the forward signal is rejected and the model falls back to current ROE. The audit records that the forward was rejected.
Q05What does the justified_pb_undefined failure mean?+
One of the three stress scenarios produced Ke ≤ g or ROE ≤ g, so the justified P/B math is undefined. In practice this happens when ROE itself is barely above the terminal growth rate: the numerator (ROE − g) goes to zero or negative. The interpretation is structurally informative, not an error: the financial is earning just enough to fund its required-growth retention, with no excess accruing to equity, so it is not value-creative and justified P/B is simply the wrong lens. The model enforces both safety conditions, Ke > g (the universal Gordon constraint) and ROE > g (must be value-creative), and returns a clean FAILED status rather than a misleading number.
Q06What if I only have a P/B and a price, not an explicit book value?+
The model derives book value per share as currentPrice ÷ priceToBook, so you can supply market data instead of accounting data and it still runs. Likewise, if you have no trailing ROE but you do have a forward EPS, it derives forward ROE = forwardEps ÷ book value (capped at 25%) and uses that as the ROE signal. The audit always shows which book-value source and which ROE source were used.