Skip to content

View translation

BnbVwapReversionLS15m

Hypotheses

BNB Intraday VWAP-Reversion, Long-Short (Single-Instrument BINANCE Perp, 15m Bars, Fade Moderate Z-Score Deviations from Rolling VWAP on the Most RANGE-BOUND Deep Major — Cleanest Reversion Substrate, Highest Win-Rate / Lowest Whipsaw, Trend-Gated, Favorable-RR, Pure OHLCV, 3-Parameter)

Hypotheses

A LONG-SHORT, single-instrument intraday mean-reversion on BNBUSDT.BINANCE (USD-M perpetual, 15m bars) — the factory's ONE proven-survivor recipe (SOL VWAP-Reversion, which reached paper because it is single-name, high-trade-count/diagnostic across all regimes, fee-clearing on a deep perp, and low-parameter) applied to the deep major with the CLEANEST reversion substrate. The instrument choice is a real, defensible thesis, not a symbol swap: BNB is the lowest-beta, most RANGE-BOUND of the mega-caps — it trends far less violently than SOL/DOGE/ETH because a large fraction of its float is exchange-utility-held and less reflexive — so intraday dislocations from fair value revert with a HIGHER win rate and LOWER whipsaw than on the trendier majors. That makes it the natural complement to the high-amplitude DOGE/XRP reversions already in the pipeline: those maximize per-trade AMPLITUDE, this one maximizes reversion RELIABILITY. It is deliberately engineered against every dominant killer in the outcome history: OVERFIT (the graveyard that just took three weekly baskets via best-of-N IS/OOS collapse) is structurally impossible here — one deep name, one mechanism, three robust parameters, zero cross-sectional selection surface; SINGLE-REGIME artifacts (which killed the momentum timer — all return from 2021) cannot arise because the strategy fires hundreds-to-thousands of times across every year, making its metrics diagnostic; FEE_EDGE is addressed by fading only moderate+ stretches (z>1.5) that clear the 0.10% round-trip and by a far-anchor / near-stop geometry giving favorable realized reward:risk (fixing the inverted-RR death of the trade-flow strategy); DATA (which killed the OI basket at 32 usable days) is a non-issue — pure OHLCV, the best-surviving tag. It fills the under-represented long_short (14.7%) and short-horizon (6.1%) buckets on a fresh deep name.

Hypotheses

DEVELOPER RECOMMENDATION: ABANDON. I concur with the QA analyst. This is the 6th consecutive failure of the pure-OHLCV VWAP/price-reversion mechanism class (SOL-ORB, ETH-pivot, XRP-climax, DOGE, BNB), all converging on a ~36% win-rate class signature and fee/edge death; L7 records 0% survival across 213 runs. The BNB range-bound thesis is empirically falsified — realized win_rate 0.359 is no better than DOGE (0.376) or XRP (0.36) — so instrument choice does not rescue the mechanism. The core failure is negative per-trade expectancy (avg_trade_return_pct −0.0266%, per-notional), which is a MECHANISM-level property with NO code-level fix; the analyst explicitly noted the sizing/liquidation residuals 'don't change the verdict.' Because the pipeline requested one more iteration, I made the smallest changes that fix the ONLY code-fixable half of the reported failure — the −100% LIQUIDATION — without pretending to fix the edge: a hard equity kill-switch (flatten + stop below 0.60×base_capital, capping drawdown near 40%), path-independent capped sizing (addresses the 71% avg_position_pct), and materially higher selectivity (entry_z 2.5, trend_er_max 0.35, 1h cooldown) to reduce the fee churn. These keep every earlier layer green (imports unchanged, signal/geometry logic untouched, the iter-2 O(window) perf fix retained) and prevent the catastrophic liquidation, but they will NOT produce positive edge — the expectancy remains negative. The correct outcome is abandonment of this mechanism class and a return to the Research Lead for a genuinely different edge (order-flow/OI/funding/cross-sectional structure), not a 7th VWAP-reversion variant on another instrument. I am flagging this transparently rather than shipping a cosmetic 'fix' as if it rescued the strategy.

Hypotheses

