SPY 0DTE · public scanner log · methodology

How every graded alert is scored

The Stats and Alert catalog pages apply one pre-declared, mechanical exit rule to every graded alert — winners and losers alike — and publish the result. This page documents exactly how, so the numbers can be checked and reproduced.

Methodology version generated Monday, November 9, 2026 at 11:31 AM ET

Hypothetical results. These results are hypothetical. They apply a fixed rule (+25% target, −25% stop, exit by 3:45 PM ET) to every graded alert, entering at the option mid when the alert posted, with 5% assumed slippage. No real trades were placed.

Hypothetical results have built-in limits. They are prepared with hindsight, ignore liquidity and fill risk, and do not reflect any subscriber's actual results. Many subscribers will do worse. Past alerts do not predict future results. 0DTE options can lose 100% of their value the same day.

1. Entry reference

  • Each alert is scored on the option contract the alert posted (strike and expiry as stamped on the alert; never a neighbouring contract).
  • The entry price is the option's mid at the alert timestamp when the alert carried a quote. Without one, the first trade printed at or after the alert timestamp is used; on 1-minute bar data the close of the alert minute is used.
  • Alerts published after a held 1-minute close use the publication timestamp as the entry time; nothing is back-dated.

2. Slippage assumption

  • A fixed 5% round-trip slippage haircut, expressed in points of the entry premium, is deducted from every alert's gross result (a +25% target therefore shows as +20%, a −25% stop as −30%).
  • The haircut is applied identically to winners, losers and time-outs. Win/loss classification uses the net figure.
  • Real fills can be worse than this assumption — spreads widen, size matters and 0DTE premiums move in seconds.

3. Exit rule

  • Target: the premium trades at or above +25% of the entry → exit at +25%.
  • Stop: the premium trades at or below −25% of the entry, or the underlying prints a 1-minute close through the posted invalidation level (the FVG exit when the alert carried one, otherwise the rail) — whichever comes first. A premium stop exits at −25%; an invalidation stop exits at the option mark on that close, which may be better or worse than −25%.
  • Time-out: neither happened → exit at the option mark at 3:45 PM ET, the force-flat time. Alerts posted after 3:45 PM ET exit on the first available mark.
  • Within one minute the order of events cannot be known, so the rule is evaluated stop-first (premium stop, then invalidation, then target). Minutes without a print are marked from the underlying's 1-minute bar (delta-adjusted last trade, floored at intrinsic value); prints always take precedence over marks.

4. How outcomes are classified

  • TARGET, STOP and TIME-OUT are the three possible outcomes of the rule above. There is no “peak” outcome and no minimum-peak floor anywhere in the classification.
  • A win is an alert whose net result (after slippage) is above 0%; a loss is below 0%. A time-out can be either.
  • Hypothetical win rate = wins ÷ alerts scored. Average win / average loss = mean net result of the winners / losers. Expectancy = mean net result over all scored alerts, in % of one alert's premium.
  • Max drawdown = the largest peak-to-trough fall of the cumulative net result when the alerts are taken in chronological order with equal premium on each, in % of one alert's premium.
  • Max favorable excursion (the former “peak %”) is the best option mark after the alert for the rest of the session. It is reported only as a secondary figure, labelled “not achievable”, and never enters the win rate or any other headline metric.

5. Data sources

  • Alerts: the scanner's own posted log (every A+ and B card published to Discord). Near-simultaneous double prints of the same thesis are collapsed so the catalog matches what was posted.
  • Option prices, in order of preference: complete same-session trade prints for the posted contract (Unusual Whales option trades); 1-minute contract bars (Unusual Whales); 1-minute option bars archived from Alpaca. The source used is stored with each alert.
  • Underlying prices: 1-minute bars of the alerted symbol, used for the invalidation check and to mark print-less minutes.
  • The scoring code is open in the repository (scripts/eod_replay_pnl.py, scripts/generate_stats_page.py, scripts/generate_trades_page.py) and the pages are rendered by it — no number on them is typed by hand.

6. Archived alerts scored before this rule existed

  • Older cards were archived with a 30-minute +25%/−25% bracket, the session's max favorable excursion and the drawdown before it, but not the full price path.
  • They are resolved from those fields only where the answer is certain: a bracket that hit +25% → TARGET; a bracket that hit −25% → STOP; a session excursion of at least +25% with less than 25% drawdown before it → TARGET.
  • Every other archived card is scored as a −25% stop — the worst case the rule allows — because the archive cannot establish the 3:45 PM ET mark. The pages state how many cards were scored this way.
  • Alerts the end-of-day job has not scored yet are shown as “not yet scored” and excluded from every metric.

7. Reproducibility and archived snapshots

  • After each session the end-of-day job writes a per-day JSON record (session counts plus every scored card with its entry, excursion, bracket and fixed-rule fields). Those records are retained and are the only input to the pages.
  • Every page build also writes a dated JSON snapshot of the alerts, their fixed-rule results and the metrics shown. Weekly snapshots are archived so any published figure can be regenerated and compared with what was shown at the time.
  • Changes to the rule, the slippage assumption or the data sources are made in code and dated; this page is regenerated from the same constants the metrics use.

8. Limitations

  • These are hypothetical results prepared with hindsight. No orders were placed and no money was at risk.
  • They ignore liquidity, partial fills, exchange fees, assignment and the possibility that an order could not be executed at the modelled price.
  • They are not the results of any subscriber. Many subscribers will do worse. Past alerts do not predict future results, and 0DTE options can lose 100% of their value the same day.

← Back to Stats · Alert catalog