Positive but tiny · low win rate Contrarian / mean-reversion SPY · QQQ 2 years · daily

Royal Turnover —
Contrarian Fear/Greed

Backtest of the Royal Trader “Still Afraid of Market Turnovers?” strategy: a composite −10 (extreme fear) to +10 (extreme greed) score from 5 technical indicators, buying only at max retail fear and exiting at greed peaks.

Directionally correct contrarian mechanics · returns far below buy & hold
+2.86%
SPY total return
1.42% ann · Sharpe 0.70 · maxDD −3.05% · WR 10.8%
+7.21%
QQQ total return
3.56% ann · Sharpe 0.67 · maxDD −7.67% · WR 14.2%
10–15%
Win rate
Typical for bottom-picking — few big wins fund the book
5
Indicators in the score
Ichimoku · RSI · MACD · Stochastic · Bollinger, vs 200-EMA

Verdict

The strategy demonstrates the contrarian principle (buy fear, sell greed) and controls drawdown (max −3% SPY / −7.7% QQQ), but over the 2-year test it returned +2.86% (SPY) / +7.21% (QQQ) — modest, far below buy-and-hold of the same period, with a low 10–15% win rate typical of bottom-picking.

The test window is only 2 years of daily data — too short to judge a low-frequency contrarian rule. The mechanics (5-indicator composite filtered by 200-EMA, ≤4 concurrent positions at 25% each, pyramiding) are faithfully implemented and the results CSV is published trade-by-trade. Treat as a validated implementation of a marginal long-run idea, not a validated edge.

The rules

Composite score

Sum of 5 indicator scores (Ichimoku Cloud, RSI, MACD, Stochastic, Bollinger Bands), all filtered against the 200-period EMA. Range −10 (extreme fear) to +10 (extreme greed).

Entry

Long only when the composite hits fear thresholds (≤ −7 / −8 / −9 / −10).

Exit

Close when the composite reaches greed (≥ +10).

Sizing

Max 4 concurrent positions, 25% capital per position, pyramiding enabled (up to 5 positions configurable).

Backtest (2 years daily, yfinance)

SymbolTotal returnAnnualSharpeMax DDWin rateFinal
SPY+2.86%1.42%0.70−3.05%10.78%$102,856
QQQ+7.21%3.56%0.67−7.67%14.17%$107,212
Caveats: 2-year window only; no costs modeled; no benchmark differential reported in the repo. The strategy requires discipline — many early entries are losses waiting for the big market recovery.

Run it yourself

pip install yfinance pandas numpy
python backtest_strategy.py   # downloads SPY+QQQ, backtests, writes CSVs
# outputs: backtest_results.csv, backtest_results_qqq.csv