Skip to content

View original

EthDeribitWeeklyIronCondorRvSpikeVrp

Hypotheses

ETH Binance-Options Weekly Delta-Neutral Iron Condor, Vol-Regime-Gated Short-Vol Harvest (Sell the Condor Only After a Realized-Vol Spike, When IV Is Richest — Cross-Venue: BINANCE_OPTIONS Structure + ETHUSDT.BINANCE Perp as the Realized-Vol Signal, Defined-Risk, European-Style, ~20-30 Trades/Year)

Hypotheses

A MARKET-NEUTRAL, DEFINED-RISK, cross-venue SHORT-VOLATILITY strategy that harvests the volatility risk premium (VRP) on Binance's European-style ETH options — a venue with literally ZERO strategies in the 2,572-experiment portfolio (BINANCE_OPTIONS = 0.0%), the single most under-represented bucket. It is deliberately NOT an always-on short-vol book (L60 warns always-in structures average to beta): the condor is sold ONLY in an IV-rich regime, identified from the underlying perp's realized volatility. When 10-day realized vol of ETHUSDT.BINANCE perp spikes above its own rolling median, implied vol on the weekly options systematically overshoots subsequent realized vol (fear premium), so we sell that richness. Each entry is a delta-neutral iron condor: short a weekly OTM put + short a weekly OTM call at ~1.2x the option-implied expected move, plus long protective wings further OTM to cap loss (risk officer-friendly, defined max loss). European-style = no early assignment. The perp is only a signal source and expected-move calculator — no perp position is held — so the P&L is pure option theta/vega decay, structurally uncorrelated with the factory's 85.8% long-only, 71% Binance-futures directional book. Fills FIVE under-represented axes at once: BINANCE_OPTIONS venue (0%->), options combined quota (5.8%->15%), cross-venue (7.2%->15%), market-neutral direction (reduces 85.8% long-only), and a non-BTC/non-single-name mechanism family with no failure-pattern precedent.

Hypotheses

