Skip to content

View translation

XrpDualSignalMomentumConfluenceLS

Hypotheses

XRP Dual-Signal Momentum Confluence, Long-Short (Single-Instrument XRPUSDT.BINANCE Perp, 4H Primary Momentum + 1D Trend Confirm, Flat on Disagreement, ATR-Trailing, DELIBERATELY 2-Parameter to Resist Overfit)

Hypotheses

A LONG-SHORT, single-instrument, pure-OHLCV momentum-confluence strategy on XRPUSDT.BINANCE USD-M perpetual — the ONE mechanism family with demonstrated positive edge in this factory (the paper-stage BTC dual-timeframe momentum confluence, Sharpe ~1.99). Rather than churn another generic single-name signal (this session has now CONFIRMED that Donchian breakout and range mean-reversion produce negative per-trade expectancy on measurable samples — they have no real edge), and rather than a banned majors cross-sectional rotation (L32), this attacks the specific reason the prior confluence PORTS died: they died on OVERFIT (3-parameter fits, PBO>0.5, holdout collapse). The fix is a DELIBERATELY 2-PARAMETER construction (one momentum lookback + one ATR-trail multiple) — a smaller fitting surface that is structurally harder to overfit in walk-forward. The instrument choice is a genuine thesis, not a blind port: XRP has a distinctive fat-tailed return profile — long dormant ranges punctuated by violent multi-day vertical repricings — which is precisely the regime where a confluence filter that sits FLAT unless fast and slow momentum agree, then rides the explosive leg with a trailing stop, extracts its edge. It fills the under-target LONG-SHORT bucket (13.4% vs an 86%-long-only book) and adds SYMBOL diversity (XRP is under-tried as a focused single name and has low correlation to the BTC/ETH trend cluster). It sits in the proven fee-viable / measurable-sample zone: 4H swings holding 1-4 days capture 3-10%+ XRP legs (far above the ~0.10% fee), and ~120-200 signals over multi-year Binance history give the analyst a robust, measurable sample — avoiding both the fee_edge death of intraday systems and the unmeasurable-sample death of low-frequency gates. Simple pure-OHLCV single-instrument standard indicators → survives the developer without swaps/timeouts.

Hypotheses

My recommendation is ABANDON, and I want that on the record before the code: QA correctly invoked the criterion I pre-committed to before iteration 2, the sample is measurable (45 trades, 363 days), and expectancy is -$297/trade with PF 0.577. Two structural exit fixes moved avg_trade_return_pct only from -0.999% to -0.833% — a mechanism with real latent edge does not respond that weakly to exit surgery, so the confluence signal does not predict XRP direction. The change below exists because the stage requires a code artifact and because there is exactly one untried structural lever, the one QA's arithmetic points at: reward:risk. Iterations 1 and 2 both worked the win-rate term and failed; at a 26.7% hit rate break-even needs RR ~2.75 while realized RR is 1.59, and RR was structurally capped because a single distance (trail_atr_mult = 3 ATR) served as BOTH the loss cap and the give-back cap while the 0.5-ATR disagreement rule truncated winners as readily as losers. The exit stack is now split by whether the trade has proven itself: below 2 ATR of maximum favorable excursion it is cut cheaply (tight ~1-ATR initial stop plus the dead-banded disagreement rule), and above 2 ATR the disagreement rule is retired so only the wide 3-ATR trail can close it. That lifts RR from both ends simultaneously — smaller loss cap, winners exiting only on a 3-ATR retrace after a 2-ATR run — which is the only route to the RR the measured hit rate demands. I am explicit about the failure mode I expect: the tighter initial stop will also lower the hit rate, and if it lowers it proportionally expectancy will not move, which is why I think this confirms the abandon verdict rather than rescues it. Discipline kept: both new distances are LOCKED fractions of the existing trail parameter (1/3 and 2/3), so the tunable surface stays at exactly 2 parameters — the anti-overfit point of this hypothesis — and no new degree of freedom reaches the optimizer. Sizing is byte-for-byte unchanged (still anchored to trail_atr_mult * ATR, 1x-equity notional cap, floor and min-notional), so notional and avg_position_pct stay directly comparable to the previous run and only the exit geometry moved; the entry logic, continuous confluence signal, fresh-cross rule, imports and class structure that passed Layers 1-3 are untouched. On QA's second finding I made no change and agree with their read: a risk-anchored, notional-capped, floor-rounded sizing path at leverage 1.0 with liquidated=false cannot produce a 1333% drawdown, so it is the session-wide metrics-normalization convention and belongs to an engine-side fix.

