ID: S016
Slug: opex-pinning-single-name-v1
Type: OPT
Date added: 2026-06-08
Dropped: 2026-06-13 — low conviction: the single-name mid-cap pinning effect is expected to be too noisy to extract net of friction. Dropped at the idea stage by judgment, before any test; no gate was run. Kept on the public record rather than deleted.
Status: dropped (2026-06-13) — was: blocked (data); promoted from lab/candidates/opex-pinning-single-name-v1.md
Wall: 1 — Too small to bother with
Blocked on: historical open interest by strike. Live OI is available via Tastytrade; reconstructing historical OI-by-strike to backtest is genuinely hard and likely unavailable cheaply. This may validate forward-only in paper trade (8-12 weeks of live OI snapshots → live fills), which changes how the Stage 1 gate is written — see Notes.
One-line setup
We expect that short-dated iron flies centred on the most-concentrated nearby strike, sold in the back half of monthly expiration week on single-name mid-caps where open interest is heavily concentrated at one strike predict positive expected value as the stock pins through Friday's close in the liquid US mid-cap universe over a multi-year backtest, because dealer gamma-hedging mechanically damps single-name stocks toward heavy-OI strikes in mid-caps where the position size needed is too small for funds to compete it away.
Rationale (the "because", expanded)
When dealers are long gamma around a heavily-traded strike, their hedging forces them to buy weakness and sell strength — which dampens the stock and tends to park it near that strike into Friday's close. In index options this is studied to death by big desks. In individual mid-caps it's far less arbitraged because the position you'd need is tiny and not worth a fund's attention.
A mechanical, microstructure cousin to the premium-selling book — same "collect from overpriced optionality" theme, completely different trigger. The trade is selling a defined-risk structure centred on the magnet strike, betting the stock stays pinned through Friday.
Data required
- Historical option chains with open interest by strike — vendor required (see Status note)
- Live OI snapshots via Tastytrade — sufficient for forward-only paper validation
- Daily OHLCV for mid-cap universe — Tiingo EOD
- Dealer-gamma sign indicator (long vs short gamma at the strike) — derived from chain structure, no extra data
Quick-kill gate (Stage 1)
Will be considered to have passed Stage 1 if:
- Mean per-trade EV ≥ +0.30% of notional [suggested, to freeze]
- Welch p<0.05 AND mean>0 [suggested, to freeze]
- Win rate ≥ 70% (pinning is high-frequency / small-magnitude; high win rate is what makes the math work) [suggested, to freeze]
- Sample size ≥ 400 opex weeks across the universe [suggested, to freeze]
- Effect present in both sample halves [suggested, to freeze]
- Sign-conditional check: edge must reverse or vanish when dealers are short-gamma at the strike (sanity that the mechanism is what we think it is) [suggested, to freeze]
What I expect to find
Pinning effect probably present in single-name mid-caps but smaller than the index analogue, because earnings/news shocks override gamma-hedging more often than for indices. Probability of clearing the gate is moderate (~50%) — the mechanism is real, but the noise floor in single names is high. Most likely failure mode is the sign-conditional check: if the dealer-gamma classifier is wrong (or the data is too coarse to estimate it), the headline gate could pass while the mechanism check exposes a spurious result.
Notes
- Forward-only fallback: if no historical OI vendor lands, run the Stage 1 gate as 8-12 weeks of live paper-trade evidence with the same metrics applied to live fills. The sample size drops to ~30-50 events but the look-ahead trap is automatically eliminated.
- A real piece of news overpowers the magnet entirely — pinning only holds in quiet conditions. Consider a vol-regime gate (similar to S012's mechanism) as a pre-filter.
- Misreading the dealer-gamma sign is fatal: long gamma damps, short gamma amplifies. The sign-conditional check exists to catch this.
Disclosure boundary
This setup file is internal. Downstream result.md / kill.md
writeups must follow lab/DISCLOSURE_POLICY.md §2. Pre-publish:
python -m pytest tests/test_disclosure.py.