TL;DR — the answer box
- The classic 40 in, 20 out — buy a close above the 40-day high, sell a close below the 20-day low — still makes money long-only on SPY: 84 trades over 33.4 years, $10,550.27 net on a $10,000 account (105.5% total, frictionless), 47.6% win rate, 2.7% CAR.
- The famous exit is the weak link. A plain 20-bar time exit beat the 20-day-low channel exit on return, drawdown and return-to-drawdown: 3.71 CAR vs 2.69, 18.2% max drawdown vs 26.3%, CAR/MaxDD 0.20 vs 0.10.
- Buy-and-hold beat both on raw return — 8.8% CAR (price-only) — but with a 56.5% max drawdown. The breakout system's case is survival, not speed: roughly half the market exposure and half the drawdown.
- The short side is a graveyard. Every unfiltered breakdown entry under the channel-20 cover lost money; the 10-day version lost $18,266.49 with a 181.1% max drawdown — the account didn't just underperform, it died.
- The edge is decaying. Average 20-day return after a 40-day breakout: 0.851% in 1993–1999, 0.272% in the 2000s, 0.268% in the 2010s, 0.016% in 2020–2026.
How we tested
If you've ever watched a market close at a new 40-day high and wondered whether chasing it is discipline or delusion — this is for you.
It is the hedge-fund trend rule so old and so simple it feels like it can't possibly still work. Buy when price closes above its highest high of the last 40 days. Sell when it closes below its lowest low of the last 20. That piece made the argument from history. This rebuild makes it from the engine — every claim re-tested, and a few of my own conclusions overturned in the process. I explain the strategy's logic in The Hedge Fund Strategy No One Talks About on the StatOasis YouTube channel; this article is the unfiltered test.
The setup, in plain English. A Donchian channel is nothing more than the highest high and the lowest low of the last N days — two lines, no math beyond a maximum and a minimum. A channel breakout system buys strength (a close above the upper line) and exits on weakness (a close below the lower line). No prediction, no targets. The bet is that new highs lead to more new highs — that trends, once started, persist.
We tested it on SPY daily data from 1993-02-02 to 2026-06-12 — 8,398 bars, 33.4 years. The engine found 805 breakout events (a close above the prior 40-day high) and ran 1,188 backtest variants: two directions, six entry lengths (10/20/40/55/100/150 days), eleven exits (channel exits at 10/20/40/55 days head-to-head against fixed holds of 0–20 bars), and a 3×3 grid of volatility and trend regime filters. Every entry fills at the next bar's open, and both regime filters are read on the signal close before it, so nothing uses look-ahead. Account: $10,000, full-account shares, no compounding, flat-only, frictionless. Every number below comes from the study's locked facts file, computed straight from the result CSVs.
Does the 40 in, 20 out strategy still make money on the S&P 500?
Yes — long-only, and modestly. The classic configuration, no filters:
| Metric | 40 in / 20 out (Long) | SPY buy-and-hold |
|---|---|---|
| Net result on $10,000 | $10,550.27 (105.5%) | 16.7x multiple |
| CAR (annual return) | 2.7% | 8.8% (price-only) |
| Max drawdown | 26.3% | 56.5% |
| Time in market | 50.4% | 100% |
| Trades | 84 (2.5/yr) | — |
| Win rate | 47.6% | — |
| Profit factor | 1.75 | — |
Profit factor — gross wins divided by gross losses — of 1.75 means the winners paid for the losers with real room to spare. The average win was $613.98 against an average loss of $318.38, a payoff ratio of 1.93: classic trend following, losing slightly more often than it wins but winning nearly twice as big.
Notice what the comparison actually says, though. Buy-and-hold made more than three times the annual return. The breakout system's entire case is the other two rows: it slept in cash almost half the time, and its worst valley was 26.3% deep against the index's 56.5%. In this backtest the system bought a shallower valley with a smaller return. That trade is the whole product.
Is the 20-day-low exit actually the right exit?
I expected the channel exit to defend its crown. It didn't.
Same entry rule — a close above the 40-day high — eleven different ways out, long, no filters. (Because the backtest is flat-only, a different exit changes when the strategy is free to re-enter, so the exact realized trades differ even though the trigger rule doesn't.)
| Exit | Trades | Net profit | Win% | CAR | MaxDD% | CAR/MaxDD | Exposure% |
|---|---|---|---|---|---|---|---|
| Channel 10-day low | 119 | $7,285.15 | 44.5 | 1.84 | 29.0 | 0.06 | 41.3 |
| Channel 20-day low (the classic) | 84 | $10,550.27 | 47.6 | 2.69 | 26.3 | 0.10 | 50.4 |
| Channel 40-day low | 55 | $16,435.40 | 56.4 | 4.25 | 20.4 | 0.21 | 63.6 |
| Channel 55-day low | 41 | $20,765.42 | 63.4 | 5.40 | 25.0 | 0.22 | 71.3 |
| Hold 3 bars | 439 | $2,149.51 | 58.5 | 0.54 | 14.2 | 0.04 | 20.9 |
| Hold 10 bars | 256 | $6,335.90 | 61.3 | 1.79 | 21.2 | 0.08 | 33.5 |
| Hold 20 bars | 174 | $12,916.31 | 66.1 | 3.71 | 18.2 | 0.20 | 43.5 |
Two results here are worth the whole study.
First: the dumb time exit won its head-to-head. Holding each trade for exactly 20 bars (no signal, no channel, just a calendar, with the next breakout taken only once flat) beat the classic 20-day-low exit on net profit ($12,916.31 vs $10,550.27), max drawdown (18.2% vs 26.3%), and return-to-drawdown (0.20 vs 0.10), with a 66.1% win rate. Over the full 1993 to 2026 backtest, the celebrated exit rule lost to "sell in a month."
Second: of the channel exits tested here, the 40-day-low exit clearly beat the classic 20-day-low, more than doubling its CAR/MaxDD (0.21 vs 0.10). The 55-day exit posted the highest net profit, CAR and CAR/MaxDD in the table ($20,765.42, 5.40 and 0.22), but on only 41 trades, which is below our 50-trade reliability bar. Flagged, not trusted — this table does not establish that exits keep improving the wider you go.
Among the four channel exits, the tighter the exit, the more often it closed and the less it kept. The classic 20-day exit turned over 84 trades at 50.4 bars each. The 40-day exit took 55 at 97.2 bars and doubled the return-to-drawdown. The 20-bar clock breaks that pattern: it closed 174 trades and still kept more than the classic. The grid ranks exits, it does not isolate why. What it does show is that on these entries the 40-day channel, the 55-day channel and the 20-bar clock each earned more than the classic exit with a shallower drawdown.
Do longer breakouts really get stronger?
Trend-following folklore says the longer the lookback, the more meaningful the breakout. The sweep says otherwise — on SPY the 20-day entry posted the highest CAR of the six lengths tested, and every lookback longer than it earned less:
| Entry | Trades | Net profit | Win% | CAR | MaxDD% | CAR/MaxDD |
|---|---|---|---|---|---|---|
| 10-day high | 128 | $12,740.60 | 46.1 | 2.90 | 42.3 | 0.07 |
| 20-day high | 102 | $14,457.91 | 46.1 | 3.76 | 32.9 | 0.11 |
| 40-day high | 84 | $10,550.27 | 47.6 | 2.69 | 26.3 | 0.10 |
| 55-day high | 80 | $6,312.57 | 43.8 | 1.46 | 28.1 | 0.05 |
| 100-day high | 69 | $6,621.26 | 47.8 | 1.66 | 19.5 | 0.09 |
| 150-day high | 65 | $5,197.73 | 49.2 | 1.24 | 21.4 | 0.06 |
(All with the classic channel-20 exit, long, no filters.) The 20-day entry — the highest-CAR entry length tested — beat the 150-day entry's CAR three times over, 3.76 to 1.24. The grid cannot say why, but the events file shows what a long-lookback breakout usually is on this index: 74.2% of SPY's 40-day-high breakouts were also 200-day-plus highs. In an index that drifts up, a long-lookback breakout isn't an early trend signal — it's a late arrival at a party that's been running for months. The fresh breakouts carried the juice: events that broke the 40-day high but not yet the 55-day high averaged +1.457% over the next 20 days, versus +0.106% for breakouts at 200-day-plus highs.
One honest flag before you optimize: the single best reliable long variant by CAR/MaxDD in the grid (entry 10, hold 20, trend filter on) posted a 0.38 CAR/MaxDD on 201 trades. It's a real cell, and it's also exactly the kind of lone peak I tell you not to trust. A grid maximum is a starting hypothesis, never a conclusion, because a search that size returns a best-looking result whether or not an edge is there — that's the difference between testing for robustness and curve-fitting.
Why doesn't shorting breakouts work on stocks?
On SPY it did worse than "not work." Unfiltered, under the classic channel-20 cover, three of the six entry lengths drew down past 100%. Mirrored breakdowns — a close below the prior N-day low, covered at the 20-day-high channel — long-side logic flipped honestly:
| Entry | Trades | Net profit | Win% | CAR | MaxDD% |
|---|---|---|---|---|---|
| 10-day low | 146 | −$18,266.49 | 18.5 | −5.81 | 181.1 |
| 20-day low | 102 | −$16,214.41 | 21.6 | −5.21 | 160.9 |
| 40-day low | 67 | −$13,621.55 | 20.9 | −4.33 | 135.9 |
| 55-day low | 48 | −$7,905.24 | 25.0 | −2.59 | 79.6 |
A max drawdown above 100% means the $10,000 account was gone before the backtest finished — the 10-day short variant drew down 181.1%. Across the entire grid, only 104 of 594 short variants ended positive, and 102 of those 104 sit below our 50-trade reliability floor, carry a regime filter, or both; exactly 2 are reliable and unfiltered. That is the strongest thing this grid says, and it is not subtle: 490 of the 594 tested short variants finished at or below zero on this SPY sample. That is a result on one index over one window, and it sits beside what a coin flip does on the same data. It's the same asymmetry we found when the identical breakout rule behaved differently on the Nasdaq, S&P, and Dow: one rule, three indices, three different results.
Do trend and volatility filters fix false breakouts?
First, the uncomfortable base rate. Retests aren't an edge case — they're the norm under this study's own 60-bar definition: 94.2% of the 805 breakouts retested the broken level within 60 bars, and 53.0% touched it on the entry day itself. Within 20 bars, 80.1% of events traded at least +1% above entry at some point and 68.1% traded at least −1% below. The average worst excursion (−2.75%) slightly exceeded the average best (+2.57%) in size. Comfort and pain both turned up inside 20 bars, and those rates are measured across every event rather than split by filter state.
What the two rising-only filters did change is the depth of the drawdown, and they charged for it in profit. Each filter reads its state on the breakout's own signal close, before the entry. On the classic 40/20 long:
| Filter state | Trades | Net profit | CAR | MaxDD% | CAR/MaxDD |
|---|---|---|---|---|---|
| No filters | 84 | $10,550.27 | 2.69 | 26.3 | 0.10 |
| ATR(20) rising only | 61 | $8,357.01 | 2.17 | 18.7 | 0.12 |
| ATR(20) falling only | 76 | $11,189.04 | 2.98 | 25.5 | 0.12 |
| SMA(100) rising only | 74 | $8,411.56 | 2.18 | 19.1 | 0.11 |
| ATR and SMA both rising | 58 | $4,450.12 | 1.05 | 29.6 | 0.04 |
ATR, average true range, is a standard gauge of recent daily movement. Taking only breakouts while it was rising dropped the trades from 84 to 61, the worst drawdown from 26.3% to 18.7%, and the net profit from $10,550.27 to $8,357.01. Return-to-drawdown moved from 0.10 to 0.12. The trend filter did almost the same: a 19.1% drawdown, $8,411.56, 0.11. Rising volatility was not a special state either. Taking only breakouts while ATR was falling also scored 0.12, on more profit ($11,189.04) and a deeper drawdown (25.5%). Stacking both rising filters did not smooth the ride. It left 58 trades, $4,450.12 and a 29.6% drawdown, worse than no filter at all. Either rising filter on its own bought a shallower realized max drawdown, and both charged for it in profit. That is five tested states on one market, not a verdict on regime filters in general, and rising ATR is not the same condition as a big-range day.
Has the breakout edge decayed?
Decade by decade, from the events layer (every breakout measured, overlaps kept):
| Period | Events | Avg 5-day return | Avg 20-day return | % positive at 20 days |
|---|---|---|---|---|
| 1993–1999 | 173 | +0.198% | +0.851% | 66.5% |
| 2000–2009 | 150 | −0.260% | +0.272% | 60.7% |
| 2010–2019 | 279 | +0.129% | +0.268% | 63.1% |
| 2020–2026 | 203 | −0.036% | +0.016% | 62.6% |
The direction of travel is one way. The 1990s paid a breakout buyer +0.851% over the next month; the 2020s paid +0.016%, the smallest decade average in the table. Breakouts still resolve upward more often than not (62.6% positive even now), but the size of the follow-through has fallen to almost nothing on this index. Direction and size are different questions. The direction held in every era measured; the size did not.
The verdict — and the honest limits
Where the original claim holds: the strategy is real. Long-only channel breakouts on the S&P 500 made money across 33 years, through three crashes, on rules you can write on an index card. The short side is exactly as dead as claimed — deader, actually, with data. Simple survived.
Where the folklore breaks: the famous parts were beaten by plainer ones. The 20-day-low exit — the "20 out" in the name — lost to a plain 20-bar clock. The 20-day entry beat every longer lookback on SPY instead of the longest being strongest. And the per-breakout payoff has decayed every decade to near zero in the 2020s. The rule's skeleton works; its mythology doesn't.
One strategy on one market is a solo instrument. Trend following was always written for an orchestra — the hedge funds this rule comes from never traded it on one index; they traded it on dozens of markets at once and let diversification carry what no single market could. That portfolio test is the natural next study, on real futures data with proper roll treatment.
The limits, because a study that hides them isn't worth trusting:
- Frictionless. No commission or slippage. At 2.5 trades a year there are few fills to pay for, but no cost was modelled, so every number here is frictionless.
- The buy-and-hold benchmark is price-only. The 8.8% shown excludes dividends, and this study never computed a dividend-inclusive benchmark, so the true gap to a total-return SPY is not measured here.
- Thin cells are flagged, not trusted. The channel-55 exit's headline rests on 41 trades; several filter combinations run thinner. Across the grid, 626 of 1,188 variants clear the 50-trade bar.
- One market, one instrument. SPY the ETF, not index futures — no leverage, no roll costs, and conclusions about "trend following" beyond US large-caps are not licensed by this data.
- The classic did not clear the random control on return-to-drawdown. A seeded random-entry control, matched to the grid's median reliable variant rather than to the classic itself, scored a CAR/MaxDD of 0.059 with a spread of 0.051 across 10 seeds. The classic's 0.10 sits inside that spread. The 20-bar clock (0.20) and the 40-day channel exit (0.21) sit outside it.
- Decade rows are overlapping events, not independent samples — read them as drift, not as four independent experiments.
- No compounding, fixed $10,000. Deliberate — it keeps 1990s trades and 2020s trades comparable — but it means dollar figures are not what a compounding account would show.
What this means for you
- On SPY, this backtest supports the long side only. Under the classic channel-20 cover with no filters, the short side lost at every entry length tested, worst case −$18,266.49 on a $10,000 account.
- Rethink your exit before your entry. The 20-bar time exit beat the classic channel exit (0.20 vs 0.10 CAR/MaxDD). The reliable 40-day channel exit also beat the tight one (0.21 vs 0.10); the 55-day exit scored higher still but on only 41 trades, below this study's reliability floor. On these entries, changing the exit moved return-to-drawdown further than either rising filter did: 0.10 to 0.20 for the clock, against 0.10 to 0.12 for ATR rising.
- Don't assume longer lookbacks are stronger — test your market. On SPY the 20-day entry beat the 150-day threefold on CAR. On another market the ranking may flip; that's the point of testing.
- The rising filters sold a shallower drawdown, not a free one. On the classic long, ATR(20) rising took the max drawdown from 26.3% to 18.7% and the net profit from $10,550.27 to $8,357.01. Stacking the trend filter on top made both worse.
- Read the 26.3% drawdown before the equity curve. It is the deepest valley this backtest hit in 33.4 years, and if a valley that deep would make you quit, the strategy was never yours.
- Judge it as a portfolio ingredient, not a lottery ticket. It made a 2.7% CAR at 50.4% time in market with a 26.3% max drawdown against buy-and-hold's 56.5%. Whether those two properties diversify a portfolio is a correlation test this study never ran, so pair it with mean-reversion tools like Casey Bands and measure the pair rather than asking it to be your whole account.
Putting a breakout system of your own through the same survival questions starts with the backtest you already have. That is the input AlgoChef takes — it scores the result and stress-tests it rather than running the test again.








