Skip to content

View translation

EthDeribitWeeklyTrendGatedBullPutSpread

Hypotheses

ETH Deribit Weekly Bull-Put Credit Spread — Trend-Gated Put-Skew / VRP Harvest, Defined-Risk (Sell 25Δ Weekly ETH Put, Buy 10Δ Wing, ONLY When Daily Trend Is UP; Harvest Persistent Put-Skew Richness While the Trend Filter Cuts the Left-Tail That Kills Naked Put Sellers)

Hypotheses

A DEFINED-RISK, low-frequency options-premium strategy on Deribit ETH weekly options, deliberately chosen to fill the factory's largest quota gap (options at 5.7% vs 15% target; only 147 Deribit + 1 Binance-options experiments) and to be structurally DISTINCT from every options strategy already in the book/pipeline (BTC weekly cash-secured put, ETH monthly iron condor, BTC monthly long straddle, BTC weekly put-skew spread, BTC weekly iron condor). Differences that matter: (1) ETH underlying, not BTC; (2) a single-sided BULL-PUT vertical (sell higher-strike put, buy lower-strike put) rather than a two-sided condor or an unhedged CSP; (3) a mandatory DAILY-TREND GATE that only opens a new spread when ETH is in an established uptrend — this is the core innovation and the answer to why naked/undated put-selling keeps blowing up (left-tail crash losses in downtrends). The edge harvested is the well-documented, persistent RICHNESS of crypto downside puts (crash-insurance demand keeps 25Δ put IV structurally above realized), collected as net credit, with the long 10Δ wing capping max loss. IMPLEMENTATION NOTE FOR THE DEVELOPER (to avoid the repeated 300s-timeout deaths in options strategies): precompute the sorted expiry calendar and per-expiry strike ladder ONCE in __init__, cache IV-rank on a rolling deque, and NEVER call sorted()/min()/full-series rescans inside on_bar — per-bar cost must be O(log n).

Hypotheses

Implements the hypothesis as specified and fills the options quota gap on the exact axes the Research Lead asked for: ETH (not BTC), a single-sided bull-put VERTICAL (not a condor, not an unhedged CSP), and a mandatory daily-trend gate as the core innovation. Venue is DERIBIT at leverage 1.0 (the options cap) because the edge is an option-premium/skew edge and Deribit carries the deep ETH weekly chain. Structure: extends RollingOptionsStrategy directly so the framework owns schedule parsing, entry, roll and per-leg positions — no self-implemented roll and NO underlying smoke path (should_enter returns None unconditionally; the ETH perp only supplies the roll clock, the trend measure and the realized-vol series). PERFORMANCE (the note about repeated 300s-timeout deaths is taken literally and structurally): 1-DAY bars for both roll clock and option legs; the close buffer is a deque whose maxlen is fixed at construction (never an unbounded list); the two numpy reductions run over that FIXED window, never over accumulated history; finished expiries are dropped from the base's per-bar period scan so it stays proportional to the ACTIVE week; and the entire per-week decision (trend gate + delta selection + sizing) is computed ONCE per expiry, cached, over at most four rungs. There is no sorted()/min() over anything that grows and no supplementary-series rescan in on_bar. I also landed a batched extra-bar catalog load in BacktestRunner beforehand (measured on this box: 40 Deribit option legs = 426.9s when queried one catalog call per leg vs 11.9s in a single batched call) — that per-leg loop, not strategy code, was the actual reason weekly option chains kept blowing the 300s cap. ENTRY FREQUENCY: the gate is deliberately ONE condition rather than a conjunction — ETH closes above its 50-day mean roughly 55-60% of the time, so a 365-day chain yields ~52 weekly cycles of which ~28-32 trade (~60 leg round-trips), comfortably clear of the zero-trade sandbox failure that compound regime filters cause. FEES: Deribit charges 0.03% of premium notional per leg (~$0.20/leg at these sizes) against a 25-delta weekly ETH put credit of roughly 1% of spot, so fees are a rounding error rather than the edge, and the cadence is weekly rather than sub-fee fast. RISK: the wing is bought in the same atomic decision, at the same size, from the same equity snapshot; the short can never take the outermost rung (so no parameter setting can leave it unwinged or silently mute the strategy); and sizing is a max-loss budget (equity*max_loss_frac/width) rather than a notional fraction, so no single week can exceed ~3% of equity — the direct answer to the short-vol blow-up failure mode. ONE HONEST RESERVATION, implemented as asked: the trend gate is a momentum filter on the underlying, so it will also skip the calm post-selloff weeks where put skew is richest. If the analyst finds the gate costs more premium than it saves in tail losses, trend_entry_pct is the single parameter to relax — its declared bounds already run down to -3%.

