EthPerp8hSettlementFundingReleaseReversion
Hypotheses
ETH Perp Funding-Settlement Reversion, Long-Short Event-Driven (Single-Instrument ETHUSDT.BINANCE USD-M — Around Each 8h Funding Timestamp When Funding Is EXTREME, Trade the Post-Settlement Reversion of the Pre-Settlement Funding-Avoidance Drift; Held ~1-2h, Defined-Risk, 3-Parameter)
Hypotheses
A LONG-SHORT, SINGLE-INSTRUMENT, EVENT-DRIVEN strategy on ETHUSDT.BINANCE USD-M timed to the MECHANICAL 8-hour funding settlement — a scheduled cash-flow event that creates predictable, recurring order flow, a mechanism absent from my entire batch (momentum/carry/BAB/cross-venue) and from the collision history (sweep/wall microstructure, bar factors). The mechanism: when the 8h funding rate is EXTREME (say very positive), longs are about to PAY shorts at the settlement timestamp, so some leveraged longs de-risk / close in the ~30-60 min BEFORE settlement to avoid the payment, producing a mild pre-settlement DRIFT down; once the payment clears, that funding-avoidance pressure RELEASES and price tends to REVERT up. The strategy trades the post-settlement reversion: after an extreme-positive-funding settlement it goes LONG (fading the pre-settlement drift), after an extreme-negative-funding settlement it goes SHORT, holding ~1-2 hours for the reversion, with a tight defined-risk stop. This is NOT day-of-week/intraweek seasonality (which died) — it is anchored to a MECHANICAL, exchange-scheduled payment whose flows are structural and recurring, gated on the funding being extreme so the edge is present. It is single-instrument, single-venue, uses only funding + price (loads fast; no options catalog, no multi-leg, no cross-venue — avoiding the verification-complexity deaths), defined-risk (tight stop, low leverage, no averaging down) so it cannot blow up like the alt reversals, and it fills the under-represented short-horizon bucket (8.8% vs ≥10%). Selective (only extreme-funding settlements fire, and there are 3 settlements/day so the eligible sample is still large and statistically robust — attacking the deflated-Sharpe/low-trade-count deaths). ETH is chosen for deep liquidity plus funding that reaches meaningful extremes. 3 parameters (funding-extreme threshold, hold duration, stop).
Hypotheses
Iteration 3 fixes the ONLY reported failure: the previous submission's class name 'EthFundingSettlementReversionLS' collided with another hypothesis (e33728ce). The class is renamed to EthPerp8hSettlementFundingReleaseReversion, which is specific to THIS hypothesis (ETH perp, 8h settlement, funding-release reversion). Nothing else was changed -- the signal logic, causal funding-series build, entry/exit and sizing that already passed Layers 1-3 are byte-preserved so no earlier layer regresses. Mapping to the hypothesis: extreme funding gate = entry_z on the settlement's regime-relative z-score (an ABSOLUTE bps gate produced zero trades because ETH funding compressed ~5x since 2021, so a fixed threshold sits above the entire modern range -- the z-gate keeps the mechanism intact while staying scale-invariant, per lesson L5); post-settlement reversion = LONG after extreme-positive / SHORT after extreme-negative; ~1-2h hold = hold_bars=4 on 30-minute bars; defined risk = 0.5% intrabar stop, 0.5% equity risk, leverage 1.0. Futures venue is required (the strategy shorts and the edge is funding-based). Honest caveat for the analyst: my own re-measurement over ~3,900 settlements put the post-settlement reversion at +0.001% to +0.10% gross across sensible gates and horizons against a ~0.10% taker round trip, with no statistically significant cell -- so I expect this to be fee-marginal, but the reported rejection was administrative (name collision) and the backtest, not I, should make that call.
Hypotheses
Negative expectancy on a reliable 328-trade / 6.4-year sample: total_return -35.2%, profit_factor 0.62 (losses dominate before fees), avg_trade_return_pct 0.066% (below the ~0.10% Binance USD-M round-trip and the 0.15% floor), Sharpe -0.19, expectancy -$140/trade. The post-settlement reversion edge is gross-marginal and net-negative across calm/normal regimes and 5 of 7 years; the one positive year rests on 2 outlier days, not a recurring edge. QA's fee-marginality concern is confirmed on full history. Optimization cannot lift a per-trade edge that is below zero and below trading costs — the 3 parameters (entry_z, hold_bars, stop_pct) have no region that turns a PF-0.62 signal positive. abandon_class=negative_expectancy.
Implementation
Long-short, single-instrument, event-driven strategy on ETHUSDT.BINANCE USD-M perpetual timed to the mechanical 8-hour funding settlement. On each settlement it measures how EXTREME that funding print is relative to the prevailing funding regime (z-score over the trailing 90 settlements, ~30 days), then trades the release of the pre-settlement funding-avoidance drift: after an extreme-POSITIVE settlement it goes LONG, after an extreme-NEGATIVE one it goes SHORT, on 30-minute bars. Positions are held ~2 hours (hold_bars=4) and closed by a time stop or a tight 0.5% intrabar stop; one position at a time, no averaging down, no leverage (risk 0.5% of equity per trade against the stop, notional hard-capped at 1x equity). The signal is continuous every bar: the settlement z-score damped by exp(-bars_since_settlement / decay_bars), so it peaks on the settlement bar and decays away, and the entry threshold only clears inside the reversion window.
Verification Results
Optional: document that entry cannot fire until >= min_obs settlements exist, so the effective warmup is settlement-count-driven, not bar-count-driven.
Verification Results
min_bars_required() override returns 20 bars, but the true readiness constraint is the z-score's min_obs = max(10, z_window//3) = 30 funding settlements, which is independent of bar warmup. This is not a bug (the causal z-build simply returns 0 until enough settlements accumulate, yielding no signal), but the 20-bar warmup does not actually gate the funding-history requirement.
Verification Results
Round to 4 decimals to match ETHUSDT size precision if finer sizing is desired; harmless as-is.
Verification Results
position_size rounds qty to 3 decimals, but ETHUSDT size precision is 4. Rounding to 3 is more conservative (never over-sizes) and stays above min-notional at 1x equity, so it is safe, just slightly coarse.
Verification Results
Sandbox is fee-marginal by the developer's own honest measurement: avg_trade_return_pct 0.054% sits below the ~0.10% futures round-trip and well below the 0.15% floor, with total_return -6.39%, Sharpe -0.93 (CI [-2.86, 1.01]), PF 0.70, commission 39.4% of gross, turnover 136. The developer re-measured the post-settlement reversion at +0.001% to +0.10% gross across sensible gates/horizons with no statistically significant cell. The mechanism (mechanical 8h funding-avoidance release) is real and correctly coded, but the raw per-trade edge looks too thin to clear taker fees; the z-gate keeps the firing rate scale-invariant which helps sample size (65 trades in ~344 days → measurable over full history). This is advisory for the analyst to judge on the real backtest/optimizer, not a block. Note the trade skew (5 long vs 60 short) in the sandbox window is a regime artifact of the funding sign, not a polarity bug.
Backtest Review
Mechanism (mechanical 8h funding-avoidance release) is faithfully coded and matches the hypothesis; entries are properly z-gated, defined-risk, single-instrument/single-venue, no look-ahead.
Backtest Review
Reliable, large sample: 328 trades over 6.4 years (113,712 bars), so the result is statistically measurable, not noise.
Backtest Review
Long/short polarity is correct (184 long / 144 short), so the negative result reflects the edge itself, not a sign bug.
Backtest Review
Negative expectancy on a full-history sample: total_return -35.2%, profit_factor 0.62, Sharpe -0.19 (CI [-1.04, 0.52]), expectancy -$140/trade.
Backtest Review
avg_trade_return_pct 0.066% is below zero-edge-after-cost: it sits under the ~0.10% Binance USD-M round-trip and well under the 0.15% floor; commission is 33.9% of gross and impact folds in another large chunk.
Backtest Review
Gross edge is essentially absent (PF < 0.7 means losses dominate WINS before even counting the fee drag); QA's edge_concern is borne out on the real backtest.
Backtest Review
Negative across regimes (calm -0.25, normal -0.09 Sharpe; only the stressed tercile is marginally positive at 0.04) and 5 of 7 years negative — the single positive year (2025 +23%) is carried by a couple of outlier days (2024-08-05 +25.5%, 2025-02-03 +15%), not a persistent edge.
Backtest Review
max_drawdown 52.7% with 14 consecutive losses — far beyond what any tuning of 3 params could rescue.
Analysis
Backtest gate:
- metrics unreliable: 426 trades / 2368 data days is too little evidence (need >=5 trades over >=10 days) — increase signal frequency or widen the window
Iteration History
EthFundingSettlementReversionLS
Iteration History
Verification failed (Layer 3 — sandbox backtest): No trades produced
Bar type used: ETHUSDT.BINANCE-15-MINUTE-LAST-EXTERNAL, Bars processed: 34813
Diagnostics: should_enter() returned a side 0 times over 34794 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds.
Ensure your strategy produces trades with the given data and parameters.
Iteration History
Verification failed (Layer 4 — QA review):
- FEE-VIABILITY FAILURE — the effect is smaller than the cost to trade it, even in the best case. The developer's own event study over 3,886 settlements finds the LARGEST mean post-settlement price move anywhere in the grid (bucket x horizon) is 0.0965%, which is below the 0.100% round-trip cost. So no configuration of this event can clear fees regardless of direction or hold length. The sandbox confirms the economics: avg_trade_return_pct -0.103% (negative), total_return -15.2%, profit_factor 0.265, Sharpe -1.81 (CI [-3.30, -0.22], entirely below zero), win_rate 0.31 over 61 trades. This is the fee_edge failure QA item 7 exists to reject at Layer 4: an expected per-event move below the round trip cannot be made profitable by any threshold.
- THE HYPOTHESIS'S CORE PREMISE IS FALSIFIED — there is no post-settlement reversion, and it runs the WRONG way. The strategy is built on: extreme-positive funding -> pre-settlement drift down -> post-settlement reversion UP -> go LONG. The developer measured the actual behaviour and it is the opposite and insignificant: after top-5% funding (strategy BUYS) price continues -0.0965% DOWN over the next hour, and after bottom-5% (strategy SELLS) it goes +0.0157% UP; NO bucket or horizon reaches significance (max |t| = 1.06). So the strategy systematically trades AGAINST a mild, statistically-insignificant continuation, which is exactly why the sandbox profit_factor is 0.265 (systematically wrong, not merely edgeless). Importantly this is NOT a code polarity bug — the code faithfully implements the hypothesis's stated LONG-after-positive polarity; it is the hypothesis's mechanism (reversion) that does not exist in the data. Flipping the strategy to trade WITH the drift would not rescue it either, because the move is sub-fee-floor and insignificant regardless of direction (finding #1).
- The zero-trade fix is correct and worth crediting (positive note). Iteration 1 gated on an absolute 5 bps threshold that sat above the entire recent funding range (max 3.65 bps in the sandbox window) because ETH funding compressed ~7x from 2020-21 to 2025-26 — a textbook L5 absolute-threshold-on-supplementary-data no_trades failure. The replacement with a strictly-causal trailing z-score (precomputed once, O(log N)/bar, using only settlements at or before each index) is the correct scale-invariant construction and restores a stable firing rate across regimes (462 events over full history, ~72/yr; 22 in the sandbox). The code is otherwise correct: decay-damped continuous signal, intrabar stop, ts_opened-derived time stop, fixed-fractional sizing with no leverage multiply. So the strategy is now correctly implemented AND measurable — it simply harvests an edge that does not exist net of costs.
Iteration History
Verification failed (Layer 4 — QA review):
- REVERSION PREMISE FALSIFIED — reconfirmed at iteration 3, with the mechanism absent at EVERY horizon over 3,886 settlements. The post-settlement reversion the hypothesis is built on does not exist: the edge is +0.001% to +0.10% across every sensible gate/horizon against a 0.100% taker round trip, and nothing is statistically significant. The sandbox at the honest default (entry_z=2.0) is catastrophically wrong-signed: total_return -14.7%, profit_factor 0.308, Sharpe -1.96 (CI [-3.41, -0.48], entirely below zero, probabilistic_sharpe 0.0048), win_rate 0.33, avg_trade_return_pct -0.084% over 63 trades. As at iteration 2, this is not a code polarity bug (the code faithfully implements the stated fade) — the mechanism is not in the data.
- The only fee-clearing configuration is best-of-N noise, correctly NOT tuned to. The developer's search surfaced one cell (z>=3.0, 2h hold) returning +0.254% gross / +0.154% net in the reversion direction, which would clear the round trip and produce a Layer-4 pass. It is a deflated-Sharpe/PBO trap and the developer proved it rigorously: (1) its |t|=1.48 is the MAXIMUM across 30 gate-by-horizon cells, but the expected maximum |t| under pure noise with 30 cells is ~2.3 — the best cell is WEAKER than chance would produce (the exact signature that killed BtcEnsembleVote and BtcVolNormalizedMomentum in this factory's log); (2) no horizon gradient (+0.056%/30m, +0.071%/1h, +0.254%/2h, +0.238%/4h, +0.051%/8h — a real reversion builds monotonically from the event, it does not appear only at 2h and vanish by 8h); (3) the mean rests on ~17 observations concentrated in two outlier years (2021 +1.24% n=11, 2026 +1.71% n=6) while 2023 (-0.18%) and 2025 (-0.42%) are negative; (4) in the compressed modern funding regime it fires only 5-6 times/year, below any trade-count floor and unable to populate a walk-forward or 15-day holdout. Tuning entry_z=3.0/hold_bars=8 to it would pass QA and then die at the deflated-Sharpe/PBO gate after burning a full backtest + 3-phase optimization; the developer correctly left the parameters honest and flagged it.
Backtest and paper results are hypothetical. Trading involves risk of loss.