Value Investing Analytics

Methodology

This page explains how the rankings are built and shows the backtests behind them. Every chart can be clicked to open a large, zoomable view. The research is informative but limited, and we have tried to say plainly where.

The short version

The live Final Score

The published Final Score is a hand-set weighted mix of five percentile-ranked factors. Each factor is ranked across the whole list, so the score lands on a 0 to 1 scale.

FactorWeight
Gross Profitability to Total Assets45%
3-Year Revenue CAGR20%
Year-over-Year Share Shrink (buybacks)15%
12-Month Momentum10%
Year-over-Year Revenue Growth10%

P/E Ratio (latest price divided by trailing-twelve-month EPS, shown only when EPS is positive) and Earnings Yield (trailing-twelve-month EBIT divided by enterprise value, following the EBIT/TEV convention in Quantitative Value) are displayed for context. Enterprise value is market cap plus current and long-term debt minus cash and short-term investments. Our data source does not report preferred stock or minority interest, so those are not included. They are not part of the Final Score.

The experimental columns

Two experimental scores sit beside the Final Score. They are for comparison and do not affect the published rank.

We also tested a range of other approaches (gradient boosting, ridge and random-forest models, IC-weighted blends, factor-subset searches, quality and momentum gates, a small-cap tilt). Three are worth watching in a shadow test: monotone LightGBM, a 12-month-label Huber model, and a 24-month-label Ridge model. None is on the homepage. See the results table for why none has earned a place yet.

Backtest setup

How much data is behind each chart?

Stocks per test date. On 75 of 111 dates there are only 11 to 49 stocks, so a decile holds one to four names and its average is mostly noise. The decile and quintile charts below therefore use only the 36 dates with 50 or more stocks (about 23 per decile). Those dates hold 83% of all observations.

Deciles: mean and median return

Decile 1 holds the lowest-ranked stocks, decile 10 the highest. Bars are average 36-month returns, diamonds are medians, whiskers are 95% bootstrap intervals for the mean. Blue panels are the homepage experimental columns, orange are research candidates, grey is the live score. Deciles are noisy: neighbouring bars are usually within each other's intervals, so look at the broad slope and at the gap between mean and median rather than at any single bar.

Quintiles: a steadier view

Same idea with five buckets. Each bucket holds about 46 stocks per date, so the averages are more stable than deciles. We treat quintiles as the main view and deciles as the detailed one.

Stability: first half versus second half

Does the pattern hold in both halves? Light bars use dates through mid-2018, dark bars use later dates. Each of the four learned models shown has a smaller top-minus-bottom gap in the second half, the live Final Score turns negative, and Revenue/Shrink/Assets does the opposite (negative first, positive second). With 17 and 19 dates per half the intervals are wide.

Top minus bottom, with uncertainty

Quintile spread per algorithm. The dot is the average gap between the top and bottom fifth; the bar is its 95% interval. Most bars cross zero and overlap, so the ordering between neighbouring algorithms is not reliable. The right panel shows the first-half and second-half gap.
Candidates versus baselines. This asks the direct question: is a candidate better than Huber All11, Revenue/Shrink/Assets, or the live score? Against the two experimental columns every interval includes zero. Only monotone LightGBM clearly beats the live Final Score, which is a weaker bar to clear. After correcting for having tried about 34 variants, the best candidate's edge is not statistically distinguishable from luck (p about 0.08).

Results table

Quintile spread = average 36-month return of the top fifth minus the bottom fifth, in percentage points, with a 95% bootstrap interval in brackets. IC is the average rank correlation between score and outcome.

Algorithm Spread, all 111 dates Spread, 36 dates with 50+ stocks First / second half IC Our read
Final Score (live)Live Final Score+7 [-15, +34]+12 [-31, +58]+27 / -120.096Live score. Best rank correlation, weakest tails; turns negative in the second half.
Equal-weight live 5Live Final Score+11 [-8, +36]+10 [-33, +55]+22 / +10.113Reference: equal-weight version of the live five factors.
Revenue/Shrink/AssetsHomepage experimental column+15 [-0, +33]+6 [-9, +24]-6 / +340.039Kept as a benchmark. Factors were chosen on the full sample; negative first half, strong second half.
Huber All11Homepage experimental column+18 [+4, +36]+35 [+11, +61]+24 / +120.051Kept. Most stable of the baselines across both halves.
Monotone LightGBMResearch candidate (not on site)+25 [+7, +46]+26 [-5, +58]+37 / +140.084Shadow-test only. Highest nominal spread, but fades in the second half.
Huber, 12m labelResearch candidate (not on site)+24 [+9, +39]+35 [+9, +67]+27 / +210.068Shadow-test only. Same model class as Huber All11 with a shorter label.
Ridge, 24m labelResearch candidate (not on site)+19 [+4, +32]+24 [+7, +41]+20 / +170.051Shadow-test only. Simple and stable, but smaller in magnitude.
Random forest, top tercileDiagnostic / rejected+22 [+0, +43]+29 [+2, +56]+15 / +290.071Rejected. Inconsistent across metrics.
Rank-average ensembleDiagnostic / rejected+12 [-8, +34]+21 [+0, +46]+19 / +60.059Rejected. No better than Huber All11.
Live 5 + 20% small-cap tiltDiagnostic / rejected+17 [-11, +46]+36 [+5, +74]+33 / +20.120Rejected. The gain is mostly a size / survivorship effect.
Small-cap only (not an algorithm)Diagnostic / rejected+22 [-8, +51]+57 [+38, +80]+24 / +190.049Diagnostic: smallest names alone. Explains why the tilt was rejected.

What the backtest cannot tell you

Reproducibility: the numbers behind every bucket chart are in methodology_chart_data.csv.

Earlier ensemble study

Show earlier charts (older sample and method set; read with caution)

These come from an earlier, broader study (2008 onward, different method list, all dates pooled equally). They were made before we audited cross-section sizes, so their top-decile and decile-spread numbers are less reliable than the charts above. The older decile and 10%-spread charts have been retired and replaced by the sections above.

Mean rank IC by method, earlier study.
Top 20% minus bottom 20% spread, earlier study.
How similar the methods' rankings are. Highly correlated methods are largely restating one ordering.
Hypothetical growth of $10k in each method's top decile. Top deciles on thin dates can be a single stock, so treat this as illustration only.

This page describes research on historical data. It is not investment advice, and past results do not predict future returns.