Famous strategy

Covered call

Own the stock on a dip and sell a call against it to collect premium. Run it below, free, no signup.

Our engine’s read

SHADOW

Our engine's read: promising, not proven. Worth watching on paper before you trust it with anything.

The engine’s own wordsinsufficient real fills (n=77 < 80) — go shadow to gather live data

  1. Kept per trade+0.9%After paying the real spread going in and coming out, the average trade kept +0.9%.
  2. On unseen data+0.4%On the stretch of history the rules never saw it made +0.4%, down from +1.4% on the tuned stretch. That drop is the part most backtests quietly hide.
  3. Trades graded7777 trades fired — enough to see a shape, not enough to trust. Sample size alone keeps this out of LIVE.

That is our engine’s read of one stretch of history — our opinion, not a verdict on you and not advice. Run it yourself below and check every number.

The benchNo signup · a few seconds

Own the stock on a dip and sell a call against it to collect premium.

The rule we’ll testBuy the dip in shares, sell a 5%-out call against them. Hold 10 days.

Simulation for learning. Paper money, real data, not investment advice.

What the engine tests

The rule, condition by condition, exactly as the engine reads it. Both have to be true on the same day for a trade to fire.

  • Fell 10% or more over the last 3 days
  • Price is above its 200-day average (a healthy trend)
  • Buy the shares.
  • Sell a call 5% out of the money, about 35 days to expiry.
  • Hold 10 trading days, then close.

The exact list of stocks

NVDA · AMD · AVGO · TSM · MU · MSFT · GOOGL · AMZN · META · AAPL · ORCL · CRWD · NOW · PLTR · NFLX · TSLA

16 liquid US names, every one with real option chains, over 2024-02-12 to 2026-05-20 on 1 day bars. That window is where real option fills exist — outside it there is nothing honest to grade, so we do not pretend there is.

How it is graded

  • It never sees tomorrow. A signal on any day reads only that day and the days before it, and the trade is entered at the NEXT day’s open.
  • It buys the ask and sells the bid. Never the midpoint — nobody fills you there. Contracts too thin to trade are skipped, not imagined into the results.
  • Half the history is held back. The rules are graded on the stretch they were not tuned on, and you see both numbers side by side.
  • Take-profit is left out of the score. A profit target flatters a curve without earning it, so our grade leaves it out. You can still trade one.

The receipt

Where those numbers came from. Anything we did not measure is simply not listed — a blank is not a zero.

  • Graded window2024-02-21 → 2026-04-14
  • Stocks graded16
  • Trades graded77
  • Best stop (take-profit excluded)SL30
  • Signals we could fill honestly81.1%
  • Average spread paid0.34%
  • Round-trip cost drag0.20%
  • Data planerig
  • Engine version54e646123378
  • Graded on2026-07-30

