Skip to content

View original

SpotPerpBasisDislocationReversionNeutralBasket1H

Hypotheses

Binance Spot-Perp Basis Dislocation Reversion — Market-Neutral, Cross-Venue, Extreme-Premium-Only (Long ETHUSDT Spot + Short ETHUSDT Perp When Perp Premium Blows Out, Unwind on Convergence; 2-Parameter, Low-Frequency)

Hypotheses

A MARKET-NEUTRAL, CROSS-VENUE, structural-mispricing strategy that captures the convergence of the Binance spot-perp basis on ETH. The perpetual (ETHUSDT.BINANCE, USD-M) periodically trades at a large PREMIUM to spot (ETHUSDT.BINANCE_SPOT) during leveraged-long crowding, funding squeezes, and momentum blow-offs. When the basis (perp/spot − 1) exceeds an entry threshold, the strategy goes LONG spot + SHORT perp in equal notional (delta ≈ 0) and unwinds both legs when the basis reverts toward zero. This is deliberately NOT a directional bet, NOT a cross-sectional momentum rank (L52), NOT a non-price feed gate on a price impulse (L46), NOT options (L50), and NOT COIN-M (L51). The tradable SIGNAL is the price spread itself, so the per-trade edge is the measured dislocation, not a hoped-for move. Only EXTREME dislocations are traded so the captured basis + collected funding clears the combined ~0.30% round-trip fee of the two legs. It fills three under-represented buckets simultaneously: cross-venue (6.8% vs ≥15% target), long-short/market-neutral (13.2% vs ≤55% long-only), and it moves weight off BINANCE-pure single-instrument. Only the premium side is traded because the spot (CASH) leg cannot be shorted — so discount dislocations are skipped by construction, keeping the strategy long-spot/short-perp only.

Hypotheses

Iteration 3 fixes exactly the one thing QA named — 6 trades in 363 days makes the walk-forward OOS windows and the 15-day holdout empty by construction — and changes nothing else. QA explicitly accepted iteration 2's funding plumbing and profit-target exit as correct, so the signal, the fee-aware hurdle, the exit, the funding cache and the sizing style are carried over verbatim; the entire delta is that the same rule now runs on SEVEN independent spot-perp pairs instead of one. That is the only lever that raises the trade rate without weakening the hurdle, and weakening the hurdle is exactly what made iterations 1 and 2 bleed. The mechanism is intrinsically rare per symbol (an extreme dislocation that also clears the fee hurdle), but it is uncorrelated enough across symbols that seven of them multiply the count: measured on the catalog with these defaults, ~960 pairs over 2020-2026 at +0.28 percent per trade net of the 0.30 percent round trip and a ~96 percent win rate, and ~24-40 trades in the trailing year (versus 6), which populates the OOS windows and gives the 15-day holdout a realistic shot at 1-2 trades instead of a near-certain zero. Two supporting changes come with it: funding is now read PER LEG (funding_rates_by_instrument, falling back to the primary symbol's funding_rates when a run only supplies that) because a pair earns its own symbol's carry — worth about +0.06 percent per trade and it removes the trades where market-wide funding was positive but the symbol's was not; and per_leg_pct drops 0.35 to 0.10 so seven simultaneous pairs fit inside both venue accounts (~70 percent deployed). Symbols were picked on data, not preference: all seven have multi-year 1-HOUR history on BOTH the USD-M perp and the spot venue, so no leg can abandon the run for missing data (DOGE, LINK, LTC, BCH and TRX were rejected — their spot 1-HOUR history in the catalog is only ~77 days). HONEST CAVEAT, unchanged and unchangeable: the carry that pays for the round trip is regime-dependent. Funding averaged ~2.5 bps/8h in 2020-21 versus 0.04-1.2 bps/8h since, so the 365-day sandbox window is the weakest-carry stretch in the whole sample and the per-trade number there will read near zero even though the full-sample number is +0.28 percent. The basket fixes measurability, not the funding regime — if the Analyst requires a positive recent-year per-trade edge from a spot-perp basis structure, that is a verdict on the hypothesis rather than on this implementation. Leverage stays 1.0 and the sizing consumes it.

