Mean reversion · daily rule · Indexes & ETFs
Fisher Transform on S&P 500 ETF
What the play says
Latest reading: Fisher 1.48 · Trigger (yesterday) 1.33
SPY with the play, last two years
Shading shows the play's call from the close that triggered it.
Fisher transform (10)
Dashed line at 0.
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 | +3.7% | +11.0% | +5.6% | +13.9% |
| Total return | +121% | +861% | +31% | +91% |
| Worst drawdown | −41.4% | −55.2% | −18.2% | −24.5% |
| Volatility | 11.5% | 18.9% | 11.0% | 17.1% |
| Sharpe ratio | 0.22 | 0.55 | 0.21 | 0.62 |
| Time invested | 54% | 100% | ||
| Switches per year | 49.1 | 0 |
Every call, graded
Right on 409 of 1075 closed calls (38%). In calls averaged +0.2%; out calls saw SPY move +0.2% on average.
| Called | Call | Price | Until | SPY moved | Result |
|---|---|---|---|---|---|
| Oct 5, 2026 | IN | $774.83 | now | +0.4% | open |
| Sep 29, 2026 | OUT | $764.20 | Oct 5, 2026 | +1.4% | ✕ wrong |
| Sep 17, 2026 | IN | $760.71 | Sep 29, 2026 | +0.5% | ✓ right |
| Sep 9, 2026 | OUT | $760.51 | Sep 17, 2026 | +0.0% | ✕ wrong |
| Sep 3, 2026 | IN | $771.25 | Sep 9, 2026 | −1.4% | ✕ wrong |
| Sep 1, 2026 | OUT | $759.89 | Sep 3, 2026 | +1.5% | ✕ wrong |
| Aug 27, 2026 | IN | $769.19 | Sep 1, 2026 | −1.2% | ✕ wrong |
| Aug 17, 2026 | OUT | $770.76 | Aug 27, 2026 | −0.2% | ✓ right |
| Jul 31, 2026 | IN | $745.18 | Aug 17, 2026 | +3.4% | ✓ right |
| Jul 16, 2026 | OUT | $748.86 | Jul 31, 2026 | −0.5% | ✓ right |
| Jun 30, 2026 | IN | $744.92 | Jul 16, 2026 | +0.5% | ✓ right |
| Jun 23, 2026 | OUT | $731.76 | Jun 30, 2026 | +1.8% | ✕ 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 1076 calls shown.
How the play works
- Take the midpoint of each day's high and low, place it in its 10-day range on a −1 to +1 scale, smooth it, and apply the Fisher transform, which stretches values near the edges.
- In when the Fisher line crosses above its trigger, which is yesterday's Fisher value.
- Out when it crosses below.
Ehlers plots the line and its one-day-old copy as a crossover system for turning points but gives no formal entry or exit. Buying the up-cross and selling the down-cross is Be The Puck's reading.
As in his code, the scaled value is capped at ±0.999 and the smoothing starts from zero.
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.