Skip to content

View translation

SolCrossVenueFundingSpreadNeutral4H

Hypotheses

Cross-Venue Inter-Exchange Funding-Differential Harvest — Delta-Neutral SOL: Short the Higher-Funding Perp / Long the Lower-Funding Perp Across BINANCE vs HYPERLIQUID, Collect the Funding SPREAD (Not Directional Carry), Basis-Stopped, Held Days (2-Leg, Market-Neutral, 3-Parameter)

Hypotheses

A CROSS-VENUE, MARKET-NEUTRAL relative-value strategy that harvests the FUNDING-RATE SPREAD between the SAME asset's perpetual on two different exchanges — BINANCE USD-M SOLUSDT vs HYPERLIQUID SOLUSD. Both legs are perpetuals on the identical underlying, so the position is delta-neutral by construction: you are NOT taking a price direction and you are NOT doing single-leg funding carry (the mechanism that lost money in the abandoned 'SOL Persistent-Funding Contrarian Swing'). The ONLY PnL source is the funding differential — you SHORT whichever venue is paying the more-positive funding (shorts receive funding there) and simultaneously go LONG-equal-notional on the venue with the lower/negative funding (longs receive, or pay less). Because the two legs track one underlying, directional price PnL nets to ~0; the residual variance is only the small, mean-reverting BASIS (price gap between the two venues), which a hard basis-stop caps. This is inter-exchange funding arbitrage (Cross-Venue Pattern #3 hybrid with #2), a structurally under-explored, fee-forgiving edge — it captures a mechanically-paid cash flow rather than fighting friction. Chosen because the portfolio is starved of cross-venue (7.4% vs 15% target) and long-short/market-neutral (14.2%) exposure, and because funding data for BOTH Binance and Hyperliquid SOL exists in the catalog with multi-year history at daily/4h resolution (HL daily/4h is not history-limited). SOL is chosen for meaningful cross-venue funding dispersion (higher-beta alt) while remaining top-tier liquid on both venues. Only 3 free parameters (entry spread threshold, exit spread threshold, basis-stop) to resist the overfitting that is the #1 killer here.

Hypotheses

Iteration 2 fixes the QA hypothesis_mismatch (timeframe): the sampling clock is now pinned to 4-HOUR bars on BOTH legs, matching the hypothesis's stated 'daily/4h resolution' and days-long holds, this class's own name, and the interval every bar-denominated parameter is calibrated in (spread_smooth_bars 24 x 4H = 4 days); 4H is also an exact divisor of the Binance 8h funding settlement so no settlement is straddled. No unilateral re-sampling to another clock. Verified both legs exist in the catalog at 4H (SOLUSDT.BINANCE-4-HOUR and SOLUSD.HYPERLIQUID-4-HOUR, HL history from 2024-01) so the multi-leg data gate cannot abandon the run. Signal/entry/exit logic, imports and structure are unchanged from previous_code (earlier layers stayed green); the only other edit declares the spread_smooth_bars clamp [6, 48] in _param_bounds so the optimizer never searches values the code silently rewrites. Note for the record: the QA feedback text quoted an ETHUSDT weekly-vs-daily case that does not correspond to this SOL cross-venue pair, so I applied the general timeframe-alignment ruling rather than the literal ETH details. Equal USD notional on both legs keeps net delta ~0 per lesson L59; leverage stays 1.0 and is not referenced in sizing.

Hypotheses

Negative-expectancy funding-differential harvest on a reliable 20-trade sample. Funding cash flows ARE credited by the current engine (per the 2026-06-10 change), so this is a fair test of the mechanism — and with funding included the Binance-vs-Hyperliquid SOL differential still does not clear the ~0.19% two-leg round trip: avg_trade_return_pct -0.03955% (negative, below the 0.15% floor), profit_factor 0.989, total_return -0.33%, Sharpe -0.035. The differential (~8.6% APR = 0.024%/day) is too thin to out-earn costs on the observed hold durations, and impact_cost_pct 259.9% / capacity_usd ~$14.8K make the edge toy-scale only. Optimization cannot lift a per-trade edge that sits below trading costs; this is the classic fee_edge / negative-expectancy signature and iterating thresholds has never rescued it.

