Skip to content

View original

EthSpotNeutralFundingRegimeDipReversionLong

Hypotheses

Neutral-Funding-Regime-Gated Spot Dip Reversion, Long-Only (Single-Instrument ETHUSDT.BINANCE_SPOT — Buy Sharp Multi-Percent Capitulation Dips ONLY When Perp Funding Is Near Zero = a Balanced, Range-Prone Regime; Stand Aside When Funding Shows a Strong Leverage Bias = Trending Regime, Reversion-to-Mean Exit, 3-Parameter)

Hypotheses

A LONG-ONLY, SINGLE-INSTRUMENT, SINGLE-VENUE mean-reversion strategy on ETHUSDT.BINANCE_SPOT — a deliberately different MECHANISM FAMILY from the momentum/trend-confirmation, cascade/absorption-reversal, and cross-sectional strategies that dominate (and keep dying in) the portfolio. The known reason naive crypto mean-reversion fails is that it buys dips inside downtrends that keep falling. The novel twist here is an ORTHOGONAL, data-SAFE REGIME GATE built from perpetual FUNDING (dense, multi-year-complete for ETH — the one supplementary feed already CONFIRMED reliable on a full sample, unlike the holed OI feed or the ~2.5-month liquidation feed). Mechanism: when funding is near ZERO and stable, neither side is leveraged — positioning is balanced and price action is structurally RANGE-prone, so sharp dips are overreactions that revert. When funding carries a strong positive OR negative bias, leverage is directional and the market is in a trending/squeeze regime where dips extend — so the strategy STANDS ASIDE. We trade the SPOT leg (no leverage, no liquidation risk, correct venue for a long-only unleveraged edge), take the signal from the perp's own funding stream (same asset, no cross-venue leg to fail Layer-3), and only act on LARGE (multi-percent) capitulation dips so the bounce clears the 0.20% spot round-trip. Fills the under-represented, highest-survival BINANCE_SPOT venue bucket. Kept to 3 parameters to resist the overfit deaths that dominate the log.

Hypotheses

I verified the hypothesis's central data claim and then pre-tested the mechanism before writing code, because my recent strategies died at Layer 4 on absent edge rather than on bugs. BOTH CHECKS PASSED. (1) DATA: ETH funding is genuinely dense and complete — 7,029 prints, 2020-01-01 to 2026-05-31, at 1,095-1,098 per year, i.e. exactly 3/day with no holes. This is a real contrast with the feeds that killed the sibling strategies (BTCUSDT metrics-OI has a 1,248-day hole; the liquidation capture is 77 days forward-only), so this hypothesis is correctly built on the one supplementary feed that survives a full-sample check. (2) MECHANISM: an event study over 2020-2026 on the real spot bars shows the funding gate discriminates in the direction the hypothesis predicts. At a 24h horizon with a 24h dip lookback, dips at z>=2.0 return +0.395% ungated, +0.834% (t=+3.7) in the neutral-funding bucket and +1.065% when biased; at z>=2.5 the neutral bucket returns +2.025% (t=+5.8) versus +0.934% ungated. Neutral beats biased in 10 of 12 gate-by-lookback comparisons at the 12h and 24h horizons, the horizon profile builds from 6h to 24h and then decays (a proper reversion gradient — exactly what was ABSENT in the falsified absorption and cascade strategies), and at 72-168h the BIASED bucket turns sharply negative (-1.3% to -3.1%) which is the 'dips extend in trending regimes' half of the hypothesis showing up independently. Crucially this survives multiple testing: the largest t is +6.1 against an expected maximum of ~2.9 under pure noise for the number of cells scanned, whereas the three strategies I just abandoned all peaked at or below their noise maximum. The unconditional control (all bars, 24h) is +0.193%, so the gated dip is a 4-10x improvement on ETH's drift rather than a repackaging of it, and +0.83% gross comfortably clears both the 0.20% spot round trip and the 0.25% spot floor. DESIGN CHOICES FOLLOWING FROM MY LESSONS: the funding gate is RELATIVE (bias versus its own trailing mean absolute level), not a fixed rate band — ETH funding ran ~+0.03%/8h in 2021 and is compressed near +0.01% now, so an absolute band would silently select the modern era, which is the failure mode behind my lesson on absolute supplementary thresholds. The signal is continuous and returned every bar rather than gated behind the entry condition, and the two entry conditions are correlated by construction (a deep dip in a calm regime) rather than independent, so this is not the compound-gate pattern that fires zero times in the sandbox. Warmup is ~15 days against a 365-day sandbox window, and per-bar cost is O(lookback) with forward-only pointers, so neither the zero-trade nor the 300s-timeout failure applies. ONE NON-OBVIOUS IMPLEMENTATION POINT worth the reviewer's attention: the traded instrument is spot, but BINANCE_SPOT has no entry in the loader's venue-to-exchange map, so a pure-spot config sees only the Vision parquet, which ends 2026-05-31 — that would have left the final ~2 months, INCLUDING the 15-day holdout, with no funding and therefore zero trades, reproducing the exact holdout starvation that has been killing strategies in this batch. Listing the perp as an extra instrument with no bar type makes the loader fetch that leg's DB-backed funding (current to today) into funding_rates_by_instrument, while leaving the leg completely inert in the engine: instruments are only registered when their venue matches the primary venue, and extra venues are only added for entries in extra_bar_types, which is empty. I confirmed both code paths rather than assuming them. The strategy reads the per-leg series when present and falls back to the parquet otherwise, which is what the Layer-3 sandbox will do since it collects supplementary data for the primary instrument only — and the parquet still covers 10 of the sandbox's 12 months, so Layer 3 will trade. The underlying one-line data-layer fix, if the team wants spot legs to see live funding generally, is to add a BINANCE_SPOT entry to that venue-to-exchange map.

