BtcDeribitWeeklyPutSkewCreditSpread
Hypotheses
Deribit BTC Weekly Put-Credit-Spread — Downside-SKEW Harvest (Not Vol Level): Sell the ~25-Delta Put / Buy the ~10-Delta Put ONLY When the Put Skew Is Rich, Defined-Risk, Held to Weekly Expiry, Roll Weekly (DERIBIT Options, 3-Parameter)
Hypotheses
A DEFINED-RISK, schedule-driven options income strategy on Deribit BTC weekly options that harvests the SHAPE of the vol smile — the persistently RICH downside PUT SKEW — rather than the vol LEVEL. Each weekly cycle, IF the skew filter fires, we SELL the ~25-delta weekly put and BUY the ~10-delta weekly put (a bull put credit spread), collecting the net credit and holding to expiry, then roll. The traded quantity is SKEW STEEPNESS: crypto OTM puts systematically over-price realized downside because crash-insurance demand is structural, so the 25Δ put is chronically richer than both ATM and the deeper 10Δ put — and selling the 25Δ/10Δ vertical monetizes exactly that steepness while the long 10Δ wing CAPS tail loss (survives 2020/2022-style crashes → avoids the risk_reject deaths that kill naked short-vol). This is DELIBERATELY on a different edge axis from the factory's existing short-vol book: it is NOT the pending delta-hedged ATM straddle (that harvests vol LEVEL / gamma-theta, delta-neutral), NOT a naked cash-secured put (this is DEFINED-risk with a bought wing and requires far less capital), and NOT the vega-neutral term-structure calendar (that trades tenor RV and timed out). Deribit carries multi-year BTC option history with greeks/IV in the catalog, and the weekly cadence (~52 cycles/yr) populates walk-forward windows and the 15-day holdout with ~100+ trades. Two fixed strikes are chosen ONCE per weekly roll (O(1) selection from a precomputed per-expiry strike map + bisect on IV), so there is NO per-bar chain rescan — the exact failure mode that timed out the prior options strategies. 3 parameters: skew-richness entry threshold, short-strike delta, and long-wing delta.
Hypotheses
Iteration 2 fixes the single cause of the zero-trade Layer-3 result: Deribit option bars are quoted as premium in the UNDERLYING COIN (verified directly in the catalog parquet: e.g. 0.022 BTC for a weekly OTM put), while strikes are USD, so the entry gate's credit/width evaluated to ~1e-6 and could never clear any threshold on any week — no period was ever approved, hence zero trades. Leg premiums are now converted to USD with the underlying's own close before the comparison (heuristic ceiling of 1.0 keeps it correct under both the native coin-premium and the legacy linear-USD bar models). The default threshold is calibrated on the actual collected weekly chain (201 historical 5%/10%-OTM 7-DTE verticals: median credit/width 0.105, p75 0.173), so 0.12 fires on ~45% of weeks (~24 trades/yr). No other logic changed: schedule resolution, atomic two-leg entry and defined-risk sizing are the iteration-1 code that already passed Layers 1-2.
Hypotheses
Structurally single-regime short-vol options book with an under-sampled crash tail — not worth 2 hours of optimization. The Deribit put legs only exist ~2025-09 → 2026-09 (data_days 358), so despite the 2018-spanning BTC-perp clock the strategy is evaluated on ONE ~12-month BTC regime with just 33 spreads; the 3-phase walk-forward and 20% holdout cannot populate across regimes, and the defined-risk thesis's whole point — surviving a 2020/2022-style crash — is never stress-tested (no crash in the window). It is not significant: Sharpe 1.56 with bootstrap CI [-0.46, 5.22] straddling zero, PSR 0.661, effective_daily_obs 33, and the short-vol signature is a pick-up-pennies distribution (short_win_rate 88%, return_skew -2.76, kurtosis 10, largest_loss $4,725 vs avg_win $719) whose Sharpe is inflated by the calm regime. The iteration-2 unit fix is correct and the positive avg_trade_return_pct (13.4%) distinguishes it from the negative-per-notional L67 siblings, but a one-regime sample with an untested tail cannot survive the deflated-Sharpe/holdout gates, and no parameter change adds regime coverage the option history lacks. This is the L67/L23 defined-risk Deribit options VRP family. Failure pattern: single-regime thin option history + short-vol under-sampled crash tail, Sharpe indistinguishable from zero (L67/L23).
Implementation
Weekly Deribit BTC bull put credit spread: sell the ~25-delta (5% OTM) weekly put and buy the ~10-delta (10% OTM) put, entered ~7 days before expiry only when the realized credit/width (skew richness) clears a threshold, held to 24h before expiry, then rolled. Defined risk: max loss = width - credit, sized to 2% of equity per cycle.
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
No change required.
Verification Results
calculate_signal uses ts_event (falling back to ts_init) to dedupe bars, while point-in-time reads elsewhere are fine. Not a defect — pure OHLCV, no supplementary series — noted only for convention. Channel (max/min over _highs/_lows) and ER (_er_closes/_abs_moves) are both READ BEFORE the current bar is appended, so there is verifiably NO look-ahead in either the breakout or the regime gate.
Backtest Review
Genuinely defined-risk (long wing caps tail), fee-light (commission ~0), and the iteration-2 coin/USD premium unit fix is correct so the skew gate now fires (66 legs / 33 spreads)
Backtest Review
Positive headline on the sample: avg_trade_return_pct 13.4%, profit_factor 1.35, max_drawdown 5.3%, omega 2.16 — clears the fee floor unlike the negative-per-notional L67 siblings
Backtest Review
Structurally single-regime: the Deribit option legs only exist ~2025-09 → 2026-09 (data_days 358), so despite the 2018-spanning BTC perp clock the strategy is tested on ONE ~12-month BTC regime — the walk-forward windows and 20% holdout cannot populate across regimes
Backtest Review
Not statistically significant: Sharpe 1.56 with bootstrap CI [-0.46, 5.22] straddling zero, PSR 0.661, effective_daily_obs 33
Backtest Review
Short-vol pick-up-pennies with an under-sampled crash tail — the exact risk the long wing is meant to cover is never stress-tested: return_skew -2.76, kurtosis 10, largest_loss $4,725 vs avg_win $719, short_win_rate 88%; no 2020/2022-style crash in the window
Backtest Review
L67/L23 defined-risk Deribit options VRP family — repeatedly abandoned on thin single-regime option history
Iteration History
BtcDeribitWeeklyPutCreditSpreadSkewHarvest
Iteration History
Verification failed (Layer 4 — QA review):
- UNMEASURABLE SAMPLE SIZE (trade-count death). The hypothesis promises '~100+ trades' populating walk-forward windows and the 15-day holdout, but the configuration structurally cannot produce them. rolling_options.lookback_days is pinned at 70 (= 10 weekly cycles = 20 option-leg bar types), and the developer's own rationale states the Layer-3 per-bar-type catalog-loading ceiling 'caps any weekly rolling-options run at roughly 10-15 cycles'. Every additional weekly cycle adds 2 more option-leg bar types at ~10s each against the 300s cap, so the cycle count can never be raised enough to reach a statistically adequate sample within this pipeline. The skew + dual-delta + credit-fraction gate then cuts the ~10 available cycles further. The sandbox confirms the ceiling: 5 cycles entered, 10 leg-trades, data_days=5, metrics_reliable=false, avg_trade_return_pct=-2.99%. A single-to-low-double-digit trade count cannot distinguish edge from noise for a highly skewed credit-spread return distribution. This is the recurring weekly/monthly Deribit put-write/put-spread failure mode that dies unmeasurable after burning backtest and optimization iterations.
Iteration History
SolEfficiencyRatioGatedBreakoutLS
Iteration History
Verification failed (Layer 4 — QA review):
- WHOLE-STRATEGY SWAP / MISLINKAGE. The hypothesis specifies a DERIBIT BTC weekly PUT-CREDIT-SPREAD options strategy harvesting downside put-skew (SELL ~25Δ put / BUY ~10Δ put, defined-risk, held to weekly expiry, rolled weekly). The submitted code is SolEfficiencyRatioGatedBreakoutLS — a SOLUSDT.BINANCE 4-HOUR Kaufman-Efficiency-Ratio-gated channel breakout with an ATR-trailing stop. Instrument, venue, timeframe, direction, and the entire edge mechanism all differ: a coherent but DIFFERENT strategy attached to the wrong hypothesis. Critical fail.
- INSTRUMENT/VENUE MISMATCH: hypothesis = Deribit BTC options; config = SOLUSDT.BINANCE perp, no options data. TIMEFRAME MISMATCH: hypothesis = weekly options roll; config = 4-HOUR bars. CORE EDGE ABSENT: no options, strikes, deltas, skew filter, or credit collection anywhere — the code is a trend breakout.
- Moot given the swap, but the submitted SOL breakout is itself negative in the sandbox (total_return -6.17%, Sharpe -0.44, PF 0.77, avg_trade_return_pct -0.95%, 37 trades) and the developer flags the ER gate as non-load-bearing and the short side as a net loser. Also note for the correct hypothesis: weekly-expiry credit spreads (~52/yr, further cut by skew-gating) risk being too few trades to measure (L26).
Backtest and paper results are hypothetical. Trading involves risk of loss.