Skip to content

View original

SpotDeleveragingWashoutAccumulationMajorsBasketLong

Hypotheses

Spot Deleveraging-Washout Accumulation, Long-Only Majors Basket (BINANCE_SPOT BTC/ETH/SOL/BNB, 4h Bars, Buy Only When Perp OPEN INTEREST Collapses AND Funding Turns Deeply Negative = Forced Capitulation, Ride the Multi-Day Recovery with an ATR Trailing Stop, 3-Parameter)

Hypotheses

A LONG-ONLY accumulation basket on four liquid BINANCE_SPOT majors (BTCUSDT, ETHUSDT, SOLUSDT, BNBUSDT) that buys genuine forced-capitulation bottoms identified by a PERP-MARKET deleveraging signature, then holds the multi-day recovery. The trade EXECUTES on spot (single leg, no double fees, no leverage) but the SIGNAL is drawn from the perpetual metrics feed: a sharp collapse in aggregate OPEN INTEREST (positions being force-closed) occurring simultaneously with DEEPLY NEGATIVE funding (crowded shorts / panicked longs paying to exit). That joint condition is the fingerprint of a leverage washout — sellers exhausted, weak hands flushed — which historically precedes a mean-reverting recovery. This is deliberately NOT any of the exhausted/dead families: it is NOT funding-carry (funding is used as a sentiment-extreme trigger, not harvested as a coupon — L33 does not apply), NOT liquidation-feed dependent (it uses multi-year catalogued OI + funding, sidestepping the ~90-day liquidations data wall that killed 5 sibling cascade strategies), NOT cross-sectional rank rotation (each name fires on an ABSOLUTE event trigger, not a relative ranking — L32 does not apply), NOT the single-bar volume-spike flush basket that just died (that used a 1h volume z-spike and a reversion take-profit that clipped winners; this uses a slower multi-day OI/funding washout and a TRAILING stop that lets winners run), and NOT breakout/trend momentum. It fills the under-represented BINANCE_SPOT venue bucket (13% vs ≥15% quota, the highest-survival venue) and draws its signal cross-venue from perp metrics.

Hypotheses

The only Layer-4 objection was measurability: iter-1 gated on a single MARKET-WIDE conjunction (BTC OI collapse AND deeply-negative funding on the same bar), which fired ~once in the sandbox and bought all 4 names together = 4 trades, metrics_reliable=FALSE. A market-wide single event is inherently too sparse to ever clear the ~100-trade floor regardless of thresholds, so the root-cause fix is to change the event granularity, not just loosen numbers. I made the OI-collapse trigger PER-NAME (each name's own perp OI deleveraging, read from the symbol-tagged metrics rows and grouped into per-symbol OI series), still gated by the market-wide negative-funding regime because funding_rates is a flat {ns:rate} dict that reliably carries only the primary (BTC) symbol. This converts one clustered event into up to four independent, differently-timed events and captures name-specific washouts (SOL/BNB frequently deleverage without BTC), multiplying the trade count several-fold. To avoid any regression if the extra names' OI rows are not injected into supp, each name falls back to the BTC market-wide OI signal, so worst-case behavior is iter-1's (never fewer triggers). I also loosened the two tuned event thresholds (oi_drop 0.06->0.03, funding -0.0001->-0.00002) so more moderate deleveraging inside a mildly-negative-funding regime qualifies, further lifting frequency toward a measurable, metrics_reliable sample while still requiring the OI-collapse + negative-funding signature (not plain price dip-buying). All the machinery that passed Layers 1-3 is unchanged: the OI/funding reading (metrics open_interest+timestamp ms keys, ms->ns, nearest-preceding lookup with staleness, no look-ahead), the multi-instrument continuous-execution pattern (own OHLC buffers, on_bar override, true-NAV _portfolio_value marking, exit-first-then-buy), the per-name ATR trailing exit, and long-only CASH sizing at gross <= 0.95x. Only the OI series structure (single -> per-symbol with fallback), the entry gate (market-wide conjunction -> market funding gate + per-name OI), and the two threshold defaults changed; imports are unchanged and clean, leverage stays 1.0." }

Hypotheses

Two disqualifying problems. (1) Negative measured edge: on 88 trades profit_factor is 0.795, avg_trade_return_pct -0.347%, expectancy -$255/trade, Sharpe -0.14, total_return -22.3%; the washout-accumulation thesis lost money where it traded (2021 -24.9%, 2022 -11.6%). (2) The signal only fires in a ~2-year window — every trade and daily return clusters between 2020-09 and 2022-06, then the strategy is DORMANT 2022-2026 (funding_events_available 0), so most of the backtest is untested. I'm flagging the symptom (trades cease mid-2022, likely the perp OI/funding supplementary feed's coverage window) without asserting the exact data mechanism I haven't verified. This makes optimization pointless: the 3-phase walk-forward OOS windows and the final-15-day 2026 holdout would contain zero trades, and 88 trades is already below the ~100 measurability floor concentrated in one bearish stretch. This is iteration 2 — the per-name OI measurability rework produced trades only in the same early window rather than across full history, and more data coverage would merely add more negative-expectancy trades. Optimizing oi_drop_thresh/funding_thresh/trail_atr cannot flip a negative edge or manufacture the missing 4 years of signal. Abandon.

