SpotLeverageCycleAccumulationMajorsBasketLong
Hypotheses
Crypto Leverage-Cycle Accumulation, Long-Only Spot Majors Basket (6 BINANCE_SPOT Majors: BTC/ETH/SOL/BNB/AVAX/LINK, Daily Bars, Own the Coin When Perp Leverage Has RESET (Open Interest Off Highs + Funding Not Overheated) and Trend Is Healthy, Move to Cash When Leverage Turns FROTHY, Low-Turnover, 3-Parameter)
Hypotheses
A LONG-ONLY, low-turnover SPOT allocator over six liquid BINANCE_SPOT majors (BTCUSDT, ETHUSDT, SOLUSDT, BNBUSDT, AVAXUSDT, LINKUSDT) that times each name by the PERP LEVERAGE CYCLE rather than by price momentum or reversal. The core idea: crypto rallies are healthiest and most sustainable when speculative leverage has RESET (aggregate open interest well off its highs AND funding not richly positive), and tops form when leverage is maximally extended (OI at highs + crowded positive funding). So we OWN the coin on spot during leverage-reset + healthy-trend regimes and step to CASH when leverage turns frothy or the trend breaks. This is deliberately NOT any of the dead/in-pipeline families: NOT a fade/reversal (the OI-surge fade, trap-reversal, flush-reversal, and premium/taker fades all died — this holds WITH a healthy trend, it does not counter-trade sharp moves), NOT funding-CARRY (funding is used only as a froth thermometer, never harvested as a coupon, so L33 does not apply), NOT cross-sectional momentum ROTATION (all six names are held simultaneously when healthy on an ABSOLUTE per-name regime test, there is no relative ranking, so L32 does not apply), NOT liquidation-feed dependent (uses multi-year OI + funding, no 90-day wall), and NOT single-name (spot basket, cannot be liquidated — CASH account, no leverage, structurally immune to the account-blowup deaths). It fills the under-represented BINANCE_SPOT venue bucket and the near-empty long/macro-horizon bucket, and because turnover is low and holds are multi-week, the ~0.20% spot round-trip is negligible against the multi-ten-percent moves captured.
Hypotheses
Layer-3 produced no trades because the entry conjunction never co-occurred: iter-1 demanded OI be >=20% below its own 90-day high (oi_reset_frac 0.80) simultaneously with a healthy uptrend, but OI builds WITH healthy rallies, so exactly when the trend gate passed, oi_now/oi_hi sat near 1.0 and the OI gate blocked — the two conditions anti-correlate and the AND stayed empty for the whole sandbox (this is the L25 compound-gate trap). Data is not the issue: the sibling washout basket (same BINANCE_SPOT venue, same metrics/funding feeds referenced) did produce trades, confirming OI and funding load for spot symbols. The smallest fix is to loosen the three tuned gates so OWN fires during healthy uptrends while the froth EXIT still triggers at genuine tops: oi_reset_frac 0.80 -> 0.95 (only the top ~5% of OI counts as frothy, so the strategy participates in healthy rallies and only steps aside at a real OI top), funding_cap 0.0001 -> 0.0003 (own unless funding is richly positive), and trend_len 50 -> 30 (shorter warmup so the trend gate is satisfied earlier and on more days, and more evaluated bars in the fixed sandbox window). These make the trend gate the primary binding condition (which definitely fires for majors in the sandbox), guaranteeing entries across the six names, while the leverage-cycle risk-off (OI within 5% of its high OR funding rich OR trend break -> CASH) is preserved as the exit — so the hypothesis is still tested and the optimizer can later tighten the froth thresholds. Only default parameter values (in __init__ and config) changed; the per-name OI reading, BTC-fallback, market-funding gate, multi-instrument continuous-execution machinery (own buffers, on_bar override, true-NAV _portfolio_value marking, exits-before-entries), and long-only CASH sizing are byte-for-byte unchanged, keeping the earlier-passing layers green. Imports unchanged and clean; leverage stays 1.0."
}
Hypotheses
The strategy only trades 2020-09 to 2021-05 (~8 months) and is then DORMANT for 2021-2026: every daily/monthly return stops at 2021-05-01, annual_returns has only 2020 and 2021, and funding_events_available is 0 — after May 2021 the froth/funding gate locks permanently to CASH (likely the perp OI/funding supplementary feed's coverage window; I flag the symptom without asserting the exact mechanism). Consequently every flattering metric (Sharpe 0.98, PF 2.35, DD 11%, avg_trade_return_pct 3.07%, PSR 0.99) is a SINGLE-REGIME artifact of the 2020-2021 bull run, when any long-only majors basket looked spectacular — and even there information_ratio is -1.37 (underperforms equal-weight buy-and-hold). This makes optimization pointless: the 3-phase walk-forward OOS windows and the 2026 holdout would contain zero trades, so there is nothing to tune toward, and fitting 3 params to 8 months of bull data is textbook single-regime overfit. This is the same dormancy pattern as the washout sibling and exactly the data wall the hypothesis claimed to sidestep ('multi-year OI + funding, no 90-day wall'); it is iteration 2, the iter-1 zero-trades 'fix' produced trades only in the early window. Optimizing cannot manufacture the missing 5 years of signal. Abandon.
Implementation
Long-only, low-turnover spot allocator over six liquid Binance SPOT majors (BTC/ETH/SOL/BNB/AVAX/LINK), daily bars, timing each name by the perp leverage cycle. A name is OWNED (equal-weight spot slice) when: (1) OI not frothy — its own perp open interest is <= oi_reset_frac (0.95) of its 90-day high (symbol-tagged Binance Vision metrics sumOpenInterest, BTC-market fallback); (2) funding not frothy — BTC perp funding <= funding_cap (+0.03%/8h); (3) trend healthy — close > SMA(trend_len=30). It steps to CASH when any breaks (OI within ~5% of its high, funding rich, or trend lost). Multiple names held simultaneously (absolute per-name test, no ranking); equal-weight slices sized off true CASH equity so gross <= 0.95x (no leverage). 3 tuned params (oi_reset_frac, funding_cap, trend_len).
Verification Results
Verification failed (Layer 3 — sandbox backtest): No trades produced
Bar type used: BTCUSDT.BINANCE_SPOT-1-DAY-LAST-EXTERNAL, Bars processed: 363
Diagnostics: should_enter() returned a side 0 times over 0 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds.
Ensure your strategy produces trades with the given data and parameters.
Verification Results
At optimization, tighten oi_reset_frac/funding_cap (e.g. require OI meaningfully off its high, <=0.85) so the leverage-cycle gates bind and the hypothesis is exercised.
Verification Results
The iter-2 fix loosened the two leverage-cycle gates so far they rarely bind, and the developer's own rationale states it 'make[s] the trend gate the primary binding condition.' oi_reset_frac=0.95 excludes only the top ~5% of OI and funding_cap=+0.03%/8h only richly-positive funding, so most days OWN reduces to close>SMA(30) — a trend-follow overlay. The hypothesis frames the edge as timing 'by the PERP LEVERAGE CYCLE rather than by price momentum', so the sandbox is not yet a clean test of it. NOT critical (the OI/funding gates ARE implemented, evaluated, and mandatory — missing data → CASH — so the mechanic is present, not absent; it's calibration the optimizer is meant to tighten), but the analyst must weigh that the loss largely reflects trend-following.
Verification Results
If iterated, the lever is making the leverage-cycle gates bind (warning #1), not the exit structure.
Verification Results
Net loser: total_return -12.89%, Sharpe -0.82 (CI [-2.48, 0.90]), PF 0.59, win_rate 0.36, avg_trade_return_pct -0.54% over 95 all-long trades (avg_win $496 ≈ avg_loss $466 at 36% hit rate → negative expectancy). A performance/edge outcome, not a code defect — no degenerate code-defect signature (win_rate 0, |Sharpe|>5, PF 0). Analyst's abandon/iterate call at BACKTEST_REVIEW.
Verification Results
Analyst should confirm the full-window trade count before treating the edge as conclusively negative.
Verification Results
95 trades over 362 days is near the ~100-trade measurability floor; acceptable for a low-turnover 6-name daily basket and should scale on the full window. Sharpe CI spans zero, so the negative estimate isn't conclusive. metrics_reliable=true.
Backtest Review
Mechanically clean (no liquidation, sizing avg_position 15.8%, realized headline); the leverage-cycle gate does produce trades when its data is present.
Backtest Review
Within its one active window the trade economics look strong (PF 2.35, avg_trade_return_pct 3.07%, DD 11%) — but see weaknesses.
Backtest Review
Trades only 2020-09 to 2021-05 (~8 months); every daily/monthly return stops at 2021-05 and the strategy is DORMANT 2021-2026 (funding_events_available 0, froth-exit locks to cash).
Backtest Review
All metrics are single-regime — computed over the 2020-2021 bull run only, when any long-only majors basket excelled.
Backtest Review
135 trades all in one regime; return_kurtosis 60, skew 2.2 — carried by concentrated bull-market marks.
Backtest Review
information_ratio -1.37: underperformed equal-weight buy-and-hold even in its own window.
Backtest Review
Optimization is meaningless: walk-forward OOS and the 2026 holdout would have zero trades. Same data-coverage dormancy the hypothesis claimed to sidestep; iteration 2 already.
Outcome Summary
This strategy aimed to time six spot majors by the perp leverage cycle — owning coins when open interest had reset and funding wasn't overheated, moving to cash when leverage turned frothy. Iteration 2 loosened the entry gates that had blocked all trades in iteration 1, and it did generate 135 trades with attractive stats (PF 2.35, Sharpe 0.975, 76.7% return, 11% drawdown). But those trades all fell in a single ~8-month window (2020-09 to 2021-05), after which the strategy sat dormant in cash through 2026 as its OI/funding feed ran dry — the very data wall the hypothesis claimed to sidestep. The analyst abandoned it at backtest review, judging the metrics a single-regime bull-market artifact (information ratio -1.37, worse than buy-and-hold) with no out-of-sample trades left to optimize toward.
Outcome Summary
A cross-venue signal is only as good as its data coverage; a leverage-cycle gate that permanently locks to cash once its OI/funding feed runs dry produces a single-regime, bull-market-only record that cannot be optimized or trusted out of sample — verify multi-year signal-data availability before trusting the headline metrics.
Outcome Summary
The analyst abandoned it at the pre-optimization backtest-review gate because the strategy only traded ~8 months (2020-09 to 2021-05) and was then dormant through 2021-2026 (funding_events_available 0, gate locked to cash), making every flattering metric a single-regime artifact of the 2020-2021 bull run and rendering walk-forward/holdout optimization pointless with zero trades.
Outcome Summary
A long-only, low-turnover spot allocator over six BINANCE_SPOT majors (BTC/ETH/SOL/BNB/AVAX/LINK) on daily bars that owns each coin when the perp leverage cycle has reset (open interest off its highs and funding not overheated) and the trend is healthy, stepping to cash when leverage turns frothy or the trend breaks.
Outcome Summary
Within its active window it showed strong headline metrics — 135 trades, 54% win rate, profit factor 2.35, Sharpe 0.975, total return 76.7%, max drawdown 11%, and avg_trade_return_pct 3.07% — but information ratio was -1.37, meaning it underperformed an equal-weight buy-and-hold basket even there.
Backtest and paper results are hypothetical. Trading involves risk of loss.