AlphaStocks

Scores are algorithm-generated research tools, not investment recommendations.

How AlphaStocks Scores Every Stock

Scoring engine v23, released 2026-09-23. What changed in v23 and why.

The Problem with Traditional Screeners

Most stock screeners hand you a spreadsheet of raw numbers — P/E ratios, ROE, debt-to-equity — and wish you luck. You end up comparing a bank to a software company using the same yardstick, cherry-picking whatever metric confirms your bias, and calling it “research.”

AlphaStocks evaluates every stock in our 1,500-plus stock coverage universe through five investment methods, each computed the way its source defines it — the book, the paper or the letter, with the page cited — and combines them into a single composite score from 0 to 10. Where a method does not fit a kind of company, the model says so instead of forcing a score.

The Four-Axis Composite Score

Every stock receives a score on four axes. Each axis answers a distinct question about the company. The composite score is a weighted blend of all four (general profile shown; the sector profiles below shift the weights):

Composite = Quality × 0.4 + Value × 0.1 + Momentum × 0.35+ Timing × 0.15
AxisWeightQuestion It AnswersHow it is computed
Quality40%Is this a strong, durable business?Piotroski F-Score (35%) + Buffett (65%), weighted mean of the Quality models that apply and have a score
Value10%Is the stock cheap for what the business is?Graham (45%) + Lynch (25%) + Greenblatt (30%), weighted mean of the Value models that apply and have a score
Momentum35%Is the price moving in the right direction?12-1 month price return — the close about 30 days ago over the close about 365 days ago — ranked across the universe: 10 × the share of stocks with a lower return
Timing15%Is the stock cheap AND rising at the same time?min(Value, Momentum)

