Strategies
ETH Dual-Timeframe Momentum Confluence — Long-Short, 4H Primary + 1D Confirm, Flat on Disagreement, Trail Winners (ETHUSDT.BINANCE USD-M, 3-Parameter)
Outcome: Abandoned
EthDualTimeframeMomentumConfluenceLS
Outcome Summary
EthDualTimeframeMomentumConfluenceLS was the closest the run came to a second survivor — a faithful port of the BTC dual-TF momentum survivor onto ETH as an honest generalization test, with short capability to earn in down-regimes rather than bleed bull beta. Its backtest was outstanding (+1219%, Sharpe 1.04, alpha 0.27, positive every year including the 2022 bear), it earned two optimization attempts, and an over-leverage fix cleared every direct overfit gate (PBO 0.28, holdout 0.761, all OOS windows positive, DSR up from 0.04 to 0.758). But on the terminal attempt deflated Sharpe stalled at 0.758 versus the 0.95 requirement — a structural ceiling imposed by ETH's fat tails at a realistic ~1.3 Sharpe. The analyst abandoned it at the ANALYZING stage: the generalization was real, but after multiple-testing correction the edge was not distinguishable from noise, leaving the original BTC 4H+1D as the family's only survivor.
Hypothesis
Implementation
Long-short ETHUSDT.BINANCE USD-M perp, single leg, dual-timeframe momentum confluence. Fast read = vol-normalized 12-bar log return on the primary 4H bars; slow read = vol-normalized 20-bar log return on the ETHUSDT 1-DAY series delivered through on_extra_bar. LONG only when both z-scores >= +entry_z, SHORT only when both <= -entry_z, FLAT on any disagreement. Exit when either timeframe flips against the position or on a 5x-ATR (4H ATR) trailing stop from the best close since entry. Sizing is 50% of equity notional at 1x leverage; no hedge leg, no leverage stacking. If the engine never delivers the 1-DAY leg, the identical daily-frequency series is derived from the primary 4H bars at UTC day boundaries so the slow leg cannot be starved into silence.
Verification Results
Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: ETHUSDT.BINANCE-4-HOUR-LAST-EXTERNAL, Bars processed: 2183 Diagnostics: should_enter() returned a side 0 times over 2059 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Backtest_review: confirm the 1-DAY ETH feed is delivered in ALL downstream runs, not just the sandbox; log which path was active per run if uncertain.
Reproducibility gap between the real 1-DAY feed and the synthetic-daily fallback. The developer reports the two paths diverge materially: real feed = 108 trades / +26.2% / Sharpe 0.98; feed stripped (synth path) = 106 trades / +8.1% / Sharpe 0.36. The synth close is the 4H close ending each UTC day (a valid calendar-anchored daily close), correctly bar-timestamp-anchored (ts // 86_400_000_000_000, not a process counter), so this is NOT a restart-churn bug — but if any downstream run (optimizer/walk-forward/holdout) fails to deliver the real 1-DAY feed while the sandbox got it, the strategy silently switches to the weaker synthetic regime and OOS won't match the reviewed behaviour.
Analyst: verify edge persists across all walk-forward OOS windows and the 15-day holdout and isn't concentrated in a few legs; check the deflated-Sharpe gate given the kurtosis; confirm short-leg contribution is genuine.
Pure-OHLCV long-short momentum-confluence trend follower (L7, ~0% historical survival for the class). Legitimately framed as a generalization test of the BTC survivor onto ETH, but the sandbox carries fat tails (return_kurtosis 14.5, skew 1.42, largest_win 9821 vs avg_win 2523) and the bootstrap Sharpe CI [-0.65, 2.46] straddles zero. Code is correct; this is a persistence/generalization concern.
For live deployment, persist _entry_sign/_entry_atr/_peak or reconstruct from the actual open position rather than from the current signal.
should_exit() infers _entry_sign from the live signal sign on restart (_entry_sign==0) and re-seeds _entry_atr/_peak from current values. Unreachable in backtest; only a live mid-position crash-restart risk.
Backtest Review
- Sharpe
- 1.04
- Total return
- 1219.36%
- Max drawdown
- 16.38%
- Trades
- 452
- Win rate
- 42.3%
- Profit factor
- 1.64
Unchanged strong backtest: Sharpe 1.04 with CI-low 0.40 > 0, PSR 0.9997, 452 trades
Positive EVERY year 2020-2026 including the 2022 bear (+39.7%) and a winning recent regime (2025 +73.7%, 2026 +26.7%); decorrelated alpha 0.27 (beta 0.045)
Passed the direct overfit/OOS gates in the prior optimization (PBO 0.32, holdout 0.761, all 3 OOS windows positive, is_overfitted FALSE, 0 sensitivity cliffs)
Iteration-4 synthetic-daily-feed fix is a sound robustness improvement (inert here, metrics unchanged)
Prior optimization FAILED deflated Sharpe (0.04) — but only via over-leverage: the optimizer chose risk_frac 0.68, degrading Sharpe from 1.04 to 0.58; the robust region is at lower leverage (sensitivity: risk_frac 0.4 -> Sharpe 1.42)
The dual-TF confluence family has multiple overfit deaths; this is effectively the final attempt — the constrained re-opt must clear DSR or abandon
return_kurtosis 25.4 (some large days, though distributed across years and every year positive)
Analysis
Per-trade economics clear the fee floor (avg_trade_return_pct 0.91% optimized, 1.37% base) and commission is only 4.8% of gross — this is NOT a fee-edge death
Large measurable sample (415-452 trades, balanced long/short), no cliff except fast_bars, PBO 0.47 < 0.5, decorrelated from buy-hold (beta ~0.05)
The iteration-3 remedy did partially work in-sample (risk_frac normalized, one WF-OOS window strongly positive at 1.92)
HARD GATE (unwaivable): holdout Sharpe -0.773 <= 0 on the unseen last-20% window (69 trades, adequate) — the edge did not appear out-of-sample; ratio -1.851
HARD GATE: walk-forward is_overfitted=true, IS 1.196 collapses to OOS 0.418, with one OOS window deeply negative (-1.37)
Robustness: deflated_sharpe 0.240 (<<0.95), is_significant=false, Sharpe CI [0.02,1.44] barely clears zero, fails programme FDR (keeps 3/228)
Optimized annual returns turned negative in the recent unseen years (2023 -12.3%, 2024 -10.3%), max_drawdown ballooned to 35.9% with a 1444-day underwater stretch
Iteration 4 / optimization attempt 3: the analyst-prescribed fix was already executed and the holdout/DSR still fail — no remaining parameter path
Cross-asset generalization has now failed 0-for-4 on this mechanism (ETH Binance overfit, ETH Hyperliquid overfit, BTC faster-horizon overfit, BTC triple-TF overfit); only the original BTC 4H+1D survived
Benjamini-Hochberg at q=0.10 over 228 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.
Outcome Summary
A strategy can genuinely generalize — clean PBO, passing holdout, positive OOS windows, decorrelated alpha, every year positive — and still fail promotion because, after correcting for a 225-trial search and fat tails, the edge at the asset's realistic Sharpe magnitude is not statistically distinguishable from best-of-N noise; deflated Sharpe is the binding gate the whole dual-TF family kept failing.
It earned an 'optimize' verdict and, after an iteration-3 over-leverage fix that raised DSR from 0.04 to 0.758 and normalized risk_frac, a second (terminal) optimization attempt. The analyst abandoned it at the ANALYZING stage on a decisive deflated-Sharpe failure: although every direct overfit gate was clean and the generalization is real, the residual DSR shortfall is structural — ETH's fat-tailed return (kurtosis 19.7, a few double-digit days carrying whole years) is skew/kurtosis-penalized, so at ETH's realistic ~1.0-1.3 Sharpe the deflated Sharpe cannot reach 0.95 no matter how it is tuned.
A long-short, single-instrument dual-timeframe momentum-confluence strategy on ETHUSDT.BINANCE USD-M (4H primary + 1D confirm, 3 parameters) that took a position only when a vol-normalized fast 4H momentum read and a slow daily read agreed and both cleared entry_z, went flat on disagreement, and trailed winners with an ATR stop — a direct generalization test of the factory's one optimization survivor (BTC dual-TF momentum) onto ETH.
The backtest (ETHUSDT.BINANCE 4H + 1D, 2409 data days) was the strongest of the whole run: +1219% total return, Sharpe 1.04 (CI-low 0.40), profit factor 1.64, max drawdown 16.4%, decorrelated alpha 0.27 (beta 0.045), positive every year 2020-2026 including the 2022 bear (+39.7%) with a winning recent regime. Optimization cleared the direct overfit gates cleanly (PBO 0.28, holdout ratio 0.761, all three OOS windows positive, is_overfitted FALSE, 0 cliffs) and lifted the config to Sharpe ~1.30 — but deflated Sharpe reached only 0.758 against the 0.95 bar (expected-max 1.09 over 225 trials), with fat tails (kurtosis 19.7, skew 1.78).
Backtest and paper results are hypothetical. Trading involves risk of loss.