Real edge, diversifier not wealth builder Mean reversion / event-driven S&P 500 (^GSPC) 56 years · daily

SPX VIX Royal —
Down-Day Mean Reversion

Rigorous replication of the Royal Trader strategy “How a Simple Statistics Strategy beats 95% of Retail Traders”: buy at market close when the day’s open-to-close move is ≤ −threshold%, hold N bars, 10% sizing with pyramiding — tested over 56 years of ^GSPC with robustness checks the article never reported.

Edge real & positive (PF >1.29 all configs) · not consistent across decades · lags buy & hold
56%+
Win rate (every config)
All 5 configs win >56% of trades with PF >1.29 over 56 years
PF 3.05
Walk-forward OOS (2%/24d)
70.3% WR, +34.6% return, −14.2% maxDD over 101 OOS trades
+343.2%
Best total return (0.75%/14d)
PF 1.50 · 60.0% WR · but −29% maxDD
1980s
Decade that lost money
Edge concentrated in the 2000s (dot-com + GFC volatility)

Verdict

The edge is real and positive: every config wins >56% of trades with PF >1.29 over 56 years; max drawdowns line up well with the article once simulated correctly (e.g. −8.4% vs −8.7% for 2%/7d), strong evidence the mechanics are right. Win rates run 5–8 pts below the article (56–63% vs 62–70%) and total returns are roughly half — likely data-feed differences (index vs FXCM CFD).

But it is a diversifier, not a wealth builder: at 10% sizing the strategy earns only ~0.2–0.5%/yr of equity, massively lagging buy & hold (+9,370% over the same 56y). The edge is not consistent across decades (1980s lost money; concentrated in the 2000s) and erodes at 20 bps/side costs. Best config (2%/24d) holds out-of-sample (PF 3.05, 70.3% WR) — but with the worst OOS drawdown of the grid.

The rules

Entry

Buy at market close when the daily candle's open-to-close move is ≤ −threshold% (tested 0.75%, 1%, 2%).

Exit

Close after holding N bars (tested 3d, 7d, 14d, 24d) — fixed holding period, no other exits.

Sizing

10% of portfolio per trade; pyramiding enabled (overlapping positions allowed).

Rationale (author)

Large intraday down-moves = unexpected selling; market makers absorb and hedge, producing short-term mean reversion — the 'VIX Rule of 16' (expected daily move ≈ VIX/16).

56-year backtest vs the article ($100 start, 10% sizing, pyramiding, no costs)

ConfigTrades (ours)Win ratePFMax DDTotal return
2% / 3d34056.5%1.29−7.9%+12.4%
2% / 7d34057.9%1.44−8.4%+25.8%
2% / 24d34062.9%1.86−29.8%+78.4%
0.75% / 14d2,25060.0%1.50−29.0%+343.2%
1% / 7d1,52758.8%1.41−12.3%+100.0%
Article comparison (2%/24d): article reported +101.2% total, PF 2.49, 70.2% WR — our replication +78.4%, PF 1.86, 62.9% WR. Directionally confirmed, roughly half the magnitude, mechanics validated by matching maxDD.

Checks the article didn't report

CheckResultRead
Cost sensitivity (2%/7d)PF 1.44 → 1.17Survives 10 bps/side; erodes at 20 bps/side (retail commissions ≈ 5–10 bps RT — fine)
Per-decade breakdown1980s −$1.03Edge NOT consistent — concentrated in 2000s (dot-com + GFC)
Walk-forward (IS 70% → OOS 30%)PF 3.05, 70.3% WRBest IS config (2%/24d) holds OOS: +34.6%, −14.2% maxDD, 101 trades
vs buy & hold+343% vs +9,370%Risk-adjusted / win-rate edge, NOT return-based

How it was tested

Data

^GSPC daily OHLCV via yfinance, 1970-09-02 → 2026-09-02 (14,118 bars = 56 years). Cached locally. The index is a cleaner test than the FXCM CFD the article used.

Simulation

Real daily equity-curve simulation with the article's stated sizing and pyramiding, marked-to-market daily. Cost sensitivity, per-decade, walk-forward and alternative execution assumptions added.

Configs

2%/3d, 2%/7d, 2%/24d, 0.75%/14d, 1%/7d — all reported, not just the best.

Honesty

The gaps vs the article (win rate −5–8pts, returns ~half) are documented and explained, not hidden.

Run it yourself

python backtest.py        # main 56y backtest → results
python variant_sensitivity.py   # config grid
python enhancement_analysis.py && python finalize_enhancements.py
python export_equity.py    # equity curve export