EthPerpPremiumSpikeReversionFadeLS5m
Hypotheses
ETH Large-Print Sweep Exhaustion Fade, Long-Short (Single-Instrument BINANCE USD-M Perp, DEEP aggTrades TRADE-SIZE Data, Fade the Snapback After a CLIMACTIC Large-Aggressor Sweep Spikes Price — the Big Taker Print Is Often the LAST Buyer/Seller, Not a New Trend — Tight Stop Beyond the Sweep Wick, Fast Hold, 3-Parameter)
Hypotheses
A LONG-SHORT, single-instrument MICROSTRUCTURE strategy on ETHUSDT.BINANCE (USD-M perp) that trades a specific, deep-data order-flow event and stays outside every class this session confirmed dead: L30 (pure-OHLCV = 0/213 → the signal is TRADE-SIZE order flow, a genuine non-price dependency L30 permits), L29 (no options), L28 (no funding carry — immune to the funding-edge DECAY that killed the carry baskets), and it avoids the shallow-metrics/liquidation traps by using the DEEP aggTrades feed (Binance Vision raw trades with per-trade size and aggressor flag). It is distinct from my pending aggTrades absorption-divergence idea (which fades a rolling CVD-vs-price DIVERGENCE at range extremes): this fades a SINGLE CLIMACTIC LARGE-PRINT SWEEP — a burst dominated by outlier-sized aggressive trades that spikes price in one direction. The thesis, aligned with the one surviving reversion winner (SOL 15m VWAP fade): a large aggressive sweep is frequently the LAST marginal buyer/seller exhausting into thin liquidity, not the start of a new trend, so price snaps back once the sweep completes. Fade it — after a large BUY sweep spikes price up, SHORT the snapback; after a large SELL sweep, LONG. The tight stop sits just beyond the sweep's price extreme (thesis invalidated if price keeps going = it was informed continuation), giving positive reward:risk. ETH is chosen for a deep, liquid aggTrades tape with meaningful (~0.2–0.5%) sweep snapbacks that clear the ~0.10% USD-M round trip. Single instrument, LONG-SHORT (fills the 85%-long imbalance), fast intraday hold. 3 core parameters (trade-size percentile for 'large', sweep-move threshold, stop distance).
Hypotheses
Iteration 3 on a hypothesis the QA reviewer has now judged EXHAUSTED: six strategies filed under this aggTrades trade-size family (metrics taker-ratio x3, continuation, premium-index) are all edge-dead, the prior run breached the >50% hard-abandon drawdown, and the true signal is genuinely un-testable here (aggTrades is un-wired: 1-day trade-tick catalog, no supp-loader key, no on-demand collection; ETH liquidations absent). I deliberately did NOT swap the mechanism a 7th time (the reviewer explicitly flagged repeated mechanism-swaps), and instead applied the smallest fixes to the two concrete, valid mechanical defects: (1) removed the premium-normalization early-exit that the feedback identified as the cause of the inverted realized reward:risk (it banked tiny sub-target gains while losers ran to the stop) so trades now resolve only at the fixed 0.30% stop, the 0.50% target, or the max-hold, making the nominal RR 1.67 actually materialize; and (2) raised entry_z 2.0->3.0 and max_hold 8->12 to cut the turnover-393 fee-death and the >50% drawdown by trading only the most extreme dislocations and giving the target time to fill. Imports, class structure, premium parsing, the continuous premium-z signal, and sizing are unchanged, so Layers 1-3 remain green. Honesty note (carried in the docstring and here): these are genuine mechanical improvements, but they do not manufacture edge -- with the prior win_rate ~0.34 the mechanism is below even the fee-inclusive breakeven for RR 1.67, and the reviewer's assessment that this hypothesis family is edge-dead is very likely correct; this iteration gives the cleanest-possible version of the current mechanism, but the honest expectation is that the hypothesis should be abandoned rather than iterated further. min_notional=20 respects ETHUSDT minimums; single 0.5x-equity position, no leverage, fixed stop -> bounded per-trade risk (L15).
Hypotheses
Liquidated, negative-expectancy, fee-dead microstructure churner that is not even the hypothesized strategy — decisive abandon, not worth 2 hours. The account LIQUIDATED on 2020-12-20 (total_return -100%, max_drawdown 100%) inside the first ~11 months, after which the equity flatlines (all post-2020 daily returns 0.0 = dead capital); Sharpe -1.27 with CI [-5.69, -1.13] fully negative, PSR 0.0. The edge is negative and swamped by costs: profit_factor 0.304, avg_trade_return_pct -0.017%, expectancy -$31/trade over 6,614 five-minute-hold trades, with commission 82.76% of gross and $109k of impact (return_kurtosis 2062 is the blowup). Critically, the hypothesis's stated signal — the raw aggTrades per-trade-SIZE sweep-exhaustion — is untestable because that feed is not wired (only ~1 day of tick data), so the developer substituted the perp premium index; the stated mechanism cannot be evaluated and the substitute mechanism blew up. This is the L30/L55 single-name microstructure fade family crossed with an L18 fee-dead churner and an L19 catastrophic liquidation. No parameter tuning rescues a liquidated, negative-expectancy, 82%-fee-drag strategy, and the real hypothesis needs a multi-year aggTrades feed (a data-side fix), not optimization. Failure pattern: liquidation/fee_edge/no_edge single-name microstructure fade, hypothesized data unavailable (L18/L19/L30).
Implementation
Long-short single-instrument ETHUSDT.BINANCE (USD-M perp) perp-premium spike reversion fade. Reads the deep perp PREMIUM INDEX (mark-vs-index basis) and forms a mean-centered premium z-score over a 120-bar baseline. It fades extreme dislocations: premium z >= entry_z (perp rich) -> SHORT, z <= -entry_z (perp cheap) -> LONG. Iteration 3 tightens exits to STRICT stop/target/max-hold only (the loose premium-normalization early-exit that inverted realized reward:risk is removed), uses a fixed 0.30% stop below a 0.50% target (RR 1.67), and raises entry_z to 3.0 for far fewer, higher-conviction entries to cut the turnover-driven fee-death and drawdown. Single position, no leverage, 0.5x-equity notional. 3 core parameters (entry_z, stop_pct, tp_pct).
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.
Backtest Review
Clean parsing and strict stop/target/max-hold exit logic; the developer honestly documented the data substitution
Backtest Review
Account LIQUIDATED 2020-12-20 (total_return -100%, max_drawdown 100%); dead capital flatlines every day after, Sharpe -1.27 (CI [-5.69, -1.13]), PSR 0.0
Backtest Review
Negative expectancy and fee-dead: PF 0.304, avg_trade_return_pct -0.017%, expectancy -$31/trade over 6,614 trades, commission 82.76% of gross, $109k impact
Backtest Review
Not the hypothesized strategy: aggTrades trade-size feed is unavailable (~1 day), so the perp premium index was substituted — the stated mechanism is untestable as specified
Backtest Review
L30/L55 single-name microstructure fade + L18 fee-dead churner + L19 catastrophic liquidation
Iteration History
EthLargePrintSweepExhaustionFadeLS15m
Iteration History
Verification failed (Layer 4 — QA review):
- EDGE EMPIRICALLY BELOW FEES / DECISIVELY NEGATIVE. Sandbox: avg_trade_return_pct -0.032% (below the ~0.10% round-trip and 0.15% floor), profit_factor 0.558, Sharpe -1.871 with CI [-3.34, -0.19] entirely below zero, probabilistic_sharpe 0.0099, total_return -9.84% over 120 trades. The Sharpe CI does not straddle zero and PSR is ~1% — confirmed negative expectancy, not small-sample ambiguity.
- REWARD:RISK STRUCTURALLY INVERTED, contradicting the hypothesis's 'tight stop / positive RR' claim. Stop sits beyond the sweep WICK of a >=2xATR bar (~1%+ from entry) while the target is only 0.6%, so stop distance > target distance on the very bars that trigger. Sandbox confirms: avg_loss $358.9 is 1.68x avg_win $214.0, return_skew -1.26.
- TRUE SIGNAL NOT IMPLEMENTED. The hypothesis's edge is a climactic large-print sweep from per-trade trade-SIZE in the aggTrades tape; the code uses an ATR-outlier PRICE spike confirmed by the 5-min metrics taker-volume-ratio z — a price+aggregate-flow proxy, not outlier-trade-size, on an un-wired aggTrades feed. This is the fourth strategy in this family to substitute the same metrics proxy for an un-wired aggTrades edge; all have been edge-dead.
Iteration History
Verification failed (Layer 4 — QA review):
- EDGE DECISIVELY NEGATIVE AND WORSE THAN THE PRIOR ITERATION. Sandbox: 704 trades, avg_trade_return_pct -0.032% (below fees), profit_factor 0.327, win_rate 0.337, Sharpe -2.191 with CI [-7.47, -0.92] entirely below zero, PSR 0.0001, total_return -55.76%, max_drawdown 55.76% (EXCEEDS the >50% hard-abandon threshold). High-churn fee-death: turnover 393.2, total_impact_usd $18,376.
- REALIZED REWARD:RISK STILL INVERTED WITH CATASTROPHIC TAIL. Rationale claims fixed 0.30% stop < 0.50% target = RR 1.67, but realized: avg_loss $177.4 is 1.55x avg_win $114.4, return_skew -9.89, kurtosis 179.8, tail_ratio 0.0, largest_loss -$818.7 vs largest_win $641.4. The loose premium-normalization exit (z crosses -0.5) banks tiny gains far below the 0.50% target while losers run to the full stop or gap through it on 5-min bars. The nominal positive RR never materializes.
- HYPOTHESIS'S SIGNAL NOT IMPLEMENTED — MECHANISM SWAPPED AGAIN. The hypothesis is a trade-SIZE climactic-sweep fade from aggTrades; this code detects no sweep, no trade size, no volume — it fades an extreme perp-index PREMIUM z-score (perp-basis mean reversion), a different mechanism whose 'sweep' link is asserted, never measured. Sixth strategy filed under this aggTrades hypothesis family (metrics taker-ratio x3, continuation, now premium-index), all edge-dead across fade, continuation, and basis-reversion orientations.
Iteration History
Verification failed (Layer 4 — QA review):
- EDGE REMAINS DECISIVELY NEGATIVE — THE MECHANICAL FIXES DID NOT MANUFACTURE EDGE. Sandbox: 335 trades, avg_trade_return_pct -0.045% (below fees), profit_factor 0.313, win_rate 0.322, Sharpe -2.091 with CI [-4.06, -0.60] entirely below zero, PSR 0.0041, total_return -31.54%, max_drawdown 31.54%. The iter-3 fixes worked mechanically (turnover 393->207, drawdown 55.8%->31.5%, trades 704->335) yet expectancy stayed firmly negative — the problem is absence of edge, not tuning.
- WIN RATE BELOW THE BREAKEVEN ITS OWN RR REQUIRES. With a 0.30% stop and 0.50% target (RR 1.67), fee-free breakeven win rate = 1/(1+1.67) = 0.375. Realized win_rate is 0.322 — below breakeven before fees — and avg_loss $202.2 is still 1.52x avg_win $132.9 because max-hold timeouts and 5-min gaps cap winners short of target while the left tail persists (skew -3.90, kurtosis 97.0, tail_ratio 0.087). Removing the early-exit cut the count but did not fix the inverted realized RR.
- HYPOTHESIS'S SIGNAL STILL NOT IMPLEMENTED, AND THE DEVELOPER CONCURS. The hypothesis is an aggTrades trade-SIZE sweep fade; this is a perp-basis (premium-index) mean-reversion strategy with no trade-size/sweep detection — the seventh strategy filed under this family, all edge-dead. The developer's own rationale states 'the honest expectation is that the hypothesis should be abandoned rather than iterated further' and that the true signal is un-testable here. I agree.
Backtest and paper results are hypothetical. Trading involves risk of loss.