Skip to content

View translation

ThursdayPreExpiryDriftShortBtc

Hypotheses

Thursday Pre-Expiry Drift Short

Hypotheses

Calendar seasonality strategy exploiting the tendency for crypto to sell off on Thursdays, refined with a structural explanation: Deribit weekly options expire Friday 08:00 UTC, and market makers delta-hedge by selling underlying ahead of expiry. This creates recurring selling pressure Thursday into early Friday. The strategy opens a short position on Thursday open (00:00 UTC) on BTC futures, but ONLY when conditions favor downside: (1) funding rate is positive (longs are crowded/paying shorts), indicating overleveraged long positioning that amplifies any sell pressure, and (2) price is below the 20-period 4H moving average (bearish context filter to avoid shorting into strong uptrends). Exits Friday 08:00 UTC (expiry) or on a 1.5% stop-loss. This combines the user's Thursday seasonality observation with options market structure mechanics and a leverage filter to create a repeatable, fee-viable edge. Holding ~24-32 hours means fee drag is minimal relative to expected move size of 0.5-2%.

Hypotheses

Iteration 2 fix for the Layer 2 failure: the synthetic proxy invoked `_bar_ts` with `self` bound, so the `@staticmethod def _bar_ts(bar)` received 2 positional args and raised a TypeError on every scenario. Converted it to a normal instance method `def _bar_ts(self, bar)` so `self._bar_ts(bar)` matches its signature. All call sites already used `self._bar_ts(...)`, so no other changes were needed; the passing signal/entry/exit/sizing logic is untouched.

Hypotheses

Day-of-week calendar-seasonality short with a post-hoc Deribit-expiry rationale; abandoned because the BASE config (the only non-degenerate evidence) is not statistically significant and has decayed forward, and the optimization is mechanically degenerate. (1) Base significance fails on its own: probabilistic_sharpe 0.8984 (<0.95) and sharpe_ci_low -1.21 — the single-config Sharpe CI straddles zero before any multiple-testing, so a 225-trial deflated-Sharpe gate would crush it. (2) Regime decay: annual returns turn NEGATIVE in the recent windows (2024 -14.2%, 2025 -4.2%) with rolling Sharpe -3 to -4.4 through 2024-2025 — the forward-failure signature. (3) Data-mined fragility: sensitivity flags entry_weekday and exit_weekday as CLIFFS — a one-day shift in the entry or exit anchor flips Sharpe from +1.18 to negative (Wed -1.36, Fri -0.81), which a genuine MM-delta-hedging structural edge would not do; the 'Thursday effect' is curve-fit seasonality, not a mechanism. (4) Outlier-carried: 2020's +35% is dominated by the single 2020-03-13 COVID-crash day (+28.97%), skew 4.5, kurtosis 38.9. (5) The optimization additionally degenerated — the optimizer selected entry_hour=2, which is impossible on 4H bars anchored at 0/4/8/... UTC, so entry_signaled=0 and ALL 225 walk-forward trials, IS/OOS, and the holdout are 0.0 (is_overfitted=TRUE, sensitivity FAILED, holdout FAILED). Not iterate (attempt 1 of 2): locking the calendar anchors and re-optimizing only the genuine params (sma_period/stop/funding_thresh) cannot rescue a base edge that is sub-significant (CI through 0), decaying to negative in 2024-2025, and one-day-fragile — a clean re-optimization would re-confirm the same weakness at the cost of a second cycle. Not revise_hypothesis: day-of-week seasonality has no proven sibling stranded on a dead target; the mechanism itself is the flaw. FAILURE PATTERN: crypto day-of-week ('sell Thursdays') calendar seasonality dressed in an options-expiry structural story produces a flattering full-period Sharpe (1.18) that is (a) not significant even as a single config (PSR 0.90, CI through 0), (b) carried by one 2020 crash day, and (c) decayed to negative in 2024-2025 — and the day-shift sensitivity cliffs are the tell that the 'effect' is data-mined, not structural.

Implementation

Shorts BTC USD-M futures at the Thursday 00:00 UTC 4H bar when funding is positive (crowded longs) and price is below its 20-period SMA, exiting at the Friday 08:00 UTC Deribit weekly expiry, on a 1.5% stop, or a max-hold safety.

Verification Results

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['exit_hour', 'entry_hour', 'sma_period', 'exit_weekday', 'min_notional', 'entry_weekday', 'max_hold_bars', 'position_frac', 'stop_loss_pct', 'funding_thresh'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: TypeError: ThursdayPreExpiryDriftShortBtc._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690860000) - steady_downtrend: TypeError: ThursdayPreExpiryDriftShortBtc._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690860000) - flat_ranging: TypeError: ThursdayPreExpiryDriftShortBtc._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690860000) - volatility_spike: TypeError: ThursdayPreExpiryDriftShortBtc._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690860000) - zero_volume: TypeError: ThursdayPreExpiryDriftShortBtc._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690860000) - price_gap: TypeError: ThursdayPreExpiryDriftShortBtc._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690860000)

Backtest Review

Trades match the hypothesis exactly: 124 short-only entries (0 longs), ~25h average hold (Thu 00:00 -> Fri 08:00), funding>0 and below-MA gates both active and discriminating

Backtest Review

Adequate sample (124 gated entries over ~6 years, ~40% of Thursdays) — not sparse, supports meaningful parameter sensitivity

