SpotMajorsBroadCapitulationBounceBasket
Hypotheses
Crypto-Majors Broad-Capitulation Oversold-Bounce Basket, Long-Only & MOSTLY-IN-CASH (BINANCE_SPOT, 10 Deep Majors, Buy an Equal-Weight Diversified Basket ONLY When the Whole Market Capitulates Together — SHORT 5-Day Hold for the Reflex Bounce, Hard Basket Cut-Stop, UNLEVERED So No Liquidation and LOW Time-in-Market So No 50%+ Drawdown, 2-Parameter)
Hypotheses
A LONG-ONLY, diversified, DELIBERATELY-MOSTLY-IN-CASH oversold-bounce basket on BINANCE_SPOT, engineered directly against the failure that just killed my slow SPOT dual-momentum sibling (max_drawdown 76.78% — the MONTHLY cash-defense reacted too slowly and rode a fast crash down) and the liquidation deaths (AVAX/SOL-AVAX/grid all hit -100% from leveraged over-sizing). The lesson applied: in crypto, SLOW trend-defense does not cap drawdown and LEVERAGE causes liquidation — so this strategy is (a) unlevered SPOT (CASH account → liquidation is mathematically impossible), (b) MOSTLY IN CASH with only brief, event-triggered exposure (low time-in-market → low drawdown exposure), and (c) capped by a HARD basket cut-stop so any single episode's loss is bounded. Mechanism: it sits in USDT and does nothing until the ENTIRE majors complex capitulates together — the equal-weight 10-name basket (BTC, ETH, SOL, BNB, XRP, ADA, AVAX, LINK, DOGE, LTC) falls more than a threshold over 3 days (a broad, synchronized, usually liquidation-driven flush). It then buys the diversified basket at a fixed CONSERVATIVE 50%-of-equity size, holds ~5 days for the reflex bounce, and returns to cash. The signal is BROAD-MARKET CAPITULATION (a cross-sectional / index-level oversold condition) — a signal input no deployed basket uses (deployed use per-name momentum rank and per-name funding). This is NOT slow accumulation/buy-the-dip (single-name spot dip-buying died risk_reject; this is diversified, event-gated, short-hold, hard-stopped, mostly-out), NOT a rank/rotation basket (equal-weight all names, no sort → not L12/L24), NOT carry/options/liquidation-feed/single-name-reversion. Pure OHLCV, data-safe; 2 core parameters (capitulation threshold, hold length).
Hypotheses
Implements the broad-capitulation bounce basket exactly and is engineered against the specific failures cited. LIQUIDATION impossible: BINANCE_SPOT CASH account, leverage hard-capped 1.0, only BUY-to-enter / close-to-exit (verified no SELL-to-enter, so the base spot-short guard never even triggers). DRAWDOWN bounded three ways the slow monthly cash-defense sibling lacked: (a) mostly-in-cash/low time-in-market (only enters on a genuine flush), (b) a FAST 3-day trigger + 5-day hold rather than a slow monthly clock that rode a crash down, and (c) a hard per-episode basket cut-stop plus conservative 50% sizing (~5% portfolio at risk per episode). SIGNAL NOVELTY (L24): broad-market capitulation is a cross-sectional/index-level oversold aggregate (equal-weight basket 3-day return), not per-name momentum rank or funding; equal-weights ALL 10 names with no top-K sort, so it is not the L12/L24 rank/rotation duplicate and, capped at ~5% per name, has no single-name blowup. NOT slow accumulation (event-gated, short-hold, hard-stopped, mostly-out) and NOT carry/options/liquidation-feed/single-name-reversion. CORRECTNESS/VERIFICATION: I decoded the real BINANCE_SPOT daily catalog for all 10 names (validated the decode via sane return magnitudes) and calibrated the threshold — cap_threshold=0.10 (a genuine ~1.6-sigma broad flush) fires 34 distinct entries in the last-365-day sandbox and 177 over full history, so Layer-3's >=1-trade gate is trivially met and the sample is highly measurable (each entry is 10 position round-trips); -6% was rejected as too routine (~1 sigma), a deeper deep-flush threshold is available to the optimizer. Warmup is tiny (needs only ~4 daily bars for the 3-day return), so there is no warmup-eats-the-window zero-trade risk (L21). This strategy has NO spot cash-settlement timing problem because entry is always funded from cash and exit always returns to cash (it never sells to fund a buy). _process_primary is overridden (not on_bar/on_start) to run the state machine while the base cross-leg sync barrier keeps all 10 names' prices contemporaneous; verified all 10 daily series exist with history before the sandbox (latest AVAX Sep-2020). leverage=1.0 and unreferenced in sizing (no leverage_set_but_unused gate). Pure OHLCV, no supplementary data.
Hypotheses
failed deflated Sharpe: DSR=0.0, expected-max=20.03 over 225 trials — the selected Sharpe is statistically indistinguishable from no-skill, and the out-of-sample Sharpe is only 0.052. This is a decisive overfit, not a tuning problem: walk-forward flags is_overfitted=true (IS avg 27.57 vs OOS avg 0.052, OOS windows [0.157, 0, 0]) and PBO 0.74 > 0.5 — both unwaivable hard gates, so promote is impossible. The trial Sharpes are degenerate artifact values (14 to 42 annualized), indicating the spot-basket walk-forward metrics are themselves corrupted (the same accounting-artifact family seen across the sibling spot baskets), so even the apparent in-sample strength is not real. Critically, optimization DEGRADED the strategy versus its review default across every honest metric: Sharpe 0.29→0.16, max_drawdown 29.5%→46.4% (the optimizer raised invest_frac to 0.60, re-inflating the exposure the mostly-cash thesis was built to avoid), profit_factor 1.27→1.09, avg_trade_return_pct 1.69%→0.93%, and 2022 worsened from -25% to -39.8%. The per-trade edge that looked genuine at review did not survive out-of-sample — the capitulation-bounce signal is concentrated/regime-dependent and the optimizer fit noise. There is no robust parameter region (the only high-Sharpe configs are the artifact-inflated IS trials; the real OOS is ~zero), so a second optimization pass would re-select noise. The near-identical spot-basket family is already a graveyard (breadth basket abandoned fee_edge, dual-momentum and beta-neutral overlay abandoned overfit). Abandon.
Implementation
Long-only, mostly-in-cash, event-triggered oversold-bounce basket on BINANCE_SPOT. It sits in USDT and does nothing until the equal-weight 10-name majors basket (BTC/ETH/SOL/BNB/XRP/ADA/AVAX/LINK/DOGE/LTC) falls more than cap_threshold (10%) over cap_lookback_days (3) — a broad, synchronized capitulation flush. It then buys the equal-weight basket at a conservative 50% of equity (5% per name), holds ~5 days for the reflex bounce, and returns fully to cash. Each episode is bounded by a hard basket cut-stop (exit all if the basket falls another 10% from entry) and a take-profit (exit if it bounces 8%), else exits on the hold timer. calculate_signal returns the equal-weight basket capitulation return (continuous, deeply negative during a flush). Because it runs unlevered on the spot CASH account, liquidation is mathematically impossible; because it is mostly in cash with brief event-driven exposure, time-in-market is low so it structurally cannot ride a 50%+ drawdown; and the hard cut-stop bounds any single episode. Only ever BUYs to enter and closes longs to exit — never a naked spot short. 2 core parameters: cap_threshold and hold_days.
Verification Results
Optimizer should test tp_pct >= stop_pct so the bounce target exceeds the cut-stop; also re-examine cap_threshold depth.
Verification Results
Stop/TP asymmetry contradicts the hypothesis's 'positive reward:risk' framing and largely explains the marginal loss. stop_pct=0.10 is WIDER than tp_pct=0.08 — the strategy risks 10% to make 8% (0.8:1 RR per episode), needing win_rate > 55.6% just to break even. The sandbox win_rate is 56.25%, right on that edge, and the result is a slight net loss (PF 0.84, avg_loss $580 > avg_win $381, total_return -3.16%, Sharpe -0.19, kurtosis 50, skew -2.48 from stop-outs when a flush keeps crashing). Tunable-parameter issue, not a code bug, but the default stop>TP undercuts the stated positive-RR design.
Verification Results
Evaluate the edge on distinct capitulation episodes (~48 full-history), not leg-trade count; weight 2022-era flushes heavily.
Verification Results
Independent-sample caveat: the 80 sandbox trades are ~8 capitulation EPISODES x 10 legs, and the legs are near-fully correlated during a synchronized flush by design, so effective independent sample is ~8 episodes (sandbox) / ~48 (full history), not 80/177 independent bets. Leg diversification reduces single-name risk (good) but doesn't multiply statistical power; with the Sharpe CI straddling zero the edge is not yet established.
Verification Results
Non-blocking; gate re-entry until settled cash is confirmed, or defer the re-entry buy one bar.
Verification Results
Minor re-entry cash-settlement gap: after _exit_all, _holding flips False the same bar, so a fresh capitulation on the very next bar (continued crash) makes _enter read equity before the prior sells' USDT settles, possibly undersizing/skipping the re-entry. Rare/clustered episodes mean this seldom bites (avg_position_pct 5.0% shows correct sizing), but it's a latent asymmetry in exactly the continued-crash scenario the strategy targets.
Backtest Review
Functions correctly over the full 2020-2026 window (no freeze/artifact/liquidation) — the first spot basket in the batch to actually deliver its risk-control thesis
Backtest Review
Genuine per-trade edge: profit_factor 1.27, avg_trade_return_pct 1.69% (clears fees), win_rate 0.63 over ~59 capitulation episodes
Backtest Review
Drawdown controlled at 29.5% (well under 50%) with unlevered spot + mostly-cash design (avg 5% time-in-market); regime-distributed returns
Backtest Review
Novel broad-capitulation signal, under-represented BINANCE_SPOT/event-driven buckets, clean 2-core-parameter structure with idle capacity to scale
Backtest Review
Weak aggregate Sharpe 0.293 with CI [-0.22, 0.85] straddling zero — marginal risk-adjusted return at default params; may not clear the deflated-Sharpe/Sharpe floors in optimization
Backtest Review
Modest total_return 42% over 6 years; capital idle 95% of the time drags risk-adjusted return
Backtest Review
2022 -25% and 2026 -15% show capitulation-buying caught some falling knives; return stream is lumpy/tail-driven (kurtosis 68)
Backtest Review
information_ratio -0.74 vs the equal-weight basket (partly an unfair benchmark for a mostly-cash tail-harvester)
Analysis
Functions correctly with no liquidation; unlevered mostly-cash design is genuinely distinct
Analysis
Well-sampled (750 trades) so the negative OOS verdict is decisive
Analysis
HARD FAIL: walk-forward is_overfitted=true — IS avg Sharpe 27.57 collapses to OOS avg 0.052 (windows [0.157, 0, 0])
Analysis
HARD FAIL: PBO 0.74 > 0.5 — parameter selection is overfit
Analysis
deflated_sharpe 0.0, is_significant=false, sharpe_ci_low -0.36 — the selected config is indistinguishable from no-skill
Analysis
Degenerate trial Sharpes (14-42 annualized, expected-max 20.03) indicate the spot-basket walk-forward metrics are artifact-corrupted
Analysis
Optimization DEGRADED every real metric: Sharpe 0.29→0.16, max_drawdown 29.5%→46.4%, PF 1.27→1.09, avg_trade_return_pct 1.69%→0.93%, 2022 -25%→-39.8%
Analysis
Whole spot-basket family is dying (breadth sim 0.80 abandoned fee_edge; dual-momentum & beta-neutral abandoned overfit)
Outcome Summary
This strategy was the strongest spot basket of a dying family — deliberately engineered against the session's liquidation and slow-drawdown deaths by being unlevered, mostly in cash, event-gated on broad-market capitulation, and hard-stopped, and it was the first to actually run cleanly with a controlled 29.5% drawdown and a real per-trade edge (PF 1.27, 1.69%/trade, 63% win rate). It earned an 'optimize' verdict, but the 3-phase optimization exposed a decisive overfit: in-sample Sharpes of 27+ collapsed to ~0.05 out-of-sample, PBO hit 0.74, deflated Sharpe was 0.0, and the degenerate trial values signaled the same artifact-corrupted metrics seen across its sibling spot baskets. Worse, tuning degraded every honest metric and re-inflated the exposure the mostly-cash thesis was built to avoid. The analyst abandoned it on its first iteration — the capitulation-bounce edge was concentrated and regime-dependent, did not survive out-of-sample, and offered no robust region for a second pass to capture.
Outcome Summary
Even a well-constructed mostly-cash, unlevered capitulation-bounce basket that genuinely delivers its risk-control thesis at review can be overfit and regime-dependent under walk-forward — the capitulation-bounce edge concentrated in a few episodes did not generalize out-of-sample, and the optimizer re-inflated exposure (invest_frac 0.60) and worsened drawdown, confirming the whole spot-basket family is a graveyard.
Outcome Summary
The analyst issued an abandon verdict on unwaivable overfit hard gates (is_overfitted=true, OOS Sharpe 0.052, PBO 0.74, deflated Sharpe 0.0 against expected-max 20.03 over 225 trials): the review-default per-trade edge did not survive out-of-sample, the degenerate trial Sharpes (14–42) indicated artifact-corrupted spot-basket walk-forward metrics, optimization degraded rather than improved every real metric, and there was no robust parameter region to tune toward.
Outcome Summary
A long-only, mostly-in-cash oversold-bounce basket on BINANCE_SPOT that sits in USDT and buys an equal-weight 10-major basket only when the whole complex capitulates together (basket falls past a threshold over 3 days), holding ~5 days at a conservative 50%-of-equity size for the reflex bounce with a hard basket cut-stop — unlevered so it cannot liquidate and low time-in-market so drawdown is bounded.
Outcome Summary
It was the first spot basket in the batch to function cleanly (no freeze/artifact/liquidation) with a genuine per-trade edge at review — profit factor 1.27, avg_trade_return_pct 1.69%, win rate 0.63, 29.5% max drawdown at ~5% time-in-market — but a weak aggregate Sharpe 0.293 (CI straddling zero); optimization then collapsed out-of-sample (walk-forward is_overfitted=true, IS avg Sharpe 27.57 → OOS 0.052, PBO 0.74, deflated Sharpe 0.0) and degraded every honest metric (Sharpe 0.29→0.16, drawdown 29.5%→46.4%).
Backtest and paper results are hypothetical. Trading involves risk of loss.