Magic Formula Screener

loading…

Portfolio
Number of stocks
Domicile
Sector
Options
—
# Δ Ticker Company Sector Mkt Cap Price ROC ROC # Earn Yld EY # Score EV/EBIT P/E

How the ranking works

  1. Start with the largest 3,500 companies by market capitalisation.
  2. Rank every company 1 → N by return on capital = EBIT ÷ (net working capital + net fixed assets). Highest gets rank 1.
  3. Rank every company 1 → N by earnings yield = EBIT ÷ enterprise value. Highest gets rank 1.
  4. Add the two ranks. A company 232nd on return on capital and 153rd on earnings yield scores 385. Lowest combined score ranks first.

How the screen is meant to be used

  1. Screen. Pull the top-ranked names, then decide how many to hold and how large they should be. A longer list diversifies; larger companies move around less. Strike out anything you would not want to own for your own reasons — but keep at least 20 names, or a single blow-up starts to matter more than the ranking does.
  2. Buy. Fill the whole basket, keeping costs down. If the money is a large share of your long-term portfolio, spreading the purchases across a year avoids betting the entire position on one entry price.
  3. Hold about a year, then sell. The holding period is chosen for tax treatment: let winners cross the one-year line so the gain is long-term, and close losers just before it, while the loss is still short-term.
  4. Rotate. Once the old basket is closed out, screen again and buy the new list. The edge is meant to come from repeating this, not from any one holding.

This describes how the strategy is designed to be run. It is not a recommendation to run it, and nothing here accounts for your own tax situation — the holding-period point in particular depends on rules that vary by country and by person.

Definitions used

Known limits

Educational and informational tool built on public SEC filings. Not investment advice; figures are unaudited and derived automatically from XBRL data, which contains tagging errors.

What simple mode is showing

Simple mode shows stocks based on this preset. It is the same screener with the controls fixed at the settings the strategy is meant to be run with, cut to the top thirty and stripped of everything but the names.

The preset

universeSize=3500
Rank the largest 3,500 companies by market cap.
groupSize=30
Show the top block of 30 — the basket you would buy.
domicile=domestic
US-domiciled filers only.
minMarketCap=50000000
Drop anything under $50M, where spreads make the list unbuyable.
minPrice=5
Drop anything under $5.
nwcMode=simple
Working capital as current assets − current liabilities, rather than Greenblatt's excess-cash adjustment.
minCapitalToRevenue=0.1
Require capital employed to be at least 10% of revenue, so return on capital is not dividing by a near-zero denominator.
minPE=5
Drop P/E under 5 — usually a warning rather than a bargain.
excludeSectorsEnabled=1
Exclude financials and utilities, whose unclassified balance sheets leave working capital undefined.
floorWorkingCapital=1
Treat negative working capital as zero instead of letting it flatter the denominator.
excludeOneOffEarnings=1
Drop companies whose earnings look non-operating, which revert once they lap the event.
backfill=1
Keep widening the pool until 30 names survive the exclusions above. Without this the list comes up short.
includeNegativeEbit=0
Loss-making companies cannot be ranked on either metric, so they stay out.

Turning simple mode off restores your own filters and lets you change any of these. Nothing here is investment advice.

Sign in

or

An account only stores your email and your saved filter views. It is not linked to any brokerage and holds no financial information.

Your account

Signed in as .

Saved views and your last-used filters sync to every device you sign in on.

Refreshing market data

starting…