Skip to content
StockMarketAgent
§ Tool · Valuation calculator

Owner earnings calculator

The Buffett floor: value a stock as a multiple of the cash a 100%-owner could pull out each year without impairing operations — net income plus depreciation, less maintenance capex. The "cash-owner floor" lens, a deliberate cross-check against the forward DCFs rather than an intrinsic anchor.

§ What this is warning you about first

Owner earnings is a floor for many growth companies. Because growth capex is excluded by design, it can understate value when reinvestment is deliberate and returns are high. Above 15% five-year growth the model flags is_floor_value and drops reliability — read it as the no-growth floor, never as intrinsic value.

Cash-owner floor
Model · owner_earnings
Net income
Primary input
Low / mid / high
Output range · 15–50×
cross_check
Role · not an anchor
No SBC
NI already includes it
§ Start with a preset
Three archetype starting points. Adjust anything after.
LensNet income + D&A − maintenance capex, per share, valued at a 15–50× envelope. A cash-owner floor, not a forward DCF./en/tools/owner-earnings-calculator
§ Maintenance-capex policy
economic_policy.maintenanceCapexPolicy · 4-mode
01Buffett-formula inputs3 fields
$M
TTM net income — already deducts SBC. Required.
$M
Depreciation & amortization — added back (non-cash charge).
$M
Total capital expenditure. The policy below splits maintenance from growth.
02Per-share & floor3 fields
M
Per-share denominator. Watch this over time — SBC dilution lives here. Required.
%
Floor-flag threshold only. Above 15% sets is_floor_value. Does not enter the math.
$
Optional — for upside vs the fair-value range.
03Maintenance-capex valueDisclosed 70%

The hardest input in the model. Maintenance capex (not total) is deducted — growth capex is discretionary and excluded by design. The active mode determines which field below is used; the others are inactive. With no usable policy the kernel falls back to 70% of total capex, the disclosed default.

$M
Explicit dollar amount. Used when method = absolute.
%
Rate × revenue. Accepts 4 or 0.04. Used when method = % of revenue.
%
Rate × total capex. Disclosed default is 70%. Used when method = % of capex / fallback.
$M
Only consumed by the % of revenue method.
§ Fair value range · per share

Owner earnings · Mature compounderrequired for archetype

reliability 75/100 · High
FV low · 15× owner EPS
$175.95
FV mid · avg(25×, 40×)
$381.22
FV high · 50× owner EPS
$586.49
is_floor_value = false

Five-year growth of 8% is at or below the 15% threshold, so owner earnings is a reasonable cash-yield read and reliability holds at the clean 0.75. The wide 15–50× envelope still signals this is a cross-check, not a precision anchor.

methodology_version = valuation-calculators.v1model_id = owner_earnings · role = cross_check
§ The Buffett formula

Net income → owner earnings → per share

Net income
$21.0B
+
D&A added back
$4.20B
Maint. capex
$3.50B
=
Owner earnings
$21.7B
÷
Shares
1,850M
=
Owner EPS
$11.73
SBC is not subtracted. Net income already deducts stock-based compensation — subtracting it again would double-count. Dilution is tracked separately via share-count growth, where owner_earnings / shares declines over time.
§ The multiple envelope

Owner EPS $11.73 × [15, 25, 40, 50]

15×
Graham no-growth
$175.95
25×
Average market
$293.24
40×
Quality compounder
$469.19
50×
Premium / bull
$586.49
mid = average(25×, 40×) = $381.22 — a central tendency, not a bare bucket
§ Maintenance-capex policy
deterministic_fallback_pct_of_capex
maint_capex = $3.50B · source = fallback.owner_earnings · pct = 70% of capex

No usable LLM policy supplied — most mature businesses spend ~70% of total capex on maintenance, so the kernel falls back to the disclosed 70%-of-capex default.

§ Lens positioning
role = cross_check · not eps_dcf / fcff_dcf / relative
owner_earnings $21.7B · owner_eps $11.73

A current-state cash-yield model, not a forward DCF — there are no growth or discount-rate inputs. Owner earnings is most useful triangulated against the intrinsic DCFs: if all three roughly agree and owner earnings sits well below price, the stock is cheap even in the no-growth case.

§ Reliability factorsscore 75/100
No floor flag — reliability held at the clean 0.75 base.
§ Formula trace