The engine’s own notes

  • A–H realized-exit metrics (ev_pct/net_ev_pct, win_rate, avg_win/loss, payoff, worst, std, variance_pct2, longest_losing_streak, max_drawdown, gave_it_back, gross/cost_drag) are ALL pinned to the single walk-forward bracket 'SL30' (best non-TP bracket on the IS half). net_ev_pct == ev_pct by construction; gross is read on this SAME bracket so cost_drag_pct ≥ 0. This is the metrics' own full-sample basis; walk_forward.wf_ev (OOS-slice verdict number) is a separate labeled field and is NOT overwritten.
  • variance_pct2 is std_pct**2 → unit is PERCENT-SQUARED (not a decimal variance). risk_adjusted_ev (ev_pct/std_pct) is unit-consistent.
  • equity_points is the cumulative return-points series on the SAME date-ordered wf-bracket net vector that produces max_drawdown — the chart's underwater band-bottom EQUALS max_drawdown by construction (one basis, not the scorecard's full-sample equity_curve).
  • exit_grid is the single-run bracket sweep; hold-grid and structure-grid are multi-run sweeps triggered separately by the report/UI (not computed here).
  • E1–E7 report analytics (per_symbol, outlier_dependence, mae_mfe, timing, calendar, drawdown_anatomy, ratios) are ALL computed on the walk-forward bracket 'SL30' net pnl vector / its equity series — the SAME basis as ev_pct/win_rate/max_drawdown, so no number spans a different bracket world. Aggregates are PERCENT; shares/ratios/r-multiples unitless.
  • timing.time_to_peak_days is null: the per-trade PEAK DATE is not retained (only peak_pct magnitude), so entry→peak days is not derivable without a per-bar path timestamp — the hold-days curve is the honest substitute (Fix: not fabricated).
  • pnl_correlation null: fewer than 3 overlapping trading dates with the book (or a constant pnl series) — too thin to correlate.
  • fees_drag_pct=0.01: net_ev_pct is AFTER a modeled round-trip fee of $0.65/contract commission + ~$0.02685 ORF/exchange + SEC (env VEGA_FEE_PER_CONTRACT / VEGA_ORF_PER_CONTRACT / VEGA_SEC_RATE). gross → −cost_drag (spread) → −fees_drag → net. Shares pay $0.
  • stop_slippage_pct=8.1: on 2 of 77 trades the SL30 stop GAPPED THROUGH — the realizable price was past the nominal stop, so v2 fills at the worse realized level (A2). v1 would have modeled all of these as exact-SL30 fills, overstating protection.
  • skip ledger — 95 signals = 77 fills + 18 skips (no_volume=0, missing_quote=18, cap=0, other=0, error=0). Conservation HOLDS (A5 — no signal vanishes silently).
  • entry-time sensitivity (A6) null: no 10:35 intraday session data for the traded bars in this window (honest null, not fabricated).
  • entry_iv_rank null (C3): backtest chains carry no historical per-contract IV → no entry-day IV percentile on historical fills; live reads carry iv_rank once 60 daily observations accumulate; historical backtests remain null (no IV history). accumulating live-only (count via the live desk).
  • entry_time_match null: needs intraday option quotes to confirm the fill is reachable at the signal's intraday timestamp — DATA-GATED (the Databento item).
  • path-shape flags / spread / gross-vs-net are degenerate for non-option runs (single-point daily path, no bid/ask width).
  • monte_carlo (B1): 1000 sims × 3 methods (order_shuffle / trade_drop w.p.0.1 / slippage_perturb ±50% of the modeled spread), seed=424242 (+1/+2 for the drop/slippage streams). On the date-ordered wf-bracket net vector — the SAME basis as max_drawdown. EV is order-invariant so ev_p50 tracks the point estimate while dd/ruin capture sequencing luck; ruin_prob = P(cum path ever <= -100.0 return points). The pooled EV band here is dominated by the SEQUENCING null (order_shuffle is EV-invariant, so its EV never moves and pins ev_p50 to the point estimate); EV *uncertainty* is the bootstrap CI's job (ev_ci95, B5), NOT this band.
  • ev_ci95 / wr_ci95 (B5): 2000-resample percentile bootstrap (2.5/97.5), seed=271828, on the wf-bracket per-trade vector. PERCENT units. The win-rate CI agrees with the binomial Wald approximation p±1.96·sqrt(p(1-p)/n) to within a few points (percentile-bootstrap vs normal-approx).
  • random_baseline (B3): random_baseline null: underlying-proxy control is defined for single-direction option/equity runs only, not asset_class='covered' (a multi-leg structure has no single directional underlying proxy).
  • benchmark (B6): SPY buy-hold 51.98% over 2024-02-12..2026-05-20 (enter at first-bar OPEN, exit at last-bar CLOSE), risk-free≈0. This is a TOTAL buy-hold return over the whole window; the strategy's ev_pct is a PER-TRADE average — the two are different bases and are shown side by side, not differenced into a single 'alpha'.
  • regime_report (C1): regime_report: per-regime EV/WR on the walk-forward bracket (SL30) per-trade vector; cells keyed by each trade's OWN-underlying trend×vol regime at entry (backward-looking; no look-ahead). current_regime is the MARKET (SPY) regime as of the last bar — a context stamp on a different basis than the per-trade cells. Trend: close vs sma200 + sma50 slope; vol: 20-day realized-vol trailing-252 percentile (>=0.5 = high). WEAK EVIDENCE — cell(s) ['chop/high', 'up/low'] have n<20: a single outlier can flip that regime's EV; do not read a thin cell as a real per-regime edge.
  • event_exposure (C2): event_exposure: a trade is 'held_through_event' when an event falls in (entry, exit] — FOMC is market-wide ('*'); earnings are per-symbol. ev_through / ev_clear are PERCENT EV on the walk-forward bracket (SL30). Calendar carries 24 event(s) (24 FOMC seeded, 0 earnings). Earnings feed NOT yet wired (null-until-data) — the pipeline exists and populates when an earnings source lands; today this measures FOMC exposure only. Small-n caveat: with few through-event trades a single outlier can dominate ev_through — weak evidence until n grows.
  • greeks_exposure (C4): greeks_exposure null: greeks are modeled for single-leg option runs only (asset_class='covered' has no single-contract path). MODELED.
  • concentration (D2): CONCENTRATION WARNING — 52% of trades are 'semis' (by count); 'software' holds 53% of total POSITIVE P&L. Your diversification is TIMING, not independence (cl scar): a low return-correlation across strategies can just be different entry timing on the same theme — and a count-share check ALONE can miss a theme that carries almost all the P&L while being a minority of trades. Kill-test by removing 'semis' before trusting the book's spread. Count-share is by TRADE COUNT (exposure), bounded [0,1]; P&L-share is a theme's share of TOTAL POSITIVE P&L (a big-loser theme elsewhere can never mask it) — null when no theme has positive P&L.
  • capacity (D3): capacity null: no trade carried a real daily share volume (77 of 77 fills had no volume) — nothing to size against. A real volume feed (options_chains_alpaca daily_volume / bar volume) is required; never estimated.
  • slippage_stress (E9): net EV re-charged at 1×/2×/3× the modeled round-trip spread (0.34% mean) on the wf-bracket 'SL30' net vector → 0.9% / 0.5% / 0.2%. If the edge dies by 2×, it lives on optimistic fills. The base spread is itself synthetic before REAL_NBBO_FROM, so 1× is already optimistic on that portion — read 2×/3× as the honest floor.
  • sizing (E10): HALF-Kelly suggestion 7.0% of bankroll (full f*=0.1401, capped at 25%), from wf-bracket win-rate 61.0% / payoff 0.83×. Kelly assumes these are the TRUE odds; they are sample estimates. 3 loud warnings attached — this is a ceiling to consider, not advice.
  • data_quality (E11): DATA-QUALITY 89/100 (High) — a TRANSPARENCY summary, NOT a lie detector or a quality grade. Equal-weight mean of fillability/sample: spread_realism = share of fills on REAL option NBBO (the rest priced on the optimistic synthetic 5% spread); fillability = % of fired signals that filled on real chains; sample = n vs the 80-fill verdict floor. A high score means the numbers are mostly real-measured on a healthy sample; it says nothing about whether the edge is good.
  • rolling_edge (E12): rolling_edge: trailing-60-trade EV, 18 overlapping windows on the date-ordered wf-bracket net vector (the SAME basis as ev_pct). A downward drift late in the series is edge DECAY — the recent trades are earning less than the early ones.
  • beta_spy (E13): beta_spy = 1.103 (r²=0.213, n=77): the OLS slope of each trade's wf-bracket P&L on the SPY move over that trade's OWN holding window (entry→exit close). beta≈1 tracks the market; ~0 is market-neutral; >1 amplifies it. This is NOT a daily mark-to-market beta (options carry no daily marks here) — it measures OUTCOME co-movement over the hold, not path co-movement.
  • param_sensitivity (E15): param_sensitivity (E15): re-graded 4 entry-threshold neighbors (±10%/±20% on up to 2 literals), each a full re-run on the SAME cached bars, wf OOS EV per variant. No cliff: the edge holds across the ±10/20% neighbors (not knife-edge on one threshold).
  • This universe is stocks you named, and none are delisted/historical-only. If real-world peers failed or were delisted in this window, they are absent — so results may be optimistic (survivorship bias). You CAN add delisted names (e.g. SIVB, FRC) to test against real failures.
  • DATA-QUALITY 89/100 (High) — a TRANSPARENCY summary, NOT a lie detector or a quality grade. Equal-weight mean of fillability/sample: spread_realism = share of fills on REAL option NBBO (the rest priced on the optimistic synthetic 5% spread); fillability = % of fired signals that filled on real chains; sample = n vs the 80-fill verdict floor. A high score means the numbers are mostly real-measured on a healthy sample; it says nothing about whether the edge is good.
  • promising but unproven — moderate sample (77 fills), 3/4 OOS cycles positive, metric -0.6% from the SHADOW_EV (shelf bar).
  • Equity fills — real daily marks, no option-spread model; confidence reflects sample size + out-of-sample consistency only.
  • SPY buy-hold 51.98% over 2024-02-12..2026-05-20 (enter at first-bar OPEN, exit at last-bar CLOSE), risk-free≈0. This is a TOTAL buy-hold return over the whole window; the strategy's ev_pct is a PER-TRADE average — the two are different bases and are shown side by side, not differenced into a single 'alpha'.