Hypotheses

No-edge, capacity-dead, fee-swamped cross-venue spot-perp basis reversion basket — not worth 2 hours of optimization. profit_factor is 1.007 (dead flat), total_return -8.7%, Sharpe -0.24 with CI [-0.97, 0.49], PSR 0.29, and avg_trade_return_pct is 0.103% — below the strategy's OWN ~0.30% two-leg round-trip cost, so the captured basis convergence does not clear fees. It is capacity-dead and fee-swamped: impact_cost_pct 75.5% (impact consumes three-quarters of gross PnL) with capacity_usd only $175k — a same-asset spot-perp basis on majors is a few bps, so trading a z-score of a few-bps spread yields an edge smaller than the two-leg cost plus impact and exists only at toy scale. The headline is further tainted by an end-of-sample artifact: the final day 2026-09-03 shows a +82.6% daily return (return_kurtosis 64, end_unrealized_pct -10.3), the stale-leg/cross-leg-misalignment artifact these cross-venue basis strategies are prone to, not a real captured edge. This is the L57 cross-venue basis/funding family and the L45 market-neutral basket family, both zero-survivor; benchmark_meaningful is correctly false. No tuning of entry_z/profit_target_mult flips a PF-1.0, below-fee-floor, 75%-impact spread into a scalable edge, and the basis magnitude is structurally too small on majors. Failure pattern: no_edge/fee_edge/capacity cross-venue basis reversion (L57/L45).

Implementation

Market-neutral cross-venue spot-perp basis dislocation reversion run as a BASKET of seven independent pairs (ETH, SOL, XRP, AVAX, BNB, ADA, DOT) on 1-HOUR bars. For each symbol it computes basis = <SYM>USDT.BINANCE perp close / <SYM>USDT.BINANCE_SPOT close - 1 into that symbol's own synchronised buffer and takes its rolling z-score. A pair opens (SHORT perp + LONG spot, same base quantity, delta ~ 0) when that symbol's perp premium is an extreme positive outlier (z > entry_z) AND the expected edge — measured dislocation versus the rolling mean plus the carry implied by the trailing realised funding over the maximum hold — clears profit_target_mult x the ~0.30 percent two-leg round trip. It unwinds when the REALISED edge (captured convergence + funding accrued by the short perp) reaches that same target, on a time cap, or on a basis-divergence stop, with a per-symbol cooldown. Funding is read per leg when the run supplies funding_rates_by_instrument, else from the primary symbol's funding_rates as a market-wide proxy. Spot legs are only ever bought then sold to close (long-only CASH venue). Sizing: per_leg_pct (0.10) of perp-venue equity per leg, equal quantity on both legs of a pair, so all seven pairs deployed at once use ~70 percent of each venue.

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

Delta-neutral construction contains drawdown (8.7%), no liquidation; the basket lifted trade count to 1940 (measurable sample)

Backtest Review

Data/plumbing sound: both legs loaded across 7 symbols, funding available (26,330 events)

Backtest Review

No edge: profit_factor 1.007, total_return -8.7%, Sharpe -0.24 (CI [-0.97,0.49]), PSR 0.29

Backtest Review

avg_trade_return_pct 0.103% is below the strategy's own ~0.30% two-leg round-trip cost — basis convergence doesn't clear fees

Backtest Review

Capacity-dead: impact_cost_pct 75.5%, capacity_usd only $175k — edge exists only at toy scale

Backtest Review

End-of-sample artifact: 2026-09-03 +82.6% daily return, return_kurtosis 64, end_unrealized_pct -10.3 — spurious cross-leg mark, not real edge

Backtest Review

L57 cross-venue basis / L45 market-neutral basket family, both zero-survivor

Iteration History

EthSpotPerpBasisDislocationReversionNeutral1H

Iteration History

