Strong on crypto + stocks · marginal commodities Trend following / breakout Crypto · Stocks · Indexes · Futures 5 years · daily · 10bps costs

20-Day Breakout /
10-Day Trailing Stop

Every day, find symbols that just made a new 20-day high (long) or 20-day low (short), rank by volatility-normalised strength, buy the top 5 per side and ride a 10-day trailing stop — tested over 5 years across crypto, stocks, indexes and commodities, net of 10bps round-trip costs, with a real 10,000-sim Monte Carlo.

Tradeable edge on crypto & equities · commodities marginal
+9,588%
Crypto net (5y)
PF 3.84 · 100% MC profitability · 1,813 trades
+2,413%
US stocks net
PF 1.83 · 100% MC profitability · 2,459 trades
×162.4
Crypto compounded (1% risk/trade)
+176.8% CAGR · maxDD 3.9% · net of costs
30/30
Parameter combos profitable
lookback 10–30 × trail 5–30 all positive, PF 3.3–4.4

Verdict

Crypto is the strongest venue (PF ~3.8–4.0 net, 100% MC profitability, largest trade count) and US stocks/indexes show a solid persistent edge (PF ~1.8–2.0, 100% MC profitability). Commodities/futures are marginal net-of-cost (PF 1.17, 83% MC profitability) — not reliably tradeable with this parameter set.

The strategy is robust to parameter choice — all 30 lookback×trail combos are profitable (PF 3.3–4.4) — and survives realistic 10 bps round-trip costs in the two strongest asset classes. At a constant 1% risk/trade, the 5-year compounded result is ×162.4 on crypto (+176.8% CAGR, 3.9% maxDD).

Honest caveats: returns are sum-of-returns (equal-weight per trade), not a compounded equity curve; trailing-stop fills assume the stop level (gaps can be worse); both universes have survivorship bias (only currently-trading symbols); drawdowns are large at equal weight (92–220% maxDD P50 on the sum-of-returns basis).

The rules

Signal

Long: today's high > max(HIGH[-20:-1]) → new 20-day high. Short: today's low < min(LOW[-20:-1]) → new 20-day low.

Strength ranking

strength = (close − 20-day SMA) / ATR(14) — volatility-normalised deviation from mean.

Positioning

Equal weight: top 5 longs + top 5 shorts per day (10 max concurrent). Enter at next bar's open — no lookahead.

Exit

10-day trailing stop: lowest low (long) / highest high (short) of prior 10 days incl. entry bar, updated daily.

5-year backtest (gross vs net of 10 bps RT)

Asset classTradesGross retGross PFNet retNet PF
Crypto-perps (Bybit)1,813+9,778%3.98+9,588%3.84
Stocks (US)2,459+2,671%1.97+2,413%1.83
Indexes1,657+695%1.76+521%1.52
Commodities/Futures1,421+509%1.25+359%1.17

10,000 block-bootstrap sims (NET of costs)

Asset classTerm P5Term P50Term P95P(profit)MaxDD P50
Crypto-perps+7,260%+9,624%+12,241%100.0%92.5%
Stocks (US)+1,638%+2,389%+3,254%100.0%193.3%
Indexes+274%+515%+780%100.0%220.2%
Commodities/Futures−239%+341%+979%82.8%458.0%
Compounded-equity MC (1% risk/trade, net): crypto ×162.4 (+176.8% CAGR, 3.9% DD) · stocks ×5.04 (+38.2%) · indexes ×3.69 (+29.8%) · commodities ×1.63 (+10.3%) · all combined ×4,939 (+447.9%). Even the 5th-percentile outcome is strongly positive for crypto, stocks and indexes.

How it was tested

Data

5 years daily OHLCV (2021-08-31 → 2026-08-31): 43 Bybit perps, 153 US equities, 38 index ETFs, 18 commodity/futures ETFs. Real sources, cached, pagination fixed.

Costs

5.5 bps taker + 5 bps slippage per side = 10 bps round trip on net figures.

Monte Carlo

10,000 block-bootstrap sims resampling the actual realised trade P&L list (preserving regime autocorrelation), compounding into equity curves — not a synthetic gaussian.

Validation

Full 30-combo parameter grid (lookback 10–30 × trail 5–30); all profitable. No-lookahead verified (signals from prior 20 days only, entries next open).

Run it yourself

python fetch_bybit_v3.py        # perp data (fixed pagination)
python fetch_yfinance_v2.py     # stocks/indexes/futures
python run_backtest.py          # strategy backtest → results.json
python monte_carlo_compounded.py  # 10k block-bootstrap, 1% risk/trade