MACROHUB Charts
← all ideas

The Turn of the Month

Seasonality

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.

$10,000 became
$13,731
trailed S&P · $84,529
$10k became
$13,731
CAGR
2.1%
Max drawdown
-16.0%
vs S&P 500
-84%

See this in the terminal — live earnings bands, fair value and rates.

Start free trial
Read 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 11121314151617181920212223242526
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