The Graham Net-Net Backtest: 26 Years, 21,176 Signals — and a Thin Edge
Benjamin Graham's strictest value rule sounds like value investing in its purest form: buy any stock trading for no more than two-thirds of what would be left if the company sold its current assets at book value and paid off every liability. We backtested it across the entire U.S. stock market since 2000, survivorship-free and including every company that has since been delisted: 21,176 signals, 5,108 completed trades in the primary run, 19.46% annual return. The honest part of the finding: most of that is simply the small-stock premium, not the formula itself.
Graham's Strictest Rule: Two-Thirds of Net Current Assets
Benjamin Graham, Warren Buffett's teacher and the founder of security analysis as its own discipline, formulated a rule in the 1930s so simple it borders on absurd: buy a stock only when its entire market capitalization is no more than two-thirds of what would be left if you sold the company's current assets at book value and used the proceeds to pay off every liability and every dollar of preferred stock. That figure is called Net Current Asset Value, or NCAV. A stock meeting this bar trades for less than its current assets minus all liabilities alone — the actual operating business, fixed assets, and goodwill come thrown in for free.
Graham himself described this rule as mechanical and diversified — not an analysis of individual business models, but a statistical bet on a large basket of extremely cheap stocks. That is exactly what we tested: not against a handful of well-known examples, but across the entire U.S. stock market since 2000, survivorship-free — meaning every company that has since disappeared from the exchange, through acquisition, bankruptcy, or delisting, stays in the sample. Counting only the survivors flatters the past.
What We Tested: Two Recipes, One Exit Rule
We ran two versions of the buy rule against each other:
- Original — Graham's rule in its purest form: market cap no more than two-thirds of net current asset value (NCAV = current assets minus all liabilities minus preferred stock at liquidation value). No further conditions.
- Scanner variant — the same two-thirds rule, plus two additional guardrails, matching what our live scanner actually applies: a minimum market cap of $20 million (below that, neither tradability nor data quality can be relied on) and a positive NCAV in the prior period too, so a single bad accounting year can't manufacture a false positive. One approximation worth stating openly: the live scanner checks the prior period quarterly, while the backtest only has annual filings and therefore compares against the prior year — the scanner variant in this backtest reacts more sluggishly than it does live.
Positions are sold following Graham's own rule of thumb, described in "The Intelligent Investor" (Chapter 15): once a position is up 50%, or after two years at the latest, whichever comes first. That is the primary run of this study. We also systematically tested other holding periods and profit thresholds (below), but Graham's own rule remains the reference point.
Trading runs through a 20-slot portfolio, refilled monthly from the currently active signals. When there aren't enough candidates to fill every slot, the remainder sits in cash, unremunerated — a deliberately conservative choice, since a money-market rate would have added a noticeable return contribution over 26 years without the strategy itself having earned it. To avoid depending on the luck of a single starting month, every combination runs across twelve cohorts, each starting one month apart; the figures reported here are their average.
Setup: Survivorship-Free Over 26 Years
The backtest covers January 2000 through June 2026, deliberately starting in 2000 because annual-report coverage thins out sharply before that — a test that populates its early years only with companies that still existed later would be measuring survivors, not real returns. We evaluated 185,030 annual filings, of which 90,016 passed all quality checks; the rest were excluded for reasons including a missing anchor price, missing current-asset data, a stale share-count figure, or currency issues. In the end, 1,340 distinct stocks triggered at least one signal — 21,176 signals in total under the original rule, of which 7,455 additionally satisfy the stricter scanner variant (the scanner variant is a subset of the original, not an additional pool of signals).
The Result: 19.46% a Year
The table below shows the primary run — Graham's original rule, exit at +50% or two years, 1% round-trip trading cost, delisted positions closed at the last traded price — against two reference series.
| Metric | Portfolio (primary run) |
|---|---|
| Annualized return (2000-01 to 2026-06) | 19.46% |
| Volatility | 27.73% |
| Maximum drawdown | −58.86% |
| Hit rate per trade | 64.04% |
| Average return per trade | +29.90% |
| Median return per trade | +48.91% |
| Average holding period | 13.7 months |
| Delisting rate | 7.05% |
| Average cash allocation | 29.00% |
| Completed trades | 5,108 |
| Reference series | Annualized return |
|---|---|
| Equal-weight small/micro-cap universe | 17.89% |
| S&P 500 (SPY proxy) | 8.46% |
At first glance, a clear win: nearly 20% a year over 26 years, with almost two-thirds of all trades landing as winners. The high average cash allocation of 29% comes directly from the fixed 20-slot portfolio: in quiet market phases there simply aren't enough net-net candidates to fill every slot, and the unfilled remainder earns nothing — the strategy generates its return with less than the full capital deployed.
The Most Important Finding: How Much Is the Formula Actually Worth?
This is the crux of the study, and it belongs front and center rather than buried in a footnote: the gap between the net-net portfolio (19.46%) and a simple, equal-weight basket of every small and micro-cap U.S. stock with no balance-sheet screening at all (17.89%) is only about 1.6 percentage points a year. Most of the seemingly impressive return is simply the long-documented historical premium for being invested in very small, under-followed stocks in the first place — an effect that has nothing to do with balance-sheet analysis. The net-net rule's own contribution — the extra value of specifically picking the cheapest small stocks by the numbers — is therefore considerably smaller than the headline "19.46% a year" suggests.
The comparison against the S&P 500 (8.46%) looks far more dramatic, but it is the unfair one. The S&P 500 is made up of the country's largest, most established companies, while net-nets are almost always micro- and nano-caps in financial distress. Pitting two entirely different risk classes against each other inflates how impressive the strategy looks. The honest yardstick is the equal-weight small/micro-cap universe — and measured against that, the net-net formula is positive, but by a thin margin.
Year by Year
The portfolio's annual returns against both reference series show how unevenly this edge is distributed — concentrated in a handful of often highly volatile years, not spread evenly across 26 years:
| Year | Portfolio | S&P 500 (SPY proxy) | Small/micro-cap universe |
|---|---|---|---|
| 2000 (partial) | 0.00% | −5.01% | 12.71% |
| 2001 | 40.70% | −11.76% | 28.88% |
| 2002 | 1.11% | −21.58% | 2.22% |
| 2003 | 131.38% | 28.18% | 82.40% |
| 2004 | 31.51% | 10.70% | 33.99% |
| 2005 | 11.02% | 4.83% | 13.64% |
| 2006 | 17.12% | 15.85% | 26.41% |
| 2007 | −6.52% | 5.15% | 4.94% |
| 2008 | −44.66% | −36.79% | −36.40% |
| 2009 | 123.15% | 26.35% | 80.74% |
| 2010 | 47.34% | 15.06% | 34.71% |
| 2011 | −11.61% | 1.90% | −0.66% |
| 2012 | 48.15% | 15.99% | 23.52% |
| 2013 | 53.84% | 32.31% | 44.93% |
| 2014 | −1.59% | 13.46% | 11.24% |
| 2015 | −17.99% | 1.23% | 12.26% |
| 2016 | 62.75% | 12.00% | 25.67% |
| 2017 | 2.37% | 21.71% | 20.07% |
| 2018 | −10.67% | −4.57% | −11.59% |
| 2019 | 26.97% | 31.22% | 25.45% |
| 2020 | 90.09% | 18.33% | 42.95% |
| 2021 | 11.81% | 28.73% | 26.83% |
| 2022 | −25.09% | −18.18% | −22.80% |
| 2023 | 8.69% | 26.18% | 6.57% |
| 2024 | 95.33% | 24.89% | 18.59% |
| 2025 | 1.83% | 17.72% | 25.63% |
| 2026 (partial) | −7.96% | 10.09% | 10.59% |
The portfolio takes its first position in December 2000; the partial year 2000 therefore shows 0.00% — the ramp-up phase, not a gap in the data.
Notably, in several years where the portfolio beats both reference series by a wide margin (2003, 2009, 2024), the small/micro-cap universe also does very well — a sign that a substantial share of the strong years were simply good years for small stocks in general, not specific to net-nets. In other years (2014, 2015, 2017, 2021, 2025), the portfolio falls behind the small/micro-cap universe despite applying formally stricter selection criteria.
Dispersion across the twelve monthly-offset starting cohorts is moderate for the primary run: annualized return ranges from 17.73% to 20.03% depending on the start month, and maximum drawdown from −58.90% to −58.85%. The result does not hinge on one luckily chosen starting point.
Exit Sensitivity: The Original Rule Remains the Reference
We systematically tested alternative profit thresholds and holding periods:
| Recipe | +50% / 2 years (original) | +50% / 1 year | +50% / 3 years | +100% / 2 years | 2 years only, no threshold |
|---|---|---|---|---|---|
| Original | 19.46% | 28.65% | 18.30% | 20.36% | 17.24% |
| Scanner variant | 22.53% | 20.89% | 20.14% | 22.64% | 18.26% |
A shorter one-year holding period would arithmetically lift the original rule to 28.65% a year — but it would also more than double volatility, from 27.73% to 56.50%, while the maximum drawdown stays essentially unchanged (−56.63% versus −58.86%). The higher return is bought with a markedly rougher ride. We stick with Graham's own +50%-or-two-years rule as the headline result because it is the actual, documented original prescription — not the best combination cherry-picked from a larger search space after the fact. The other variants stand alongside as sensitivity checks, not as a replacement for the primary result.
Trading-Cost Sensitivity: The Core Issue for Micro-Caps
Net-nets are almost always micro- and nano-caps — precisely the stock category where real-world bid-ask spreads and market impact on entry matter most. The table below shows the same strategy at different round-trip trading costs (buy plus sell combined, as a percentage of trade value); "tiered" sets the cost rate by market cap at purchase, ranging from 5% below $25 million to 0.8% above $500 million.
| Recipe · exit | 0% cost | 1% | 2% | 5% | tiered by size |
|---|---|---|---|---|---|
| Original · +50% / 2 years | 20.46% | 19.46% | 18.48% | 15.60% | 16.68% |
| Original · +50% / 1 year | 30.32% | 28.65% | 27.01% | 22.24% | 24.20% |
| Original · +50% / 3 years | 19.03% | 18.30% | 17.57% | 15.44% | 16.28% |
| Original · +100% / 2 years | 21.18% | 20.36% | 19.54% | 17.13% | 18.06% |
| Original · 2 years only | 17.82% | 17.24% | 16.81% | 14.86% | 15.97% |
| Scanner variant · +50% / 2 years | 23.35% | 22.53% | 21.73% | 19.35% | 21.19% |
| Scanner variant · +50% / 1 year | 22.02% | 20.89% | 19.77% | 16.50% | 19.11% |
| Scanner variant · +50% / 3 years | 20.83% | 20.14% | 19.46% | 17.46% | 18.97% |
| Scanner variant · +100% / 2 years | 23.31% | 22.64% | 21.98% | 20.02% | 21.51% |
| Scanner variant · 2 years only | 18.76% | 18.26% | 17.76% | 16.27% | 17.43% |
For the primary run, going from 0% to 5% round-trip cost costs almost 5 percentage points of annual return — 20.46% versus 15.60%. Anyone trying to actually implement this strategy would need to check, name by name, whether the real bid-ask spread is closer to 1% or closer to 5%; for the smallest names under the tiered cost assumption (below $25 million market cap), the higher figure is the rule rather than the exception.
Delisting Assumption: Total Loss as the Floor
When a position in the portfolio ends in a delisting — the company being taken off the exchange through acquisition, bankruptcy, or withdrawal — the primary run continues to value it at the last actually traded price. That is a generous assumption, since not every delisting can realistically be sold at that exact price. As a mandatory counter-check, we therefore also ran the same scenarios under the assumption "delisting = total loss":
| Recipe · cost | Last traded price | Total loss | Difference | Delisting rate |
|---|---|---|---|---|
| Original · 0% | 20.46% | 12.21% | −8.25 pp | 7.05% |
| Original · 1% | 19.46% | 11.33% | −8.13 pp | 7.05% |
| Original · 2% | 18.48% | 10.46% | −8.02 pp | 7.05% |
| Original · 5% | 15.60% | 7.90% | −7.69 pp | 7.05% |
| Original · tiered | 16.68% | 8.81% | −7.87 pp | 7.05% |
| Scanner variant · 0% | 23.35% | 20.96% | −2.38 pp | 5.41% |
| Scanner variant · 1% | 22.53% | 20.17% | −2.36 pp | 5.41% |
| Scanner variant · 2% | 21.73% | 19.39% | −2.33 pp | 5.41% |
| Scanner variant · 5% | 19.35% | 17.09% | −2.26 pp | 5.41% |
| Scanner variant · tiered | 21.19% | 18.91% | −2.28 pp | 5.41% |
For the primary run (1% cost), the return falls from 19.46% to 11.33% a year under this pessimistic assumption — the truth is likely somewhere between the two figures, since a delisting doesn't automatically mean a total loss (acquisitions, for instance, often pay a premium), but it doesn't always mean the last traded price either. For the scanner variant, with its $20 million minimum market cap, the gap is noticeably smaller (a 2.36-point return hit instead of 8.13; delisting rate 5.41% instead of 7.05%) — a sign that the size filter genuinely screens out some of the delisting risk.
In the primary run, 51.78% of all 5,108 trades closed by hitting the profit threshold, 36.47% closed after the holding period expired, 7.05% closed via delisting at the last traded price, and 4.70% were force-closed at the edge of the available data.
Data Quality: Ghost Prices and Outliers Filtered Out
Net-nets are almost by definition micro-caps with thin price-data histories — and that is exactly where raw data regularly contains errors that a balance-sheet formula like this one is especially prone to exploit: a spuriously recorded phantom price shortly before an IPO makes a market cap look tiny and can make the stock falsely appear to be an extreme bargain. An automated data-quality check systematically identified and cleaned such corrupted price series before any signals were computed:
| Metric | Value |
|---|---|
| Stocks with identified and cleaned price series | 219 |
| Discarded, unusable monthly data points | 12,478 |
| Individual outlier prices removed | 925 |
Without this cleanup, the result would have been grotesquely inflated: an initial, unfiltered run before cleaning produced an obviously nonsensical return of 308.63% a year — a clear sign that corrupted price data was disproportionately slipping through as false net-net signals. Every figure reported here comes exclusively from the cleaned run.
Daily Price Coverage: Not Every Exit Is Pinpointed to the Day
Whether the 50% profit threshold has been hit is checked most precisely with daily prices. Of the 1,340 stocks that produced a signal at all — and could therefore ever enter the portfolio — 838 (62.54%) actually have daily price series; for the rest, the profit threshold had to be checked against monthly data instead. Measured across the full evaluation universe of 8,518 stocks with a usable annual filing, coverage stands at 4,778 series, or 56.09%. The missing daily resolution can shift the actual exit date slightly compared to a day-precise check — usually by a few days, occasionally more if the threshold is briefly crossed and re-crossed mid-month. For just under two-thirds of the tradable stocks, the result is therefore day-precise; for the rest, it is checked on a monthly basis.
Point-in-Time Cleanliness
A backtest that uses figures which weren't actually published yet at the time systematically overstates itself. We therefore used only metrics that were genuinely known at the time of the signal — with a 90-day grace period after the fiscal year-end before an annual filing is even eligible to enter the calculation. A filing also counts as "stale" and no longer produces a signal once it is older than 18 months — so no stock keeps triggering signals for years on a company's last available numbers when that company may no longer exist in that form.
The share-count series used from the data source carries figures exclusively as of December 31. For companies with a different fiscal year-end, the 180-day tolerance between the balance-sheet date and the share-count date means that 15,573 annual filings (8.4% of everything evaluated) drop out of the calculation because the available share count sits too far from the balance-sheet date; a further 14,487 filings carry no share count at all — a deliberate choice against imprecise market caps, at the cost of a certain number of missed signals.
And finally: the universe is survivorship-free. Every company that has since disappeared from the exchange remains in the test for as long as it existed and reported data at the time.
Comparability Gap to the Live Scanner
One point that needs to be stated plainly, because it limits how directly this study compares to our running net-net scanner: Graham's original formula, when computing net current asset value, also deducts a company's preferred stock — logically so, since preferred shareholders rank ahead of common shareholders in a wind-down. This backtest applies that same deduction. Our live scanner, however, has been unable to reliably apply that deduction since 2024, because the data provider we use simply stopped supplying the relevant field. In practice, that means current live hits from the scanner can run somewhat "softer" for companies with meaningful preferred stock than the historical signals tested here — they may only satisfy the two-thirds rule because the preferred stock that should have been deducted is missing from the data.
Limits of This Study
Five caveats belong in any honest account of this result:
- The edge over the small/micro-cap universe is thin — the most important finding of this study, discussed above. Most of the return is the general small-cap premium, not the specific payoff from the balance-sheet formula.
- Trading costs matter a great deal. At realistic micro-cap spreads, the return shrinks noticeably; anyone trying to implement this strategy for real would need to check the actual tradability of every single name.
- The delisting assumption is a range, not a point estimate. For the primary run, the gap between "last traded price" and "total loss" is over eight percentage points a year.
- Comparability gap to the live scanner. The missing preferred-stock deduction since 2024 makes current live signals tend to run softer than the ones tested here.
- The S&P 500 comparison is an approximation. In the absence of an available total-return series, the dividend-adjusted price series of the SPY ETF was used as a proxy, not an official total-return index series.
The strategy tested here runs as its own continuously updated scanner using the rules shown above. Further in-house backtest studies are available in the Studies section.
Figures as of August 7, 2026.
This article is a historical analysis of a publicly known investment rule and does not constitute investment advice. It contains no buy or sell recommendation, no forecast, and no statement about any individual, currently listed company. Past results — whether simulated or real — are not a reliable indicator of future returns. Anyone making investment decisions should assess their own situation and risks, seeking professional advice if in doubt.
Frequently Asked Questions
A stock trading on the market for no more than two-thirds of what would be left if the company sold its current assets at book value and used the proceeds to pay off all liabilities and all preferred stock (Net Current Asset Value, or NCAV). The actual operating business and fixed assets come thrown in for free at that price. The rule was formulated by Benjamin Graham in the 1930s.
Two versions of the buy rule — Graham's original with no further conditions, and a stricter scanner variant with a $20 million minimum market cap and a clean prior period — each selling at +50% profit or after two years at the latest, across the entire U.S. stock market from 2000 to 2026, survivorship-free and including every stock later delisted.
The primary run (original rule, 1% trading cost, delisted positions closed at the last traded price) delivers 19.46% annualized return across 5,108 completed trades, with a 64.04% hit rate. Measured against the equal-weight small/micro-cap universe (17.89% over the same period), however, the formula's own edge is thin.
Mostly the latter. The gap to the equal-weight small/micro-cap universe is only about 1.6 percentage points a year. Most of the 19.46% is the historical premium for being invested in very small, under-followed stocks at all — not the specific payoff of picking the cheapest ones by the numbers.
Substantially. At zero trading costs, the primary run's return is 20.46% a year; at 5% round-trip cost — realistic for very small, illiquid stocks — it drops to 15.60%. Net-nets are almost always micro-caps, where real bid-ask spreads can consume a meaningful share of the theoretical return.
The primary run continues to value it at the last actually traded price — a generous assumption. As a counter-check, the same run was repeated under the pessimistic assumption "delisting = total loss": the return then drops to 11.33% a year. That's the floor; the truth is likely somewhere in between.
Not quite one-to-one. The backtest correctly deducts preferred stock from net current assets, as Graham's rule requires. Our live scanner can no longer do that since 2024, because the data provider stopped supplying the necessary field — current live hits for companies with preferred stock can therefore run somewhat "softer" than the signals tested here.
The thin edge over the small/micro-cap universe, the cost sensitivity for micro-caps, the range around the delisting assumption, the comparability gap to the live scanner, and the approximation used for the S&P 500 comparison — a dividend-adjusted ETF price series rather than an official total-return index.