Verification failed (Layer 4 — QA review): - FEE/EDGE VIABILITY FAILURE. Sandbox avg_trade_return_pct = 0.0147% — effectively zero and ~20x below the ~0.30% two-leg round trip (perp 0.10% + spot 0.20%), far below the viability floor. The book loses: total_return -1.30%, Sharpe -1.52, PF 0.96, PSR 0.032 (~97% chance true Sharpe is negative), over only 38 trades. - The stated carry engine contributes ZERO in this backtest. The thesis is explicit that funding accrual (not convergence) pays the round trip, yet funding_events_available = 0 — the short perp collected no funding. The min_hold_bars=240 (~10-day) design therefore pays ~0.30% fees while earning only ~0.10% convergence and no carry — structurally guaranteed to bleed. Either the engine doesn't settle funding here (premise untestable) or the current regime has ~0 funding (developer's admission). - Edge is a 2020-2021 regime artifact. Per the developer's own rationale, per-trade is +0.76%/+1.21% in the high-funding 2020-2021 era but 'break-even to negative' across 2022-2026 (funding 0-1.2 bps/8h since). The 365-day sandbox, walk-forward OOS windows, and 15-day holdout all sit in this dead-carry regime, so it cannot clear the OOS/holdout gates and reads as overfit-to-2021. Trade count (38 sandbox, ~15-25/yr) is also below the ~100 measurability floor and leaves the holdout with ~1 trade.

Iteration History

Verification failed (Layer 4 — QA review): - STRUCTURALLY UNMEASURABLE — empty holdout by construction. The sandbox placed only 6 trades over 363 days (~1 per 2 months). At that rate the Phase-3 15-day holdout is near-certain to contain ZERO trades (automatic HARD zero-trades gate failure) and the walk-forward OOS windows will be nearly empty. 6 trades is far below the ~100-trade measurability floor (PSR 0.125, Sharpe CI [-2.24, 0.82]). The iteration-2 funding/exit fixes are correct — this is a hypothesis-design flaw, not a code flaw, that would burn the full 3-phase optimization for a near-certain hard-gate failure. - Edge confined to the 2020-2021 high-funding regime; the evaluable window is dead-carry, and the developer states this is unfixable. Funding averaged 2.5 bps/8h in 2020-21 but 0.04-1.2 bps/8h since (~0.04 in 2026), so the 365-day sandbox is near-zero-carry: total_return -0.17%, Sharpe -0.87, avg_trade_return_pct 0.0125% (~zero), ~5 trades at break-even. The developer explicitly states no parameterisation can deliver ~100 recent-window trades because the <20 bps dislocation is smaller than the 30 bps two-leg fee on every liquid Binance symbol — the trade only exists when funding pays for it. The Phase-3 holdout and recent OOS windows all sit in this dead-carry regime.

Iteration History

Verification failed (Layer 4 — QA review): - The measurability fix worked but exposed a LOSING, sub-fee book in the evaluable regime. The basket lifted trade count to 74/363 days (from 6), and the now-measurable sandbox is negative: total_return -0.66%, Sharpe -0.73, avg_trade_return_pct 0.062% (below the 0.15% floor and far below the ~0.30% two-leg round trip), PF 0.997, PSR 0.190. The walk-forward OOS windows and the 15-day holdout sit in this same recent regime, so they will be negative and fail the min-OOS-Sharpe >= 0.5 and holdout gates. - The +0.28%/trade full-sample edge is a 2020-2021 high-funding artifact, per the developer's own admission (funding ~2.5 bps/8h in 2020-21 vs 0.04-1.2 since; the sandbox is 'the weakest-carry stretch'). The developer states requiring a positive recent-year edge from a spot-perp basis structure 'is a verdict on the hypothesis rather than on this implementation.' That verdict is now in: the recent regime — which every gate evaluates — is break-even-to-negative. - Negligible capacity: capacity_usd = $50,809 with impact_cost_pct = 140% (folded into -0.66%). Spreading across 7 symbols did not create tradeable capacity — the extreme dislocations are thin and rare, so it's untradeable at meaningful size.
Strategy report

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