Methodology

Method and sources

Every rule that sets a number or a verdict in a report, in plain words, with the research behind it. Each report marks its numbers with small note numbers 1 and lists the sources it used at the end.

What the sources do and do not show. They support how each rule is built. None of them shows that our fair value beats the market: valuation methods explain today's prices, not future returns. Treat a fair value as a structured opinion with a wide error band, not a prediction. Not investment advice.

25 rules, 44 published sources (23 checked in the full text, 16 from a summary, 5 not verified yet) and 6 of our own tests. How we mark each source:

The rules

Grouped by topic. Each rule says what it does, which sources back it and where it lives in our code.

Discount rate and risk

Market risk premium

The discount rate uses the market risk premium implied by S&P 500 prices (Damodaran's monthly figure, restated on the report's Treasury rate), never one solved from our own model.

Sources: Damodaran 2026, Damodaran 2026. Code: valuation/market_erp.py, valuation/data/market_erp.json.

Beta pulled toward 1

A company's beta is pulled toward 1 (two-thirds its own, one-third the market's) within 0.8-1.6, and is 1 for the years after the forecast.

Sources: Damodaran n.d., Morningstar 2022, Blume 1975. Code: valuation/methods.py, valuation/methods.py.

Growth and base rates

Growth held to base rates

Years 1-2 use the analysts' revenue forecasts; years 3-5 are held to what companies of the same size achieved after a fast year (75th percentile in the base case, 90th only in the bull case).

Sources: Mauboussin, Callahan & Majd 2016, Koller, Goedhart & Wessels (McKinsey) 2010, Chan, Karceski & Lakonishok 2003, StockXray research 2026. Code: valuation/dcf_bounds.py, valuation/base_rates.py.

Growth fades by year 10

Growth fades to the long-run rate by year 10 for every company: a moat lengthens high returns, not high growth.

Sources: Koller, Goedhart & Wessels (McKinsey) 2010, Mauboussin & Callahan 2016, Morningstar 2022. Code: calculators/dcf.py.

Bull and bear from what companies really did

The bull and bear cases grow sales at the 90th and 10th percentile of five-year growth of companies of the same type and size (the size class when the type has too few), because real growth is about twice as spread out as forecasts and skewed upward.

Sources: Mauboussin, Callahan & Majd 2016, Chan, Karceski & Lakonishok 2003, Keefer & Bodily 1983. Code: valuation/dcf_bounds.py, valuation/base_rates.py.

Competitive advantage and returns on capital

Moat from the company's own record

The moat rating comes from reported numbers: how often and by how much return on capital beat the cost of capital over up to 10 years, and how stable margins were. It sets how long excess returns last.

Sources: Mauboussin & Callahan 2016, Morningstar 2022, Mauboussin, Callahan & Majd 2016, Chan, Karceski & Lakonishok 2003. Code: valuation/moat.py, valuation/moat.py.

Returns on new investment fade

Returns on new investment start at no more than 35% and fade toward the cost of capital from year 1, slower for wide moats and steady sectors, faster for energy and materials; growth adds value only while they exceed the cost of capital.

Sources: Koller, Goedhart & Wessels (McKinsey) 2010, Mauboussin, Callahan & Majd 2016, Mauboussin & Callahan 2016, Mauboussin & Callahan 2014, Fama & French 2000. Code: calculators/dcf.py.

Small permanent excess return for moats

After the forecast, new investment by a wide-moat company keeps at most 4 points above the cost of capital (narrow 1.5, none 0) instead of exactly the cost of capital.

Sources: Koller, Goedhart & Wessels (McKinsey) 2010, Damodaran n.d., Nissim & Penman 2001. Code: calculators/dcf.py.

Valuation methods and the blend

Several valuation methods, blended

The fair value blends several methods because cash-flow and comparable-company values together explain prices better than either alone; no single method gets more than 35% of the weight.

Sources: Kaplan & Ruback 1995, Clemen 1989. Code: synthesis/valuation_blender.py (LEG_WEIGHT_CAP), valuation/playbooks.py.

Cyclicals valued on mid-cycle margins

For cyclical companies, cash flow and the own-history value use the median margin of up to 10 years times today's revenue, not this year's margin.

Sources: Damodaran n.d., Koller, Goedhart & Wessels (McKinsey) 2010, Graham & Dodd 1934. Code: valuation/playbooks.py, valuation/playbooks.py.

Peer multiples: harmonic mean, forward P/E first

Peer multiples use the harmonic mean of comparable companies, with forward P/E weighted most and price/sales least.

Sources: Liu, Nissim & Thomas 2002, Koller, Goedhart & Wessels (McKinsey) 2010. Code: valuation/peers.py, valuation/peers.py.

Drug pipelines valued by phase success rates

Each drug is valued by its chance of approval for its phase and disease area and by the years still to launch (9, 6, 3 and 1 from phases I, II, III and filing).

Sources: BIO, Informa Pharma Intelligence & QLS Advisors 2021, Wong, Siah & Lo 2019. Code: valuation/sector_methods.py, valuation/sector_methods.py.

Buy and sell lines, uncertainty

Buy and sell lines grow with uncertainty