Hypotheses

Classic overfit / no-generalization death, not a fee or premise-mechanism death. Per-trade edge is fine (avg_trade_return_pct 1.205%, PF 1.31) but it does not generalize: walk-forward flags is_overfitted=true with IS avg Sharpe 1.107 collapsing to OOS avg -0.428 (one window -2.83), and OOS Sharpe <= 0 — two HARD gates that cannot be waived. Robustness confirms noise: deflated_sharpe 0.023 (<<0.95), is_significant=false, Sharpe CI [-0.256, 1.235] straddles zero, fails programme FDR (3/227). Critically there is NO robust parameter region to tune toward — the sensitivity grid maxes at ~0.53 Sharpe everywhere and the optimizer's chosen config actually scored worse out-of-sample than the base (0.51 vs 0.63), so a second iteration on a deliberately-minimal 2-parameter surface has nothing to fix. Per the overfit-vs-dead-premise rule this is ABANDON not revise_hypothesis: the dual/multi-TF momentum-confluence mechanism has now failed on the same overfit signature across BTC triple-TF, LINK, and BTC faster-horizon (all abandoned overfit), so pointing the identical mechanism at another instrument would simply overfit again. Failure pattern: overfit / no-generalization.

Implementation

Long/short dual-horizon momentum confluence on the XRPUSDT.BINANCE USD-M perpetual, 4H bars, pure OHLCV. A fast leg (change over mom_lookback 4H bars) and a slow daily-clock leg (change over mom_lookback days, scaled by 1/sqrt(6)), both in ATR units, must agree in sign; when they agree the signal is the signed minimum of their magnitudes, when they disagree it is a clipped residual that cannot reach the entry threshold. Entry is a fresh cross of +/- 1.5 ATR of confluence. Exits are now asymmetric by whether the trade has proven itself: while maximum favorable excursion is under 2 ATR the trade is cut cheaply by a tight ~1-ATR initial stop or by meaningful (0.5-ATR dead-banded) disagreement; once MFE exceeds 2 ATR the disagreement rule is retired and only a wide 3-ATR trailing stop from the best close can close the position, so a fat-tailed XRP leg is given room to run. Both new distances are locked fractions of trail_atr_mult, so the tunable surface remains exactly 2 parameters (mom_lookback, trail_atr_mult), and sizing is unchanged (risk_pct of equity to the trail distance, capped at 1x equity notional).

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.

Verification Results

