Skip to content

View original

BtcDeribitWeekendCalendarThetaHarvestStraddle

Hypotheses

Weekend Calendar-Time Theta Harvest on Deribit BTC Weeklies — Sell the Near-ATM Straddle at Friday's Daily Close, Buy It Back at Monday's Daily Close (Unhedged, Spot-Band Stop, 2-Parameter)

Hypotheses

A SHORT-VOLATILITY, MARKET-NEUTRAL-AT-ENTRY, calendar-seasonality strategy on DERIBIT BTC weekly options. Once per week, at the close of Friday's 1-DAY bar (00:00 UTC Saturday), sell ONE near-ATM straddle (short 1 call + short 1 put, same strike, same expiry) on the front weekly Friday expiry (~6 days to expiry at entry), then buy both legs back at the close of Monday's 1-DAY bar (00:00 UTC Tuesday). The position is NEVER held to expiry and is NEVER delta-hedged with a perp — it is opened and closed with two option legs only, so the implementation is 4 option transactions per week and no cross-venue hedging loop (the two options-venue timeouts in the failure log came from per-bar chain rescanning and multi-leg hedging code; this design needs neither). The claim is NOT 'implied vol is rich' (that unconditional VRP framing has already been tested and abandoned here). The claim is narrower and structural: options decay in CALENDAR time while BTC realized volatility is materially LOWER on Saturday/Sunday than on weekdays, because the dominant institutional flow is mechanically absent — CME BTC futures close Friday 21:00 UTC and do not reopen until Sunday 22:00 UTC, US spot-BTC-ETF creation/redemption and authorized-participant hedging halt entirely, and the US macro calendar (CPI/FOMC/NFP/PCE) never prints on a weekend. Three days of premium (Sat, Sun, Mon) decay off the option while only ~one day of full-intensity flow (Monday) actually occurs. The trade monetizes the mismatch between the pricing clock and the flow clock, not a view on the vol level. Implementation notes for the developer to keep it cheap and robust: (1) build the expiry->strike->instrument map ONCE in __init__ from the declared/extra instruments, never rescan a chain inside on_bar; (2) select the straddle strike as the strike NEAREST to the Friday close among strikes that have BOTH a call and a put with bar data, skipping the week if the nearest usable strike is further than max_strike_dist_pct from spot; (3) size so the underlying-equivalent notional of the straddle is notional_pct of equity (default ~25%, i.e. ~0.25 BTC-equivalent per $100k of equity at a $100k spot), which caps a 6% adverse weekend gap at roughly 1.5% of equity; (4) risk stop: if the underlying (BTCUSDT.BINANCE 1-DAY close, the spot reference leg) closes more than breach_band_pct away from the strike on Saturday or Sunday, close both legs on that bar instead of waiting for Monday. Data reality check (verified against the catalog before proposing): 380 BTC Deribit expiries from 2019 through 2026 carry at least one strike with BOTH a call and a put on 1-DAY bars, at a steady ~52 per year — i.e. ~350 investable weekends, which is a real sample and not a best-of-N artifact.

Hypotheses

