← Lab
S009

Put credit spread on capitulation in an uptrend

put-credit-spread-capitulation-uptrend-v1
failed Stage 1 (Quick-screen) 2026-05-31
Share: Twitter / X LinkedIn
-116.0%-72.4%-28.8%+14.7%+58.3% 5,2930 Per-trade EV (% of max loss) — Variant B (defined-risk spread) EV per trade (% of max loss)
Gate +1.0% Observed mean -0.50%
Per-trade EV (% of max loss) — Variant B (defined-risk spread) · n=23,915

ID: S009 Slug: put-credit-spread-capitulation-uptrend-v1 Failed at: Stage 1 (Quick-screen) Fail reason: magnitude Date: 2026-05-31 Lineage: Follow-up to S008. The naked-put version (S008 Variant B) had a robustly positive per-trade edge but lost $1.3M of simulated capital because 2022 alone wiped out 11 years of premium. S009 tests whether capping the tail with a defined-risk spread preserves enough of the edge to clear the year-concentration gate.

What we tested

Exactly the same signal as S008 Variant B (multi-day capitulation in an uptrend, 8-15% decline over 15 days with the rate slowing in the last 3 days, on stocks above their 200-day moving average with realized vol in the upper 70% of their own year). Same 23,915 signal events across the same universe and time window.

What changed: the trade structure. Instead of selling a naked put at the 93% strike (which has unbounded downside on a sharp gap), we sold the 93% put and simultaneously bought the 85% put. The long-leg purchase reduces the net credit collected by roughly a third, but it caps the maximum loss at 8% of the strike (~$725 per contract on a $100 stock) regardless of how far the underlying falls. If S008's problem was tail risk, this should fix it.

The pre-set criteria — frozen before the run — required positive per-trade expected value (now measured as % of max loss, since the denominator differs from S008), a 75% win rate (slightly lower than S008's 82% because the spread's narrower premium-to-loss ratio means borderline trades become small losses instead of small wins), statistical significance, both sample halves positive, and the year-concentration check that ≤ 30% of total profit comes from any single year.

What we found

Strategy cut on 4 of 7 gates.

Criterion We needed We got
Mean per-trade EV (% of max loss) ≥ +1.0% −0.50%
Win rate ≥ 75% 79.8%
Welch p<0.05 AND mean>0 yes p=0.059, mean negative
Sample size ≥ 400 23,915
Effect in both sample halves both > 0 h1 +0.12%, h2 −1.12%
Year concentration ≤ 30% 102.8% (2022)
Ticker concentration ≤ 5% 0.4% (VXX)

Year-by-year dollar P/L tells the comparative story:

Year S008 (naked) S009 (spread)
2016 +$45,600 +$15,209
2017 +$120,586 +$53,361
2018 +$141,248 +$4,044
2019 +$74,194 +$17,719
2020 +$40,453 +$35,756
2021 +$185,588 −$64,976
2022 −$2,837,344 −$3,025,069
2023 +$153,621 +$3,563
2024 +$421,052 +$53,420
2025 +$119,463 −$65,361
2026 (YTD) +$186,009 +$30,935
Total −$1,349,530 −$2,941,400

The spread version is strictly worse than the naked version in realized dollar P/L, on every comparable year except 2020.

Why this matters / what surprised us

The defined-risk structure didn't reduce risk; it reduced edge faster than risk. The naive expectation going in was that bounding the downside would preserve most of the win-rate while preventing catastrophic years. What actually happened:

  1. The winners shrink dramatically. A naked S008 winner collected ~$80-100 net per contract; a spread winner collects ~$40-60. The long-leg purchase eats roughly half the premium income.
  2. Borderline trades flip from small wins to small losses. In S008's universe, an underlying that drifts down 2-3% after entry often still finished above the short strike (small win on naked). The spread version has the same trade but the smaller net credit means the breakeven point is closer to the strike — those same trades now finish slightly above strike but at a price where the spread MTM exceeds the small remaining credit (small loss). Win rate drops from 87% to 80%; per-loss size on those new losers is small but additive.
  3. 2022 still loses ~$3M. The tail-cap helps on individual catastrophic gaps, but 2022 wasn't one big gap — it was thousands of trades on bonds/cyclicals slowly bleeding into the strikes throughout the year as rates kept rising. Capped per-trade loss times ~2,000 losing trades in 2022 still produces millions in damage. The spread structure caps individual tail risk but doesn't address cohort tail risk (when capitulation signals themselves cluster in a bad regime).
  4. Half-2 is significantly negative (−1.12%). Not consistent across the sample; the spread structure's small edge in the early years gives way to clear losses in the later half. Even the statistical Welch test cannot rescue this — p=0.059 with mean in the wrong direction.

The IV-skew simplification flatters this result. The spec noted that pricing both legs at the same IV under-prices the long leg vs real markets (where OTM-skew puts at lower strikes trade at higher IVs). With realistic skew pricing, the long-leg purchase would cost more than our model assumed, the net credit would be smaller, and the per-trade EV would be worse than the −0.50% we measured. The cut is robust to the simplification — making the pricing more realistic only makes the picture worse.

