Daily cash-secured put screen

After each close we scan the full option chain of several hundred liquid US stocks, pick the best-scoring cash-secured put for each name, and rank the whole pool. The score is a relative rank within today’s pool — not a return forecast and not a recommendation. It only answers “which setups are worth your research time today”.

All rules are public (see the bottom of the page); each day’s board is archived and never edited. Annualized yield is arithmetic on the premium; assignment probability is an IV-based model estimate, not a win rate.

Filters only pick from the pool; ranks stay pool-wide.

Loading…

Look up a ticker: why is it not on the board?

Enter a ticker to see where it ranked on this day; if it did not make the board, we say which gate stopped it.

How the boards did

Every contract that made a board is settled after expiry against the expiry-day close: above the strike the full premium is kept; below it you take the shares at the strike with the premium offsetting part of the drop. Results are posted here — ranks first, outcomes later.

Loading…

Return = per-share P&L ÷ (strike − premium): the per-trade return on net cash tied up, not annualized. The settle price is our own recorded close; early assignment, after-hours moves and commissions are not included. The “Result” column on past boards uses the same numbers.

How the score is built

One hard gate, then three factors multiplied: score = (stock ÷ 100) × contract fit × event gate. Multiplying rather than adding is deliberate — a good stock with a lopsided contract, or a pretty contract on a falling stock, gets pulled down by whichever layer is weak.

Eligibility gate (not scored — excluded)
  • OTM puts 15–50 DTE; spot ≥ $10; buffer ≥ 2%
  • Two-sided quote; open interest ≥ 200; premium ≥ $0.05; spread ≤ $0.15 or ≤ 40% of mid
  • Absolute delta between 0.08 and 0.40
  • Mid may not exceed twice the contract’s own IV-implied value (stale quotes)
Contract fit (0–100)

Geometric mean of annualized yield (full marks at 35%) and buffer (full at 12%) — zero on either side zeroes the term; then discounted for relative spread (up to −20%). Annualized = premium ÷ net cash tied up × 365 ÷ DTE, same as the income screener.

Stock score (0–100)

Two halves. Vol premium: near-term IV ÷ 30-day realized vol, 0 at 0.8× and 100 at 1.6×. Trend: spot vs the 20-day average, 0 at −8% and 100 at +8%, minus 15 for a fresh 10-day low. Price history is our own daily closes (since 2026-08-29); under 21 days the factor is set to neutral 50. There is no fundamental-quality term — the scan does not read filings, stated here plainly.

⚠️ Event gate (×0.6–1.0)

We have no earnings calendar. Near-term IV ÷ longer-dated (≥55 DTE) IV is the proxy: no discount at ≤1.15, down to ×0.6 at 1.6. The steeper the inversion, the more likely an event such as earnings falls before expiry — inferred from the term structure, not a date, and labelled “event risk” accordingly.

Only each name’s highest-scoring contract enters the board; ties break alphabetically, so the same inputs always give the same order. Every threshold is a constant in code — recalibration changes numbers, not logic. Data: CBOE delayed option chains, fetched after the close.