Style of Picks

Magic Formula

Rank every stock by how cheap it is (earnings yield) and how good the business is (return on capital), combine the two ranks, and mechanically own the best ~20โ€“30 for a year.

Value~1 year per holding; judge over 3+ yearsbeginner-intermediateFree

The thesis โ€” why it works

Greenblatt compressed Buffett-style investing into two numbers: buy above-average businesses at below-average prices.

  • Cheapness โ†’ Earnings Yield = EBIT รท Enterprise Value. (EBIT and EV, not P/E, so it is neutral to debt and tax.)
  • Quality โ†’ Return on Capital = EBIT รท (Net Working Capital + Net Fixed Assets). High = the business turns capital into profit efficiently.

Rank the entire market on each metric separately, add the two rank numbers, and buy the names with the best combined rank. It is mechanical, unemotional, and diversified. In the book's backtests it beat the market handsomely over the long run โ€” the catch is that it underperforms often enough, and for long enough, that most people quit. That discomfort is the edge.

When to use it

  • You want a rules-based value approach with minimal stock-by-stock judgment.
  • You can hold 20โ€“30 names and rebalance roughly once a year.
  • You can sit through 1โ€“2 year stretches of trailing the index without abandoning ship.

When to avoid it

  • You want a concentrated, high-conviction portfolio.
  • You can't tolerate tracking error versus the benchmark.
  • Your horizon is short โ€” the formula needs multiple years to express itself.

The screen (Screener.in)

The pure formula ranks the whole market; Screener.in filters. So we filter down to a strong shortlist, then sort within it.

Criterion Rule Why
Market cap > โ‚น500 Cr avoid illiquid micro-caps
Return on capital employed > 25% the "good business" leg
Earnings yield > 8% the "cheap price" leg
Sector exclude banks / NBFCs / utilities EBIT-over-capital is distorted for financials

Copyable Screener.in query:

Market Capitalization > 500 AND
Return on capital employed > 25 AND
Earnings yield > 8

If your Screener view doesn't expose Earnings yield, substitute Price to Earning < 15 as a cheapness proxy. ROCE is Screener's closest field to Greenblatt's Return on Capital.

The procedure

  1. Run the query on Screener.in.
  2. Delete financials, utilities, and anything you genuinely can't understand.
  3. Rank the survivors two ways โ€” by ROCE (highโ†’low) and by earnings yield (highโ†’low) โ€” add each stock's two rank numbers, and sort ascending.
  4. Buy the top 20โ€“30, roughly equal-weighted. Stagger entries (e.g. 5โ€“7 names every couple of months) so you're not timing one day.
  5. Hold each name ~1 year, then rebalance into the fresh list.

Decision & risk rules

  • Position size: equal weight, ~3โ€“5% each โ€” diversification is the whole point.
  • Holding period: ~1 year per name; in a taxable account, mind long- vs short-term capital-gains timing.
  • Rebalance: annually; replace names that dropped off the list.
  • Discipline: don't override individual picks you happen to dislike โ€” cherry-picking breaks the mechanical edge.
  • Exit / invalidation: the position's "thesis" is simply its rank; if it no longer makes the list at rebalance, it goes.

Common mistakes

  • Cherry-picking names you "like" โ€” destroys the statistical edge.
  • Too few stocks โ€” reintroduces single-name risk the method is designed to average out.
  • Quitting after a bad year โ€” the historical outperformance lives on the far side of that pain.
  • Leaving financials in โ€” their capital structure distorts both metrics.

Further reading

  • Joel Greenblatt, The Little Book That Still Beats the Market.
  • magicformulainvesting.com (the original US screener).

Educational only โ€” not investment advice. Run the screen and decide for yourself.