Positive expectancy is tail-dependent: at 24.6% win rate the result rests on the MFE-gated asymmetric exit letting a few large winners run (avg_win 4.6x avg_loss; kurtosis 14.9). Legitimate trend-follower profile, not a defect, but sensitive to whether the ~2-ATR proven threshold / 3-ATR trail hold OOS; a proportional hit-rate drop from the tight initial stop (the developer's stated failure mode) could erase it. Weight the holdout heavily; confirm avg_trade_return_pct stays positive and RR holds in OOS windows.

Backtest Review

Full-history result is positive and contradicts the developer's stale-sandbox abandon: avg_trade_return_pct +1.344%, PF 1.437, expectancy +$547/trade — well above fees

Backtest Review

308 trades over 6.6 years — well measured; the proven momentum-confluence family (L82) on a Binance USD-M major, which should not be blanket-abandoned at review

Backtest Review

Deliberately 2-parameter (smaller multiple-testing surface than the 3-param siblings that died on PBO) — the anti-overfit design is genuine

Backtest Review

Positive across most years (2020 +37%, 2021 +24%, 2024 +30%, 2026 +23%)

Backtest Review

Sharpe 0.629 with bootstrap CI [-0.101, 1.309] barely straddling zero and PSR 0.884 (<0.95) — significance is marginal before the deflation penalty

Backtest Review

Tail-dependent: win_rate 24.3%, return_kurtosis 15.5, skew 1.96; a few XRP vertical repricings carry the result and the calm-vol regime is dead (sharpe 0.003)

Backtest Review

Recent/quiet years flat-to-negative (2022 +1.3%, 2023 -0.3%, 2025 -2.1%); the 2025-2026 holdout depends on catching a big XRP move

Backtest Review

Max drawdown 23.6% (CI to 58%) is above the promotion floor; 14 max consecutive losses

Analysis

Per-trade economics clear the fee floor comfortably: avg_trade_return_pct 1.205%, PF 1.31, commission only 4.85% of gross — this is NOT a fee/edge-below-cost death

Analysis

406 trades over 6.7 years is a well-measured sample; sensitivity shows no cliff parameters

Analysis

Holdout window passed in isolation (Sharpe 0.642, 63 trades) and PBO 0.429 stays under 0.5

Analysis

HARD gate: walk-forward is_overfitted=true — IS avg Sharpe 1.107 collapses to OOS avg -0.428, with one window at -2.83. Cannot be waived

Analysis

HARD gate: out-of-sample Sharpe -0.428 <= 0. Cannot be waived

Analysis

Deflated Sharpe 0.023 (<<0.95), is_significant=false, Sharpe CI [-0.256, 1.235] straddles zero, fails programme FDR (keeps 3 of 227)

Analysis

No robust parameter region to tune toward: the sensitivity grid maxes at ~0.53 Sharpe everywhere and the optimized config scored WORSE out-of-sample than the base (0.51 vs 0.63)

Analysis

max_drawdown 27.0% (>10% floor); win_rate 0.288 (<0.45 floor); Sharpe 0.508 (<1.5 floor)

Analysis

The confluence mechanism has died cross-asset repeatedly on the same overfit signature (BTC triple-TF, LINK, BTC faster-horizon all abandoned overfit) — reframing onto another asset would overfit again

Analysis

Benjamini-Hochberg at q=0.10 over 227 programme candidates keeps 3. A candidate that does not survive here is not distinguishable from the programme's own noise, however good its individual statistics look.

Iteration History

Verification failed (Layer 4 — QA review): - DECISIVELY NEGATIVE PER-TRADE EDGE ON A MEASURABLE SAMPLE -- the momentum-confluence mechanism does not transfer to XRP. Over a measurable 49-trade / 363-day sample (metrics_reliable=true): avg_trade_return_pct -0.999% (strongly negative, ~7x below the 0.15% fee floor on the wrong side of zero), profit_factor 0.501, Sharpe -0.864 (CI [-2.65, 0.75]), win_rate 0.224, total_return -15.0%, expectancy -$306/trade. This is not a fee-borderline or inconclusive result like the marginal trend losers this session -- it is a deep, unambiguous negative edge. The realized geometry shows why the thesis fails: at a 22.4% win rate, break-even needs reward:risk ~3.5, but realized RR is only avg_win $1370 / avg_loss $791 = 1.73, so the strategy loses roughly half its gross per dollar risked. The hypothesis's core claim -- that XRP's 'dormant-then-vertical' fat-tailed profile is where a flat-on-disagreement confluence extracts edge -- is falsified: those fat tails whipsaw the confluence (fast momentum flips sign constantly, the agreement-lost exit fires into the chop), producing a 22% hit rate. Critically, the '2-parameter anti-overfit' construction is moot here: overfitting is a walk-forward concern, but this signal has NO positive in-sample edge to overfit -- it is net-negative before any optimization. This is the momentum/trend-confluence PORT family (a blind transfer of the paper-stage BTC survivor to a different asset); per the failure record such ports are an exhausted family, and XRP is a decisive negative data point. - IMPLAUSIBLE RISK-METRIC UNITS -- verify (unchanged, engine-side). max_drawdown 14.98 (1498%) equals |total_return| 14.98, consistent with a near-monotonic equity decline, and var_95 1.20 / cvar_95 1.98 are >100% -- the same session-wide metrics-normalization convention (initial-capital vs peak-equity), not a sizing bug. Sizing is correct (risk-anchored to the trail stop, independent 1.0x notional cap giving avg_position_pct 38.7%, floor + min-notional, liquidated=false). Flag for engine-side confirmation only.

Iteration History

Verification failed (Layer 4 — QA review): - THE EXIT DEAD-BAND FIX DID NOT CREATE EDGE -- the strategy is still decisively net-negative, and the developer's own pre-committed abandon criterion is now met. After adding the 0.5-ATR disagreement hysteresis: avg_trade_return_pct -0.833% (still ~1% on the wrong side of zero, was -0.999%), profit_factor 0.577 (was 0.501), Sharpe -0.754 (CI [-2.49, 0.83]), win_rate 0.267 (was 0.224), total_return -13.3%, expectancy -$297/trade, on a measurable 45-trade / 363-day sample (metrics_reliable=true). The dead band did exactly what the developer predicted directionally -- it nudged the win rate up (22.4% -> 26.7%) without much changing the loss leg -- but nowhere near enough: at a 26.7% hit rate break-even needs reward:risk ~2.75, and realized RR is only avg_win $1516 / avg_loss $956 = 1.59, so expectancy stays deeply negative. The marginal improvement across iterations (avg trade -0.999% -> -0.833%, PF 0.50 -> 0.58) confirms the mechanism has no latent edge on XRP that exit-timing can unlock -- the confluence signal simply does not predict XRP direction well enough. The developer stated the test up front: 'if the re-run still shows negative expectancy, the correct verdict is abandon rather than a third iteration, because at that point the confluence mechanism simply does not transfer to XRP.' It does show negative expectancy; it does not transfer. - IMPLAUSIBLE RISK-METRIC UNITS -- verify (unchanged, engine-side). max_drawdown 13.33 (1333%) equals |total_return| 13.33 (a near-monotonic decline), and var_95 1.26 / cvar_95 2.04 are >100% despite leverage 1.0, risk_pct 0.02, a 1.0x notional cap (avg_position_pct 39.0%), and liquidated=false -- the same session-wide metrics-normalization convention, not a sizing bug (sizing is correct: risk-anchored, independent cap, floor + min-notional). Flag for engine-side confirmation only.

Iteration History

Verification failed (Layer 4 — QA review): - THIRD ITERATION CONFIRMS NO LATENT EDGE -- the last untried arithmetic lever (reward:risk) has now been worked and expectancy did not move. The asymmetric exit stack did EXACTLY what the developer predicted: RR jumped sharply (avg_win $2825 / avg_loss $700 = 4.04, up from 1.59) but the win_rate collapsed from 26.7% to 12.0%, so the two effects cancelled and expectancy barely changed -- avg_trade_return_pct -0.706% (vs -0.833% prior), profit_factor 0.550, Sharpe -0.719, expectancy -$277/trade on a measurable 50-trade sample. At a 12% hit rate break-even now needs RR ~7.3 while realized is 4.04, so it is still deeply negative. The three-iteration progression is decisive: working the win-rate term (iter1 exit timing, iter2 dead band) and now the RR term (iter3 asymmetric stack) has moved avg_trade_return_pct only -0.999% -> -0.833% -> -0.706% -- a mechanism with real latent edge does not respond this weakly to every structural exit lever in turn. The confluence signal simply does not predict XRP direction. The developer opened both the code and the rationale with an explicit ABANDON recommendation and correctly notes his own pre-committed criterion (met at iteration 2) is doubly met now. - IMPLAUSIBLE RISK-METRIC UNITS -- verify (unchanged, engine-side). max_drawdown 15.38 (1538%, CI [10.89, 34.82]), var_95 1.29, cvar_95 2.07 are >100% despite leverage 1.0, risk_pct 0.02, a 1.0x notional cap (avg_position_pct 41.0%), and liquidated=false -- the session-wide metrics-normalization convention, not a sizing bug (sizing was held byte-for-byte identical to the prior run, so avg_position_pct is directly comparable at ~40%). Flag for engine-side confirmation only.
Strategy report

Backtest and paper results are hypothetical. Trading involves risk of loss.