Hypotheses

Decisive net loser with no edge net of costs: profit_factor 0.76 (<1.0), total_return -18.0%, Sharpe -0.225 (CI [-0.77, 0.34]), and avg_trade_return_pct -0.345% (NEGATIVE) with expectancy -$334/trade across 54 trades. The strategy is negative in 5 of 7 years (2020 -1.7%, 2021 -5.5%, 2022 -4.2%, 2024 -8.6%, 2026 -0.96%) and the two positive years are marginal (+0.58%, +1.04%) — no persistent edge in any regime. The hypothesis's central claim, that a neutral-funding regime gate fixes naive dip-buying, is falsified: the gated strategy still buys capitulation dips that keep falling and loses across the sample. A negative avg_trade_return_pct (not merely sub-floor) means the signal is wrong-signed, so reducing frequency or retuning thresholds cannot help — there is no edge anywhere in the parameter space to tune toward. Mean-reversion dip-buying is a repeatedly-dead family here, so reframing the same mechanism onto another instrument would lose again. Only 54 trades over 8 years also makes optimization statistically meaningless — the optimizer would fit noise. Per L8 (never advance when total_return ≤ 0 or PF < 1.0), abandon at BACKTEST_REVIEW rather than spend 2 hours optimizing.

Implementation

Long-only, single-traded-instrument mean-reversion strategy on ETHUSDT.BINANCE_SPOT (CASH account, leverage 1, liquidation structurally impossible), 1-HOUR bars. Each bar it folds in every perp funding print stamped at or before the bar (forward-only pointer, strictly non-anticipating) and forms two quantities: a volatility-normalised drawdown, dip_z = -(close/close[-24] - 1) / realised 24h vol, and a funding-neutrality weight, regime_w = 0.5*(1 - tanh((ratio - neutral_ratio)/regime_smooth)) where ratio = |mean of the last 3 funding prints| / mean(|funding|) over the last 90 prints (~30 days). calculate_signal returns dip_z * regime_w every bar: positive when price has fallen, scaled toward zero when funding carries a strong directional bias. It buys when that score clears entry_z (2.0) AND the raw drawdown clears min_dip_pct (2.0%), so the bounce can pay the 0.20% spot round trip. Exits are reversion-to-mean (price recovers to the pre-dip 24-bar mean), a 10% disaster stop, or a 24-bar time stop matching the measured reversion horizon. Position size risks 5% of equity against the 10% stop (50% of equity notional), capped at 95% of the USDT balance. The perp ETHUSDT.BINANCE is listed as an extra instrument with NO bar type purely so the loader also fetches its DB-backed funding series; it is never subscribed, never registered with the engine, and never traded.

Verification Results

At backtest review/optimization examine the stop-vs-target asymmetry; allow the optimizer to tighten stop_pct or use a horizon-based exit closer to the event study's 24h measurement.

Verification Results

SANDBOX RESULT CONTRADICTS THE MOTIVATING EVENT STUDY, and the exit design is a likely cause. The event study measures FIXED 24h-forward returns (neutral bucket +0.83% at z>=2.0, t=+3.7), but the strategy's realized exit is asymmetric: TP capped at the pre-dip 24-bar mean (~1-3% above entry) vs a wide 10% disaster stop. The sandbox shows win_rate 0.60 but avg_win 1339 vs avg_loss 2626 → NEGATIVE expectancy (avg_trade_return_pct -0.185%, PF 0.765, total_return -3.70% over 344 days). The hypothesis itself specifies a reversion-to-mean exit, so this is not a code/hypothesis mismatch, but the analyst should scrutinize whether the edge survives this exit geometry.

Verification Results

Verify the full backtest spans the complete funding window and yields ~80+ trades; abandon on measurability if trade count collapses.

Verification Results