Hypotheses

Unmeasurable short-vol sample on a structural data wall (recurring weekly-Deribit-options family, L27). Although the ETH perp spans 2019-2026, the option legs only resolve from 2025-08 and the trend gate cuts the sample further to just 22 traded weekly spreads = 22 independent short-vol bets, all inside one benign ~12-month window with NO crash in-sample — so the core thesis (the trend gate removes the left tail) is untested because no left-tail event occurred. The headline Sharpe 5.40 is a suspected backtest artifact per the plausibility rule (Sharpe>5), and the report confirms it: the Sharpe CI is [-1.73, 26.6], spanning strongly negative to absurd, PSR 0.87. The P&L is a short-vol negative-skew distribution (skew -1.97, kurtosis 7.6) where a single -2.2% week already dwarfs the ~0.3-0.5% weekly credits, and net_entry_delta 58.6 shows real directional exposure. Walk-forward (3 windows ~7 cycles each) and the 15-day holdout (~2 cycles) cannot be populated. This is not a tunable-parameter problem — the Deribit ETH option catalog spans only ~12 months and the trend gate shrinks the tradeable count, so iteration cannot raise the sample (as it failed to for the sibling BTC condor, delta-hedged straddle and put-write structures). Failure pattern: weekly_deribit_options_unmeasurable_short_vol (22-cycle single-regime sample, Sharpe artifact with CI straddling zero, untested tail, structural data-span wall).

Implementation

Deribit ETH weekly bull-put credit spread that harvests persistent put-skew richness only while ETH is in a daily uptrend. Each weekly cycle (entry at expiry-7d) it SELLS the ~0.25-delta OTM ETH put and BUYS a further-OTM ~0.10-delta put wing, holds through theta decay, closes ~26h before expiry, then rolls into the next weekly expiry. A new spread is opened ONLY when the ETH close is at least trend_entry_pct percent above its own 50-day simple moving average — a single, continuously-measured gate (not a conjunction of filters) that fires roughly 55-60% of weeks and exists to cut the left-tail crash weeks that kill put sellers; in a downtrend the week is skipped entirely, taking no premium and no risk. Strikes are chosen IN CODE by Black-Scholes delta from a 4-rung put ladder (-4.5%/-6.5%/-9%/-12% moneyness) resolved by the historical Deribit chain expander, with sigma taken from the underlying's own trailing realized vol scaled by iv_premium (no supplementary feed is used anywhere). A week trades only if at least two rungs resolved and a strictly-lower-strike wing exists, and the short is only ever chosen from rungs that still have a wing beyond them, so a naked short put is structurally impossible. Both legs are sized identically from ONE equity snapshot as equity*max_loss_frac/strike_width, capping the worst weekly outcome at ~3% of equity before the credit received. Runs entirely on 1-DAY bars with O(1) per-bar work over a fixed-size buffer.

Verification Results

Confirm Deribit ETH weekly option history extends beyond 365 days; if so widen lookback_days to lift completed spreads well above ~30 and give the holdout multiple cycles. Otherwise flag that holdout/OOS will be low-confidence by construction.

Verification Results

MEASURABILITY (L26, the gated-options failure class). The trend gate passes ~55-60% of weeks and the 50-day MA warmup consumes ~7 weeks, so over the 365-day lookback the strategy resolves only ~25-30 completed bull-put spreads — at or just below the ~30-trade options measurability floor. The 15-day holdout would then contain only ~1-2 weekly cycles (cannot validate), and walk-forward OOS windows ~8-10 trades each. The single-gate design correctly avoids zero-trades, but this is materially thinner than an unconditional weekly seller and risks a downstream 'unmeasurable / failed-holdout' abandonment.

Verification Results

Verify whether RollingOptionsStrategy.on_bar calls calculate_signal for the primary bar. If it does, drop the manual call (or dedupe appends per timestamp) so the trend MA and realized vol use unique daily closes.

Verification Results

on_bar() calls self.calculate_signal(bar) (appends close, runs _refresh_state) BEFORE super().on_bar(bar). If the RollingOptionsStrategy base also invokes calculate_signal for the primary bar inside super().on_bar(), the close is appended twice per bar, halving the effective trend window — the nominal '50-day MA' would average ~25 unique days of duplicated prices, changing the gate. The explicit manual call suggests the base does NOT dispatch calculate_signal (else it would be redundant), so likely fine, but verify.

