Skip to content

View translation

EthTakerFlowExhaustionReversionLS

Hypotheses

ETH USD-M Intraday Taker-Flow Exhaustion Reversion, Long-Short (Single-Instrument BINANCE Perp, 15m Bars + Multi-Year TAKER BUY/SELL VOLUME Feed, Fade Aggressive-Flow Overshoots Confirmed by Price Extension, 3-Parameter)

Hypotheses

A LONG-SHORT, single-instrument, short-horizon microstructure strategy on ETHUSDT.BINANCE (USD-M perp, 15m bars) driven by a genuine NON-PRICE feed no deployed strategy uses this way: the Binance taker buy/sell VOLUME ratio (aggressor flow) from the multi-year supplementary feed. Core idea: transient bursts of one-sided AGGRESSIVE taker flow (market orders lifting offers or hitting bids) push price beyond where resting liquidity supports it; once the aggressive flow exhausts, price snaps back toward its short-run anchor. The strategy fades those flow-driven overshoots. It is deliberately NOT a funding/OI/liquidation single-name direction bet (all exhausted per lessons L13/L3), NOT a pure-OHLCV reversion (L30) — the entry REQUIRES a taker-flow extreme, price is only the confirmation — and NOT the AVAX 4h long-only taker-flow accumulation that failed (this is intraday, symmetric long-short, reversion of an overshoot rather than buy-the-dip accumulation). Deliberately low-parameter (3) to fight the #1 killer (overfit, 229x). Fills three under-represented buckets simultaneously: short horizon (1m-15m at 7.9% vs 10% target), long-short direction (14.4% vs push), and a crypto-native microstructure mechanism the portfolio barely touches. Fee arithmetic: entries are gated to flow extremes + a minimum price extension so the reversion target (~0.35-0.5% back to anchor) clears the 0.10% USD-M round trip with margin; frequency is throttled to a handful of trades/day, not 100+.

Hypotheses

Iteration 3 makes the single structural change QA's diagnosis calls for and nothing else. The failure was the inverted-reward/risk fade signature (win_rate 0.64 but avg_loss ~2.3x avg_win, avg_trade_return 0.074% < round-trip cost): a partial-reversion take (exit_z=0.4) capped wins while a fixed 1.0% pnl stop let losers run far past the reversion scale. The fix inverts that geometry: (1) fade only the most extreme overshoots (flow_thresh 2.5, price_ext 2.0) so entries are fewer, higher-conviction, and lower-turnover (less fee drag); (2) let the winner run to the FULL reversion to anchor (exit when |price_z|<=0.25) for a larger avg_win; (3) replace the oversized pnl stop with a Z-BASED stop that cuts the loser after only stop_ext_z=1.0 of adverse extension beyond the already-extreme entry level, making the max loss structurally SMALLER than the full-reversion win. Signal logic that passed layers 1-3 is untouched; only exit/stop geometry and entry selectivity changed, so earlier layers stay green while the per-trade expectancy geometry is aimed above the fee floor. Position_frac cut to 0.30 to keep drawdown bounded per prior blow-up lessons.

Hypotheses

Negative-expectancy single-perp intraday taker-flow-exhaustion fade on a tiny sample — not worth 2 hours of optimization. Over just 69 trades in 6.6 years (exposure 0.42%; flow_thresh 2.5 + price_ext 2.0 almost never fires): profit_factor 0.595, total_return -3.2%, Sharpe -0.54 (CI [-1.12, 0.23]), PSR 0.39, expectancy -$46.5/trade, avg_trade_return_pct -0.0051% (negative), commission 43.2% of gross, losing in every vol regime. The iter-3 reward/risk inversion did NOT fix the mechanism: win_rate 0.507 but avg_loss ($233) is still 1.7x avg_win ($135), return_skew -2.31, kurtosis 14.8, largest_loss -$2,166 vs largest_win $572 — the same inverted-RR fade signature. 69 trades is well below the ~100-trade measurability floor (L10) and cannot populate a 3-window walk-forward plus holdout. It runs on the Binance-futures metrics taker-ratio proxy — the L73 single-perp supplementary-gated order-flow family established edge-dead this session in both fade and continuation orientations, and the ETH intraday analog of the abandoned BTC/AVAX taker fades (L55/L73). The metrics feed here does span multi-year (trades 2021-2026), so the negative result is genuine, not a data-wall artifact. No tuning flips a negative per-trade edge positive; tightening the gate only shrinks an already-tiny sample. Failure pattern: fee_edge/no_edge single-perp taker-metrics-proxy fade with sub-100-trade sample.

Implementation

