Strategies
XRP 4H Pullback-In-Uptrend Reversal Entry Long-Only (BINANCE USD-M Futures, 4H, OHLCV-Only, Analyst-Validated Pullback-In-Trend Class)
Outcome: Abandoned
XrpFourHourPullbackInUptrendReversalLong
Outcome Summary
Pitched as the final piece of an 'analyst-validated' pullback-in-trend stack across BNB, SOL, and XRP, this strategy bought first-green-bar reversals after dips inside confirmed XRP uptrends. The code worked cleanly — 290 long entries, no pipeline drops, sensible 2.5x win/loss asymmetry — but the edge did not exist: it lost -8.9% overall with a 0.14 Sharpe, 28.3% win rate, 20-loss streaks, and an 82.6% drawdown, staying non-negative only because of a handful of freak months while collapsing -70.6% in 2025 and -51.2% in 2026. The analyst abandoned it at the pre-optimization gate rather than spend two hours overfitting the good years, noting the class had no promoted instance and its ETH sibling had been abandoned that same day. Optimization, analyst promotion review, and risk review were never reached — the premise, not the implementation, was the failure.
Hypothesis
Implements the analyst-validated Pullback-in-Trend mechanism class (BTC iter-1 Sharpe 0.76, positive expectancy), completing the BNB+SOL+XRP asset stack on the most-proven XRP 4H data path. The rising-SMA50 + price>SMA50 filter supplies the directional-context component; the red-streak/drawdown pullback plus first-green-bar reversal captures the 'buy the dip' effect (distinct from breakout entries). Iteration 3 fix: the reported Layer-2 'frozen 0.0 signal' did not reproduce (verified locally: all 6 synthetic scenarios pass with varying non-zero signals), so the minimal change adds a 1-bar rate-of-change term to the continuous score to further guarantee it varies bar-to-bar and never collapses to a constant, while leaving imports, class structure, trend/pullback trigger logic, exits, and sizing untouched to avoid regressing earlier passing layers.
Functioning implementation of a no-edge premise — pullback-in-uptrend dip-buy on XRP 4H is net-losing across the full sample (profit_factor 0.97, negative expectancy -245, avg_trade_return negative, total_return -8.9%, Sharpe 0.14 with CI spanning 0). Win rate is 28.3% with 20 consecutive losses and 82.6% max drawdown; the 5% fixed stop is repeatedly whipsawed. Returns are regime-fragile and outlier-carried (fine in 2020/2021/2023/2024, catastrophic -70.6% in 2025 and -51.2% in 2026; Sharpe only non-negative because of a few freak months like 2024-11 +429%), so a parameter sweep would overfit the good years rather than find a robust edge. This is not a code bug (the trigger and sizing implement the hypothesis correctly) so iterate does not apply, and the 'analyst-validated pullback-in-trend class' is not actually validated — its ETH 4H sibling was abandoned post-optimization today for overfitting/insignificant deflated Sharpe. Do not spend the 2-hour optimization on a strategy with negative in-sample expectancy.
Implementation
Long-only 4-HOUR pullback-in-uptrend reversal strategy on XRPUSDT Binance USD-M futures. Confirms an uptrend (rising SMA50 over 20 bars AND close > SMA50), waits for a brief pullback (2+ consecutive red bars OR >3% drawdown from the recent 5-bar high), then enters LONG on the first green bar that closes the pullback. Exits on trend break (close < SMA50), 10% take-profit, or 5% stop-loss. calculate_signal returns a continuous tanh score (price-vs-SMA + SMA slope + 1-bar ROC + pullback depth) that varies every bar; the binary entry decision is gated separately in should_enter. Leverage 2.0 sizes ~1.2x-equity notional.
Verification Results
Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['min_red', 'sma_period', 'drawdown_pct', 'min_notional', 'position_pct', 'high_lookback', 'stop_loss_pct', 'slope_lookback', 'take_profit_pct'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: Frozen signal: all 426 signals are identical (value=0.0). calculate_signal() likely has a bug — the signal never varies. - steady_downtrend: Frozen signal: all 426 signals are identical (value=0.0). calculate_signal() likely has a bug — the signal never varies.
Backtest Review
- Sharpe
- 0.14
- Total return
- -8.87%
- Max drawdown
- 82.60%
- Trades
- 290
- Win rate
- 28.3%
- Profit factor
- 0.97
Code functions and is faithful to the hypothesis: 290 clean long-only dip-buy entries, zero pipeline drops, adequate sample
Winner/loser asymmetry exists (avg_win 29.8k vs avg_loss 12.1k, ~2.5x) — the TP/SL structure is directionally sensible even if the entry has no edge
Net-losing over the full 6.5-year sample: profit_factor 0.97, expectancy -245, avg_trade_return negative, total_return -8.9%, Sharpe 0.14 with CI straddling 0
Win rate only 28.3% with 20 consecutive losses and 82.6% max drawdown — the 5% stop is whipsawed by continuation-down dips
Severely regime-dependent and outlier-carried: positive 2020/2021/2023/2024, but -70.6% in 2025 and -51.2% in 2026; near-zero Sharpe propped by a few monster months (2024-11 +429%)
The 'analyst-validated pullback-in-trend class' has no promoted instance — the ETH 4H sibling was abandoned post-optimization today for exactly this failure mode (overfit, insignificant DSR)
Analysis
Outcome Summary
A supposedly 'analyst-validated' mechanism class is not actually validated until an instance is promoted; the pullback-in-trend dip-buy had no robust edge on XRP 4H (its ETH sibling was abandoned the same day), so favorable-looking backtests carried by outliers should not justify further asset-stack replication.
The backtest-review gate issued an 'abandon' verdict before optimization ran, judging it a faithful implementation of a no-edge premise: negative in-sample expectancy, a fixed 5% stop repeatedly whipsawed by continuation-down dips, and near-zero Sharpe propped up only by a few freak months — a pattern a parameter sweep would overfit rather than fix.
A long-only XRPUSDT 4H futures strategy that bought dips within confirmed uptrends — entering on the first green bar after a pullback (2+ red bars or >3% drawdown from a 5-bar high) while SMA(50) was rising and price sat above it — to complete the BNB+SOL+XRP 'pullback-in-trend' mechanism stack.
Across 290 long trades over ~6.5 years it was net-losing: total return -8.9%, Sharpe 0.14 (CI straddling zero), profit factor 0.97, negative expectancy (-245), a 28.3% win rate with up to 20 consecutive losses, and an 82.6% max drawdown. Wins were larger than losses (avg win 29.8k vs avg loss 12.1k) but too rare, and results were outlier-carried and regime-fragile (positive in 2020/2021/2023/2024 but -70.6% in 2025 and -51.2% in 2026).
Backtest and paper results are hypothetical. Trading involves risk of loss.