MEASURABILITY BORDERLINE. 15 trades over 344 days extrapolates to ~90-100 over the full 2020-2026 funding-backed window — right at the floor for walk-forward + holdout. Better than the liquidation/OI siblings (ETH funding is dense and complete, holdout window covered), but the sample is thin enough that OOS Sharpe estimates will be noisy.

Verification Results

Verify the perp leg stays inert on the full run (zero futures trades/commission). Recommend the data engineer add a BINANCE_SPOT venue-to-exchange map entry to remove the hack.

Verification Results

FRAGILE CROSS-VENUE HACK: perp ETHUSDT.BINANCE (different venue than the BINANCE_SPOT primary) is in extra_instruments with no bar type purely to load its funding. Developer claims it is fully inert; sandbox ran clean via the parquet fallback. But the FULL backtest exercises the per-leg funding path the sandbox skipped. Confirm no futures position/fees/margin ever appear and on_stop() leaves no futures position open.

Verification Results

No action; confirms the frozen synthetic signals are intended fail-safe behavior.

Verification Results

Layer-2 synthetic tests show frozen signal 0.0 across all scenarios — expected/benign: the synthetic proxy supplies no funding, so the strategy correctly stands aside instead of ungated dip-buying. The real-funding sandbox produced 15 trades, proving the path is live.

Backtest Review

Clean, data-safe construction: single venue, spot (no leverage/liquidation), inert perp leg for funding — verification-safe, orthogonal regime source

Backtest Review

Deliberately kept to 3 tunables to resist overfitting

Backtest Review

Fills the under-represented BINANCE_SPOT bucket

Backtest Review

profit_factor 0.76 (< 1.0) — the strategy loses money gross of nothing; total_return -18.0%

Backtest Review

avg_trade_return_pct is NEGATIVE (-0.345%) and expectancy -$334/trade — the signal has no edge, it is wrong-signed, so no fee/frequency change can fix it

Backtest Review

Sharpe -0.225 (CI [-0.77, 0.34]); negative in 5 of 7 years, the two positive years marginal (+0.58%, +1.04%)

Backtest Review

Only 54 trades over 8 years — statistically too sparse for optimization to fit anything but noise

Backtest Review

return_kurtosis 128 — the record is dominated by one outlier, no persistent structure

Backtest Review

The core thesis is falsified: the neutral-funding gate did NOT rescue mean-reversion dip-buying — the strategy still buys dips that keep falling and loses across regimes

Outcome Summary

This strategy attempted to rescue naive crypto dip-buying — which fails because it buys dips inside downtrends — with a clever, orthogonal regime gate: only buy sharp ETH spot capitulation dips when perpetual funding is near zero (balanced positioning, range-prone tape) and stand aside when funding shows directional leverage bias. The engineering was clean and data-safe, using an inert perp leg purely to source funding and keeping to 3 parameters. But the backtest falsified the thesis outright: profit factor 0.76, a -18% return, a negative per-trade edge, and losses in 5 of 7 years, showing the gate did not stop the strategy from buying dips that kept falling. The analyst abandoned it at backtest review as a decisive net loser in the repeatedly-dead mean-reversion dip-buy family — wrong-signed with no edge anywhere in the parameter space and too few trades (54 over 8 years) for optimization to be anything but noise-fitting.

Outcome Summary

An orthogonal, data-safe regime gate does not automatically fix a repeatedly-dead mechanism — a neutral-funding filter did not stop ETH spot dip-buying from catching falling knives, and a negative (wrong-signed) per-trade return with a sparse, outlier-dominated sample leaves no parameter region to tune toward.

Outcome Summary

It was abandoned at the BACKTEST_REVIEW gate under the rule against advancing when total return ≤ 0 or profit factor < 1.0: the central thesis was falsified — the neutral-funding regime gate did not rescue dip-buying, the strategy still bought capitulation dips that kept falling and lost across regimes. A negative per-trade return means no fee/frequency/threshold change can help, and 54 trades over 8 years is too sparse for optimization to fit anything but noise, so it never reached optimization or analysis.

Outcome Summary

A long-only, single-instrument, single-venue mean-reversion strategy on ETHUSDT.BINANCE_SPOT that buys sharp multi-percent capitulation dips only when perpetual funding is near zero (a balanced, range-prone regime where dips revert) and stands aside when funding carries a strong directional leverage bias (a trending/squeeze regime where dips extend), reading the perp's funding stream as an orthogonal regime gate and exiting on reversion or a time stop.

Outcome Summary

The backtest was a decisive net loser with no edge: profit factor 0.76, total return -18.0%, Sharpe -0.225 (CI [-0.77, 0.34]), and a negative avg_trade_return_pct of -0.345% (expectancy -$334/trade) over just 54 trades in 8 years. It was negative in 5 of 7 years with the two positive years marginal (+0.58%, +1.04%) and a return kurtosis of 128 (record dominated by one outlier), meaning the signal is wrong-signed rather than merely thin.
Strategy report

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