What this doesn't tell us yet

  1. Different spread widths weren't tested. A wider spread (e.g., sell 93%, buy 80% — 13% wide) would collect a larger credit per contract but expose more capital per trade. A narrower spread (sell 93%, buy 90% — 3% wide) would collect tiny credits with tightly bounded losses. Neither was pre-registered.
  2. A different signal (Variant A or a new variant) wasn't tested. S009 tested only Variant B from S008. Variant A had a sign-flipping structural problem; combining it with a spread doesn't fix that.
  3. Different exit rules weren't tested. The 25%/50% take-profit thresholds were inherited from S008. A different threshold (say, close at 30% any day, force-close at day 14 instead of 21) might change the win/loss profile materially.

What happens next

S009 is closed. The defined-risk-spread approach to rescuing the S008 signal failed.

Two of the three S008 follow-ups are still on the list:

Both are pre-registered separately and run independently of this result.

For the specialist — methodology details (click to expand)

Signal (verbatim, identical to S008 Variant B)

Multi-day capitulation: cumulative_return[t-15:t] ∈ [−0.15, −0.08] AND mean(|return| last 3 days) < mean(|return| days 4-10) (decelerating) AND NOT also Variant A. Common conditions: close > sma_200 AND rv_rank_252 ≥ 0.30 AND ticker history ≥ 90 days. PIT-eligibility filter applied.

Trade structure

  • Sell put: strike = entry_price × 0.93, 45 DTE entry
  • Buy put: strike = entry_price × 0.85, 45 DTE (same expiry)
  • Both priced via BS with IV = RV-30 × 1.15. Same IV across both legs is a simplification (real OTM skew steepens with strike distance, under-pricing the long leg in our model; the cut is robust to this).
  • Max loss per contract = (0.08 × strike × 100) − net_credit × 100
  • Exit rules priority (same as S008): quick-take 25% by day 7 → profit-take 50% any day → force-close at day 21 (DTE = 24)
  • Friction: 2 × $1.30 commission + 5% slippage on spread MTM at close

Pre-registered gate (FROZEN 2026-05-31)

mean_ev_pct_max_loss   ≥ +1.0%
win_rate               ≥ 75%
welch_p<0.05 AND mean>0 (direction-aware, on per-trade EV % max loss)
n_signals              ≥ 400
half1_mean > 0 AND half2_mean > 0
max_year_share         ≤ 30%
max_ticker_share       ≤ 5%

Detailed numbers

  • Trades simulated: 23,915
  • Mean EV (% max loss): −0.502%
  • Mean EV (% notional, for S008 comparison): −0.0312%
  • Win rate (positive net P/L): 79.8%
  • Welch 1-sample p (EV % max loss vs 0): 0.0593, mean negative
  • Half-1 (2015-mid-2020): mean EV +0.120% of max loss
  • Half-2 (mid-2020-2026): mean EV −1.123% of max loss
  • 2022 dollar loss: −$3,025,069 (102.8% of |net total|)
  • Net total realized dollar P/L over 11 years: −$2,941,400
  • Top ticker share: VXX at 0.4% of signal-event count
  • Cross-check at RV-rank ≥ 0.50: n=18,727, mean +0.030% of max loss, win 79.8% — marginally positive but well below gate

Look-ahead-bias audit

Identical to S008 (same signal, same data pipeline). Additional spread-specific check: - Both legs priced with the same IV at the same timestamp; no ability to look ahead at later IV - Spread MTM uses trailing-30d RV ending day t-1 (same as S008's naked-put MTM) - Max-loss cap applied at force-close uses contemporaneous strike + spot data; no future information leak

Artifacts

  • Trades: lab/postmortem/put-credit-spread-capitulation-uptrend-v1/trades_variant_b.parquet
  • Summary JSON: stage1_summary.json in same directory
  • Histogram bins: chart_data.json in same directory
  • Driver script: lab/quickkill/put-credit-spread-capitulation-uptrend-v1/run.py
  • Spread simulator: src/lab/options_sim.py:simulate_short_put_spread
  • Pre-registered gates: lab/setups/gates.md §put-credit-spread-capitulation-uptrend-v1
  • Setup spec: lab/setups/put-credit-spread-capitulation-uptrend-v1.md

Stage 1 ran 2026-05-31. Pre-registered gates frozen earlier the same day before the test executed. No gates were adjusted post-hoc.

← Olderput-credit-spread-capitulation-uptrend-v1 Newer →put-selling-capitulation-volregime-filter-v1

Mechaniq provides information, not investment advice. We do not execute trades. Past results are no guarantee for future performance. You are solely responsible for your trading decisions.

Lab · Methodology · Greeks Lab · About · FAQ · Glossary · Privacy · Terms · mechaniq.trade © 2026

07 Jul 2026, 07:06