Long-short single-instrument ETHUSDT.BINANCE (USD-M perp, 15m) microstructure fade. Trigger is a taker aggressor-flow extreme (z-score of the (R-1)/(R+1) buy/sell-volume imbalance from the multi-year 'metrics' feed) CONFIRMED by a price-extension z-score in the same direction; the exhausting overshoot is faded back to its short-run anchor. Aggressive-buy overshoot up -> SHORT, aggressive-sell overshoot down -> LONG.

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

Simultaneous double z-extreme entry (flow_z≥2.5 AND price_z≥2.0) is so selective it produced only 5 trades/206 days (~50-60 over full history), below measurability and ~100x below the hypothesis cadence. Strategy does trade (not no-trades); these are exactly the optimizer's tuned params, so it's a frequency/edge concern, not a code fault. Optimizer should treat trade count as a constraint alongside the fee floor.

Backtest Review

Low parameter count, timeout-safe as-of lookups, symmetric long-short, multi-year metrics coverage (trades span 2021-2026, not a recent-only data wall)

Backtest Review

Negative expectancy: profit_factor 0.595, avg_trade_return_pct -0.0051% (negative), expectancy -$46.5/trade, Sharpe -0.54 (CI [-1.12, 0.23]); loses in every vol regime

Backtest Review

Iter-3 geometry inversion failed: avg_loss $233 still 1.7x avg_win $135, skew -2.31, largest_loss -$2,166 vs largest_win $572 — inverted-RR fade signature persists

Backtest Review

Only 69 trades over 6.6 years (exposure 0.42%) — below the ~100-trade measurability floor (L10); commission 43.2% of gross; can't populate walk-forward/holdout

Backtest Review

L73 single-perp taker-metrics-proxy order-flow family, established edge-dead in both fade and continuation orientations (ETH intraday analog of the abandoned BTC/AVAX taker fades, L55/L73)

Iteration History

Verification failed (Layer 4 — QA review): - Fee viability fails decisively on a well-sampled run. 795 trades (metrics_reliable=true), avg_trade_return_pct = -0.0164% — below the 0.15% USD-M futures floor and the ~0.10% round-trip cost. total_return -89.85%, profit_factor 0.54, Sharpe -2.23 (CI [-5.56,-1.80]), max_drawdown 91.27% (past the 50% hard-abandon line). The hypothesis's fee arithmetic ('reversion ~0.35-0.5% clears the 0.10% round trip') is empirically falsified. - Exit structure guarantees inverted reward/risk: winners banked at |price_z|<=0.4 (tiny move) while losers run to a 2% stop. win_rate 0.61 but avg_win $217 vs avg_loss $637 (~3x), largest_loss -$2880, return_skew -15.2, kurtosis 257 — wins often/small, losses rare/huge, PF 0.54. - Code faithfully implements the hypothesis (ETHUSDT.BINANCE 15m, long-short, non-price taker-ratio z trigger + price-ext confirmation, correct fade polarity, 3 params, no subscription/counter/sizing bug). This is NOT a code-logic defect — it's a genuine negative-edge/fee failure, so route as abandon not re-code.

Iteration History

Verification failed (Layer 4 — QA review): - Fee-viability / negative-edge failure. avg_trade_return_pct 0.074% is below both the 0.15% USD-M futures floor and the ~0.10% round-trip taker cost; profit_factor 0.79, total_return -5.58%, Sharpe -1.14 (CI [-2.64,+0.43]). Win_rate 0.64 but avg_loss $502 ≈ 2.3x avg_win $218 (skew -2.13, tail_ratio 0.40) — the inverted-reward/risk fade-reversion signature. Well-sampled at 146 trades: a decisive negative result. No re-parameterization flips negative gross expectancy — block and abandon. - The strategy's own docstring/rationale state it 'should be ABANDONED per the QA's pre-registered routing, not iterated further,' yet it was resubmitted as an iteration with only de-risk parameter tweaks and no new edge. Self-cancelling submission occupying an iteration slot — a routing issue, not a code defect.

Iteration History

Verification failed (Layer 4 — QA review): - The iter-3 structural fix neither repaired the edge nor kept the sample measurable. Only 18 trades fired over 363 days (flow_thresh 2.5 + price_ext 2.0 throttled entries far below the ~100-trade floor), so the result cannot distinguish edge from noise. Within that thin sample it is STILL a net loser with the same inverted reward/risk the change targeted: avg_trade_return_pct -0.108% (negative, below fees), profit_factor 0.42, Sharpe -1.21, win_rate 0.556, avg_loss $293 ≈ 3.0x avg_win $98 (worse than the prior ~2.3x), largest_loss -$893 vs largest_win $406, skew -9.1. The z-based stop did not bound losses below the reversion win. Third consecutive losing iteration (iter-1 -89.85%, iter-2 -5.58%, iter-3 -1.37%).
Strategy report

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