Skip to content

View translation

BtcDeribitWeeklyShortIronFlyVrpHarvester

Hypotheses

BTC Deribit Weekly Short Iron Fly VRP Harvester (ATM Straddle + Defined-Risk Wings, IV-Rank Gated, Trend-Filtered, Pin-Harvest)

Hypotheses

A delta-neutral, defined-risk SHORT-VOLATILITY strategy on BTC options at Deribit, structurally DISTINCT from the factory's existing OTM short-vol expressions (short strangle, iron CONDOR, short put). Each weekly cycle it sells an AT-THE-MONEY straddle (short ATM call + short ATM put at the strike nearest spot) and buys protective long wings a fixed distance above and below (long OTM call + long OTM put) — forming a short IRON FLY with capped tail risk. Where the iron condor sells OTM strikes for a wide profit zone, the iron fly sells ATM strikes for the RICHEST theta and harvests the crypto 'pin' tendency (price frequently consolidates near high-open-interest strikes into weekly expiry). The structural edge is the volatility risk premium: Deribit BTC ATM implied vol persistently exceeds subsequently-realized vol, and ATM is where that premium is densest. Defined-risk wings cap the catastrophic-run loss that kills naked ATM straddles. Weekly tenor produces ~50 cycles/yr — dense enough for a robust 3-window walk-forward + holdout (deliberately avoiding the sparse-sample wall that abandoned the cross-venue/funding-spread strategies). Sizing is defined-risk-relative: max loss per fly (wing width − net credit) capped at a fixed ~2% of equity. ~4 parameters to resist the overfitting recurring across the recent batch.

Hypotheses

Five iterations died identically with zero trades, and iteration 5 concluded the block was upstream in whether the option legs ever had a live market. I checked that claim against the catalog before changing anything, and it was wrong. Using the chain expander's actual nearest-available-strike semantics rather than an exact strike grid, four distinct legs resolve on 47 of the last 52 weekly BTC expiries at a 5% wing (52 of 52 at 10%), and of the 24 most recent expiries 23 have ALL FOUR legs carrying seven daily bars INSIDE the seven-day entry window. BTC-PERPETUAL.DERIBIT also has 17,660 four-hour bars spanning 2018 to 2026. The data layer is sound. The real cause is arithmetic, and iteration 5 introduced it: that iteration moved the primary clock from 1-HOUR to 4-HOUR but left the realized-vol constants at their hourly calibration, rv_window 168 and bars_per_year 8760. Annualizing four-hour returns with sqrt(8760) instead of sqrt(2190) overstates realized vol by exactly sqrt(4) = 2x. Measured on the real perp series against the real DVOL series over the 11,944 bars carrying both, that lifts median RV from 48.5% to 97.1% against a median IV of 55.5%, so the VRP gate IV < RV * 0.85, which exists only to refuse a sale when vol is genuinely cheap, instead rejected 11,535 of 11,944 bars as vol_too_cheap, a 96.6% block rate; with the correct factor it blocks 511 bars, 4.3%. The surviving 3.4% never coincided with a weekly entry window, which is exactly zero trades. This also explains why iterations 2 to 4 loosening the VRP, trend and pairing gates could not have helped: those were earlier iterations, and this particular block did not exist until iteration 5. The fix is three constants and no logic change: bars_per_year 8760 to 2190 (365 * 6 four-hour bars per year), rv_window 168 to 42 (7 days * 6 bars per day, restoring the ORIGINAL seven-day window that matches the weekly option tenor rather than silently leaving it as 28 days), and iv_rank_window 1440 to 360 (the same 60-day rank window rescaled). No threshold was loosened, the defined-risk wing pairing from iteration 5 is kept intact, and there is still no smoke path or underlying fallback.

Hypotheses