Backtest Review

Plausible, non-artifact headline: Sharpe 1.18, profit factor 1.29, Sortino 3.12, +51% total return, max DD 22%, with a real structural premise (Deribit weekly expiry MM delta-hedging)

Backtest Review

Low exposure (5.71%) is appropriate for a conditional weekly seasonal trade; capacity ~$10M is deployable

Backtest Review

Edge appears to be decaying: annual returns turn negative in 2024 (-14.2%) and 2025 (-4.2%) after strong 2020-2023 — the holdout must confirm the seasonality still works recently

Backtest Review

Outlier dependence: the 2020-03-13 COVID-crash Thursday (+28.97% single day) inflates 2020 and the tails (skew 4.5, kurtosis 38.9)

Backtest Review

Wide Sharpe CI (-1.21 to 2.75) straddles 0 — deflated Sharpe must confirm significance after the optimizer's trial count

Analysis

Base backtest is a plausible, non-artifact result (Sharpe 1.18, 124 trades over 6.5 years, profit_factor 1.29, sortino 3.12) — not an overfit single-config artifact

Analysis

Low time-in-market (exposure 5.71%) and capacity ~$10.2M leave room to scale if the edge were real

Analysis

Fee/impact drag is not the killer (commission_pct_of_gross 7.24%, impact_cost_pct 9.9%) — profit_factor 1.29 clears costs

Analysis

Base config NOT statistically significant: probabilistic_sharpe 0.8984 (<0.95) and sharpe_ci_low -1.21 — the single-config Sharpe CI straddles zero before any multiple-testing penalty

Analysis

Edge has DECAYED in the recent regime: annual returns 2024 -14.2%, 2025 -4.2%; rolling Sharpe -3 to -4.4 through 2024-2025 (forward-failure signature)

Analysis

Data-mined day-of-week fragility: entry_weekday and exit_weekday are sensitivity CLIFFS — a one-day shift flips Sharpe from +1.18 to negative (Wed -1.36, Fri -0.81), inconsistent with a robust structural edge

Analysis

Headline carried by an outlier: 2020 (+35%) dominated by the single 2020-03-13 COVID-crash day (+28.97%), return_skew 4.5, kurtosis 38.9

Analysis

Optimization fully degenerate: optimizer selected entry_hour=2, impossible on 4H bars anchored at 0/4/8/... → entry_signaled 0, zero trades, all 225 WF trials and holdout = 0.0 (is_overfitted=TRUE, sensitivity FAILED with 2 cliffs, holdout FAILED)

Outcome Summary

ThursdayPreExpiryDriftShortBtc shorted BTC futures into the weekly Deribit options expiry, gated by positive funding and a below-SMA bearish filter, on a market-maker delta-hedging premise. Its base backtest looked plausible — Sharpe 1.18, +51% return, profit factor 1.29 over 124 trades — and the pre-optimization review passed it through to optimize, but the headline was carried by the 2020-03-13 COVID crash day, decayed to negative returns in 2024-2025, and was not statistically significant (PSR 0.90, Sharpe CI low -1.21). The optimization then degenerated entirely: the optimizer selected an entry hour impossible on 4H bars, producing zero trades and zero Sharpe across all walk-forward windows and the holdout. The analyst abandoned the strategy on its second iteration, concluding that locking the calendar anchors and re-optimizing could not rescue an edge that was sub-significant, decaying, one-day-fragile, and rooted in data-mined seasonality rather than a real structural mechanism.

Outcome Summary

A flattering full-period Sharpe on a day-of-week calendar seasonality dressed in a structural story is a red flag — sensitivity cliffs on the calendar anchors, regime decay to negative returns, an outlier-dependent headline, and a sub-significant Sharpe CI through zero reveal data-mining rather than a genuine mechanism.

Outcome Summary

The analyst abandoned it at the post-optimization ANALYZING stage (iteration 2 of 2): the only non-degenerate evidence (the base config) was not statistically significant, had decayed to negative annual returns in 2024 (-14.2%) and 2025 (-4.2%), showed day-of-week sensitivity cliffs (a one-day shift in entry/exit flips Sharpe from +1.18 to negative), and was carried by the single 2020-03-13 COVID-crash day, while the optimization itself collapsed to zero trades.

Outcome Summary

Short BTC USD-M futures from Thursday 00:00 UTC into the Friday 08:00 UTC Deribit weekly options expiry, gated on positive funding (crowded longs) and price below the 20-period 4H SMA, on the thesis that market-maker delta-hedging creates recurring pre-expiry selling pressure.

Outcome Summary

The base backtest over ~6.5 years (2019-12-31 to 2026-06-25) produced Sharpe 1.18, +51.1% total return, profit factor 1.29, Sortino 3.12, and 22.4% max drawdown across 124 short-only trades (win rate ~42.7%), but the Sharpe CI straddled zero (low -1.21) and probabilistic Sharpe was only 0.8984. The 3-phase optimization was degenerate — the optimizer picked entry_hour=2 (impossible on 4H bars anchored at 0/4/8 UTC), so it generated zero trades and all 225 walk-forward trials, IS/OOS, and the holdout returned 0.0 (is_overfitted=TRUE, sensitivity FAILED with 2 cliffs, holdout FAILED).
Strategy report

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