Skip to content

Plan M Short — Forward Test

Strategy Plan M Short side
Test Start 2026-03-14
Status Live paper trading
Benchmark TBD (no short backtest)

Started: 2026-03-14 | Review dates: Mid-April (day 30), Mid-May (day 60)
Status: Live paper trading — 14 open, 4 closed, 11 near misses
Benchmark target: None yet — no short-specific backtest exists. The 56.9% WR / PF 1.85 numbers are from the Plan M long backtest and are not directly comparable.

This page tracks the real-world dress rehearsal for the Plan M short pipeline. It matters because a good backtest is not enough; the system still has to prove that the live screener, options lookup, sizing, and exits all behave as expected in paper trading.

If you are new to the shorthand:

  • WR means win rate.
  • PF means profit factor.
  • ATR measures normal price movement.
  • OB means order block, a prior support or resistance zone.

See the Glossary for the deeper definitions.

Why Forward Test?

The Plan M short screener is automated but the strategy has never been paper traded with the full pipeline: real OVTLYR signals → options chain lookup → sizing → entry → rolling → exit. This forward test validates the entire chain before committing real capital.

In plain English, this is the "does the machine work outside the lab?" phase.

Screener Pipeline

The daily short screener runs at 6:05 AM PT:

  1. OVTLYR bearish sectors → sell signals (watchlist)
  2. Price action filter — RSI > 33 (not oversold), not extended >15% in 20d, no earnings within 5 days
  3. Options chain — Tradier lookup, delta walk 80→55, 30-120 DTE monthlies first, ≤10% spread
  4. Final filters — spread%, OI (5x est_contracts), weekly RSI <71, monthly RSI <71, IV/HV ≥ 0.70, OB proximity >2%

Stocks that pass options but fail final filters become near misses — stored permanently for OB-break monitoring.

IV/HV compares implied volatility to historical volatility. The delta walk 80→55 means the screener starts with deeper-in-the-money puts and relaxes toward lower delta only if needed.

Paper Trade Model

Sizing

RISK_DOLLARS = $3,500 (5% of $70K)
contracts = max(1, floor(3500 / (2 * ATR * |delta| * 100)))

COT Yen overlay adjusts sizing:

  • Dealer positioning > 75th pct → 1.3x short contracts
  • Dealer positioning < 25th pct → 0.5x short contracts

Exit Signals (Priority Order)

  1. Gap & Crap — bar opens ≥5% above prior close (adverse gap up)
  2. 3 ATR emergency — bar high ≥ entry + 3×ATR → close immediately
  3. 2 ATR hard stop — bar high ≥ entry + 2×ATR
  4. OB target hit — bar low ≤ support OB target (profit target)
  5. EMA cross — EMA10 crosses above EMA20 (trend reversal)
  6. 120-day backstop — still open after 120 days → close

Rolling

Rolling means selling the current put and buying a new one after the stock moves in the trade's favor, usually to take some profit and keep exposure alive.

Milestone-based rolling (no position change in paper test):

  • Triggers at stock dropping 0.5, 1.5, 2.5, 3.5 ATR from entry
  • Each roll records old/new strike, old/new put mid, credit received
  • Credits accumulate: total_pnl = delta_pnl + cumulative_roll_credits

Delta Approximation

Roll strikes are approximate (delta-adjusted, not real chain lookup). For live trading, pick the nearest real listed strike with appropriate delta.

Signal Funnel

This funnel is a diagnostic tool. It shows where candidates are getting rejected, which tells you whether the bottleneck is market quality, options liquidity, or final risk filters.

The tracker logs the daily screening funnel:

raw signals → failed price action → failed options → near misses → entered

This shows conversion rate and where signals are dying. If too many die at options liquidity, the delta/DTE ranges may need widening.

OB Proximity Rule

The 2% rule is critical for shorts because being too close to support means the trade may be entering just as the stock is ready to bounce.

  • IDEAL (>5% from support OB): Full conviction entry
  • CAUTION (2-5% from support OB): Enter with awareness
  • ON_SUPPORT or OB_BROKEN: → near miss, do not enter

SJM (0.2% from OB) and SMCI (1.9% from OB) were retroactively removed for this reason.

Current Stats

Metric Value
Total picks 37
Open positions 13
Closed trades 6
Near misses 8
Win Rate 83% (5W / 1L)
Total P&L +$29,172
Avg Hold 1.8 days
Backtest target WR TBD (no short backtest yet)
Backtest target PF TBD (no short backtest yet)

Early Days

6 closed trades is not a meaningful sample. The forward test needs 30-60 days and 20+ closed trades before drawing conclusions. The 83% WR will almost certainly regress.

Trades

Click any summary row to expand the dashboard-style detail panel. Category headers collapse or reopen each bucket.

Live Tracker Snapshot

Plan M short forward-test trade ledger

This block is generated from short_tracker.json. Current tracker totals are 13 open, 6 closed, and +$38,492 combined P&L.

Click row: expand detail Click category: collapse group
Open positions
13
Unrealized +$9,320
Closed trades
6
Realized +$29,172
Closed win rate
83%
5 winners · 1 losers
Average closed hold
1.8d
Based on realized trades only

Open positions

Grouped the same way as the daily dashboard: strong, watching, working, then flat.

TickerEntryHeldStock MoveOptionP&LSector

Closed trades

Summary rows show the realized outcome. Expand a row for the trigger context, roll history, and exit narrative.

TickerEntryExitHeldStock MoveOptionP&LOutcome

Known Limitations

  1. 15 early picks have no entry_option_mid — these predate the options dict being returned. Entry capital = $0 for those.
  2. OB-break polling not yet builtob_watch_high stored on near misses but nothing polls it yet
  3. Long screener near misses — only short screener persists near misses. Long side doesn't yet.
  4. Backtest benchmark card — not yet on dashboard (forward WR/PF vs targets)

Next Steps

  • [ ] Build OB-break polling for near misses
  • [ ] Add benchmark card to daily dashboard (actual vs backtest WR/PF)
  • [ ] 30-day review (mid-April): first meaningful sample
  • [ ] 60-day review (mid-May): statistical confidence