Strategies
SOL Liquidation-Cascade Overshoot Reversal, Long-Short (Single-Instrument SOLUSDT.BINANCE Perp — Fade EXTREME Forced-Liquidation Bursts Measured on the SAME Perp, Liquidation-Volume Z-Score Gated, Symmetric-RR Snapback, 3-Parameter)
Outcome: Abandoned
SolLiquidationCascadeOvershootReversalLS
Clean single-instrument single-venue design — signal (liquidation feed) and execution are the SAME SOL perp, so no cross-venue/instrument-swap artifact
Hypothesis
Implementation
Long/short event-driven reversal on SOLUSDT.BINANCE 15-minute perp bars that fades the price overshoot of extreme forced-liquidation cascades measured on the SAME perp. Per bar it sums the liquidation USD in the bar's own 15-minute window, z-scores it against a rolling 96-bar history of its own bursts (relative denominator floor, no absolute USD constant), and weights that z by the forced-flow imbalance to get a signed, graded cascade intensity: positive = long-liquidation (forced-selling) cascade to fade LONG, negative = short-squeeze cascade to fade SHORT. Entries above +/-liq_z_entry are BRACKET orders (market entry + venue stop-loss + venue take-profit, symmetric 1.2%/1.2% RR) so the snapback target and the stop both fire intra-bar; a 16-bar (4h) time stop is the only signal exit. Sizing risks 0.75% of current equity on the bracket stop, hard-capped at 50% of equity gross notional, leverage 1.0.
Verification Results
If the override is intentional (it looks correct), leave it; otherwise rename to avoid shadowing.
min_bars_required(self) overrides the framework method (flagged by static analysis). This appears deliberate (returns min_samples+2) and is benign, but confirm the base does not rely on its own warmup accounting elsewhere.
Backtest Review
- Sharpe
- -3.18
- Total return
- -19.74%
- Max drawdown
- 20.23%
- Trades
- 168
- Win rate
- 47.0%
- Profit factor
- 0.57
Clean single-instrument single-venue design — signal (liquidation feed) and execution are the SAME SOL perp, so no cross-venue/instrument-swap artifact
Trades faithfully implement the hypothesis: fades one-sided forced-liquidation cascades, balanced long/short (83 long / 85 short), 168 trades over 137 days is a reliable, measurable sample
Only 3 tunable parameters; venue/fee assumptions sane
Negative expectancy on a decisive sample: total_return -19.7%, profit_factor 0.57, avg_trade_return_pct -0.074% (BELOW ZERO and under the 0.15% USD-M fee floor), expectancy -$117/trade, Sharpe -3.18 with CI [-5.90, -0.16] fully negative
The premise is measurably absent precisely where it should work: performance is WORST in the stressed vol tercile (Sharpe -3.63, return -14.2%) and negative in the normal tercile (-10.7%), only calm is ~flat. The cascade-reversal thesis loses money in the exact high-liquidation regimes it targets
Adverse payoff geometry: win_rate 47%, avg_loss $512 > avg_win $328, return_skew -1.34 — the symmetric 1:1 bracket is systematically run over by continuation stop-outs, i.e. cascades keep going rather than snapping back
This is gross-negative, not fee-fragile: commission is only ~29% of gross; there is no positive edge for the low fee to rescue
Iteration History
Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: SOLUSDT.BINANCE-15-MINUTE-LAST-EXTERNAL, Bars processed: 34946 Diagnostics: should_enter() returned a side 0 times over 34917 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Verification failed (Layer 1 — static analysis): - `self._bar_interval_ns = ...` binds a value over framework method `@staticmethod _bar_interval_ns(bar_type)` — every later call raises "'<type>' object is not callable" (or the framework loses the member). Use a different attribute name. (line 209) - `self._bar_interval_ns = ...` binds a value over framework method `@staticmethod _bar_interval_ns(bar_type)` — every later call raises "'<type>' object is not callable" (or the framework loses the member). Use a different attribute name. (line 112)
Verification failed (Layer 1.5 — hypothesis/config consistency) [class=hypothesis_mismatch]: - config.instrument_id is SOLUSD.HYPERLIQUID but the hypothesis declares SOLUSDT.BINANCE — same asset, DIFFERENT venue/contract type (fees, settlement and the mechanism's premise differ). Trade the declared instrument.
Backtest and paper results are hypothetical. Trading involves risk of loss.