ETH Volume-Confirmed Momentum, Long-Short (Single-Instrument ETHUSDT.OKX Perp, 4H Bars — Take Directional Momentum ONLY When a Volume Surge Confirms Genuine Participation, Flat Otherwise, ATR-Trailing, 3-Parameter)
Outcome: Abandoned
EthVolumeConfirmedMomentumLS_OKX
Outcome Summary
EthVolumeConfirmedMomentumLS_OKX traded ETH 4H momentum only when a volume surge confirmed it. Its default-parameter backtest was reasonable: 460 trades, 0.88% per trade against a 0.20% floor, a 14.5% drawdown and near-zero beta, but Sharpe was only 0.71 and its confidence interval straddled zero. Optimization freed the locked risk_pct and loosened the volume gate, producing a config that nearly wiped out equity and posted a -0.47 Sharpe on the 459-day holdout. The analyst abandoned it as overfit after one iteration. The analyst also noted that it duplicated a promoted Binance sibling and flagged the optimizer's parameter selection and suspected MTM artifacts for pipeline review.
A LONG-SHORT, single-instrument, pure-OHLCV strategy on ETHUSDT.OKX USD-M perpetual that trades directional momentum ONLY when a concurrent VOLUME SURGE confirms real participation, and stands flat otherwise. It keeps the one principle with demonstrated positive edge in this factory — the survivor's SELECTIVE directional filter (trade only high-conviction momentum, flat on non-confirmation) — but replaces the second-timeframe confirm with a genuinely DIFFERENT, non-overfit-prone confirmation axis: VOLUME. This……Show moreShow less
A LONG-SHORT, single-instrument, pure-OHLCV strategy on ETHUSDT.OKX USD-M perpetual that trades directional momentum ONLY when a concurrent VOLUME SURGE confirms real participation, and stands flat otherwise. It keeps the one principle with demonstrated positive edge in this factory — the survivor's SELECTIVE directional filter (trade only high-conviction momentum, flat on non-confirmation) — but replaces the second-timeframe confirm with a genuinely DIFFERENT, non-overfit-prone confirmation axis: VOLUME. This makes it materially distinct from every pending idea (dual-timeframe / EMA-structure momentum confluence on BTC/XRP/LINK, Turtle breakout on BNB, weekly ORB on ETH) — the selectivity gate is volume-backed participation, not a timeframe agreement, breakout, or range. It is deliberately built to avoid the session's confirmed failure modes: NOT a generic unconfirmed breakout/channel/MR (all shown to have negative per-trade expectancy on measurable samples), NOT an options/supplementary/low-frequency idea (which die in the developer stage or as unmeasurable samples), NOT a majors cross-sectional rotation (banned by L32). It is SIMPLE pure-OHLCV single-instrument with standard incremental indicators (developer ships it without swaps/timeouts), sits in the fee-viable / measurable zone (4H volume-backed legs of ~1-3% dwarf the ~0.10% fee; volume surges recur often enough for ~150-250 trades over multi-year history), and fills the under-target LONG-SHORT bucket (13.4% vs an 86%-long-only book). Only 3 parameters. ETH is chosen for the deepest, cleanest volume series among liquid majors and because its prior confluence attempt died on OVERFIT (not on absent edge), suggesting a real directional signal that a simpler, volume-gated construction can capture more robustly.
Implements the hypothesis exactly: the selective directional filter is VOLUME-backed participation, not a second timeframe, breakout or range. Participation is built into the signal itself (continuous, varies every bar) while the entry additionally requires the surge to be genuinely met, so a large move on thin volume is never traded -- the core claim. 4H bars match the mid/long-term horizon and give ~1-3% legs against a ~0.10% round-trip on BINANCE USD-M; the venue is futures because the strategy takes shorts.……Show moreShow less
Implements the hypothesis exactly: the selective directional filter is VOLUME-backed participation, not a second timeframe, breakout or range. Participation is built into the signal itself (continuous, varies every bar) while the entry additionally requires the surge to be genuinely met, so a large move on thin volume is never traded -- the core claim. 4H bars match the mid/long-term horizon and give ~1-3% legs against a ~0.10% round-trip on BINANCE USD-M; the venue is futures because the strategy takes shorts. Exactly 3 knobs (mom_lookback, vol_surge_mult, trail_atr_mult) with the entry threshold, hysteresis, baseline window, ATR period and risk_pct locked, so the optimizer cannot buy Sharpe with notional -- the failure mode that killed the prior ETH confluence attempt. ITERATION 2 (clean restart): the feedback states the previous abandonment was caused by pipeline defects (Layer-2 method-rebind, terminal QA verdicts on an unoptimized smoke test, sandbox slot starvation), all fixed, and that the mechanism should be verified on its merits. I therefore made NO behavioural change; the single edit is a strictly mechanical de-duplication -- the previous bar's entry eligibility used to be recomputed from scratch every bar (a second ATR pass plus a second median-volume sort) even though it had already been computed one bar earlier, so it is now memoised on the previous bar's own event timestamp with the identical full recomputation retained as the fallback on any miss (first bar, restart, gap). Signals, entries and exits are bit-for-bit unchanged; per-bar work halves, which adds headroom under the 300s sandbox wall clock. Note the code could not be resubmitted byte-identical (unchanged-hash check), and this is the smallest change that is provably behaviour-preserving.
Failure code: overfit. The optimization stage failed the hard holdout gate: Sharpe -0.47 on 113 unseen trades over 459 days, z -2.09 vs WF-OOS, not consistent with it. Not fee_edge: the first report's avg_trade_return_pct was 0.88% against a 0.20% OKX floor, with PF 1.40 and DD 14.5%. Not beta: beta 0.03. The optimizer was given risk_pct as a free parameter although the hypothesis locked it, while trail_atr_mult was left out. It bought Sharpe with notional (risk_pct 0.099 at its bound, avg position 168% of……Show moreShow less
Failure code: overfit. The optimization stage failed the hard holdout gate: Sharpe -0.47 on 113 unseen trades over 459 days, z -2.09 vs WF-OOS, not consistent with it. Not fee_edge: the first report's avg_trade_return_pct was 0.88% against a 0.20% OKX floor, with PF 1.40 and DD 14.5%. Not beta: beta 0.03. The optimizer was given risk_pct as a free parameter although the hypothesis locked it, while trail_atr_mult was left out. It bought Sharpe with notional (risk_pct 0.099 at its bound, avg position 168% of equity) and removed the volume gate (vol_surge_mult 1.13). Realized equity went to -100% (DD 94%, PF 1.000, impact 101% of gross). The attractive DSR 0.9998 / PBO 0.004 / OOS 1.50 were computed on an MTM daily series flagged metrics_reliable=false, with recurring paired -X/+X days (e.g. -87%/+617%). That is a suspected engine marking artifact; the mechanism is not verified. I am not crediting those numbers. The base config is the best credible version, at Sharpe 0.71 (CI straddles 0) with a losing 2026 YTD. It sits below the promote bar, and it duplicates an already-promoted ETHUSDT.BINANCE sibling (similarity 0.956). A second optimization of the same mechanism is not admissible under L126 and could at best reproduce that sibling. For pipeline review: (1) the optimizer's free_params selection ignored the strategy's declared locked parameters (risk_pct tuned, trail_atr_mult omitted); (2) the paired -X/+X MTM daily returns contaminate Sharpe, DSR, PBO and CPCV, and should go to engine review.
Implementation
Long/short 4H momentum on the ETHUSDT.BINANCE USD-M perpetual that is taken ONLY when a concurrent volume surge confirms genuine participation, and stands flat otherwise. Every bar it computes a continuous participation-weighted momentum signal, mom_atr * min(1, participation), where mom_atr is the mom_lookback-bar price change in ATR units and participation is the bar's volume over the MEDIAN volume of the prior 60 bars, divided by vol_surge_mult. It goes long when that signal crosses up through +1.0 ATR with……Show moreShow less
Long/short 4H momentum on the ETHUSDT.BINANCE USD-M perpetual that is taken ONLY when a concurrent volume surge confirms genuine participation, and stands flat otherwise. Every bar it computes a continuous participation-weighted momentum signal, mom_atr * min(1, participation), where mom_atr is the mom_lookback-bar price change in ATR units and participation is the bar's volume over the MEDIAN volume of the prior 60 bars, divided by vol_surge_mult. It goes long when that signal crosses up through +1.0 ATR with the surge actually met (participation >= 1), short on the mirror condition; the cross test prevents re-entering the same leg every bar. Exits are structural: momentum reaching 0.25 ATR against the position (hysteresis, so an intra-leg pause is held through) or an ATR trailing stop trail_atr_mult ATRs from the best close since entry. Sizing risks a fixed 2% of equity to the trailing stop, capped at 1x equity notional, leverage 1.0. Pure OHLCV, single instrument, no supplementary data, 3 tunable parameters.
Ported from ETHUSDT.BINANCE to ETHUSDT.OKX (2026-09-24); same code, evidence re-earned on this venue.
Verification Results
Change the docstring and description to say OKX.
The module docstring, config.description and rationale still say ETHUSDT.BINANCE / BINANCE USD-M. The config actually trades ETHUSDT.OKX 4H, which is what the hypothesis asks for. This is doc drift only; the code has no hardcoded venue.
Keep it, or rename it if the base contract does not allow overrides.
min_bars_required() overrides the base method. The override is deliberate and harmless: it returns max(vol_window+2, atr_period+2, mom_lookback+2) = 62 bars.
Read the precision from the instrument instead of the parameter.
size_precision=3 is a strategy-side floor. The instrument's real OKX lot step may differ. This is not a defect, because _submit_entry passes the size through instrument.make_qty().
OKX funding is not in PnL for this run (funding_folded=false, funding_events_available=0). The strategy has 48% exposure and holds for about 2.4 days on average, so perp funding over 2020-2026 could take a meaningful share of the +0.88%/trade gross. Check funding on OKX, or re-run with funding folded, before trusting the net edge. Shorts are weaker than longs (35% vs 46% win rate). Look at the long and short books separately in the full backtest.
Backtest Review
Sharpe
0.71
Total return
302.56%
Max drawdown
14.46%
Trades
460
Win rate
41.1%
Profit factor
1.40
Reliable sample: 460 trades over 2,299 days (220 long, 240 short), about what the hypothesis expects for a selective 4H trigger.
Per-trade economics clear costs by a wide margin: avg_trade_return_pct is 0.88% against the 0.15% USD-M floor (about 5.8x). Commissions are 4.5% of gross and impact is 5.7%.
PF 1.40, max drawdown 14.5% (below the 20% futures default), Calmar 1.52. Every full calendar year from 2020 to 2025 is positive.
The return is not market beta: beta 0.03, correlation 0.13, alpha 0.215. The L170 check passes.
Profitable in all three volatility regimes, with the best Sharpe in the stressed third (0.94). The stressed third shows no reversal.
Trades match the mechanism: both directions are traded and holds average about 2.4 days. entry_diag shows all 460 signals submitted with no size drops.
Sharpe 0.71 with a confidence interval of [-0.06, 1.53] and PSR 0.93. This is marginal even before deflation, so optimization has to earn significance.
The short book is nearly flat: 240 shorts made about +$28k at a 35.8% win rate. Longs made about +$274k at 46.8%. The edge is mostly on the long side.
The daily returns repeatedly show pairs that cancel out on otherwise flat stretches (for example -5.92/+6.29 on 2021-06-14/15). The mechanism is not verified. It probably inflates volatility and tail metrics and may distort the Sharpe and drawdown figures. Flag it for a harness review.
2026 year-to-date is -6.1%, and the longest drawdown lasted 240 days.
QA's funding concern does not hold for this run: funding_folded=true, 3,293 funding events were available, and each trade carries a funding field. The per-trade figure is already net of funding.
Analysis
First report (default params) cleared the fee floor comfortably: avg_trade_return_pct 0.88% vs the 0.20% OKX futures floor (2x RT), PF 1.40, DD 14.5%, 460 trades, 2020-2025 all positive, beta 0.03 (not beta-riding; the 14.5% DD is far below ETH buy-and-hold drawdowns).
Sensitivity found no cliffs on the base config (Sharpe 0.58-0.91 across +/-20%).
HARD gate failed: holdout Sharpe -0.47 on 113 trades over 459 days (2025-01-05 to 2026-04-09), z_vs_oos -2.09, consistent_with_oos=false. This is an adequate sample and a measured negative forward result, not a thin one.
The optimizer tuned risk_pct instead of trail_atr_mult. free_params were [mom_lookback, risk_pct, vol_surge_mult], although the hypothesis locked risk_pct. It pushed risk_pct to its 0.10 bound (5x the default) and vol_surge_mult to 1.13 (the surge gate was effectively removed). Avg position went to 168% of equity, max DD to 93.9%, and realized equity hit -100% on 2025-03-06. Total return was -0.77% with PF 1.000, and impact ate 101% of gross.
The optimized Sharpe of 1.46, DSR 0.9998, PBO 0.004 and CPCV OOS 1.50 come from an MTM daily series that metrics_reliable=false flags as sign-incoherent with the realized equity. That series has recurring paired -X/+X days (e.g. -84%/+529% on 2021-12-24/25, -87%/+617% on 2022-01-16/17), and the same shape appears at smaller scale in the base report. The robustness block is not usable evidence; it measured the artifact, not the edge. Suspected engine MTM-marking artifact; mechanism not independently verified.
Even the best credible config (the base report) has Sharpe 0.71 with a bootstrap CI of -0.06 to 1.53 (straddles 0). 2026 YTD is -6.1%, and Dec-2025 and Mar-2026 were -9% and -11.5% months. That is below the L134 promote bar (Sharpe >= 1.0, PF >= 1.5) even if a clean re-optimization held up.
This is a near-duplicate (similarity 0.956, is_duplicate=true) of the already-promoted ETHUSDT.BINANCE volume-confirmed momentum strategy. The same mechanism on ETH via OKX adds venue redundancy, not diversification.
same caveat
> 0 on >= 10 trades
computed on an MTM series flagged metrics_reliable=false; not credited
CI -0.06 to 1.53
Outcome Summary
The optimizer must respect a strategy's declared locked parameters, since freeing risk_pct let it buy Sharpe with leverage, and robustness statistics built on an MTM series flagged unreliable should not be credited.
The analyst abandoned it (failure code: overfit) because it failed the hard holdout gate: Sharpe -0.47 over 459 unseen days, z -2.09 vs walk-forward OOS. The optimizer had also tuned the locked risk_pct to its bound and weakened the volume gate (vol_surge_mult 1.13). Its strong DSR/PBO/CPCV figures came from an MTM series flagged metrics_reliable=false, and the strategy nearly duplicated an already-promoted ETHUSDT.BINANCE sibling (similarity 0.956).
A long-short, pure-OHLCV strategy on the ETHUSDT.OKX perpetual (4H bars) that traded ATR-normalized momentum only when a volume surge (current volume vs. the median baseline) confirmed participation, stayed flat otherwise, and exited on momentum reversal with hysteresis or on an ATR trailing stop.
With default parameters it made +302.6% over 2,299 days on 460 trades, with Sharpe 0.71 (CI -0.06 to 1.53), PF 1.40, max drawdown 14.5%, avg_trade_return_pct 0.88% and beta 0.03. The optimized config lost 0.77% in total, with a 93.9% max drawdown and PF 1.00, and the holdout Sharpe was -0.47 on 113 trades.
Backtest and paper results are hypothetical. Trading involves risk of loss.