Strategies
SOL Open-Interest Washout Reversal — Fade Forced Deleveraging Using the Robust OI Feed (NOT the Thin Liquidation Feed): Long the Bounce After a Sharp OI Contraction on a Down-Move, Short the Exhaustion After an OI Contraction on a Squeeze (SOLUSDT.BINANCE USD-M, 1H Bars, Long-Short, ~4–24h Hold, 3-Parameter)
Outcome: Abandoned
SolOpenInterestWashoutReversal
Data/plumbing sound: OI loaded, 494 trades, no liquidation — genuine no-edge read, not a data wall
Hypothesis
Implementation
Long-only, event-driven washout-reversal on SOLUSDT.BINANCE USD-M perp (1H bars). A sharp contraction in open interest over a 4-hour window is the aggregate footprint of positions being force-closed; when that contraction coincides with a sharp DOWN move (>= 1 ATR of washout score), over-leveraged longs have been flushed and the strategy buys the bounce. The signal is continuous every bar: contraction = (-oi_change)/oi_drop_pct times the negated ATR-normalised move, so it varies bar to bar and its magnitude is conviction. Entries additionally require the ATR target to be at least 0.60% of price (six times the 0.10% round-trip taker cost) and observe a 4-bar post-trade cooldown. Exits are an ATR stop, an ATR take-profit, and a hard 12-bar time stop. Sizing risks 0.5% of equity at the stop and is capped at 0.6x equity notional; leverage 1.0. Three tunables: oi_drop_pct, atr_stop_mult, atr_tp_mult. The squeeze-exhaustion short leg from iterations 1-2 has been removed.
Verification Results
CLEAN RESTART 2026-09-04 — this run's verdict history and learning records were removed and it was restarted from verification. Its previous abandonment came from the pipeline, not from the market: the Layer-2 harness mis-bound @staticmethod helpers (fixed), QA issued terminal performance verdicts on an unoptimized smoke test (removed — QA now judges correctness only), and sandbox timeouts came from backtest-slot starvation (fixed). The hypothesis and the strategy code are unchanged. Verify the code on its merits; performance is decided later by the full backtest and the optimizer.
Backtest Review
- Sharpe
- -0.41
- Total return
- -24.78%
- Max drawdown
- 25.16%
- Trades
- 494
- Win rate
- 45.3%
- Profit factor
- 0.54
Data/plumbing sound: OI loaded, 494 trades, no liquidation — genuine no-edge read, not a data wall
Computationally trivial as intended (no timeout risk); contained drawdown (25.2%)
Negative expectancy: profit_factor 0.54, Sharpe -0.41 (CI [-1.27,0.42]), total_return -24.8%, avg_trade_return_pct -0.045%, expectancy -$50/trade
Loses in every year 2021-2026 and in all three vol regimes; information_ratio -1.09
Fee-dominated: commission 37.5% of gross, avg_loss ($199) > avg_win ($130) at 45% win rate — the post-washout bounce is below cost
Premise falsified after the iteration-3 short-leg removal: the surviving long-only leg is still net negative
L58/L73 single-perp supplementary-gated (OI) reversion family, edge-dead this session
Iteration History
Verification failed (Layer 4 — QA review): - Negative-edge / fee-viability failure, confirmed as NOISE by the developer's own bidirectional replay (checklist #7, L6/L7). The sandbox is a badly losing book: total_return -9.83%, Sharpe -1.45 (CI [-3.07, 0.08]), avg_trade_return_pct -0.26% (deeply below the 0.15% floor), profit_factor 0.199, win_rate 0.268, avg_loss 204 vs avg_win 111, over 82 trades. Decisively, the developer's full 4.7-year offline replay shows per-trade return negative across the ENTIRE default grid AND negative when the polarity is INVERTED — both signs lose, which rules out a fixable sign error and means OI-contraction-plus-move is close to noise on SOL rather than a reversal predictor. A signal whose forward and inverse are both negative net of fees has no edge for the optimizer to find at any parameter setting.
Verification failed (Layer 4 — QA review): - Negative-edge failure confirmed and WORSENED by iteration 2 (checklist #7, L6/L7, L58). The trade-construction fixes (reversal confirmation, break-even lock, 24-bar hold, 0.60% fee floor) were correctly implemented but did not rescue the edge — they degraded it: profit_factor fell 0.199 -> 0.130, avg_trade_return_pct fell -0.26% -> -0.29%, win_rate 0.268 -> 0.226, and short_win_rate collapsed to 0.045 (1 of 22 shorts won), total_return -6.61%, Sharpe -1.39 (CI [-2.95, 0.13]), over 53 trades. Iteration 1's full-history replay already showed BOTH the signal and its inverse were negative net of fees (noise); iteration 2 confirms it — adding an entry-confirmation filter and break-even lock to a signal with genuine edge would raise win rate and PF, but here both fell, so the OI-contraction-plus-move signal is anti-predictive/noise on SOL, not merely mis-exited. No parameter or exit change turns a signal whose forward, inverse, raw, and confirmed forms are all negative into a positive one.
Verification failed (Layer 4 — QA review): - Negative-edge failure across all three iterations — the mechanism has no edge on SOL in any form tested (checklist #7, L6/L7, L58). Iteration 3 removed the short leg (which won 1 of 22) and reverted the degrading iteration-2 exit additions, leaving the long-only washout bounce. It is still a losing book: total_return -4.50%, Sharpe -1.05 (CI [-2.65, 0.64]), avg_trade_return_pct -0.237% (negative, below the 0.15% floor), profit_factor 0.307, win_rate 0.348, avg_loss 216 > avg_win 124, over 46 long trades. The developer's thesis that the long leg was ~break-even is falsified: 0.348 win rate is below the ~0.375 break-even for a 2.0-ATR target / 1.2-ATR stop, and winners are not even reaching target (avg_win < avg_loss). The per-trade progression is -0.26% -> -0.29% -> -0.237% — every construction negative. Removing the worst leg only shrinks the loss, it does not create an edge.
Backtest and paper results are hypothetical. Trading involves risk of loss.