Iteration 4 addresses the single reported failure: avg_trade_return_pct -4.440% per leg over 204 legs against the +0.15% floor. The book itself was net profitable (PF 1.93, 62% win rate, +$105 expectancy per leg, median leg +20.7%), so the deficit lives entirely in the left tail of percent-of-premium returns. The only tail defence in iterations 1-3 was a spot-vs-strike band measured on the underlying's daily close - an indirect proxy that does not see a vol expansion which reprices the straddle without moving spot past the band. This iteration adds the direct control: a premium-multiple stop on the structure's own combined mark (read O(1) from the tail of each leg's bar buffer, no history scan), capping the per-structure loss at about (stop_premium_mult - 1) x 100% of premium instead of leaving it open-ended. That is precisely the quantity the failed gate measures. Nothing else changed: the pre-registered Friday-close -> Monday-close window (_hold_days 3), the entry stamp, sizing, the band, the chain map and every path that verified green in Layers 1-3 are untouched - in particular iteration 2's data-selected shorter hold is NOT re-attempted. My honest read, stated in rationale as asked: the implementation is correct and the mechanism has now been measured three times with a mean per-premium return that is negative and statistically indistinguishable from zero at 204 legs; since the average losing leg is around -60% of premium it already sits inside a 2x stop, so this change trims only the worst weeks and is unlikely to lift the mean above +0.15%. Hence recommendation=abandon while still shipping the improvement for the reviewer to run if they disagree.

Hypotheses

no_change: iteration 4 reproduced iteration 3 exactly (204 trades, Sharpe 4.507202383895712) — the code change did not alter trading; nothing left for the analyst to judge

Implementation

Weekend calendar-time theta harvest on Deribit BTC weeklies. Once a week, at the close of Friday's 1-DAY bar (00:00 UTC Saturday), sell ONE near-ATM straddle (short call + short put, same strike, front weekly Friday expiry ~6 DTE) and buy both legs back at the close of Monday's 1-DAY bar. Unhedged, never held to expiry, four option transactions per week. Three risk controls: per-leg size = equity * notional_pct / spot (underlying-equivalent notional ~25% of equity), a spot-vs-strike band stop, and NEW in this iteration a premium-multiple stop that buys the structure back once its combined mark exceeds stop_premium_mult x the premium collected at entry.

Verification Results

DERIBIT venue fee basis understates real options cost by ~20-30x (premium notional vs underlying).

Verification Results

Both tail stops resolve only on 1-DAY closes; leg marks can be one bar stale (backward-stale only, no look-ahead).

Verification Results

entry_premium is taken from leg bar closes, not fills; a zero-mark leg understates the premium-stop base.

Verification Results

Three things the analyst should weigh at the real backtest, none of which are code defects. (1) The failing gate number is structurally unreachable for this construct: avg_trade_return_pct is built from NT's positions-report realized_return, i.e. PnL / (entry premium x qty) for an option leg. A SHORT option's percent-of-premium return is capped at +100% on the right and unbounded on the left, so a book that is dollar-profitable (PF 1.93, 62% win rate, +$105/leg expectancy, +10.7% over 729 days, max DD 0.47%) can and does show a negative mean percent (-4.44% over 204 legs). Re-running or re-parameterising will not move that sign reliably — the premium-multiple stop only trims the worst weeks, and the developer's own note (avg losing leg ≈ -60% of premium) says the 2.0x stop binds rarely. If the analyst intends to judge this mechanism on economics, the honest denominator is premium collected or underlying-equivalent notional, not the metric the gate reads. (2) Fees are materially under-modelled: the engine applies DERIBIT 0.03% to the PREMIUM notional, while Deribit charges 0.0003 BTC per contract (0.03% of the UNDERLYING, capped at 12.5% of premium). total_commission is $0.0008 across 408 legs — effectively zero; realistic cost is ~$30/cycle, ~10-15% of gross expectancy. (3) The developer recommends abandon after three measurements; the flat regime table is consistent with generic short-vol carry rather than the specific weekend clock-mismatch claim. Cheap discriminator: compare the same 3-day short straddle entered on a Tuesday close vs the Friday close.

Analysis

Per-trade edge below costs: avg_trade_return_pct -4.440% vs the 0.15% fee floor over 204 trades. Optimization cannot fix this; change the mechanism, holding period or timeframe so the per-trade return clears the floor, or recommend abandoning.

Outcome Summary

BtcDeribitWeekendCalendarThetaHarves-3258aa5164

Outcome Summary

The strategy sold near-ATM Deribit BTC weekly straddles from Friday's close to Monday's close, betting that premium decays in calendar time while BTC's realized volatility is suppressed over a weekend with no CME session, no ETF hedging and no US macro prints. Across 204 short legs the book looked healthy on aggregate statistics — total return 10.71, Sharpe 4.51, profit factor 1.93, 62.3% win rate, $105 expectancy per leg — but average per-trade return was -4.44% of notional against a +0.15% floor, the left tail of percent-of-premium losses that iteration 3 had already been rejected on. Iteration 4 added a premium-multiple stop intended to cap that tail, yet it reproduced iteration 3's results exactly (identical trade count and Sharpe), so the pipeline abandoned the run for no change rather than sending it to the analyst. Optimization, analyst and risk review were never reached.

Outcome Summary

A risk control only counts as a new iteration if it actually binds on the historical sample — a stop set wide enough that no trade ever triggers it reproduces the prior backtest byte-for-byte and burns an iteration without addressing the failing per-trade-return gate.

Outcome Summary

The run was abandoned at iteration 4 with reason "no_change": iteration 4 reproduced iteration 3 exactly (204 trades, Sharpe 4.507202383895712), so the newly added premium-multiple stop did not alter trading and there was nothing left for the analyst to judge. No backtest-review, analyst or risk-officer verdicts were recorded for this iteration.

Outcome Summary

Sell one near-ATM BTC weekly straddle on Deribit at Friday's daily close and buy it back at Monday's daily close, harvesting calendar-time decay over a weekend in which institutional flow (CME futures, spot-ETF hedging, US macro prints) is mechanically absent.

Outcome Summary

The backtest produced 204 short option trades (408 legs) with a reported total return of 10.71, Sharpe 4.51, profit factor 1.93, win rate 62.3%, expectancy of $105 per leg and max drawdown 47.5%. The decisive number was avg_trade_return_pct of -4.44% of notional, far below the +0.15% per-trade floor, and no optimization report was produced.
Strategy report

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