Implementation

Delta-neutral cross-venue SOL perp pair on 4-HOUR bars: converts Binance USD-M (per-8h) and Hyperliquid (per-1h) funding to annualized percent, differences them, EMA-smooths over 24 bars (4 days), and when |spread| >= 8% APR shorts the richer-funding venue while going long equal USD notional on the cheaper one. The only PnL source is the funding differential; directional price PnL nets out. The book is held through spread decay (unwinding costs a full 0.19% round trip and earns nothing flat) and turned over only when the smoothed spread inverts past the 5% APR flip band, or on a 2.5% basis stop / 45-day calendar hold cap. Goes flat if either venue's funding series is missing -- no price-only fallback.

Verification Results

[archived 2026-09-05] The Layer-4 feedback previously stored here was a QA review of a DIFFERENT strategy (ETHUSDT.BINANCE weekly-vs-daily trend review (run is SOL cross-venue funding harvest)), delivered to this run by the shared-session/shared-outbox bug fixed in fbae0041 (per-call isolation + call_id binding). It was moved to metadata.foreign_feedback_archive and must be disregarded; the next QA review of this run is authoritative.

Verification Results

Analyst: confirm funding cash flows are applied to both legs in the backtest engine, then re-check net-of-fee per-trade carry at the optimized enter/exit thresholds.

Verification Results

avg_trade_return_pct in the sandbox (0.1135%) sits just below the 0.15% futures fee floor and PF is 1.01 — the funding differential is a thin, slow cash flow and viability depends entirely on funding being credited in PnL and on multi-day holds accruing enough carry to beat the 0.19% round trip. Informational; the full backtest and optimizer decide viability.

Verification Results

Sandbox is essentially break-even: total_return +0.167% over 2181 days, avg_trade_return_pct 0.1135% (below the 0.15% futures floor), profit_factor 1.013, win_rate 0.50 across only 22 trades. This is an unoptimized smoke test so it does not block, but two things the analyst should verify with full-history numbers: (1) that the NautilusTrader backtest actually credits perp FUNDING cash flows on both legs — funding is this strategy's ENTIRE PnL source, and if funding is not applied the measured return is only basis noise minus fees; (2) fee/carry viability at the real thresholds — the differential (~8.6% APR ≈ 0.024%/day) needs ~8 correctly-positioned days to clear the 0.19% two-leg round trip, so per-trade edge is thin and hold-duration dependent (observed avg hold ~29d). Also note impact_cost_pct 44.9% / capacity ~$495K at per_leg_pct 0.50 (150% gross exposure) — a real capacity ceiling, though one-time on the low-turnover entry/exit of a ~22-trade book.

Backtest Review

Mechanism is faithfully implemented and market-neutral by construction (equal-notional two-leg SOL perp pair, funding-spread signal, naked-leg guard, basis stop).

Backtest Review

Funding cash flows ARE credited by the current engine, so this is a fair test of the funding-differential edge — not a structural un-backtestability block.

Backtest Review

Only 3 core parameters; low researcher degrees of freedom.

Backtest Review

Negative expectancy on a reliable sample: total_return -0.33%, avg_trade_return_pct -0.03955% (negative, below the 0.15% futures floor), profit_factor 0.989, Sharpe -0.035 over 20 trades. Funding is credited, so the differential simply does not clear the ~0.19% two-leg round trip.

Backtest Review

Edge is structurally thin and hold-dependent: ~8.6% APR differential (0.024%/day) needs ~8 correctly-positioned days just to break even; the realized result confirms it does not.

Backtest Review

Capacity ceiling is toy-scale: impact_cost_pct 259.9% and capacity_usd ~$14.8K mean the phantom edge exists only at trivial size.

Backtest Review

Hyperliquid leg only exists from 2024-01-25, so the effective test window is ~1.6 years / 20 trades regardless of the 6-year primary span.