ITERATION 2 — one targeted fix for the reported Layer-2 failure, nothing else changed. Layer 2 crashed with "no attribute '_rv_src_id'" on every scenario because all parameters and per-run state were initialized in on_start(): the verification proxy constructs the strategy and feeds bars directly into on_extra_bar()/calculate_signal() and NEVER calls on_start(), so the config has one extra_bar_type (ETHUSDT.BINANCE) and the very first extra bar reached on_extra_bar() before any state existed. Fix: moved the parameter reads and state containers into __init__ (which the proxy does run, via FactoryStrategy's engine-tolerant super().__init__), leaving in on_start() only what genuinely needs the engine — the base's option_chain_schedule parsing plus _classify_legs(), which depends on the _periods it builds. Added the FactoryStrategyConfig import for the __init__ signature; no other import, no signal/roll/sizing/risk logic and no config value was touched, so Layer 1 stays green (re-checked: passes, errors []) and Layer 2 now passes all six scenarios (the one warning per scenario is the expected non-fatal frozen-signal notice — calculate_signal is inert by design for a schedule-driven options strategy, exactly as RollingOptionsStrategy defines it). Design rationale from iteration 1 is unchanged: (1) VENUE — the hypothesis specifies BINANCE_OPTIONS, but src/data/option_chain.py:expand_rolling_options resolves Deribit ONLY (hard-coded DeribitCollector and '.DERIBIT' ids), so a BINANCE_OPTIONS rolling spec yields an empty chain and backtest_agent raises 'expansion produced no chain' — guaranteed abandonment before a single trade; the structure therefore trades DERIBIT ETH while the cross-venue axis is preserved literally, with ETHUSDT.BINANCE carried as an extra instrument and used as THE realized-vol signal (same-mechanism fallback to the Deribit underlying's closes only if that feed is absent — never a different edge). (2) STRIKES — the hypothesis asks for ~1.2x expected-move shorts, but the resolver picks by moneyness and my probe of Deribit's historical ETH weeklies shows candle coverage of 10/10 at 6% OTM, 9/10 calls and 7/10 puts at 10%, and only 7/10 and 5/10 at 15%; with a ~9% 7-DTE expected move, 1.2x EM shorts and ~20% wings would leave most weeks wingless (no defined-risk structure at all), so the condor is expressed at 6% shorts / 10% wings — same geometry, strikes that actually trade. Risk stays defined twice over: a side is dropped unless both legs resolved (no naked shorts) and size comes from the ACTUAL resolved strike distance so the capped loss per side is ~2% of equity (L15/L59). No underlying smoke path.

Hypotheses

Unmeasurable, single-regime short-vol sample with an artifact-level Sharpe — the same weekly-Deribit-options family already abandoned repeatedly (L27). Despite the BINANCE_OPTIONS title, every option leg is .DERIBIT ETH weeklies, so the stated venue/cross-venue gap justification is false. The option legs span only 2025-08->2026-08 and the RV-spike gate fires on a subset, giving data_days=23 = ~23 gated short-vol bets in one benign window with no crash tested. Sharpe 9.28 is a suspected backtest artifact per the plausibility rule (>5), and the deceptively 'significant' CI [2.48, 34.5] / PSR 0.989 plus an implausible 2.4% max drawdown over a year of short gamma are hallmarks of an un-stressed sample, not a real edge. Walk-forward (3 windows) and the 15-day holdout cannot be populated from ~23 gated cycles, and the ~12-month Deribit weekly-option catalog is a structural wall that iteration cannot widen. Failure pattern: weekly_deribit_options_unmeasurable_short_vol (gated single-regime sample, artifact Sharpe, mislabeled venue, structural data wall).

Implementation

Weekly, defined-risk, delta-neutral SHORT-VOL iron condor on Deribit ETH options, sold only in an IV-rich regime. Each Friday-dated weekly expiry is entered ~7 DTE by selling a ~6% OTM call and a ~6% OTM put and buying ~10% OTM wings on both sides, and closed 24h before expiry. The week is traded ONLY when 10-day realized volatility of the ETHUSDT.BINANCE perpetual (the cross-venue signal source) sits at or above rv_spike_mult x its own trailing 60-day median -- implied vol systematically overshoots subsequent realized vol right after a vol spike -- otherwise the week is skipped entirely, so this is not an always-on short-vol book. Leg roles are derived from strike order inside each expiry, and a side is traded only when BOTH its legs resolved with candle data, so an unpaired short option is never sold and max loss is always capped by a wing. Size is risk-first: contracts = max_loss_frac x equity / actual wing width in USD, additionally capped at max_notional_frac of equity. Neither perp is ever traded -- they supply only the roll clock and the volatility signal -- so P&L is pure option theta/vega.

Verification Results

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['contracts', 'leg_sides', '_param_bounds', 'max_loss_frac', 'min_contracts', 'rv_spike_mult', 'rv_median_bars', 'rv_min_samples', 'rolling_options', 'rv_lookback_bars', 'max_notional_frac', 'roll_buffer_hours', 'rv_signal_instrument'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: AttributeError: strategy instance has no attribute '_rv_src_id' (bar timestamp: 1735689600000) - steady_downtrend: AttributeError: strategy instance has no attribute '_rv_src_id' (bar timestamp: 1735689600000) - flat_ranging: AttributeError: strategy instance has no attribute '_rv_src_id' (bar timestamp: 1735689600000) - volatility_spike: AttributeError: strategy instance has no attribute '_rv_src_id' (bar timestamp: 1735689600000) - zero_volume: AttributeError: strategy instance has no attribute '_rv_src_id' (bar timestamp: 1735689600000) - price_gap: AttributeError: strategy instance has no attribute '_rv_src_id' (bar timestamp: 1735689600000)

Verification Results

Categorize as a DERIBIT strategy, not BINANCE_OPTIONS — the 0%-bucket/0%-fee premise does not hold. Research lead should stop generating BINANCE_OPTIONS hypotheses until the resolver supports that venue, or reframe as DERIBIT. Cross-venue axis (Binance perp signal) is preserved.

Verification Results

VENUE SUBSTITUTION (disclosed, infrastructure-forced): the hypothesis's headline and its #1 stated contribution are the BINANCE_OPTIONS venue ('fills BINANCE_OPTIONS 0%->', 'BINANCE_OPTIONS Structure'), but the config trades ETH-PERPETUAL.DERIBIT and the chain resolves DERIBIT only (strategy is even named ...DeribitWeekly...). Root cause is real: option_chain.py hard-codes DeribitCollector/'.DERIBIT', so a BINANCE_OPTIONS spec yields an empty chain and is abandoned pre-trade. Asset (ETH), mechanism (RV-spike-gated defined-risk condor VRP), direction (market-neutral short-vol), timeframe (weekly ~7DTE) and parameters ALL match, and real Deribit fees are applied — a portfolio-taxonomy deviation, not a mechanism swap. Not failed on this basis because asset+mechanism+direction+timeframe are faithful and the deviation is forced/disclosed.

Verification Results

Watch wall-clock; drop roll clock + leg bars to 1-DAY (weekly held-to-expiry needs no intraday resolution) and/or cut lookback_days if the 3-phase run nears the cap.

Verification Results

TIMEOUT RISK on the full 3-phase run: 1-HOUR bars + rolling timeframe with lookback_days=365, whereas the sibling Deribit condor moved to 1-DAY because 1-HOUR chains 'blew the 300s cap.' Layer-3 passed but only over data_days=22.

Verification Results

Require the full-history run to confirm cycle count populates walk-forward OOS + the 15-day holdout; treat the sandbox Sharpe as noise, not evidence of edge.

Verification Results

SMALL-SAMPLE / INFLATED METRICS: sandbox Sharpe 9.28 (CI 2.29-30.46), total_return 5.53% over only data_days=22 / ~22 cycles. At rv_spike_mult=1.0 the gate fires ~50% of weeks (~26 cycles/yr) — near the options measurability floor (L26). The Sharpe is a short-window artifact.

Backtest Review

Defined-risk structure with an enforced naked-leg guard; clean cross-venue RV-signal plumbing (Binance perp -> Deribit condor)

Backtest Review

Timeout-safe, well-engineered leg-role classification and risk-first sizing

Backtest Review

data_days=23: option legs span only 2025-08->2026-08, and the RV-spike gate trades a subset — ~23 gated short-vol bets in one benign window, no crash tested

Backtest Review

Sharpe 9.28 is a suspected backtest artifact (>5); max-DD 2.4% over a year of short gamma is implausibly clean; CI/PSR are bootstraps over ~23 returns

Backtest Review

The RV gate shrinks the already-tiny sample further; walk-forward + 15-day holdout cannot be populated

Backtest Review

Structural Deribit weekly-option data wall (~12 months) means cycles cannot be added by iteration

Backtest Review

Venue justification is false: titled BINANCE_OPTIONS/cross-venue but every option leg is .DERIBIT — the same graveyard family, not a new bucket

Outcome Summary

EthDeribitWeeklyIronCondorRvSpikeVrp aimed to open the completely empty BINANCE_OPTIONS bucket by harvesting the volatility risk premium with a defined-risk weekly ETH iron condor, sold only after the Binance perp's realized vol spiked, using the perp purely as a cross-venue signal. The implementation was clean and genuinely defined-risk, and it posted eye-catching numbers (Sharpe 9.28, PF 1.42, 2.4% max drawdown), but the analyst flagged the Sharpe as an artifact: the option legs only span ~12 months, so the RV gate left ~23 short-vol bets in one benign, crash-free window, and every leg was actually Deribit rather than Binance options — making both the measurability and the venue justification fail. It was abandoned on the second iteration at the backtest_review gate as the recurring weekly-Deribit-options unmeasurable-short-vol pattern behind a structural data wall. It never advanced to optimization, analysis, or risk review.

Outcome Summary

A high headline Sharpe on a weekly options short-vol book is meaningless when the option catalog spans only ~12 months and a regime gate shrinks it to ~23 single-window bets with no crash tested — Sharpe >5 and an implausible 2.4% drawdown over a year of short gamma are artifact signatures, and a venue-gap justification must be checked against where the legs actually trade (here Deribit, not Binance options).

Outcome Summary

It was abandoned at the pre-optimization backtest_review gate on iteration 2 as an unmeasurable, single-regime short-vol sample with an artifact-level Sharpe — the recurring weekly-Deribit-options family (L27): the ~12-month Deribit weekly-option catalog is a structural data wall that iteration cannot widen, walk-forward and the 15-day holdout cannot be populated from ~23 gated cycles, and the stated cross-venue/BINANCE_OPTIONS justification is false since all legs are Deribit.

Outcome Summary

A market-neutral, defined-risk, cross-venue short-volatility strategy that sells a weekly delta-neutral ETH iron condor (short ~6% OTM call and put, long ~10% OTM protective wings) only in an IV-rich regime, gated on the ETHUSDT.BINANCE perp's 10-day realized vol spiking above its rolling median, holding to weekly European-style expiry — pitched to fill the empty BINANCE_OPTIONS venue bucket, with four core parameters (RV lookback, RV median window, RV spike multiple, max-loss fraction).

Outcome Summary

The backtest produced a suspiciously clean short-vol result — Sharpe 9.28 (flagged as an artifact), profit_factor 1.42, max_drawdown just 2.4%, avg_trade_return_pct 3.2% over 91 option trades — but the option legs span only 2025-08 to 2026-08 (data_days 23), so the RV-gated sample is ~23 short-vol bets in one benign window with no crash tested, and the CI [2.48, 34.5] / PSR 0.989 are bootstraps over ~23 returns. Despite the BINANCE_OPTIONS title, every option leg is actually a .DERIBIT ETH weekly.
Strategy report

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