Every step, derived

  1. maint_capex = |capex| 5000 × 0.7 = 3500.0 (fallback.owner_earnings — disclosed default)
  2. owner_earnings = NI 21000 + |D&A| 4200 − maint_capex 3500.0 = 21700.0
  3. note: SBC is NOT subtracted — net income already deducts it. Dilution is tracked via share-count growth.
  4. owner_eps = owner_earnings 21700.0 / shares 1850 = 11.730
  5. values = owner_eps × [15, 25, 40, 50] = [175.95, 293.24, 469.19, 586.49]
  6. low = 15× = 175.95 · mid = avg(25×, 40×) = 381.22 · high = 50× = 586.49
  7. is_floor_value = (5Y growth 8% > 15%) = false · reliability = 0.75
§ Calculator contract

One stable kernel contract, same as the reports

Reference the model by its stable id owner_earnings, 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/owner-earnings-calculator
Kernel model idowner_earnings · role cross_check
Valuation lensBuffett owner earnings × 15–50× multiple envelope · cash-owner floor
Primary inputNet income + D&A + total capex + shares (revenue optional)
Run endpointPOST /api/v1/valuation-calculators/run · model_id: "owner_earnings"
SensitivityPOST /api/v1/valuation-calculators/sensitivity · multiple × maint_capex_pct grid
Response contractresult.status (computed / excluded / failed) + result.fairValue (low / mid / high) + is_floor_value + maintenance_capex_policy + 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 owner_earnings output for the same inputs. Owner earnings is most useful as a sanity floor against the forward-looking intrinsic DCFs: discounted earnings and FCFF DCF. If those intrinsic anchors roughly agree and owner earnings sits well below the current price, the stock is undervalued even in the conservative no-growth scenario.

All-model workbook →FCFF DCF siblingRead methodologymethodology_version = valuation-calculators.v1
§ FAQ

Five things worth knowing

Q01Why is the result low for a high-growth company — is the calculator broken?+
No — it's working exactly as designed. Owner earnings subtracts maintenance capex but excludes growth capex, so a company deliberately reinvesting at high returns shows owner earnings far below its true economic earnings. For a name compounding revenue, this number is the no-growth floor — what the business would be worth if all growth spending stopped — not its intrinsic value. That's why the is_floor_value flag fires above 15% five-year growth and drops reliability to 0.55: the platform reports the floor but won't let it drag the composite fair value down for a genuine compounder.
Q02Why does the formula NOT subtract stock-based compensation?+
Because net income already deducts SBC as an expense — it flows through the income statement. Subtracting it again in the owner-earnings formula would be double-counting, and it's the single most common mistake in casual valuation work. SBC dilution is real, but it shows up in share-count growth over time, not in the per-year owner-earnings number. A company with flat owner earnings but a rising share count is still impairing per-share value — watch shares in the audit, where owner_earnings / shares declines year over year. That's where the dilution lives, not in the numerator.
Q03How is maintenance capex separated from growth capex?+
Distinguishing the two is the hardest part of the model, so it's handled by an explicit 4-mode policy resolved in priority order: an absolute dollar amount, a percent of revenue (when revenue is supplied), a percent of capex, or — when no usable policy exists — a deterministic fallback of 70% of total capex. Most mature businesses spend roughly 70% on maintenance and 30% on growth, so the fallback gives a defensible figure without asking you to guess. The audit always shows which mode ran, the rationale, and whether the number came from analysis or the disclosed default.
Q04Why a 15×–50× multiple range instead of a single number?+
Because multiple-based valuation has genuine uncertainty about the right multiple, and collapsing it to a tight range would imply false precision. The four anchors are deliberate: 15× is the Graham no-growth multiple, 25× a typical going-concern valuation, 40× what the market pays for high-ROIC durable businesses, and 50× peak optimism for the very best. The mid is the average of 25× and 40× — a central tendency that doesn't pretend the model knows which bucket the stock belongs in. The 3.3× spread is the honest signal: this is a sanity floor, not a precision instrument.
Q05What does FAILED mean here, and how is it different from excluded?+
Excluded means the model is structurally inapplicable — REITs use NAV/AFFO, pre-profit names have negative net income, financials need provision-cycle lenses, or a required input is missing. FAILED is different: the model applies, but owner earnings came out ≤ 0 — net income plus D&A doesn't cover even maintenance capex. That's an informative structural signal: either net income is depressed (cyclical trough), maintenance capex is structurally high, or the policy is too aggressive (try a lower percentage). The kernel refuses to emit a multiple-based value rather than print nonsense.