fee_edge/no_edge net-loser plus account liquidation — not optimizable. The BNB VWAP-reversion fade has negative expectancy (profit_factor 0.53, expectancy -$234.95/trade, avg_trade_return_pct -0.116% NEGATIVE, win_rate 0.331) on a full 412-day/230k-bar sample, losing in every regime and every year; Sharpe -2.22 with CI [-7.25, -1.32] entirely below zero. The account was LIQUIDATED (-100% return, 100% drawdown) on 2021-04-21 despite the developer's equity kill-switch. This is the 6th failure of the pure-OHLCV single-name VWAP/price-reversion fade class (L55 zero-survivor, 0/213 tag L7), and the developer's own iter-3 note declares the range-bound thesis falsified and recommends abandon. No parameter tuning of entry_z/stop_atr/trend_er_max can flip a negative per-trade edge positive. Not worth 2 hours of optimization.

Implementation

Long-short intraday VWAP z-score reversion on BNBUSDT.BINANCE USD-M perpetual, 15m bars, pure OHLCV (unchanged mechanism). Iteration-3 hardening of the two code-fixable defects flagged at Layer 4: (1) a HARD EQUITY KILL-SWITCH — if account equity falls below equity_floor_frac (0.60) × base_capital it flattens and permanently stops opening positions, bounding max drawdown to ~40% and making the observed −100% liquidation impossible; (2) much higher selectivity to cut the 9547-trade / 18%-commission churn — entry_z raised 1.5→2.5 and trend_er_max tightened 0.5→0.35, plus a 1h post-exit cooldown; and path-independent capped sizing min(base_capital, equity)×position_frac to fix the elevated 71% avg_position_pct. Signal, regime gate, and favorable-RR geometry are unchanged. Three tunable knobs: entry_z, stop_atr, trend_er_max.

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.

Verification Results

If iterated further, express both target and stop in z/sd units so reward=entry_z−exit_z and risk=stop_z−entry_z are directly comparable.

Verification Results

Exit geometry lives in incompatible units — TARGET in z-space (|z|<=exit_z), STOP in ATR-price-space (stop_atr×ATR). This is the exact inverted-RR defect the sibling DOGE iteration fixed by unifying both to z/sd units; here it was reverted. The hypothesis's intended far-target/near-stop favorable RR is not guaranteed by construction and likely contributes to the winners-capped/losers-run signature. Not a hard defect (exits are valid and loss is bounded).

Verification Results

Derive base_capital from actual initial account equity at on_start rather than a constant.

Verification Results

Kill-switch and sizing key off a hardcoded base_capital=100000. If account starting equity differs, the floor trips at the wrong absolute level and the sizing cap is mis-scaled.

Backtest Review

High trade count / diagnostic across regimes (450 trades, pure OHLCV, no data wall)

Backtest Review

Account LIQUIDATED: total_return -100%, max_drawdown 100%, liquidated on 2021-04-21 — the added equity kill-switch did not prevent ruin

Backtest Review

Negative-expectancy mechanism: profit_factor 0.53, expectancy -$234.95/trade, win_rate 0.331, both long (0.379) and short (0.294) legs losing

Backtest Review

avg_trade_return_pct -0.116% (NEGATIVE, below the 0.15% Binance USD-M fee floor, L22) — the per-trade edge has the wrong sign, not merely fee-fragile

Backtest Review

Sharpe -2.22 with bootstrap CI [-7.25, -1.32] fully below zero; Sortino -1.87, information_ratio -2.93, PSR 0.0

Backtest Review

Loses in every regime (calm -26.6%, normal -100%, stressed -32.1%) and every year (2020 -60%, 2021 -114%)

Backtest Review

Range-bound BNB reversion thesis empirically falsified — 6th failure of the pure-OHLCV VWAP/price-reversion class (L55 single-name fade, 0 survivors); developer's own iter-3 note recommends ABANDON

Iteration History

Verification failed (Layer 3 — sandbox backtest): smoke test exceeded the 300s wall-clock limit. This almost always means per-bar work that scales with history — e.g. rescanning the full funding/supplementary series, or rebuilding a list and calling min()/sorted() inside calculate_signal()/on_bar() on every bar. Precompute sorted timestamp arrays ONCE in __init__ and use bisect, or cache lookups keyed by timestamp, so per-bar cost is O(log n) not O(n).

