The setup is almost embarrassingly simple
Two rules. No indicators. No filters.
Entry: If Monday closes below the previous Friday's close, buy at the close.
Exit: Sell when today's close exceeds yesterday's high.
That's it. No moving average filter. No RSI threshold. No parameter to tune beyond the entry condition itself. The strategy is either in the market waiting for an exit, or it's flat waiting for the next Monday decline.
The logic is straightforward: markets tend to overreact to negative sentiment heading into the week. Monday weakness often reflects that emotional overshoot. The exit — waiting for a close above the prior day's high — lets the trade run until there's confirmation that buyers have actually taken control, rather than cutting it arbitrarily.
The strategy fires on roughly one in three Mondays. In 23 years, it took 406 trades — and was idle for more than 80% of the time.
Why I tested it the way I did
Most strategy writeups you'll find online show a single equity curve. The full historical period, all parameters already dialled in, presented as evidence that the strategy "works." That's not a test. That's a description of the past fitted to look like a prediction.
At EdgeLab, every strategy goes through a strict in-sample / out-of-sample split before I take it seriously. The data is divided once, up front, and the out-of-sample window is locked away during development. Whatever the result is on that held-out data — that's the result. No re-tuning. No "just one more tweak."
For this test:
- —In-sample: January 2003 to December 2018 (16 years, 293 trades). Used to verify the concept makes sense and check parameter sensitivity.
- —Out-of-sample: January 2019 to December 2025 (7 years, 113 trades). Never touched during development. This is where the strategy either holds up or it doesn't.
The numbers
Here's what 23 years actually looks like when you split the data honestly:
| Metric | In-Sample (2003–2018) | Out-of-Sample (2019–2025) |
|---|---|---|
| CAGR | 9.89% | 12.10% |
| Sharpe Ratio | 0.82 | 1.04 |
| Max Drawdown | -19.51% | -9.96% |
| Win Rate | 75.8% | 79.6% |
| Trades | 293 | 113 |
| Time in Market | 25.2% | 18.5% |
The out-of-sample period is stronger than in-sample on every meaningful metric. Sharpe improves. Max drawdown nearly halves. Win rate ticks up. I'll explain why this mild OOS outperformance is worth flagging below — but first, the headline: the strategy works on data it never saw.
Why the edge exists
The Turnaround Tuesday effect isn't arbitrary noise. There are structural reasons it should persist.
Markets process information unevenly over the weekend. By Monday open, retail sentiment — negative headlines, weekend anxiety, social media — has often pushed prices lower than the fundamentals warrant. Institutional money, which tends to operate on longer time horizons, often steps in as that sentiment reverses. Tuesday becomes the mean-reversion.
The fact that this pattern has held for more than two decades across both bull and bear markets suggests it's structural, not statistical coincidence. It fired during the dot-com collapse, the 2008 financial crisis, the 2020 COVID crash, and the 2022 rate shock — all extreme regimes that would have destroyed a more fragile pattern.
The exit rule reinforces this. Waiting for a close above the prior day's high before selling means the strategy captures the full reversal move rather than exiting prematurely on an intraday bounce. The average hold is 2–3 trading days.
SPY confirms it
A strategy that works on one instrument might be an artefact of that instrument's specific history. The real test is whether the same rules — zero changes — hold up on a different market.
I ran identical parameters on SPY (S&P 500 ETF) as a validation instrument. The result:
| Metric | QQQ (Primary) | SPY (Validation) |
|---|---|---|
| OOS CAGR | 12.10% | 11.92% |
| OOS Sharpe | 1.04 | 1.16 |
| OOS Max Drawdown | -9.96% | -11.29% |
| OOS Win Rate | 79.6% | 79.7% |
SPY actually produces a higher Sharpe (1.16 vs 1.04) on the same rules. Win rates are virtually identical to two decimal places. This is what validation should look like: not a slight variation of the original, but independent confirmation that the edge isn't instrument-specific.
What to watch for
The OOS performance is stronger than in-sample on every metric. That deserves honest scrutiny.
Part of the explanation is regime: 2019–2025 included several high-volatility, mean-reversion-rich environments — the COVID crash, the 2022 rate shock, the 2024 AI correction. Those conditions are unusually favorable for a strategy built on Monday-to-Tuesday reversals. In a sustained, low-volatility trending market, this strategy fires less often and the individual trades are less violent.
The other thing worth watching: the strategy generates roughly 16 trades per year in the OOS window. That's not many. Individual years can look quite different from the aggregate. 2019 and 2023 were strong. 2022 still worked — but by a narrower margin. Any single bad year shouldn't be surprising, and shouldn't trigger re-optimisation.
The 113 OOS trades provide a reasonable statistical foundation, but it's not a large number. I treat this as production-ready — not because the edge is guaranteed, but because the evidence is sufficient and the downside is bounded by a max drawdown under 10%.
How to trade it
The rules are precise enough to run without discretion:
-
1
Check Monday at close. If the QQQ (or SPY) closing price is below the previous Friday's close, enter long at close.
-
2
Hold until exit condition. Each subsequent day, check if today's close is above yesterday's high. If yes, exit at close.
-
3
Position sizing. I use a fixed fractional approach. Given the max drawdown profile, this strategy can absorb 10–20% of portfolio allocation without the drawdown becoming psychologically unmanageable.
-
4
No override. If the entry condition fires, you enter. If the exit condition triggers, you exit. The edge comes from consistency — removing judgment is the point.
The strategy can be automated via a TradingView alert set to trigger at Monday close, or coded directly against a broker API. The entry and exit logic are simple enough that implementation error is the main risk, not signal interpretation.