The upside needed for a Buy (and the downside for a Sell) grows with how uncertain the value is; the strong-buy and strong-sell lines are Morningstar's 5-star and 1-star levels, and at extreme uncertainty the buy and sell lines are its 4-star and 2-star levels; higher-quality companies may be held longer.

Sources: Morningstar 2022, Bradshaw, Brown & Huang 2013, Asness, Frazzini & Pedersen 2013. Code: synthesis/synthesizer.py, synthesis/decision.py.

What sets the uncertainty level

Uncertainty rises with 12-month price swings (100% or more a year is extreme), with how far apart the analysts' earnings forecasts are (top fifth or tenth of companies), and with a distress score in the riskiest 5% of companies.

Sources: Morningstar 2022, Diether, Malloy & Scherbina 2002, Campbell, Hilscher & Szilagyi 2008. Code: synthesis/synthesizer.py, calculators/dispersion.py, risk/chs.py.

Not reliably valued

When our methods disagree too much and fewer than two fundamental methods give a value, we publish the range they support and no single fair value, and the call stays at Hold.

Sources: Morningstar 2022, van der Bles, van der Linden, Freeman & Spiegelhalter 2020. Code: synthesis/unvalued.py, synthesis/unvalued.py.

What the price expects, analysts

Analyst targets: small weight

The analysts' average price target, in today's money, gets at most 15% of the blend because targets are optimistic and often missed.

Sources: Bradshaw, Brown & Huang 2013, Chan, Karceski & Lakonishok 2003. Code: synthesis/valuation_blender.py.

What you need to believe

We state the sales growth today's price needs on the same model as ours, next to how often companies of this size grew that fast.

Sources: Rappaport & Mauboussin 2001, Mauboussin, Callahan & Majd 2016. Code: synthesis/expectations.py, valuation/base_rates.py.

What the price expects

We turn the price back into the growth it implies and compare it with the company's trend; the most optimistic expectations were followed by low returns, so 'priced for perfection' can hold a Buy back.

Sources: Bordalo, Gennaioli, La Porta & Shleifer 2019, Bordalo, Gennaioli, La Porta & Shleifer 2024, Chan, Karceski & Lakonishok 2003, Rappaport & Mauboussin 2001. Code: synthesis/expectations.py, synthesis/decision.py.

Accounting quality and red flags

Accounting red flags: scores, not AI labels

Only scores the code computes can disqualify a stock for its accounts (an earnings-manipulation score, accruals and a misstatement score), and only when at least two agree; an AI red flag can at most lower conviction one level.

Sources: Sloan 1996, Green, Hand & Soliman 2011, Beneish 1999, Dechow et al. n.d., Xiong et al. 2023. Code: synthesis/forensic_gate.py.

Debt distress

A company in its industry's highly leveraged band whose market distance to default is 1 or less is disqualified; in our 2012-2022 test such companies became distressed far more often than the rest.

Sources: StockXray research 2026, Bharath & Shumway 2008. Code: synthesis/forensic_gate.py.

Distress score: shown, never a disqualification

We show a published 12-month failure probability built from profits, debt, cash, returns, volatility and size; in our 2012-2019 test it was less precise than the distance to default, so it only raises the uncertainty and never disqualifies.

Sources: Campbell, Hilscher & Szilagyi 2008, StockXray research 2026. Code: risk/chs.py, synthesis/forensic_gate.py.

Value-trap check

A cheap stock whose F-score is 3 or less cannot get a Buy: the F-score separates winners from losers among cheap stocks.

Sources: Piotroski 2000. Code: synthesis/decision.py.

Return signals: share issuance and profitability

Share issuance + cash profitability screen

Companies that issue few new shares and earn high cash operating profits did better than their industry peers; the screen passed a pre-registered test on years it had not seen, so it may move conviction one level, never the action.

Sources: Pontiff & Woodgate 2008, Daniel & Titman 2006, Ball, Gerakos, Linnainmaa & Nikolaev 2016, StockXray research 2026, StockXray research 2026, McLean & Pontiff 2016. Code: signals/live.py, synthesis/decision.py.

Signal composite: information only

The wider seven-theme signal composite failed its pre-registered test on 2012-2022, so it is shown for information only and never moves the verdict.

Sources: StockXray research 2026, Jensen, Kelly & Pedersen 2023, Kozak, Nagel & Santosh 2020. Code: signals/composite.py, signals/live.py.

AI forecasts and probabilities

Scenario chances from base rates

Scenario chances are fixed (30% bear, 40% base, 30% bull, the weights that keep the spread of outcomes with bull and bear at the 90th and 10th percentile), not an AI's guess: AI-stated probabilities tend to be optimistic and overconfident.

Sources: Chen, Green, Gulen & Zhou 2024, Xiong et al. 2023, Schoenegger et al. 2024, Halawi et al. 2024, Keefer & Bodily 1983. Code: synthesis/probability_priors.py.

Bibliography

Every source the rules cite, grouped by topic.

Discount rate and risk

Growth and base rates

Competitive advantage and returns on capital

Valuation methods and the blend

Buy and sell lines, uncertainty

What the price expects, analysts

Accounting quality and red flags

Return signals: share issuance and profitability

AI forecasts and probabilities

Our own tests and reviews