The Turn of the Month
SeasonalityHold SPY only on the last three trading days of each calendar month and the first two trading days of the next. Sit in cash (0% return) on every other day — roughly three quarters of the calendar. Benchmark is SPY buy and hold.
See this in the terminal — live earnings bands, fair value and rates.
Start free trialRead the story
The turn-of-the-month effect is real — it just isn't big enough to pay for the 75% you missed.
The rule. Hold SPY only on the last three trading days of each calendar month and the first two trading days of the next. Sit in cash (0% return) on every other day — roughly three quarters of the calendar. Benchmark is SPY buy and hold.
What actually happened.
- $10,000 became $13,731. The same $10,000 in Buy and hold (SPY) became $84,528. This strategy trailed the benchmark by $70,797.
- Compounded at 2.1% a year vs 15.3% for the benchmark.
- Best year: 2022 (+16%). Worst year: 2024 (-8%). This is not a smooth ride.
The catch. At its worst, this strategy fell -16% from a prior peak — shallower than the benchmark's -34%. Would you have held through that? Most people don't. That's the whole game.
The takeaway. The lesson isn't "this idea is stupid." It's that the simple, boring benchmark is harder to beat than the pitch decks admit. Before you try to be clever, respect the index.
Drawdown from prior peak
Calendar-year returns
| Line | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Turn of the month (SPY/cash) | -0% | +4% | +7% | -2% | -1% | +0% | +5% | -4% | -2% | +2% | -3% | +16% | +14% | -8% | -0% | +6% |
| Buy and hold (SPY) | +8% | +16% | +32% | +13% | +1% | +12% | +22% | -5% | +31% | +18% | +29% | -18% | +26% | +25% | +18% | +13% |
The last three trading days of a month are only known in advance from the exchange calendar, which is exactly how a real trader would use this rule. How we test
Rebalance: monthly window (last 3 + first 2 trading days), cash otherwise · Window: 2011-09-02 → 2026-09-02 · Last run Sep 2, 2026 · JSON