New to these reports? Start here
  • Dotted-underlined words have a plain-English definition — hover or tap them. Every term is also on the glossary page.
  • "Null" means we found nothing, not that something broke. Most reports here are negative results, on purpose — knowing an idea doesn't work is the point.
  • Two questions get asked separately. First, is the effect real? Second, is it already priced into the betting odds? An effect can be completely real and still useless to bet on.
  • A "calibration" row is a self-check. It runs the same method on something already known to be true. If that fails, the whole report is unreliable — so it's reported alongside the findings.
  • If a confidence interval includes zero, the real effect might be nothing at all, so no claim gets made.

Strategy 001: Magic Formula (Greenblatt)

Source

Joel Greenblatt, The Little Book That Beats the Market (2006).

Thesis

A stock is attractive if it's cheap (high earnings yield) AND if the business is good (high return on invested capital). Rank the universe on both, sum the ranks, hold the top N, rebalance annually.

The market sometimes punishes good businesses with low valuations (temporarily bad sentiment, sector rotation, opaque guidance). The Magic Formula systematically harvests these by buying quality at a discount.

Formula

For each stock: * Earnings Yield = EBIT / Enterprise Value * ROIC = EBIT / (Net Working Capital + Net Fixed Assets)

Rank universe ascending on each (lower rank = better). Sum the two ranks. Hold the 30 stocks with lowest combined rank, equal-weight. Rebalance annually.

Why it might still work in 2025

  • Factor premia decay slowly — value still earns ~3-5%/yr excess over rolling decades despite being well-known
  • Behavioral mechanism is durable: investors over-extrapolate recent bad news on cheap stocks
  • Quality filter (ROIC) prevents the "value trap" failure mode that pure deep value strategies have (Net-Net, low P/E only)
  • Survives transaction costs even on small portfolios (annual rebalance → low turnover)

Why it might NOT work

  • Last 10+ years (2014-2024) have been brutal for value vs growth — the premium may have shrunk or inverted in modern markets
  • Greenblatt's original sample was small/mid cap (~3,500 stocks); our liquid US universe (~150 names) skews larger-cap and may not show the same edge
  • biasbiasWhether the misses lean consistently one way. A projection can have a good average error size but still be biased if it is almost always too high. Bias is often the more fixable problem." data-def="Studying only the things that stuck around. Looking at current players ignores everyone who washed out, which flatters the results.">Survivorship biassurvivorship biasStudying only the things that stuck around. Looking at current players ignores everyone who washed out, which flatters the results. in our universe inflates historical returns

Implementation details

  • Universe: liquid_us (~150 US large/mid cap stocks)
  • Rebalance: annual (matches Greenblatt's prescription; lower turnover than quarterly)
  • Hold count: top 30 names (~20% of universe)
  • Equal weight
  • Excludes financials and utilities (REITs too) — EV/ROIC poorly defined for them; standard Greenblatt screen
  • Excludes negative earnings stocks (EBIT > 0 required)

Data requirements

  • EBIT (from income statement)
  • Total Assets, Total Current Liabilities, Cash (balance sheet)
  • Market Cap, Total Debt (for EV calculation)
  • Net PP&E (balance sheet — for ROIC denominator)

All available from yfinance.Ticker().income_stmt + balance_sheet.

Expected outcome

Greenblatt's original backtest (1988-2009): ~30%/yr annualized, beating S&P by ~20pp.

Subsequent academic studies (smaller universes, transaction costs, later periods) put the realistic excess return at ~3-6%/yr over SPY long-run. Our test period (2015-2025) coincides with a poor period for value — expect mixed-to-weak performance with positive trend.

Pass/fail criteria

  • Pass: CAGR >= SPY CAGR + 2%, max drawdown < SPY's by no more than 5pp, SharpeSharpe ratioReturn relative to how much it bounced around. Higher means smoother returns for the same profit. > 0.5
  • Marginal: CAGR within ±2% of SPY (still useful as diversification, since value-tilt is uncorrelated with SPY beta)
  • Fail: CAGR < SPY CAGR by more than 5%, or max drawdown > 50%