Running a rated universe rather than a tip list: three valuations printed side by side so their disagreements are visible, a rating scale that changes for business reasons and not just price, and the discipline of publishing the rows that embarrass you.
1. Rate the whole universe, not the top five, and publish the ratings you would rather not
The repeatable method
- Define an investable universe once, on quality grounds, and keep it stable enough that ratings mean something over time.
- Give every name in it a standing rating — Strong Buy / Buy / Hold / Sell — refreshed on a fixed cadence.
- Publish the whole sheet, including the names you own that are not rated Buy, and the ones whose numbers embarrass the rating.
- Record what changed since last time as a separate, explicit list: upgrades, downgrades, and the stated reason for each.
- Count the Buys. The count itself is a market indicator — 55 on Buy is a different environment from 12.
Here: "Currently there are 55 stocks on 'Buy'." Every name arrives with all three valuations attached, and the portfolio sheet publishes its own two HOLDs —
LVMUY and
GAW.L, the latter shown
51.1% overvalued and still held. Contrast the monthly
Best Buys format, which shows only a ranked five.
Watch for
- Rating inflation in a rising market: if "Buy" means "in the universe and not disqualified", 55 Buys is a description of the universe, not a signal.
- Whether the sheet reconciles with the prose. It does not here — Dino Polska and Novo Nordisk are cut to Hold in the text and still marked BUY on the portfolio sheet.
2. Print three valuations side by side and treat the disagreement as the signal
The repeatable method
- Value every name three independent ways: an earnings-growth model (growth + yield ± multiple change), a forward PE against the company's own five-year average, and a reverse DCF solved for the growth the price requires.
- Show all three on the same row rather than reporting a single blended verdict.
- Read agreement as conviction and disagreement as a question: which model is being fooled, and by what?
- Learn each model's characteristic failure. The relative-multiple test breaks when the historical average was itself a bubble; the earnings-growth model breaks on an assumed "fair exit PE"; the reverse DCF breaks when the growth estimate is the same number you are trying to test.
- Keep a strict list of the names that clear all three, and treat that as the real shortlist.
Here: the disagreements are stark and instructive. BN is 49.9% undervalued on fair value but 2.2% expensive on its own multiple. FFH.TO is second in the whole universe on the reverse DCF (+14.2pp) and 13.8% expensive on the multiple. QLYS is 59.8% below its historical multiple and fails the reverse DCF by 9.3pp. Only ADBE, IT and LULU sit near the top of more than one screen — and the strict cross-section is stated: "62 companies are undervalued on each valuation method."
Watch for
- A "fair exit PE" of 25.0 appearing on row after row. It is an assumption, not an observation, and it is doing a large share of the work in every expected-return figure on the sheet.
- Five-year averages struck across 2021. A multiple that averaged 64 (Adyen) or 76 (Goosehead) over that window is not a neutral benchmark.
3. Allow a rating to be cut for a business reason, and say so in one line
The repeatable method
- Separate the two reasons a rating can fall: the price rose, or the business got worse. Label which one applies.
- When it is the business, state the mechanism in a few words — here, "increasing competition" — even before you can quantify it.
- Be prepared to overrule your own model. A cheap price is not a defence against a shrinking moat.
- Re-check the position size, not just the rating: a competitive downgrade is a reason to consider owning less, which a price downgrade is not.
- Push the change through every artefact — the watchlist, the portfolio sheet, the summary list — or the downgrade is decorative.
Here: "2 companies went from BUY to HOLD due to increasing competition: Dino Polska ($DNP)… Novo Nordisk ($NVO)." NVO is cut while showing a 54.5% discount to fair value, a 12.3 forward PE against a 27.8 average, and the portfolio's highest expected return at 18.9% — the model is overruled deliberately. Step 5 is where the issue fails: both names are still marked BUY on the portfolio sheet and both still appear in the post's list of "19 out of the 21 companies that we own [that] are a Buy".
Watch for
- A downgrade that stops at the rating and never reaches the weighting. Dino and Novo remain holdings at unchanged size.
- "Increasing competition" as a phrase that closes an argument instead of opening one — no evidence, share data or timeline is offered for either name.
4. Notice when a rule is applied asymmetrically to things you own and things you don't
The repeatable method
- Write down the rule as stated: here, "never sell on valuation; sell only when the investment case is no longer intact."
- Now check how the same input is treated for a name you do not own.
- If price alone is sufficient to earn a Sell on a non-holding, ask honestly why it is insufficient to trim a holding.
- Decide which of the two standards you actually believe, and apply it in both directions — or write down the reason the asymmetry is justified (taxes, transaction costs, the difficulty of re-entry).
Here: WSM is moved HOLD → SELL "due to valuation concerns" — the archive's first published sell rating on a universe name. In the same issue, GAW.L is shown at a 33.1 forward PE against a 23.0 average, 51.1% above fair value, with an expected return of 6.4%, and is simply held. Same input, two verdicts, separated only by whether money is already in the position.
Watch for
- The endowment effect wearing the costume of a principle. "Never sell on valuation" is defensible; it needs the same evidence applied both ways.
- An expected return of 6.4% on a held name, when the framework's own hurdle elsewhere is a 10% required return.
5. Read a great investor's sales more carefully than their purchases, and check them against your own book
The repeatable method
- Track filings for the handful of managers whose process you actually understand.
- Give the exits more weight than the entries — a full exit of a top-three position is a stronger statement than a new small holding.
- Extract the stated reason, not the trade, and test it as a proposition about the business.
- Check the exited name against your own holdings and ratings. If you rate it Buy, either answer the argument or lower the rating.
- Watch what the proceeds went into: the replacement tells you what risk the manager was trying to escape.
Here: TCI "fully exited its position in Microsoft" — its third-largest holding at end-2025 — because "AI could disrupt Office and Azure faster than the market thinks", and rotated into MLM and VMC, businesses with essentially no technological risk. Compounding Quality reports all of this approvingly and then rates MSFT a Buy on the same sheet, without addressing the argument. Step 4 is exactly the step that is skipped.
Watch for
- Filings lag: a 13F position is up to 45 days stale, and this is a Q2 report read in late August.
- Admiring a manager's framework while declining its conclusions — the tollkeeper filter is adopted explicitly in June and its output ignored in August.
6. Test a commodity business for a location monopoly rather than a product advantage
The repeatable method
- For any low-value, heavy or perishable product, compute how far it can travel before freight exceeds its worth.
- That radius is the market. Ask who owns the nearest supply inside it.
- Check whether a competitor could legally build one: land cost, zoning, environmental permitting.
- Treat the resulting position as a toll on local activity, and underwrite the activity rather than the product price.
- Ask what technology could do to it. For many such businesses the honest answer is nothing.
Here: Lynch's argument, quoted from One Up On Wall Street: "Rocks, sand, and gravel are cheap commodities on their own… The real moat for an aggregates business is its location. These companies are essentially local tollbooths." The long-run payoff is given: over 1925–2023, Altria first at more than 16% a year, VMC second — "$1 would have turned into almost $400,000."
Watch for
- A local monopoly whose local activity collapses — the toll is only as good as the traffic, and construction is cyclical.
- Two 98-year survivors used as evidence for a category: this is the same survivorship problem the 20-year base rate exists to correct.
7. Screen on the gap between required and expected growth, and let it find names the multiple hides
The repeatable method
- For each name, solve for the growth rate that justifies today's price at your required return (here, 10%).
- Subtract it from the growth you actually expect. Rank by the difference, in percentage points.
- Prefer names where the required growth is at or below zero — the price is then paying you for growth you have not had to forecast.
- Use it as a cross-check on the multiple screen, not a substitute: the two disagree most exactly where the interesting cases are.
Here: the top of the reverse-DCF list is Equasens (−2.6% required vs 12.7% expected, +15.3pp), FFH.TO (−3.2% vs 11.0%, +14.2pp) and Dream Finders (+12.9pp). Fairfax is 13.8% expensive on the forward-PE screen at the same moment — the two tests point in opposite directions on the same stock, and the reverse DCF is what surfaces it. DECK is the cleanest form: 0.0% growth required against 7.0% expected.
Watch for
- The circularity: "expected growth" is an input you choose, and for many rows here it is simply the same number used in the earnings-growth model. The screen then measures your own optimism.
- Insurers and holding companies, where earnings-based DCFs are the wrong instrument — Fairfax's own book-value-based case sits outside this framework entirely.
Methods distilled from the archived Compounding Quality post for personal study. Not investment advice.