Strategies
SOL Trend-Strength-Gated DMI Momentum, Long-Short (Single-Instrument SOLUSDT.BINANCE Perp, 4H Bars — Take Directional Momentum ONLY When ADX Confirms a Real Trend, Flat in Chop, ATR-Trailing, 3-Parameter)
Outcome: Abandoned
SolAdxGatedDmiMomentumLS
Measurable sample: 133 trades over 6 years (well above the ~100-trade floor), so this is not the unmeasurable failure mode
Hypothesis
Implementation
Long/short ADX-gated DMI momentum on the SOLUSDT.BINANCE USD-M perpetual, 4H bars, pure OHLCV. The signal is the ADX-weighted DI spread ((+DI - -DI)/100 x ADX/25), continuous and monotone in both direction and trend strength. Entry requires ADX >= adx_gate (flat in chop) plus a fresh cross of the signal through +/- di_min_spread. Exits are (a) the DI cross going against the position by di_exit_margin (5 DI points of hysteresis, so a single counter-trend pullback inside an intact trend is held through), (b) ADX collapsing below 0.6 x the entry gate, and (c) an ATR trailing stop trail_atr_mult ATRs from the best close since entry. Sizing risks a locked 2% of equity to the trailing stop, capped at 1x equity gross notional and floor-rounded to SOL's whole-unit step. Three tunables: adx_gate, dmi_period, trail_atr_mult.
Verification Results
CLEAN RESTART 2026-09-04 — this run's verdict history and learning records were removed and it was restarted from verification. Its previous abandonment came from the pipeline, not from the market: the Layer-2 harness mis-bound @staticmethod helpers (fixed), QA issued terminal performance verdicts on an unoptimized smoke test (removed — QA now judges correctness only), and sandbox timeouts came from backtest-slot starvation (fixed). The hypothesis and the strategy code are unchanged. Verify the code on its merits; performance is decided later by the full backtest and the optimizer.
Marginal, trend-regime-dependent, tail-assisted edge: win_rate 0.35, positive expectancy depends on the ATR-trail letting winners run (avg_win 2.5x avg_loss; kurtosis 9.9) and the ADX gate avoiding chop (calm tercile -10.6%). Sharpe CI includes zero. Legitimate ADX-gated trend-follower profile, not a defect; open question is OOS persistence. Weight walk-forward/holdout heavily; confirm avg_trade_return_pct stays positive and win_rate above ~0.30; don't over-tune on the fat-tailed winners.
Backtest Review
- Sharpe
- 0.48
- Total return
- 41.34%
- Max drawdown
- 14.86%
- Trades
- 133
- Win rate
- 35.3%
- Profit factor
- 1.28
Measurable sample: 133 trades over 6 years (well above the ~100-trade floor), so this is not the unmeasurable failure mode
Genuine per-trade edge: avg_trade_return_pct 1.70% dwarfs the ~0.10% round-trip fee; PF 1.28 and RR ~2.3 (avg_win 3220 vs avg_loss 1374) — not fee-dead
Risk contained: max_drawdown 14.9%, no liquidation, exposure only 26.6%
Developer's pre-committed ABANDON was based on a wrong 16-28 trade sandbox (WR 0.25); the full backtest is actually better (WR 0.35, positive expectancy) — so its rationale is invalid, but that does not rescue the strategy
Sharpe 0.48 with bootstrap CI [-0.32, 1.23] straddling zero and PSR 0.77 (<0.95) — risk-adjusted edge is not statistically distinguishable from zero
Base Sharpe 0.48 is far below the ~1.5 promotion bar; optimization's best-of-N selection is deflated back by DSR/holdout, so there is no realistic path to a significant promote
Below the L82 momentum-family optimize-authorization threshold (Sharpe >~1.3, PF >2.0); this single-TF ADX-gated variant is not the promoted dual-TF confluence class
Regime/recency fragile: loses in the calm tercile (Sharpe -0.47, -10.6%); 2026 annual -10.2% with rolling Sharpe collapsing to -4.7 — the last-20% holdout sits in this deteriorating regime and is set up to fail the hard holdout gate
CAGR only 4.9% over 6 years
Iteration History
Backtest and paper results are hypothetical. Trading involves risk of loss.