SolPerpFundingExtremeContrarianReversionLS
Hypotheses
SOL Perp Funding-Extreme Contrarian Reversion (Single-Instrument USD-M, Long-Short, Funding Z-Score as Sentiment Signal)
Hypotheses
A long-SHORT, SINGLE-INSTRUMENT, single-venue directional strategy on SOLUSDT.BINANCE USD-M perpetual futures using 4-HOUR bars, where the funding rate is used ONLY as a crowding/sentiment SIGNAL (never credited as a cash flow). The thesis is positioning-crowding mean reversion: when the 8h perpetual funding rate becomes extreme relative to its own recent distribution, it marks an over-leveraged, crowded book (extreme positive = crowded longs; extreme negative = crowded shorts) that tends to revert in PRICE via a squeeze/flush over the following 1-3 days. This deliberately avoids every recurring failure mode this session: it is NOT on BINANCE_SPOT (the CASH net-liquidation metric bug), NOT on BINANCE_CM (COIN-M not backtestable), NOT cross-venue and NOT Hyperliquid (basis-feed artifact), NOT a multi-instrument pair (extra-leg feed not delivered to optimizers), and NOT a funding-CARRY strategy (its P&L comes entirely from price moves the engine fully credits, not from funding payments the engine ignores). It also fills the long-short direction quota (currently only 14.5% vs <=55% long-only target) and runs on the clean single-instrument USD-M OHLCV path the analysts repeatedly confirm is reliable. Kept intentionally low-parameter to resist the overfit signature that killed the trend-following hypotheses.
Hypotheses
The Layer-3 failure was 'No trades / should_enter returned a side 0 times over 12412 evaluated bars' -- calculate_signal ran but the entry condition (non-None funding z >= +/-1.5) never held. Root cause: _build_funding parsed the funding map with `if not isinstance(k, int): continue`, but supplementary_data is passed into the backtest subprocess via JSON, which stringifies ALL dict keys, so the funding series arrived with string keys only and the int-only filter discarded every entry -> _fund_ts empty -> _funding_zscore always returned None -> no entries. The minimal fix rewrites the key parse to accept int OR str keys via int(k) (with try/except) and dedupe by timestamp using a seen-set (which also collapses the dual int/str keys present in the in-process map). This is the inverse of the data-shape-across-the-subprocess-boundary class of bug. All signal, entry, exit, and sizing logic -- which already passed Layers 1-2 -- is byte-identical; only _build_funding changed. With the funding series now populated, the 30-observation z-score reaches +/-1.5 often enough (~10% of funding observations) to fire entries, so the contrarian-reversion mechanism is finally exercised. Thresholds were left at the hypothesis defaults (entry_z 1.5) rather than loosened, because the true blocker was empty funding data, not over-tight thresholds; the analyst can sweep entry_z/funding_window during optimization once trades are produced. leverage stays 1.0 (referenced nowhere as a multiplier), single-instrument single-venue USD-M, funding used only as signal (no carry/cash-flow dependency), and the strategy still stands aside when funding is genuinely absent (no price-only fallback).
Hypotheses
SOL funding-extreme contrarian price-reversion has no tradeable edge and a capacity wall. It is a clean test (the funding_rates feed has full history, 531 trades, and the funding-as-sentiment usage is correct — P&L comes from price, not credited carry), but the signal does not forecast SOL reversals profitably: total_return -7.2%, Sharpe 0.12 with sharpe_ci_low -0.95 (CI straddles 0), profit_factor 1.02 (barely break-even gross), negative alpha -0.0115, with avg_win ~ avg_loss (~$990) at a 50% win rate. Critically there is a capacity wall: impact_cost_pct 42.15% (modeled market impact consumes 42% of gross PnL) and capacity_usd only $563K — so the razor-thin gross edge is erased by impact at any deployable size, which is why the net result is -7.2%. The strategy is genuinely market-neutral (correlation 0.09), so there is no beta to compensate for the missing alpha, and recent years decay (2023 -1.9%, 2024 -5.0%, 2026 -4.3%). Not optimize: a PF-1.02, net-negative, capacity-walled base would curve-fit noise. Not iterate: a market-neutral signal with PF ~1.0 has no edge for any parameter to surface, and the $563K/42%-impact capacity wall is structural to trading funding-z-extreme entries at size. FAILURE PATTERN: funding-rate-as-sentiment contrarian reversion on a single alt perp produces an essentially break-even gross signal (PF ~1.0, Sharpe CI through 0) that nets negative after market impact, with a tiny capacity ($563K) because the per-trade edge is too thin to overcome impact — funding extremes mark crowding but do not reliably precede a tradeable price squeeze on SOL. Unlike the OI/L-S/liquidation feeds, funding data IS backtestable, but the funding-positioning-reversion mechanism has no deployable edge; the Research Lead should not pursue further funding-z-extreme price-reversion variants on single alts.
Implementation
Long-short single-instrument funding-extreme contrarian price-reversion on SOLUSDT.BINANCE USD-M perpetual, 4-hour bars. The 8h funding rate is used only as a crowding/sentiment signal (never credited as cash flow): when funding z-scores >= +1.5 vs its trailing 30-observation distribution (crowded longs) it shorts, and when <= -1.5 (crowded shorts) it longs, betting on a 1-3 day price squeeze/flush back toward equilibrium. It exits on the earliest of funding normalizing (|z| < 0.5), a 6% stop, an 8% take-profit, or an 18-bar (~3 day) time stop. P&L comes entirely from price moves the engine credits, not funding payments. Position 20% of equity, leverage 1.0, long-short. Low parameter count to resist overfit.
Verification Results
Verification failed (Layer 3 — sandbox backtest): No trades produced
Bar type used: SOLUSDT.BINANCE-4-HOUR-LAST-EXTERNAL, Bars processed: 12431
Diagnostics: should_enter() returned a side 0 times over 12412 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds.
Ensure your strategy produces trades with the given data and parameters.
Backtest Review
Funding_rates feed has full multi-year coverage (531 trades) — avoided the derivatives-state data wall; correct funding-as-sentiment usage (P&L from price, not credited carry)
Backtest Review
Genuinely market-neutral (beta 0.009, correlation 0.09); healthy sample, fills the long-short quota
Backtest Review
No edge / net-losing: total_return -7.2%, Sharpe 0.12 (sharpe_ci_low -0.95, CI straddles 0), PF 1.02 (break-even gross), negative alpha -0.0115, info_ratio -0.86
Backtest Review
Capacity wall: impact_cost_pct 42.15% (impact eats 42% of gross), capacity_usd only $563K — undeployable; the razor-thin gross edge is consumed by impact (hence net -7.2%)
Backtest Review
Mixed/decaying: positive 2020/2022 but negative 2023 (-1.9%), 2024 (-5.0%), 2026 (-4.3%); max_DD 20.7% (ci_high 46.9%), 1,242-day drawdown
Outcome Summary
SolPerpFundingExtremeContrarianReversionLS used SOL's funding rate strictly as a sentiment signal — fading crowded long/short positioning to catch a mean-reverting price squeeze — deliberately built on the clean, backtestable single-instrument USD-M path to avoid the data-feed and venue failures of prior session hypotheses. The mechanism was implemented correctly (P&L from price, not credited carry) and ran on a full funding feed with 531 trades, but the signal simply did not forecast SOL reversals profitably: profit factor 1.02, Sharpe with a confidence interval through zero, negative alpha, and a net -7.2% return, with recent years decaying. Worse, modeled market impact consumed 42% of gross PnL against a $563K capacity, making it undeployable at any size. The analyst abandoned it at the backtest-review gate, concluding that funding-z-extreme price reversion has no deployable edge on single alts and that the Research Lead should not pursue further variants of it.
Outcome Summary
Funding extremes mark positioning crowding but do not reliably precede a tradeable price squeeze on a single alt perp — the funding-z-extreme reversion mechanism produces a break-even gross signal that nets negative after impact, with capacity too tiny ($563K) to ever deploy, so this lane should not be pursued further on single alts.
Outcome Summary
On its second iteration the analyst issued an 'abandon' verdict at the pre-optimization backtest-review gate, so optimization, full analysis, and risk review never ran: a PF-1.02, net-negative, capacity-walled signal has no edge for any parameter to surface, and the razor-thin gross edge is structurally erased by 42% market impact at any deployable size.
Outcome Summary
A long-short, single-instrument directional strategy on SOLUSDT.BINANCE USD-M 4H perpetual futures that used the 8h funding rate purely as a crowding/sentiment signal (never as carry), shorting when funding z-scored to an extreme positive (crowded longs) and longing on extreme negatives (crowded shorts), betting on a price squeeze/flush reversion over 1-3 days, with low parameter count to fill the long-short direction quota.
Outcome Summary
Over 531 trades on a clean multi-year funding feed it showed essentially no edge: total return -7.2%, Sharpe 0.12 with sharpe_ci_low -0.95 (CI straddling zero), profit factor 1.02 (break-even gross), negative alpha -0.0115, ~50% win rate with avg win ≈ avg loss (~$990), 20.7% max drawdown, and a capacity wall — impact_cost_pct 42.15% against capacity of only $563K.
Backtest and paper results are hypothetical. Trading involves risk of loss.