A composite needs a Quality axis, a Value axis and a momentum score. A model that does not apply is left out of its axis, never scored as zero; an axis with no model means no composite, and the stock page says why. A model that applies but has too few evaluable signals for a score (Buffett, Graham, Piotroski) counts only if it pulls its axis down: its share of evaluable signals passed enters at its usual weight and the axis is the lower of the two, so missing data never raises an axis (our decision, not a source's).

Axis 1: Quality (40% of Composite)

What it measures: Profitability, financial health and how durable returns have been — read from ten years of annual filings.

How it is built: The Quality axis blends two complementary models:

Piotroski F-Score (35% of Quality)

Nine binary signals from Piotroski (2000) comparing the latest fiscal year with the prior one: profitability, leverage and liquidity, operating efficiency. Complete data or no score.

Buffett Quality Criteria (65% of Quality)

Criteria from Buffett's shareholder letters: return on equity every year and on average, return on tangible capital, moat signals in the numbers, owner earnings, debt, retained earnings and price against intrinsic value.

Axis 2: Value (10% of Composite)

What it measures:Whether the price is cheap by three independent definitions — Graham's, Lynch's and Greenblatt's.

Why it gets a modest weight: Value alone is dangerous. A stock can look cheap for years while the business deteriorates. Value also sets the Timing axis, so it counts twice: directly, and through Timing.

Graham Defensive-Investor Criteria (45% of Value)

The seven criteria for the defensive investor from The Intelligent Investor, chapter 14: size, financial condition, earnings and dividend records, earnings growth, P/E and price-to-book.

Lynch Categories and PEG (25% of Value)

Lynch's six categories from One Up on Wall Street, each valued its own way: dividend-adjusted PEG for growers, survival for turnarounds, assets for asset plays, no P/E test for cyclicals.

Greenblatt Magic Formula (30% of Value)

The Magic Formula: rank eligible companies by earnings yield and by return on capital, add the ranks. Utilities, financials and REITs are not ranked.

Axis 3: Momentum (35% of Composite)

What it measures: 12-1 month price return — the close about 30 days ago over the close about 365 days ago — ranked across the universe: 10 × the share of stocks with a lower return.

Why this definition: Jegadeesh & Titman (1993), Journal of Finance 48(1), pp. 65-91; the most recent month is skipped because one-month returns reverse (Jegadeesh 1990; Carhart 1997). Stocks that have risen over the past year tend to keep rising over the next few months; it is one of the most replicated findings in empirical finance.

Axis 4: Timing (15% of Composite)

What it measures: Whether a stock is simultaneously cheap and gaining momentum.

Timing = min(Value, Momentum)

This single axis is the formula's value-trap killer. If Value is high but Momentum is low, Timing collapses to the lower of the two. The stock cannot score well overall until the market confirms the value thesis by actually bidding the price higher.

Safeguards: Value ≥ 7 with Momentum ≤ 3 shows a value-trap warning. Momentum below 2.5 caps the composite at 6, regardless of the other axes.

One Fair Value per Stock

One fair value per stock, from one method chosen by sector profile. The market price is never an input: no blending toward it, no hiding a value that disagrees with it. Each value comes with its method and a low–base–high range, and is withheld only when the method's inputs are invalid, with the reason shown. The fair value is displayed; it is not an input to the composite score.

Two-stage owner-earnings DCF (Damodaran industry cost of equity)

Used for: General

Formula
Owner earnings per share (net income + D&A − capex, 3-year average) grown for 5 years at the company's 5-year revenue growth (0 to 13.95%), faded over 5 years to 3%, discounted at the Damodaran industry cost of equity, with a terminal value at the stable-growth cost of equity (8.41%)
Range
low / high: every discount rate +1 / −1 point
Withheld when
owner earnings or share count not reported; normalized owner earnings are not positive
Source
Damodaran, Investment Valuation ch. 12 (high growth → transition → stable); owner earnings per the 1986 Berkshire letter; industry costs of equity January 2026 (84 industries, wacc.html)

Industry EV/EBITDA and P/E are shown as context only — never the fair value.

Justified P/B = (ROE − g)/(COE − g) × book value

Used for: Bank, Insurer, Holding company

Formula
(ROE − g) ÷ (COE − g) × book value per share; ROE averaged over 5 years on average common equity, COE 8.41%, g 3%
Range
low / high: COE +1 / −1 point
Withheld when
book value or share count not reported; book value is not positive; normalized ROE does not exceed stable growth
Source
Damodaran, Valuing Financial Service Firms (2009): equity valued from book value and its return

Justified P/E = payout × (1 + g)/(COE − g) on normalized EPS

Used for: Asset manager, Utility

Formula
payout × (1 + g) ÷ (COE − g) × normalized EPS, payout = 1 − g ÷ ROE; EPS and ROE on earnings from continuing operations, EPS averaged over 3 years, COE 8.41%, g 3%
Range
low / high: COE +1 / −1 point
Withheld when
earnings or share count not reported; normalized earnings are not positive; ROE is undefined or does not exceed stable growth
Source
Damodaran, stable-growth dividend discount model (justified P/E)

FFO × Nareit property-group P/FFO

Used for: REIT

Formula
FFO per share (net income from continuing operations + depreciation & amortization) × the Nareit REITWatch property-group median P/FFO
Range
low / high: the property group's 25th / 75th percentile P/FFO
Withheld when
mortgage REIT (FFO does not describe it); net income or share count not reported; FFO is not positive
Source
Nareit FFO definition; Nareit REITWatch, January 2026 (data as of 2025-12-31), pp. 30–35

Nareit FFO also subtracts gains on property sales, which the stored filings do not carry, so FFO can run slightly high in a year of large disposals.

ParameterValueSource
Risk-free rate (10-year Treasury)4.18%Damodaran, Historical Implied Equity Risk Premiums (histimpl.html) (January 2026)
Equity risk premium (implied, S&P 500)4.23%Damodaran, Historical Implied Equity Risk Premiums (histimpl.html) (January 2026)
Stable-growth beta1Damodaran, Valuing Financial Service Firms (2009), p. 20 (betas converge towards one in stable growth)
Stable-growth cost of equity8.41%risk-free rate + beta × equity risk premium (January 2026)
Perpetual growth3%Damodaran, Valuing Financial Service Firms (2009), Illustration 14.2; below the risk-free rate
Range step on every discount rate± 1 pointDamodaran, Valuing Financial Service Firms (2009), Table 14.3 (9% → 10%)
Cap on high-growth rate13.95%Damodaran pedata.html, Total Market expected 5-year growth (January 2026)
Years of earnings averaged into the base3Damodaran, Investment Valuation, ch. 22 (normalize)
Years of ROE averaged5Damodaran, Valuing Financial Service Firms (2009), Illustration 14.2

Sector-Specific Calibration

A bank should not be evaluated the same way as a cloud software company. AlphaStocks uses seven sector profiles. A profile decides which models apply — a model that does not fit is left out, never scored as zero — which fair value method is used, and the composite weights:

ProfileModels that applyFair valueQ / V / M / T
GeneralPiotroski, Buffett, Graham, Lynch, GreenblattTwo-stage owner-earnings DCF (Damodaran industry cost of equity)40% / 10% / 35% / 15%
BankBuffett, GrahamJustified P/B = (ROE − g)/(COE − g) × book value45% / 10% / 30% / 15%
InsurerBuffett, GrahamJustified P/B = (ROE − g)/(COE − g) × book value45% / 10% / 30% / 15%
Asset managerBuffett, Graham, LynchJustified P/E = payout × (1 + g)/(COE − g) on normalized EPS45% / 10% / 30% / 15%
Holding companyPiotroski, Buffett, Graham, LynchJustified P/B = (ROE − g)/(COE − g) × book value45% / 10% / 30% / 15%
UtilityPiotroski, Buffett, Graham, LynchJustified P/E = payout × (1 + g)/(COE − g) on normalized EPS40% / 15% / 30% / 15%
REITPiotroski, Buffett, Graham, LynchFFO × Nareit property-group P/FFO35% / 15% / 35% / 15%

Filings Data Rules

  • Share counts. Every share count is checked against reported EPS: implied shares = net income ÷ EPS (net income available to common where filed, so preferred dividends do not fail a correct count). A count within 15% of the implied one ÷ 1,000 or 1,000,000 was filed in thousands or millions and is rescaled (× the same, filed too large); with no count filed, the implied count is used and flagged; a count off by anything else is kept as filed and flagged, and no fair value is built on it. EPS below $0.10 checks nothing (cent rounding alone moves it too far). With no EPS to check against, the cover-page count of shares outstanding replaces a count more than 2× off it, or a missing one; only without either is the unit guessed from the price. A company with several share classes that reports EPS only per class (and so no count that reconciles) is counted in units of its listed class: net income available to common ÷ the listed class's diluted EPS, as filed in its 10-K or 10-Q — the class whose cover-page trading symbol is the ticker, or with one listed class the class with the most shares outstanding — used only within 2× of that class's own tagged diluted count (a loss year's two-class allocation can make the EPS no longer as-converted); per-share values are then per share of the class the price quotes. A filing that tags some counts in thousands beside others in units is first brought to one unit. Stock splits: a 10-K restates per-share data only for the years it presents, so each filing is put on the latest filing's share basis — the ratio read off the periods two filings both report, counted as a split only within 0.5% of a split ratio and only if the reported EPS moved inversely — and every older share count and per-share figure is adjusted by it. Where no filing links an older year to today's basis, a jump of more than 1.6× between consecutive share counts makes every multi-year per-share comparison across it unavailable.
  • Debt. Where no debt line is tagged, instrument lines (convertible notes, credit lines, loans) are used. Debt counts as zero only when no debt line of any kind is tagged, nothing else in the filing says debt exists, the balance sheet is present (total liabilities, else assets less equity), and interest is at most 0.5% of liabilities and 0.5% of revenue. Otherwise debt stays unknown: unseen debt never reads as no debt. Debt is part of liabilities, so debt above total liabilities (else assets less equity) is a tagging error: that period's debt is left unknown, never used and never read as zero. A negative debt line is likewise dropped and never read as zero. A total-debt line includes the current maturities, so they are subtracted for non-current debt: the current-portion line when tagged, else the current-debt line less short-term borrowings tagged beside it.
  • Companies reporting in another currency. The reporting currency is the one most of a company's revenue and net income facts are filed in; convenience translations into another currency are dropped. Our prices are USD quotes, so for a company reporting in any other currency nothing that sets the price against its per-share figures is computed: it would need an FX rate and the ADR's shares-per-receipt ratio, and we model neither. Quality criteria from the filings alone are still scored. Not computed: market ratios (P/E, P/B, dividend yield, earnings yield, market cap); such a company is also left out of its sector's median P/E; Lynch (every category is valued against the price); Greenblatt (earnings yield sets a USD enterprise value against EBIT); Graham: Adequate size; Moderate P/E on 3-year average earnings; Moderate price to book value; Buffett: Each $1 retained added at least $1 of market value (5 years); Price at or below 75% of intrinsic value; the intrinsic value; the fair value.
  • International (IFRS) filers. Net income: IFRS profit attributable to owners of the parent comes before ProfitLoss, which includes non-controlling interests. Earnings for price ratios: P/E, PEG and the earnings-based fair values (justified P/E, P/FFO, the P/E context) use income from continuing operations when it is filed, else net income, so a disposal gain is not capitalised. A 10-K with no continuing-operations line reported no discontinued operations, so its net income counts as continuing in the trailing twelve months. The EPS records (Graham's ten years, Lynch's growth), Piotroski's ROA and the owner-earnings DCF keep net income, as their sources define them. Price ratios read the trailing-twelve-month row at the live price; quality ratios (ROE, margins) the latest fiscal year. Depreciation & amortization: Each later line is used only in a year where nothing before it is tagged; the last IFRS lines include impairment, which the 1986 letter's "certain other non-cash charges" covers. Capital expenditure: The IFRS combined line (PP&E, intangibles and other non-current assets) is the last fallback. Cost of revenue: Health-care benefit costs are added to cost of goods sold for filers with an insurance segment, unless the filer tags a total cost of revenue, which already includes them. Intangible assets: The total excluding goodwill when tagged; otherwise finite-lived plus indefinite-lived (the indefinite total, else trademarks, franchise rights, licences and other lines summed). Interest expense: Used only with no interest expense line: a net interest expense stands in for it (a floor — interest income is netted in); net interest income is ignored.

Backtest: What the Evidence Shows

We backtest the formula point-in-time: each month, every S&P 500 stock is scored using only filings, prices, and index membership that existed on that date, and the 10 highest-scoring stocks are held in equal weight until the next rebalance. Auditing that backtest, we found and fixed two look-ahead biases — historical scores were reading today's price, and stocks were eligible before they joined the index.

Measure (Jan 2021 – Feb 2026)Top-10 Portfolio*S&P 500 (SPY)
Total return, full period+136.3%+100.3%
Annual alpha, full period+3.9% (t = 0.71)—
Annual alpha, out-of-sample (2024–2026)+2.4% (t = 0.36)—
Maximum drawdown, full period24.8%23.9%
Sharpe ratio, full period0.810.73

*Hypothetical backtested results. Top-10 portfolio = 10 highest-scoring S&P 500 stocks, rebalanced monthly, point-in-time (no look-ahead). Simulated, not actual trading. Does not include transaction costs, taxes, or slippage.

The honest reading:none of the alpha is statistically significant. Out-of-sample CAPM alpha is +0.4% at a beta of 1.11, so the excess return is mostly market exposure, not stock selection. The drawdown was slightly deeper than the market's, and the sign of the out-of-sample alpha flips with basket size (top-20 and top-30 baskets trailed the market). The current weights were chosen on a window that overlaps the out-of-sample period, and a genuine walk-forward of that choice earned -0.3%.

These figures come from the previous (v22) formula. The v23 engine changed how every model is computed and was deliberately not re-backtested: it is judged by fidelity to its sources, not by another return series.

That is why we describe the composite score as a research tool for shortlisting stocks consistently, not a return predictor. The full numbers, the two biases, and the remaining limitations are on the backtest results page.

What the Score Labels Mean

ScoreLabelWhat It Signals
7.5 – 10.0Strong fitComposite in the top band. It needs a Quality axis, a Value axis and a momentum score; momentum below 2.5 caps the composite at 6, so a stock with falling prices cannot reach it.
5.0 – below 7.5Good fitScores well on some axes, not all.
3.0 – below 5.0Weak fitScores low on several axes: fundamentals, valuation or momentum.
0.0 – below 3.0Poor fitLow scores across the board.
—No composite scoreThe stock lacks a Quality axis, a Value axis or 12-month momentum, so no composite is computed. It is shown as absent and listed last, never as 0.

The labels describe how a stock measures up to the five methods and price momentum. They are not buy or sell recommendations.

What the Formula Does Not Do

Transparency means being honest about limitations:

  1. It does not predict the future. Past performance does not guarantee future results.
  2. It underperforms in sideways markets. In sideways, range-bound markets the strategy can lag the S&P 500, since momentum is its second-largest axis.
  3. It is backward-looking. Financial data comes from SEC filings, which report past performance.
  4. It does not capture qualitative factors. Management character, pending lawsuits, regulatory shifts, geopolitical risks.
  5. Individual stock risk is not eliminated. The backtest shows results for a portfolio of 10 stocks. Individual outcomes have much wider variance.
  6. The backtest is simplified. Monthly rebalancing with no transaction costs, taxes, or slippage modeled.

How to Use AlphaStocks Scores

  1. Screen: Sort by composite score or filter by sector, model status, or individual axis.
  2. Investigate: Read the signal breakdowns. Understand why each model rates the stock the way it does.
  3. Contextualize: Does the thesis make sense given what you know about the company and the current market?
  4. Decide: Make your own decision based on the full picture — the score, your research, your risk tolerance.

The score does the quantitative heavy lifting. The judgment is yours.

Explore Individual Models

Each model's criteria, thresholds, sources and status bands, as the scoring code uses them.

Model names reference the published investment methodologies of their respective authors. AlphaStocks is not affiliated with, endorsed by, or sponsored by Warren Buffett, Berkshire Hathaway, Peter Lynch, Fidelity Investments, Joel Greenblatt, Gotham Asset Management, or the estates of Benjamin Graham or Joseph Piotroski. Our implementations follow the cited sources; where they adapt them, the adaptation is named on the model's page.

AlphaStocks provides investment research and analysis, not investment advice. Past performance does not guarantee future results. Always do your own due diligence before making investment decisions. Data sourced from SEC EDGAR and Alpaca Markets.