← All setups
S024 · forward-collect · paper

Earnings short-premium — forward-paper tracking

earnings-straddle-naked-midcap-v1
6 completed 0 open (awaiting exit) liquidity-ok 33% forward paper · 2026-06-18 → 2026-06-30
Cumulative P&L over time — EV% of notional, equal-weight per trade; labels = cumulative since start (★ = best)
-14.3%+0.0%06-1806-2306-2406-30report date-4.7%-9.3%
S024 naked (lead) · -9.3%S015 fly · -4.7%
StructureEventsMean EV%Win%Worst
S024 · naked straddle6-1.55%33.3%-10.46%
S015 · iron fly6-0.79%16.7%-3.00%

Per-event paper positions — entry snapshot vs exit re-quote

ReportTickerImpl.Real.S024 naked EV%S015 fly EV%
2026-06-30NKE AMC9.49%3.02%+4.65%+2.14%
2026-06-24MU illiq12.79%0.36%+0.33%-0.50%
2026-06-23CCL 6.90%6.37%-0.98%-1.05%
2026-06-23FDX illiq7.68%0.08%-0.20%-0.28%
2026-06-18ACN illiq8.59%18.20%-10.46%-3.00%
2026-06-18KR illiq6.23%7.95%-2.61%-2.02%

EV% = per-event P/L as a percentage of strike notional, net of 0.75% friction (worse-than-mid). Both structures are scored on the same events for an honest side-by-side. Monitoring only — no gate is frozen yet; the binding forward Stage-1 gate (tail-first: worst single trade for S024) is written once enough events accumulate. Win-rate is never the headline for a short-premium tail.

Setup detail · S024

ID: S024 Slug: earnings-straddle-naked-midcap-v1 Type: OPT Skip stages: 1, 2 — no historical option chains; validated forward (Tastytrade), not on history Forward collect: earnings-premium Date added: 2026-06-13 Status: blocked (data) — forward-collect path shared with [[S015]] Wall: 1 — Too small to bother with (same hypothesised edge as S015)

Sibling of S015. Same trade, same universe, same entry/exit timing — the only difference is the structure: S024 sells the naked ATM straddle (undefined risk), where S015 buys protective wings (defined-risk iron fly). Run in parallel so the two can be compared on identical events and we can measure exactly what the wings cost in expected value versus save in the tail.

Blocked on: the same historical option-chain gap as S015. Tested via the same forward-collect archive — no separate data pipeline. The collector (src/lab/earnings_straddle.py) already snapshots the ATM straddle and the wings on every event, so both structures are reconstructable from one archive: S024 reads the straddle-only legs, S015 includes the wings. summarize_events() already scores both side by side.


One-line setup

We expect that a naked short ATM straddle, sold the afternoon before scheduled earnings on liquid mid-cap names and closed the morning after, predicts positive expected value, net of friction, in the same mid-cap universe as S015, because the implied-vs-realised earnings premium gap is a documented market-wide phenomenon — the same Claim 1 as S015. S024 collects more premium than the iron fly (no wing cost) at the price of an unbounded tail.

Rationale

Claim 1 (the implied-vs-realised premium gap exists) and Claim 2 (it is widest in mid-caps) are identical to [[S015]] — see that spec for the literature (Milian 2023; Barth et al.; ORATS season review) and the non-gating cross-cap treatment. Nothing about the edge differs; only the structure used to harvest it does.

Why a separate setup, not a parameter of S015. Defined-risk vs naked is a different risk object, not a tuning knob: different tail, different sizing, different failure mode. Per the lab's discipline (and S015's own note that a variant gets a new S-number rather than being bolted onto v1 mid-test), it is pre-registered separately, gated separately, and shown as its own row.

The comparison this setup exists to make: the naked straddle should show a higher mean EV (it keeps the wing premium) but a materially worse worst case. The whole question is whether the extra EV is worth the unbounded tail — answered empirically, on the same events, once the archive matures.

Structure & sizing (differs from S015)

  • Structure: naked short ATM straddle (sell ATM call + ATM put), no wings. Undefined risk on a gap beyond the credit collected.
  • Account base: $100,000 — same small account as [[S015]] so the two are directly comparable on identical events.
  • Method: empirical, tail-aware quarter-Kelly (0.25×) — half the iron fly's fraction, because the naked structure has no fixed max loss and a fat left tail, where half-Kelly can still ruin you on one gap. Critically, the Kelly base must be computed against an empirical / stress worst-case loss (e.g. the realised worst earnings gap, or an N-sigma move), NOT the mean edge — naive Kelly on the mean dramatically over-sizes an unbounded tail. The 0.25× fraction is frozen now; the base comes from the collected distribution at gate-freeze.
  • Hard liquidity cap (binding): identical to S015 — position ≤ [X]% of the contract's open interest / ADV; the smaller of quarter-Kelly and the cap wins. [X to freeze]
  • Sizing is the single most likely source of ruin for this setup and the reason the tail check is the primary gate (below).
  • Entry / exit / universe / dedupe / friction: identical to S015 (shared collector).

Because the naked straddle's Kelly base is smaller (bigger tail → bet less) and its fraction is lower (0.25× vs 0.50×), it will be sized materially smaller than the iron fly at the same edge. Comparing the two each at its own risk-appropriate size — not at equal contracts — is the honest version of the fly-vs-straddle question: does the naked structure's extra premium survive being sized down for its tail?

Quick-kill gate (Stage 1, forward-only) — suggested, to freeze

Same structure as S015's forward gate, but the tail check is the binding constraint here, not a backstop:

  • Mean per-trade EV ≥ +0.50% of notional [to freeze]
  • Welch p < 0.05 AND mean > 0 [to freeze]
  • Win rate ≥ 65% [to freeze]
  • Sample ≥ the forward-collected event count agreed at freeze [to freeze]
  • Effect present in both halves of the collection window [to freeze]
  • Worst single trade ≤ −5× mean win — PRIMARY gate for S024. A naked straddle's reason to fail is a single uncapped gap; if the tail check fails, S024 fails even if mean EV is strong. [to freeze]

Comparison reporting (non-gating): every result writeup reports S024 vs S015 mean EV, win rate, and worst trade on the shared event set, so the wing-cost-vs-tail-protection trade-off is always visible.

Notes

  • Shared forward-collect archive: earnings_premium_events (src/lab/earnings_straddle.py). No second collector; no extra API load.
  • Decay tripwire (mandatory at Stage 3+): inherited from S015. For a naked structure it is doubly important — freeze a rolling drawdown/decay criterion with the Stage 3 gate.
  • Disclosure: follows lab/DISCLOSURE_POLICY.md like S015 — method public, recipe (exact entry/exit windows, sizing %s, friction $) private.

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:09