Breakouts & channels · daily rule · Indexes & ETFs
Chande Kroll Stop on S&P 500 ETF
What the play says
SPY with the play, last two years
Shading shows the play's call from the close that triggered it.
Growth of $10,000 since 2005
Log scale. After trading costs, with T-bill interest while out.
The record
The play against buying and holding SPY over exactly the same dates, after costs.
| Play, since 2005 | Hold, since 2005 | Play, 5 yrs | Hold, 5 yrs | |
|---|---|---|---|---|
| Annual return | +4.8% | +11.0% | +7.8% | +13.9% |
| Total return | +176% | +861% | +45% | +91% |
| Worst drawdown | −35.8% | −55.2% | −14.3% | −24.5% |
| Volatility | 10.6% | 18.9% | 10.3% | 17.1% |
| Sharpe ratio | 0.33 | 0.55 | 0.41 | 0.62 |
| Time invested | 66% | 100% | ||
| Switches per year | 16.9 | 0 |
Every call, graded
Right on 97 of 368 closed calls (26%). In calls averaged +0.7%; out calls saw SPY move +0.7% on average.
| Called | Call | Price | Until | SPY moved | Result |
|---|---|---|---|---|---|
| Sep 21, 2026 | IN | $773.50 | now | +0.6% | open |
| Sep 9, 2026 | OUT | $760.51 | Sep 21, 2026 | +1.7% | ✕ wrong |
| Sep 2, 2026 | IN | $763.26 | Sep 9, 2026 | −0.4% | ✕ wrong |
| Sep 1, 2026 | OUT | $759.89 | Sep 2, 2026 | +0.4% | ✕ wrong |
| Aug 25, 2026 | IN | $764.01 | Sep 1, 2026 | −0.5% | ✕ wrong |
| Aug 24, 2026 | OUT | $761.58 | Aug 25, 2026 | +0.3% | ✕ wrong |
| Aug 21, 2026 | IN | $763.82 | Aug 24, 2026 | −0.3% | ✕ wrong |
| Aug 20, 2026 | OUT | $760.71 | Aug 21, 2026 | +0.4% | ✕ wrong |
| Jul 31, 2026 | IN | $745.18 | Aug 20, 2026 | +2.1% | ✓ right |
| Jul 29, 2026 | OUT | $727.65 | Jul 31, 2026 | +2.4% | ✕ wrong |
| Jul 6, 2026 | IN | $749.42 | Jul 29, 2026 | −2.9% | ✕ wrong |
| Jun 17, 2026 | OUT | $737.23 | Jul 6, 2026 | +1.7% | ✕ wrong |
An in call is right when the price rose before the next call; an out call is right when it fell. The latest 12 of 369 calls shown.
How the play works
- The long stop is the highest value over 20 days of the 10-day high minus 3 × the 10-day average true range. The short stop is the lowest value over 20 days of the 10-day low plus 3 × that range.
- In when a close is above both stop lines.
- Out when a close is below the long stop. Between the lines, the rule keeps its last call.
The book's settings (10, 3, 20) with a simple-average ATR, per the pandas-ta notes that cite the book (p. 95). TradingView's popular default (10, 1, 9 with Wilder's ATR) is a different variant.
The stops serve long and short trades. Be The Puck only takes the long side and acts on daily closes.
Where the rules come from
The case against
Valeriy Zakamulin tested moving-average timing on up to 155 years of U.S. stock data and found no statistically significant edge in the second half of that record. The rules earned their keep in a few severe bear markets and lagged buy and hold for long stretches in between.