The first 12 of 77 trades

Per-trade result, after the spread both ways
StockSignalExitResultFill priced on
AMD2024-04-192024-05-03+3.7%a real close ± 2.5%
MU2024-04-192024-05-03+4.5%a real close ± 2.5%
NFLX2024-04-192024-05-03−0.5%a real close ± 2.5%
NVDA2024-04-192024-05-03−43.5%a real close ± 2.5%
AMD2024-07-172024-07-31−8.4%a real close ± 2.5%
MU2024-07-172024-07-31−6.3%a real close ± 2.5%
AMD2024-07-182024-08-01−3.5%a real close ± 2.5%
MU2024-07-182024-08-01−3.9%a real close ± 2.5%
AMD2025-11-202025-12-05+5.2%a real close ± 2.5%
MU2025-11-202025-12-05+7.8%a real close ± 2.5%
AMD2025-11-212025-12-08+5.0%a real close ± 2.5%
AMD2026-02-042026-02-19+1.9%a real close ± 2.5%

Disclosures

  • Early assignment is not simulated: short option legs are carried to expiry and settled there (in-the-money by at least $0.01 pays its intrinsic value, otherwise it expires worthless). In the real market an American short leg can be exercised against you any day — most often a deep in-the-money short call the day before a dividend, which also leaves the rest of a spread unhedged. Treat a short-leg result as the favourable case on that one point. This strategy has 1: the short call leg.

Simulation for learning. Paper money, real data, not investment advice.

Test another one

  • Buy the dipA strong stock falls hard for a few days. You buy the bounce.
  • Golden crossThe 50-day average crosses up through the 200-day. The oldest signal there is.
  • RSI oversoldRSI drops under 30 — the textbook says the selling is overdone.
  • Buy new highsA leader pushes to a fresh 52-week high. You buy strength, not weakness.
  • Fade the gap upIt jumps 3% higher at the open on hype. You bet the pop fades.
  • Bull call spreadThe same breakout, but with a capped, defined-risk options trade.

Or see all seven, learn the craft in the lessons, or write your own rule in the builder.