SolFundingPositioningCrowdingReversalLS
Hypotheses
Funding-Positioning Crowding Reversal, Long-Short (Single-Instrument SOLUSDT.BINANCE USD-M — Fade PERSISTENTLY Extreme Perp Funding as a Crowded-Positioning Signal: Short When Longs Are Crowded and Paying, Long When Shorts Are Crowded, Multi-Day Hold Until Funding Normalizes, 2-Parameter)
Hypotheses
A LONG-SHORT, SINGLE-INSTRUMENT, SINGLE-VENUE swing strategy on SOLUSDT.BINANCE USD-M whose ONLY signal is the perpetual FUNDING RATE — a feed that is confirmed present and reliably loadable in the Layer-3 sandbox (dozens of prior funding hypotheses reached Layer-4 QA on data; they died on edge/fee math or on being intraday carry, NOT on data availability). The mechanism is orthogonal to price and is NOT a re-derivation of trend: funding is a direct read of leveraged POSITIONING. When the 8h funding rate has been persistently, extremely POSITIVE across several consecutive settlements, longs are crowded and mechanically paying to hold — a state that historically precedes forced-deleveraging flushes and negative forward returns. Symmetrically, persistently deep-NEGATIVE funding marks crowded shorts primed for a squeeze. We take a CONTRARIAN directional position against the crowd and hold for DAYS until funding normalizes, so turnover is very low (a handful of trades per quarter) and per-trade fee drag (~0.10% RT) is trivial against multi-percent crowd-unwind moves. This deliberately fills the LONG-SHORT direction bucket (only 13.4% of the portfolio vs the ≤55% long-only target) and avoids every recent death pattern: it is not OHLCV-only-directional (L42), not cross-venue/multi-leg (L44), not options/IV-dependent (L43), not a liquidations-feed strategy (data_unavailable), not OI (feed holes), and not intraday carry (fee_edge). SOL is chosen over BTC (2% BTC survival) because alt funding skew is more persistent and more extreme, giving larger, cleaner crowding signals.
Hypotheses
Iteration 3 makes ONE change, the smallest one that addresses the named Layer-4 failure, and keeps every previously-passing layer intact (same imports, same class structure, same percentile gate and clipped-ramp persistence from iteration 2, same funding-loading path that produced 88 trades on 678 funding events, same exit/sizing/risk code). The QA verdict is accepted on its own terms: the LEVEL-triggered fade is falsified — entering while funding is still at its extreme buys into an ongoing continuation (short leg -2.07% @3d t=-4.9, -4.70% @7d t=-6.8), and the sandbox confirmed it in-sample on both legs. I did NOT flip the sign into a continuation strategy; that would be smuggling a different hypothesis in under this one's name, and it belongs to the Research Lead. Instead the entry is re-timed to the part of the hypothesis's own mechanism that has never been tested: it states the crowded state 'precedes forced-deleveraging flushes', and the flush IS the unwind — so the fade now fires only after an episode has reached the extreme percentile band, persisted, and then retraced 30% of the way back from its peak (leverage demonstrably being shed) while still outside the normal band, with one entry per episode (re-arms only when funding returns inside the band or the crowd flips sides). Direction, instrument, venue, feed, exit and sizing are unchanged; the falsifying event study priced extreme-LEVEL events, which is a different and larger event set than roll-over events. Signal remains continuous every bar (-peak x persistence-ramp x unwind-ramp), both legs remain symmetric by construction, and trade count should stay comfortably above the Layer-3 >=1 floor (roughly one entry per crowding episode rather than several). Honest statement for the record: if this roll-over-timed entry also comes back negative, the crowding-reversal mechanism should be abandoned rather than iterated again — every remaining lever (raising entry_pct toward the small-n 2021 tail cells, lengthening the hold) is curve-fitting, and I have deliberately left the parameters at the same economically-motivated values as iteration 2 rather than tuning toward those cells.
Hypotheses
Negative-expectancy single-perp funding-crowding reversal — no edge to optimize. Over 168 trades: avg_trade_return_pct -1.11% (NEGATIVE), profit_factor 0.71, total_return -27.0%, expectancy -$147/trade, Sharpe -0.72 (CI [-1.46, 0.18] essentially below zero), PSR 0.128, information_ratio -1.03. It loses in 4 of 7 years (2021 -13.4%, 2022 -4.8%, 2025 -5.3%, 2026 -10.8%) and in both calm (Sharpe -1.16) and stressed (-1.07) regimes, with rolling Sharpe decaying to -9 by 2026; both legs lose (long win 45% / short win 48%), so the contrarian sign is wrong on SOL. This is not a data wall — funding loaded (1944 events, 168 trades) — the signal is genuinely edge-less. The developer's own docstring pre-registered abandonment: the LEVEL-triggered fade was already falsified (-15.1%, PF 0.60), and it states that if the iteration-3 roll-over-timed entry also came back negative the crowding-reversal mechanism 'should be ABANDONED rather than iterated further — the remaining levers would all be curve-fitting.' The roll-over version came back negative, so the strategy's own terms mandate abandon. This is the L73 single-perp supplementary-gated (funding) directional/fade family, established edge-dead this session in both orientations. No tuning of entry_pct/persist_min flips a -1.11%/trade edge positive. Failure pattern: no_edge single-perp funding-gated crowding reversal (L73).
Implementation
Long-short single-instrument SOLUSDT.BINANCE USD-M swing strategy driven solely by the perpetual funding rate as a read on leveraged positioning. Funding extremity is measured as a symmetric rolling percentile rank (~90 days of 8h settlements), persistence as the run of consecutive same-side settlements, and the crowd's unwind as the retrace of the percentile score from the episode's peak. The strategy shorts after crowded longs (persistently top-decile funding) begin to deleverage and longs after crowded shorts begin to cover, holding for days until funding normalises back inside the exit band, with an ATR stop and a max-hold backstop. Sizing risks 2% of equity against the ATR stop distance, capped at 1x equity notional; no leverage. If funding data is missing or stale the strategy stands flat and never substitutes a price-derived proxy.
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.
Verification Results
Near-zero/marginally-negative edge on a well-sampled full-history run (204 trades, PF 0.95, avg_trade_return_pct -0.135%, Sharpe CI spanning zero): the funding-crowding contrarian signal doesn't clear fees on SOL at multi-day holds. The code faithfully implements the hypothesis (including the honest iter-3 roll-over re-timing that kept the reversal direction rather than flipping to continuation), so this is a mechanism/edge finding for the analyst. Abandon at backtest-review per the developer's pre-registered condition; do not tune toward the 2021 tail cells. A continuation variant would be a separate Research-Lead hypothesis.
Backtest Review
Data loaded cleanly (funding_events_available 1944, 168 trades) — genuine no-edge read, not a data wall
Backtest Review
Low, honest turnover (turnover 8.4, commission only 4.1% of gross) — the negative result is not a fee artifact
Backtest Review
Did not liquidate; small position sizing kept drawdown to 31%
Backtest Review
Negative expectancy: avg_trade_return_pct -1.11%, profit_factor 0.71, total_return -27.0%, expectancy -$147/trade, Sharpe -0.72 (CI [-1.46, 0.18]), PSR 0.128, IR -1.03
Backtest Review
Loses in 4 of 7 years and in both calm (-1.16 Sharpe) and stressed (-1.07) regimes; rolling Sharpe decays to -9 by 2026
Backtest Review
Both directional legs lose (long 45% / short 48% win) — the contrarian sign is simply wrong on SOL
Backtest Review
Developer pre-registered abandonment if the iteration-3 roll-over trigger also came back negative — it did
Backtest Review
L73 single-perp funding-gated directional/fade family, established edge-dead this session
Iteration History
Verification failed (Layer 4 — QA review):
- CORE EDGE FALSIFIED ON A LARGE, MEASURABLE SAMPLE — the distinctive claim is wrong-signed, not merely weak. The developer's event study over every funding-covered SOL 8H bar (2020-09 to 2026-06) shows the SHORT leg returns alpha -2.07% @3d (t=-4.9) and -4.70% @7d (t=-6.8) on n=624 — persistently positive SOL funding is followed by CONTINUATION, the opposite of the required flush — negative at every threshold. The LONG leg has ZERO alpha (+0.07% @3d, t=+0.1, n=680), and the pooled fade is decisively negative on the largest sample (|fz|>=1.0, n=1,304: -2.30% @7d t=-4.7, -4.55% @14d t=-5.5). The only positive cells are the small-n 2021 tail (n=36), a long-SOL-in-a-bull-run composition artifact, not a crowding effect — confirmed by the sign inverting across gates. Sandbox corroborates: -0.99% return, Sharpe -0.37, PF 0.83, avg_trade -0.47%.
- TURNOVER TOO LOW TO VALIDATE, AND THE DISTINCTIVE LEG NEVER FIRED IN-SAMPLE. Sandbox produced 11 trades over 328 days (~12/yr), ALL LONG — the wrong-signed short leg fired ZERO times, so it is untested in-sample. At ~12 trades/yr the 15-day holdout expects <1 trade and each walk-forward OOS window only a few, so the strategy is effectively unvalidatable regardless of edge.
- Layer-2 frozen 0.0 signal across all scenarios is expected/benign — no funding in the proxy, so the strategy correctly stands aside. The real-funding sandbox produced 11 trades (funding_events_available 73), proving the path is live.
Iteration History
Verification failed (Layer 4 — QA review):
- CORE EDGE FALSIFIED — now CONFIRMED IN-SAMPLE ON BOTH LEGS (iteration 2). The two defects that made the mechanism untestable are correctly fixed: symmetric rolling-percentile gate (replacing the z-score that, given SOL funding's heavy left skew, only fired the LONG leg) and a clipped-ramp persistence factor (replacing tanh's 0.762 damping). Both legs now fire: 88 trades, 47 long / 41 short. But that exercises the distinctive crowded-longs SHORT leg in-sample and CONFIRMS the falsification: the sandbox is decisively negative and worse than iteration 1 — total_return -15.1%, Sharpe -1.356 (CI [-3.01,+0.32], PSR 0.06), PF 0.60, avg_trade_return_pct -0.658% over 88 trades — corroborating the event study (short leg -2.07% @3d t=-4.9, -4.70% @7d t=-6.8; long leg zero alpha; pooled fade t=-4.7 to -5.5). Persistently extreme SOL funding is followed by CONTINUATION, not the flush the fade requires. Wrong-signed, now demonstrated on a fully-populated in-sample test.
- Layer-2 frozen 0.0 signal across all scenarios is expected/benign (no funding in the proxy → stand aside). The real-funding sandbox produced 88 trades (funding_events_available 678), proving the path is live and that BOTH legs now fire.
Iteration History
Verification failed (Layer 4 — QA review):
- CROWDING-REVERSAL MECHANISM FALSIFIED AT THE LAST UNTESTED ENTRY TIMING (iteration 3). Prior iterations exhausted the level-triggered fade (iteration 2: 88 trades both legs, -15.1%, PF 0.60). Iteration 3 re-times entry to the funding ROLL-OVER — fade only after an episode reaches the extreme band, persists, and retraces >=30% from its peak, one entry per episode — which is the untested part of the hypothesis's own 'precedes forced-deleveraging flushes' wording and the correct final test. It also loses: total_return -8.32%, Sharpe -0.979 (CI [-2.57,+0.67], PSR 0.126), PF 0.611, avg_trade_return_pct -0.598% over 57 trades (37 long / 20 short). All three entry timings now lose in-sample, corroborating the event study (short leg -2.07% @3d t=-4.9; long leg zero alpha). The edge does not exist on SOL at any entry timing.
- Layer-2 frozen 0.0 signal across scenarios is expected/benign (no funding in the proxy → stand aside). The real-funding sandbox produced 57 trades (funding_events_available 414) across both legs, so the roll-over path is live and fully exercised in-sample.
Backtest and paper results are hypothetical. Trading involves risk of loss.