Implementation

Long-only spot accumulation basket on four liquid Binance SPOT majors (BTC/ETH/SOL/BNB), 4h bars, executed on spot but signalled cross-venue from the perp metrics. A name is bought when its OWN perp open interest collapses (oi_roc <= -oi_drop_thresh=3% over ~1 day, from the symbol-tagged Binance Vision metrics sumOpenInterest feed; falls back to BTC OI if the name's OI series is absent) WHILE the market-wide BTC perp funding is in a negative regime (<= funding_thresh=-0.002%/8h). That per-name deleveraging inside a fear regime is the forced-capitulation signature; the name is then ridden with a per-name ATR trailing stop (exit when close falls trail_atr=4x ATR below the highest high since entry), with a 60-bar backstop time cap. Equal-weight slices are sized off true CASH equity so gross <= 0.95x (no leverage). 3 tuned params (oi_drop_thresh, funding_thresh, trail_atr).

Verification Results

Verification failed (Layer 4 — QA review): - Unmeasurable trade count. The sandbox produced only 4 closed trades over 339 days and the engine set metrics_reliable=FALSE. The washout entry is a rare MARKET-WIDE event conjunction — a ≥6% collapse in BTC perp open interest over ~1 day AND funding ≤ -0.01%/8h at the same time — so the sandbox year fired only ~1 event (4 names bought = the 4 trades). The apparently-favorable metrics (PF 1.43, avg_trade_return_pct +0.76%, +0.49%) are pure noise on 4 samples: win_rate is 2 of 4, Sharpe CI a meaningless [-1.76,+1.58], metrics_reliable=FALSE. Even crediting that washouts cluster in crash regimes, the event is inherently sparse (a handful/year × 4 names), and the sandbox is decisively below the measurability floor — the same single-digit-trade / metrics_reliable=FALSE pattern rejected on the sibling dip, TSMOM, and OI-surge iter-1s. Block at Layer 4 rather than run a full backtest+optimization on an unmeasurable sample.

Verification Results

Analyst/optimizer: warrants the full walk-forward — confirm the positive edge is stable across windows (not a one-regime artifact) and avg_trade_return_pct holds above the 0.25% spot floor OOS. A legitimate optimize candidate, not an abandon.

Verification Results

Positive but statistically modest edge — promising, for the analyst/optimizer to confirm. On 33 well-sampled trades (metrics_reliable=TRUE): total_return +2.43%, profit_factor 1.158, avg_trade_return_pct +0.652% (comfortably above the 0.25% spot floor and ~0.20% round-trip), win_rate 0.576, max_drawdown 11.6%. Genuine net-positive result — unlike the negative-edge fades reviewed recently — but Sharpe is only 0.15 with CI [-1.43,+1.93] straddling zero, and avg_win 938 is slightly below avg_loss 1099 (positive PF rests on the 58% win rate). 33 trades/339d is measurable but modest.

Verification Results

Analyst/optimizer: verify from logs whether per-name OI drives entries (differently-timed) or all names use the BTC fallback (clustered same-bar). If clustered, effective sample/diversification is smaller than 33 implies — read the walk-forward accordingly.

Verification Results

Diversification-assumption dependency on OI injection. The iter-2 fix relies on per-name perp OI (symbol-tagged metrics rows grouped per base), but if ETH/SOL/BNB OI rows aren't injected or lack a symbol field, _name_washout falls back to BTC market-wide OI for those names — so all four trigger together on BTC OI collapses (like iter-1), just more often due to looser thresholds, and the '4 independent, differently-timed events' claim doesn't hold. Not a code defect (fallback is deliberate, can't crash), but it changes whether the 33 trades are truly diversified per-name events or clustered market-wide events.

Backtest Review

Mechanically clean (no liquidation, sensible sizing avg_position_pct 24%, realized headline with end_unrealized 0.1%); the OI+funding plumbing does fire.

Backtest Review

Iter-2 per-name OI change did raise the count from 4 to 88 trades.

Backtest Review

Negative measured edge: profit_factor 0.795, avg_trade_return_pct -0.347%, expectancy -$255/trade, Sharpe -0.14 (CI straddles below zero), total_return -22.3%.

Backtest Review

All 88 trades and every daily return cluster 2020-09 to 2022-06 — the strategy is DORMANT 2022-2026 (funding_events_available 0), so ~4 of the last 4 years are untested.

Backtest Review

88 trades is below the ~100 measurability floor, and they sit almost entirely in the 2021-2022 bear (2021 -24.9%, 2022 -11.6%).

Backtest Review

Optimization is meaningless: walk-forward OOS windows and the 2026 holdout would contain zero trades.

Backtest Review

Iteration 2 already; the measurability rework produced trades only in the same early window, not across full history.

Outcome Summary

This was iteration 2 of a spot deleveraging-washout accumulation basket that reworked its entry to fire per-name on each symbol's own perp OI collapse, which did lift the trade count from 4 to 88. But the strategy still lost money where it traded — a -0.14 Sharpe, 0.795 profit factor, and -0.347% per-trade return, concentrated in the 2021-2022 bear. Worse, every trade clustered between 2020-09 and 2022-06 and then the signal went dormant through 2026 (zero funding events), leaving most of the backtest untested and any walk-forward or holdout window empty. The analyst abandoned it before optimization, concluding that neither tuning the three parameters nor adding coverage could flip a negative edge or manufacture the missing four years of signal, so no later pipeline stage was reached.

Outcome Summary

Fixing a measurability count is not the same as fixing coverage — the iter-2 per-name OI rework raised trades from 4 to 88 but only within the same early 2020-2022 window, so a signal whose supplementary feed goes dark mid-backtest can't be optimized or validated no matter how the thresholds are tuned.

Outcome Summary

The analyst issued an 'abandon' verdict at the pre-optimization BACKTEST_REVIEW gate on two counts: a negative measured edge, and a signal that only fired between 2020-09 and 2022-06 before going dormant (funding_events_available 0) — leaving ~4 recent years untested and making walk-forward/holdout optimization pointless since those windows would contain zero trades.

Outcome Summary

A long-only spot accumulation basket of four Binance majors (BTC/ETH/SOL/BNB, 4h bars) that bought forced-capitulation bottoms — signaled cross-venue by a collapse in perp open interest coinciding with deeply negative funding — and rode the multi-day recovery with an ATR trailing stop.

Outcome Summary

Across 1,482 data days it took 88 long trades with a 37.5% win rate and lost money: total_return -22.3%, Sharpe -0.14 (CI straddling below zero), profit_factor 0.795, avg_trade_return_pct -0.347%, expectancy -$255/trade, with losses concentrated in 2021 (-24.9%) and 2022 (-11.6%).
Strategy report

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