Verification Results

Judge edge at the spread-structure level (net credit vs 2-leg fees + tail losses), not per-leg, and disregard the 15-day sandbox Sharpe.

Verification Results

Sandbox Sharpe 8.99 has CI [-0.04, 63.4] over only data_days=15 (30 trades) — a small-window artifact, not reliable (sortino 0.0 and the extreme CI confirm the window is too short). avg_trade_return_pct -6.9% is a per-leg metric distorted by the bought wings; net structure P&L is credit-positive (total_return +3.9%, PF 1.63, short-leg win rate 93.3%).

Backtest Review

Genuinely defined-risk vertical (wing enforced same-size/same-snapshot, naked-leg guard)

Backtest Review

Timeout-safe: bounded deque, O(1) per-bar work, daily bars

Backtest Review

Sensible trend-gate design in principle (skip downtrend weeks to avoid the left tail)

Backtest Review

data_days=22: only 22 weekly spreads = 22 independent short-vol bets, all in one benign 2025-08→2026-08 window

Backtest Review

No crash in-sample, so the trend-gate 'cuts the left tail' thesis is completely untested

Backtest Review

Sharpe 5.40 is a suspected artifact; Sharpe CI [-1.73, 26.6] straddles zero — statistically meaningless

Backtest Review

Short-vol negative-skew distribution (skew -1.97, kurtosis 7.6); one -2.2% week already dwarfs the small weekly credits; net_entry_delta 58.6 (directional)

Backtest Review

Walk-forward + 15-day holdout cannot be populated from 22 gated cycles; structural Deribit ETH option data wall (L27)

Outcome Summary

EthDeribitWeeklyTrendGatedBullPutSpread set out to fill the factory's largest quota gap (options) with a carefully defined-risk ETH bull-put credit spread, adding a daily-uptrend gate as its core innovation to skip the downtrend weeks where naked put-selling blows up. The implementation was clean — genuinely defined-risk with an enforced wing and timeout-safe O(1) per-bar work — but the data made it unmeasurable: the ETH option legs only resolve from 2025-08, so the trend gate left just 22 weekly spreads in a single benign window with no crash to test the left-tail thesis, and the headline Sharpe 5.40 was a flagged artifact with a CI spanning -1.73 to 26.6. The analyst abandoned it on the first iteration at the backtest_review gate as the recurring weekly-Deribit-options unmeasurable-short-vol pattern on a structural data wall, not fixable by iteration. It never advanced to optimization, analysis, or risk review.

Outcome Summary

A weekly Deribit options strategy cannot be validated when the option catalog spans only ~12 months and a trend gate further shrinks it to ~22 single-regime bets — a negative-skew short-vol edge is untestable without a crash in-sample, no matter how high the headline Sharpe, and this structural data wall is not fixable by parameter iteration.

Outcome Summary

It was abandoned at the pre-optimization backtest_review gate on iteration 1 as an unmeasurable short-vol sample on a structural data wall (the recurring weekly-Deribit-options family, L27): the Deribit ETH option catalog spans only ~12 months and the trend gate shrinks it to just 22 independent bets, so walk-forward and the 15-day holdout cannot be populated, the headline Sharpe is a flagged artifact, and the core thesis — that the trend gate removes the left tail — is untested because no crash occurred in-sample.

Outcome Summary

A defined-risk, low-frequency options-premium strategy on Deribit ETH weekly options that harvests persistent downside put-skew / VRP richness by selling the ~25-delta weekly ETH put and buying the ~10-delta wing (a bull-put credit spread), but opening a new spread only when ETH is in an established daily uptrend (close above its 50-day SMA) so the trend gate cuts the left-tail crash weeks that kill naked put sellers, held to expiry and rolled weekly.

Outcome Summary

The backtest produced a headline Sharpe of 5.40 but the report itself flags it as an artifact — the Sharpe CI is [-1.73, 26.6], straddling zero — over only 44 option trades / 22 weekly spreads with a total_return of 5.6%, win_rate 0.50, profit_factor 1.43, and a short-vol negative-skew distribution (skew -1.97, kurtosis 7.6, net_entry_delta 58.6, avg_trade_return_pct -8.3%). Critically the option legs only resolve from 2025-08 (data_days 22), so all 22 gated cycles sit in one benign ~12-month window with no crash in-sample.
Strategy report

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