Iteration History

Verification failed (Layer 4 — QA review): - FEE/EDGE FAILURE + LIQUIDATION on a now-runnable, trustworthy backtest -> ABANDON. With the Layer-3 timeout fixed, the full-history run (2335 data_days, 9547 trades, metrics_reliable=true) is decisively negative and LIQUIDATED: total_return -100.0, liquidated 2020-06-25, Sharpe -1.57 (CI [-2.29,-1.20] entirely negative), PF 0.547, win_rate 0.359, avg_trade_return_pct -0.0266%, commission 18.04% of gross ($58.8k). A 36% win rate at ~1:1 realized RR (avg_win $95 ~= avg_loss $97) is negative expectancy, and 9547-trade churn compounds fee drag to liquidation. - The BNB-SPECIFIC THESIS IS FALSIFIED and the mechanism class fails a 6th time. The differentiator was that BNB's range-bound/low-beta nature would give a HIGHER win rate / lower whipsaw. Realized win_rate 0.359 — no better than DOGE (0.376) or XRP (0.36). ~36% is the class-level signature of pure-OHLCV VWAP/price reversion regardless of instrument: SOL-ORB, ETH-pivot, XRP-climax, DOGE, and now BNB have ALL failed on fee/edge or inverted-RR (L7 0% survival across 213 runs). Amplitude-selection (DOGE/XRP) and reliability-selection (BNB) both converge on ~36% win rate and liquidation — instrument choice does not rescue the mechanism. - RESIDUAL (doesn't change the verdict): liquidated (total_return -100%) with avg_position_pct 71% (elevated vs intended 0.50; no stacking, but higher than DOGE's 15% — likely mark growth + drawdown averaging). Liquidation with a ~50-71% book indicates the 8h time-stop lets reversions ride to large losses (largest_loss -$7907, max_consecutive_losses 20) with no portfolio equity stop. - CREDIT (no defect): the iter-2 timeout fix is correct and holds — bars[-need:] O(window) produces result-identical windows and completes over 2335 days. Signal/regime/geometry logic is mechanically correct. The rejection is at the mechanism/edge level, not implementation.

Iteration History

Verification failed (Layer 4 — QA review): - FEE/EDGE FAILURE persists -> ABANDON the mechanism class (concurring with the developer's explicit recommendation). The iter-3 selectivity hardening did NOT help: win_rate FELL to 0.333 (from iter-2's 0.359), PF 0.523, avg_trade_return_pct -0.116% (per-trade WORSE), total_return -100% (liquidated 2021-04-23), commission 16.55% of gross. This is the 6th+ consecutive failure of the pure-OHLCV VWAP/price-reversion class (SOL/ETH/XRP/DOGE/BNB, multiple iterations) with the same ~33-38% win-rate signature; L7 = 0% survival across 213 runs. Negative per-trade expectancy is mechanism-level with no code-level fix. - THE CLAIMED LIQUIDATION FIX DOES NOT HOLD. The kill-switch (_killed=True when equity < 0.60*base_capital) was stated to make -100% liquidation 'impossible' — but the sandbox STILL liquidated (total_return -100%, 2021-04-23), avg_position_pct 132%. The kill-switch is a BAR-BOUNDARY check (calculate_signal / next-bar should_exit), so it cannot prevent an INTRA-BAR wipeout: a single violent 2021 BNB 15m bar against a ~50% position drives the engine's margin liquidation before the next bar's check fires. A bar-close equity floor and a bar-close ATR stop can't bound loss against a gap; only an engine-enforced intra-bar stop order can. Logic is coded correctly but architecturally insufficient. - CREDIT (no defect): the code is mechanically correct and the developer was transparent — kill-switch, higher selectivity (entry_z 2.5, trend_er_max 0.35, 1h cooldown), and capped sizing are all implemented as described, and the iter-2 O(window) perf fix is retained. The developer explicitly flags abandonment rather than shipping a cosmetic rescue. Rejection is at the mechanism/edge level.
Strategy report

Backtest and paper results are hypothetical. Trading involves risk of loss.