Iteration History

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['per_leg_pct', 'min_notional', '_param_bounds', 'max_hold_days', 'min_hold_hours', 'exit_spread_apr', 'enter_spread_apr', 'max_basis_stop_pct', 'spread_smooth_bars'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: TypeError: SolCrossVenueFundingSpreadNeutral4H._lookup() takes 4 positional arguments but 5 were given (bar timestamp: 1735690740000) - steady_downtrend: TypeError: SolCrossVenueFundingSpreadNeutral4H._lookup() takes 4 positional arguments but 5 were given (bar timestamp: 1735690740000) - flat_ranging: TypeError: SolCrossVenueFundingSpreadNeutral4H._lookup() takes 4 positional arguments but 5 were given (bar timestamp: 1735690740000) - volatility_spike: TypeError: SolCrossVenueFundingSpreadNeutral4H._lookup() takes 4 positional arguments but 5 were given (bar timestamp: 1735690740000) - zero_volume: TypeError: SolCrossVenueFundingSpreadNeutral4H._lookup() takes 4 positional arguments but 5 were given (bar timestamp: 1735690740000) - price_gap: TypeError: SolCrossVenueFundingSpreadNeutral4H._lookup() takes 4 positional arguments but 5 were given (bar timestamp: 1735690740000)

Iteration History

Verification failed (Layer 4 — QA review): - Fee/edge viability fails decisively on the ACTUAL engine result (checklist #7, L6/L26). The sandbox is a losing book: total_return -2.17%, profit_factor 0.957 (<1.0), Sharpe -0.35, expectancy -$45/trade, and avg_trade_return_pct -0.0033% — NEGATIVE and ~45x below the 0.15% futures floor. Over a measurable sample (82 trades, metrics_reliable: true), so a genuine no-edge result. Funding WAS credited (2580 events), so even with the differential paid in full the strategy does not clear the ~0.19% round-trip cost. - The core hypothesis — 'directional price PnL nets to ~0; residual variance is only the small, mean-reverting basis' — is NOT what the engine produced. Per-trade PnL is dominated by huge symmetric swings: avg_win $2,009 ~= avg_loss $2,099, largest ±$9,600-9,959, win_rate 0.50. A genuinely delta-neutral funding-spread harvest should show PnL an order of magnitude smaller and skewed positive by carry; instead the differential (net -$45/trade) is dwarfed ~45:1 by basis/price noise. Identical signature to abandoned EthCrossVenueCashAndCarry and prior cross-venue funding-capture variants.

Iteration History

Verification failed (Layer 4 — QA review) [class=hypothesis_mismatch]: - [edge_concern] Not the reason for the verdict, recorded for the analyst if the hypothesis is re-registered: on the daily clock the sandbox is honest and healthy (metrics_reliable=TRUE, 92 trades, Sharpe 0.79 CI [0.10,1.51], avg_trade_return_pct 3.61%, PF 1.48), but regime_performance shows ALL of the positive return concentrated in the 'normal' vol tercile (+489%, Sharpe 2.64) with the 'calm' (-18.8%) and 'stressed' (-21.8%, 56.7% DD) terciles both negative, and only_one_regime=true. Max drawdown 36% with a 1038-day underwater duration. The edge is real but regime-concentrated and drawdown-heavy; size/robustness deserve scrutiny at full backtest. - TIMEFRAME MISMATCH vs the pre-registered hypothesis. The hypothesis of record (title and description in this brief) unambiguously and repeatedly specifies WEEKLY bars ('on WEEKLY bars, holding positions for weeks-to-months'), but config.bar_type is ETHUSDT.BINANCE-1-DAY-LAST-EXTERNAL. This is not a cosmetic re-sampling: it changes the trade count (28 weekly -> 92 daily), the average hold (10.4 weeks -> 3 weeks) and the entire statistical test. The developer's own module docstring concedes that iteration 3 made this identical daily switch and QA 'was right to reject that: it was a hypothesis reformulation made unilaterally in code.' The situation is materially unchanged: the hypothesis on record still says weekly, so this is again a unilateral in-code timeframe reformulation. Layer 1.5 only validates instrument/venue, not timeframe, so this check falls to QA, and a hypothesis-stated timeframe that differs from config.bar_type is a critical mismatch. This is exactly the researcher-degree-of-freedom the factory's pre-registration system exists to prevent: the weekly form was found unmeasurable, and the sampling clock was then changed to manufacture measurability.
Strategy report

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