Skip to content

View translation

EthIntradayPivotReversion

Hypotheses

ETH USD-M Intraday Floor-Trader Pivot Reversion, Long-Short (BINANCE Perp, 15m Bars, Fade Touches of Prior-Day-Derived S1/R1 Support-Resistance Back Toward the Central Pivot, Ranging-Regime Gated, Static Levels Not Rolling Bands, 3-Parameter)

Hypotheses

A LONG-SHORT, single-instrument intraday mean-reversion strategy on ETHUSDT.BINANCE (USD-M perpetual, 15-minute bars) built on classic FLOOR-TRADER PIVOT LEVELS. Each UTC day, the strategy computes the standard daily pivot set from the PRIOR day's high/low/close: Pivot P = (H+L+C)/3; R1 = 2P - L; S1 = 2P - H; R2 = P + (H-L); S2 = P - (H-L). Intraday it fades the first clean touch of S1/S2 (buy) or R1/R2 (sell) and targets reversion to the central pivot P. This is deliberately a DIFFERENT reversion primitive from the factory's promoted SOL VWAP-reversion winner: VWAP-reversion fades a ROLLING, continuously-recomputed z-score band, whereas pivots are STATIC price levels fixed at 00:00 UTC and watched by a large population of discretionary/algo intraday traders — the edge is partly self-fulfilling (resting liquidity clusters at these well-known levels). It uses a DIFFERENT instrument (ETH, not SOL) to de-cluster the portfolio's SOL intraday concentration. It avoids every recent graveyard: no funding-level signal (L13), no liquidation feed (L3), no options (L23), no cross-sectional/dollar-neutral basket (L12), no cross-venue carry (L1), no Hyperliquid (L11), no 200-SMA regime timing, no rotation-of-majors duplicate (L24). Only 3 tunable parameters to hold down overfitting (the #1 killer, 202x). It fills three of the most under-represented, survivable portfolio buckets at once: LONG-SHORT (14.9% vs targeted majority long-only), SHORT-horizon 1m-15m (5.5% vs >=10% target), and single-venue OHLCV (no fragile supplementary feed). Routed to BINANCE (not Hyperliquid) because short-horizon validation needs multi-year sub-hourly history that only Binance provides at 15m.

Hypotheses

Iteration 3 targets the one thing the now-trustworthy backtest exposed: a gross-negative fade edge because entries were being run over (win_rate 0.33, 'fades run over more often than they revert', PF 0.74, commission 24.72% of gross). Root cause in the entry rule: it fired on any touch whose close was merely above the stop, so the bar's close could still be BELOW the support level (or above the resistance) — i.e. entering directly into a level price was slicing through. The fix is a rejection-confirmation: the touch bar must wick to the level AND close back on the reverting side of it (close >= level for supports, close <= level for resistances), so only levels that were tested and HELD are faded. This is the classic, minimal remedy for the exact failure mode named, it raises the per-fade win-rate and gross edge, and by qualifying fewer bars it also cuts the turnover-driven fee drag. It is fully faithful to the reversion hypothesis (still fading touches of static pivot levels toward P) and leaves every validated component untouched — deterministic fixed-fraction sizing (which fixed the systemic exposure/liquidation defect), the min_reward fee gate, the ER ranging gate, intrabar stop/target detection, imports, and leverage 1.0. Only the two entry conditions changed.

Hypotheses

backtest_review_stuck_3_timeouts

Implementation

Long-short intraday floor-trader pivot reversion on ETHUSDT.BINANCE (USD-M perp, 15m). Daily pivots P/R1/S1/R2/S2 are computed from the prior UTC day's H/L/C and fixed at 00:00 UTC. It fades a support touch (BUY at S1/S2) or resistance touch (SELL at R1/R2) back toward the central pivot P, but ONLY when the touch bar closes back on the reverting side of the level (a confirmed rejection that held), the tape is ranging (Kaufman efficiency ratio <= er_max), and the touch->pivot reward clears fees (>= min_reward_pct). Structural stop just beyond the level, target at P, intrabar low/high stop/target detection, same-session time exit (flat by 23:30 UTC), one trade per level per day. Deterministic fixed-fraction sizing (notional = notional_frac x equity).

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

Treat er_max as the primary optimization lever; consider an additional realized-vol filter so fades are confined to the calm regime where the edge appears.

Verification Results

The ER ranging gate is implemented correctly but, as parameterized, does not deliver its stated protective function — the strategy loses in the normal/stressed vol terciles and only profits in the calm tercile.

Iteration History

