Strategies
LINK Spot Capitulation-Reset Swing Accumulation, Long-Only (LINKUSDT.BINANCE_SPOT, Vol-Scaled Z-Score Oversold Entry Gated by a Perp Funding-Reset Filter, Multi-Day Hold, 3-Parameter)
Outcome: Abandoned
LinkSpotCapitulationResetSwingAccumulationLong
Outcome Summary
Abandoned at the pre-optimization backtest-review gate as negative-expectancy, without reaching optimization, analysis, or risk review.
Hypothesis
Negative expectancy / edge-absent on a decisive 340-trade, 6.7-year sample: profit_factor 0.782 (<1 — gross-negative before costs, commission only 19.56% of gross), avg_trade_return_pct 0.0343% (essentially zero, far under the 0.25% spot floor), expectancy -$93.5/trade, total_return -31.79%, Sharpe -0.0012 with CI [-0.733, 0.679] straddling zero. The code faithfully implements the hypothesis so this is a fair test, and the premise is not supported: the z-reversion/ATR exits collapse the intended multi-day swing hold to ~4h (~1 bar), so the ~2%-per-trade capture is never realized (QA's concern confirmed). The book loses in both the calm (-35.7%) and normal (-32.4%) vol regimes and in every year 2022-2026, with profit confined to the stressed tercile — the opposite of a robust accumulation edge. A gross-negative PF-0.78 signal cannot be optimized above costs by 3 parameters; 2 hours of walk-forward would only curve-fit the two profitable early bull years. abandon_class=negative_expectancy.
Implementation
Long-only LINKUSDT spot (BINANCE_SPOT, 4-HOUR) swing mean-reversion. Every bar it computes the z-score of log(close) over a 60-bar (~10-day) lookback and returns it raw. It buys when that z-score is <= -2.0 (a multi-day capitulation flush) AND a point-in-time LINKUSDT perp funding-reset gate is on: the funding trough over the last 9 prints (~3 days) sits at or below the 25th percentile of the last 90 prints (~30 days) and the most recent print is above that trough (leveraged longs already flushed, funding resetting upward). Position size is an equity fraction (25% base) scaled by flush depth |z|/z_enter up to 2x and capped at 50% of equity. Exits on reversion (z >= -0.5), a volatility stop 3 ATRs below the flush bar's low, or a 42-bar (~7-day) time stop. No shorting, no leverage - CASH spot account.
Verification Results
On the full backtest, inspect exit-reason attribution (reversion vs vol stop vs time stop). If reversion/stop dominate at ~1 bar, consider a wider z_exit or a minimum-hold guard so the strategy actually holds the intended multi-day bounce.
Hypothesis specifies a multi-day hold to capture a 3-8% reversion swing, but the sandbox shows an average holding period of ~4h (~1 bar). The coded exits (reversion z>=z_exit, vol stop, 42-bar time stop) all match the hypothesis structurally, so this is not a code defect, but the fast reversion/stop firing may prevent the intended multi-day swing capture. Advisory for the analyst to confirm on full history.
Confirm the base template calls the subclass min_bars_required for warmup; if not, rename or align with the base contract.
min_bars_required(self) overrides a framework method (Layer-1 base_shadow warning). It returns a sensible warmup (max(z_lookback, atr_period)+2 = 62), so behavior is reasonable, but verify the base engine honors this override for warmup gating rather than its own implementation.
Sandbox smoke test is gross-flat-to-negative: avg_trade_return_pct -0.010% (below the 0.25% spot floor), profit_factor 0.745, total_return -35.6%, Sharpe -0.038 with CI straddling zero over 351 trades. Two mechanism doubts for the analyst to check on full history: (1) realized avg_holding_period is ~4h (~1 bar) despite the hypothesis's 'hold the reversion bounce for several days' intent — the z>=-0.5 reversion exit and/or the 3-ATR vol stop appear to fire well before the multi-day swing the edge is supposed to capture, so the per-trade capture (~2% target) may not be realized; (2) commission is only ~20.6% of gross, so the shortfall is a gross-signal problem, not fee drag. Code is a faithful implementation, so this is an edge question for the full backtest/optimizer, not a block.
Backtest Review
- Sharpe
- -0.00
- Total return
- -31.79%
- Max drawdown
- 47.71%
- Trades
- 340
- Win rate
- 49.1%
- Profit factor
- 0.78
Reliable sample: 340 trades over 6.7 years (2019-2026), metrics_reliable=true, 340/340 signaled entries submitted (no drops) — a fair, decisive test of the mechanism.
Code faithfully implements the hypothesis (z-score oversold + point-in-time funding-reset gate, long-only spot), so this is a genuine edge test, not an implementation bug.
Negative expectancy on a decisive sample: profit_factor 0.782 (<1, gross-negative BEFORE costs), avg_trade_return_pct 0.0343% (far below the 0.25% spot floor and essentially zero), expectancy -$93.5/trade, total_return -31.79%, Sharpe -0.0012 with CI [-0.733, 0.679] straddling zero.
Commission is only 19.56% of gross PnL, so the shortfall is a gross-signal problem, NOT fee drag — no threshold tuning can lift a PF-0.78 signal above zero (L55: single-name mean-reversion with PF<1.15 has never been rescued by re-tuning entry/exit).
Mechanism mismatch confirmed on full history: avg_holding_period ~4h (~1 bar) vs the hypothesis's 'hold the reversion bounce for several days' — the z>=-0.5 exit and 3-ATR stop fire before the multi-day swing the edge depends on, so the ~2% target capture is never realized. QA's edge concern is borne out.
Loses in calm (-35.7%) and normal (-32.4%) vol regimes; only positive in the stressed tercile (+28.6%) — the inverse of a robust accumulation edge, and it lost every calendar year 2022-2026.
47.7% max drawdown over a 1578-day underwater duration; single-name OHLCV mean-reversion clone family (L93) with base metrics well below any survivor tier.
Outcome Summary
Exit rules must match the holding horizon the edge depends on, and a gross-negative PF-0.78 signal cannot be rescued by parameter tuning.
The backtest-review analyst issued an 'abandon' verdict for negative expectancy on a fair, faithfully-coded test; the intended multi-day hold collapsed to ~4h because the z-exit and 3-ATR stop fired before the swing developed.
A long-only spot swing strategy on LINKUSDT.BINANCE_SPOT that accumulated after a multi-day capitulation flush (z-score oversold) gated by a perp funding reset, aiming to hold the mean-reversion bounce for several days.
Over a decisive 340-trade, 6.7-year sample it returned -31.79% with a Sharpe of -0.0012, profit factor 0.782, avg_trade_return_pct 0.0343%, and a 47.7% max drawdown; commission was only 19.56% of gross PnL, so the shortfall was a gross-signal problem, not fee drag.
Backtest and paper results are hypothetical. Trading involves risk of loss.