Structurally unmeasurable with a suspected-artifact Sharpe — not worth 2 hours of optimization. The iteration-6 fix is genuinely correct (the annualization constant was the zero-trade cause and the fly now trades), but the Deribit option legs only span ~2026-02 → 2026-09, so the strategy is evaluated on ~14 weekly cycles / 30 flies over ~3-4 months (data_days 99, effective_daily_obs 15) in ONE calm BTC regime. The developer explicitly states this ~15-cycle ceiling is an infrastructure property of a 4-leg weekly structure under the 600s options budget and is BELOW the ~50 cycles/yr the walk-forward needs — so the 3-phase optimization and 20% holdout cannot populate. The headline Sharpe 4.94 (realized-trades basis, CI [2.36, 7.06]) on 30 trades over 3 months is a suspected backtest artifact of a short-vol pick-up-pennies book (short_win_rate 83%, net vega -202) whose crash tail — the exact risk the wings exist for — is entirely un-sampled in the window. No parameter change adds the regime coverage or cycle count the option history and sandbox budget lack. This is the L67/L23 defined-risk Deribit options VRP family. Failure pattern: structurally unmeasurable single-regime option history + short-vol under-sampled crash tail, implausible Sharpe (L67/L23/L27).

Implementation

Weekly defined-risk SHORT IRON FLY on BTC Deribit options, clocked off the BTC-PERPETUAL.DERIBIT 4-hour bar. Each weekly cycle the strategy sells the at-the-money call and the at-the-money put (the richest theta on the surface, and the strikes where the crypto pin tendency into weekly expiry pays) and buys protective wings roughly 5% above and below, capping the tail loss that destroys naked ATM straddles. Option legs are resolved from the historical Deribit weekly chain at 1-DAY resolution and are held to the roll buffer before expiry. The structural edge is the variance risk premium: Deribit BTC ATM implied vol persistently exceeds subsequently realized vol, and ATM is where that premium is densest. A soft VRP gate refuses to sell only when implied vol is demonstrably cheap relative to trailing 7-day realized vol (IV < RV * vrp_margin), and a trend filter stands the book down after an outsized directional run. Defined risk is enforced structurally rather than assumed: a short leg is submitted only once the protective wing of the SAME kind is loaded and quoting, pairing per side so a partially-resolved week still trades whichever vertical is complete and can never degrade into a naked straddle. Sizing is defined-risk-relative, contracts = equity * risk_frac / wing distance, so the maximum loss per fly is capped near 2% of equity.

Verification Results

Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: BTC-PERPETUAL.DERIBIT-4-HOUR-LAST-EXTERNAL, Bars processed: 14401 Diagnostics: calculate_signal() was never evaluated (0 evaluated bars) -> no primary bar reached the base template's signal path -> if you override on_bar(), call super().on_bar(bar); check bar_type matches the instrument's data. Do NOT loosen entry thresholds — the entry logic never ran. Ensure your strategy produces trades with the given data and parameters.

Verification Results

lookback_days=98 caps the strategy to ~14 weekly cycles — below the sample density a robust WF+holdout needs. Documented by the developer as a wall-clock constraint, handed to the analyst.

Verification Results

The IV-rank component of the entry gate is computed but not enforced at entry (only the soft VRP margin + trend filter are). Documented as intentional ('iv_rank is a soft signal'), so a design choice, not a defect.

Backtest Review

The iteration-6 annualization-constant fix is correct and real — the VRP gate now fires and the structure trades (60 legs / 30 flies), defined-risk with proper wings, delta-neutral (net delta -0.33)

Backtest Review

On the sample it looks clean: max_drawdown 4.1%, profit_factor 1.35, positive avg_trade_return_pct

Backtest Review

Structurally unmeasurable: the option legs only span ~2026-02 → 2026-09, so despite the 2018-spanning perp clock the strategy trades ~14 weekly cycles over ~3-4 months (data_days 99, effective_daily_obs 15) in ONE BTC regime — the developer states this is BELOW the ~50 cycles/yr needed and is an infrastructure ceiling (~15 cycles under the 600s options budget), so the 3-phase walk-forward and holdout cannot populate

Backtest Review

Implausible Sharpe = suspected artifact: sharpe_ratio 4.94 (realized-trades basis, CI [2.36, 7.06]) on 30 trades over 3 calm months — a short-vol pick-up-pennies book (short_win_rate 83%, net vega -202, theta +528) whose crash payoff is entirely un-sampled

Backtest Review

L67/L23 defined-risk Deribit options VRP family — repeatedly abandoned on thin single-regime option history

Iteration History

Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: BTC-PERPETUAL.DERIBIT-1-HOUR-LAST-EXTERNAL, Bars processed: 68591 Diagnostics: should_enter() returned a side 0 times over 0 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Strategy report

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