Restoring the ledger…

Reading saved filings from this browser

Method

How Owner’s Ledger values a business

This is a conservative, owner-earnings ledger — not a growth-at-any-price model. The 10% hurdle is intentional. Most wonderful companies will screen as a premium at today’s prices. That is information, not a failure of the math.

Owner earnings

From Buffett’s 1986 letter, as taught in Hagstrom’s The Warren Buffett Way:

OE = Net income + D&A − maintenance CapEx

Reported earnings plus non-cash charges, minus the capital required to hold unit volume and competitive position. That last term is the hard part: companies do not file “maintenance CapEx.”

CapEx split

Replacement CapEx is estimated as 1.25× D&A. In any year where reported (or implied) CapEx exceeds that replacement level, the extra is treated as growth CapEx and split out of owner earnings. The test is per year, not a 5-year average — a retailer or hyperscaler that only recently ramped expansion spend still gets the split in those years. Utilities and rate-base businesses (think American Water Works) would otherwise show blank or ugly IV because they invest ahead of earnings.

When CapEx is missing from XBRL, implied CapEx = max(0, ΔPPE + D&A). An implied zero (PPE declined) is treated as missing so owner earnings does not become NI + D&A with no maintenance charge.

Two-stage DCF

Base is normalized recent owner earnings (median of the last three years when available). Staged growth starts from the 5-year compound annual growth rate of owner earnings — skipping a near-zero start year so a recovery is not treated as 250% growth, and using the 3-year rate instead when latest OE has fallen below half the recent peak — then the growth haircut shaves that rate down, then max growth caps it (6% for utilities). Cash flows are projected for the explicit window, then a Gordon terminal, all discounted at the hurdle rate.

Per-share IV uses diluted filings shares, or — for dual-class names such as BRK-B — market cap ÷ listing price so an A-share count is never applied to a B price.

Margin of safety = (IV − price) / IV. OE yield = latest OE / market cap. Negative owner earnings leave IV blank rather than flattered.

Assumptions

These five knobs are global. Changing a slider recomputes every name from stored annuals — no re-fetch. Reset to defaults in the Assumptions dialog restores the conservative set below.

Discount rate default 10%
The required annual return used to discount future owner earnings back to today. 10% is Buffett’s long-standing hurdle — it is meant to be conservative, not a forecast of the market. Raise it to demand a wider margin; lower it only if you are willing to pay more for the same cash flows.
Terminal growth default 3%
The perpetual growth rate after the explicit forecast, used in a Gordon growth terminal. Keep it near long-run nominal GDP so the model does not assume a company outgrows the economy forever. The engine also caps it just below the discount rate so the math stays defined. Default 3%.
Projection years default 10y
How many years of staged owner-earnings cash flows are projected before the Gordon terminal value. A longer window puts more weight on the (already reduced) growth rate; a shorter window hands more of the value to the terminal. Default 10 years.
Growth haircut default 20%
Owner earnings rarely keep compounding at their old pace, so the model does not take history at face value. It starts from the 5-year compound annual growth rate of owner earnings — the steady yearly rate that gets you from five years ago to the latest year — then reduces that rate by this haircut. A near-zero start year is skipped so a recovery from $5 million to $3 billion is not treated as 250% growth, and if recent owner earnings have collapsed (latest below half the recent peak) that decline is used instead of the longer window. At the 20% default, 10% past growth becomes 8% in the forecast (10% × 80%). After the cut, max growth can still cap the rate (12% by default; 6% for utilities).
Max growth default 12%
A hard cap on the growth rate used in the explicit window, even for fast compounders. Default 12%. Utilities are capped at 6% regardless — rate-base earnings do not compound like software. This is why wonderful businesses often screen as a premium: the model refuses to underwrite heroic growth forever.

Growth used in the model is the 5-year compound annual growth rate of owner earnings (or the 3-year rate if recent OE has collapsed), reduced by the haircut, then limited to max growth — 6% for utilities — and floored at −15%. Terminal growth is also kept just below the discount rate so the Gordon formula stays defined.

Investment grade

Score 0–100 from historical fundamentals, then a letter:

  • Earnings consistency (positive OE years, volatility)
  • OE and revenue trajectory
  • ROE level and persistence (≥12% is a plus)
  • Capital intensity (low maintenance CapEx / OE is better)
  • Balance sheet (debt, current ratio)
  • Valuation margin of safety (weighted into the investment grade more than pure quality)

Letters: A / A- / B+ / B / B- / C / D / F. Negative equity from buybacks (Booking-style) does not get to destroy the whole story via ROE. Financial SICs (6000–6499) and REITs (6798, 6500–6799) carry explicit warnings: this is the wrong model for them.

Filings

Annuals come from SEC EDGAR company facts (XBRL) and submissions. Quotes are public-market proxies (Yahoo chart, Nasdaq, CNBC). The parser prefers the largest revenue series when merging tags so a lease slice or a customer subset cannot masquerade as the business. Share counts that jump ~1,000× between years are rescaled from thousands to units.

Nothing here is advice. Export your ledger; the JSON stores raw filings and assumptions only. Owner earnings, IV, and grades always recompute on open so engine fixes apply without a re-fetch. Back to the watchlist.