Verification failed (Layer 4 — QA review): - FEE/EDGE FAILURE (trustworthy backtest). profit_factor 0.73 (net losing), win_rate 0.37; avg_trade_return_pct is nominally +0.0404% but far below round-trip cost and swamped by commission 18.75% of gross (74,930) over 2680 trades. Account bled to -100% and LIQUIDATED (2021-11-29). Fades reach the pivot target only 37% of the time; stops dominate. High-turnover fee-death (L6/L16). - RISK-CONTROL FAILURE: leverage 1.0 with a documented 1x notional cap, yet avg_position_pct 497.47% and full LIQUIDATION, with annualized_volatility 1891%, skew 33.3, kurtosis 1170.9. A truly 1x-capped position cannot average ~5x equity nor liquidate under normal ETH moves — the in-strategy cap is not the effective size the engine accepts, or tight-stop sizing blows past 1x. Same defect signature as the sibling SOL ORB (227% + liquidation). - Pivot mechanics are otherwise correct and faithful: prior-day H/L/C accumulated per session, standard set computed at rollover (P=(H+L+C)/3, R1=2P-L, S1=2P-H, R2=P+range, S2=P-range); fade S1/S2->BUY and R1/R2->SELL to P, structural stop beyond level, ER ranging gate, one trade/level/day, session time exit, long-short ETH 15m, static levels not rolling band. Alignment matches; the block is the outcome.

Iteration History

Verification failed (Layer 4 — QA review): - FEE/EDGE FAILURE on a now-CLEAN, trustworthy backtest. With the sizing defect fixed the metrics are diagnostic (annualized_volatility 3.92%, avg_position_pct 16.46%, liquidated=False, metrics_reliable) — and the trustworthy result proves the pivot-fade edge is NEGATIVE: total_return -40.97%, Sharpe -2.46 (PSR 0.00, CI [-3.25,-1.63] entirely negative), PF 0.74, win_rate 0.33, omega 0.67, CAGR -7.73%. avg_trade_return_pct +0.0074% is essentially zero and far below round-trip cost, and commission is 24.72% of gross (29,368) over 2404 trades. The min_reward_pct 0.5% gate and er_max 0.45 did not create a positive edge — fades are run over more often than they revert, and fees bury the near-zero gross edge. Definitive fee-death (L6/L16) for the pivot-reversion family on ETH 15m. - CREDIT / RESOLVED: deterministic fixed-fraction sizing (notional = notional_frac*equity, 0.15x) correctly fixed the systemic sizing defect. avg_position_pct is now 16.46% (~notional_frac 0.15), liquidated=False, annualized_volatility collapsed 1891%->3.92% — confirming the risk-based/(tiny stop_dist)-vs-leverage-cap collision was the cause of the prior 497% exposure and liquidation. The intrabar low/high stop/target detection is also a correct fix. These are validated and not the reason for the fail. - Pivot mechanics remain faithful (P=(H+L+C)/3, R1=2P-L, S1=2P-H, R2=P+range, S2=P-range from prior-day H/L/C; fade S1/S2->BUY and R1/R2->SELL to P; ER ranging gate; one trade/level/day; session time exit; long-short ETH 15m; static levels). Alignment correct; the block is the negative edge.

Iteration History

Verification failed (Layer 4 — QA review): - FEE/EDGE FAILURE PERSISTS on a third clean, trustworthy backtest. The rejection-confirmation entry did NOT flip the edge: win_rate 0.33 -> 0.346 (noise), commission 24.72% -> 21.98% of gross, trades 2404 -> 2241. Still decisively negative: total_return -37.36%, Sharpe -2.22 (PSR 0.00, CI [-3.09,-1.39] entirely negative), PF 0.77, omega 0.70, CAGR -6.89%, max_consecutive_losses 26. avg_trade_return_pct +0.0128% — essentially zero, far below round-trip cost. The pivot-fade edge on ETH 15m does not exist net of fees (L6/L16). - RESOLVED / RETAINED: deterministic fixed-fraction sizing still correct — avg_position_pct 16.33% (~notional_frac 0.15), liquidated=False, annualized_volatility 4.03%. Intrabar low/high stop/target retained. Working fixes, not the reason for the fail. - Mechanics remain faithful and the iter-3 rejection-confirmation is a correct, minimal implementation (support: low wicks to level AND close >= level AND close < P; resistance symmetric). Pivot formulas, ER gate, min_reward gate, one-trade-per-level-per-day, session time exit, long-short ETH 15m all correct. The block is the persistent negative edge.
Strategy report

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