ThePickLog · Exit-Rule Scenario Calculator
loading live data…Full methodology — every formula, assumption, and data source on this page
Where the data comes from (lineage)
1. The scanner stamps each pick into picks.csv before the outcome is known (append-only, never edited).
2. Five trading days later the grader writes one row per pick to outcomes.csv with the entry open,
same-day close, 5-day close, and the 5-day max-favorable / max-adverse excursions (mfe_5d / mae_5d),
all net of a 2% round-trip cost haircut on return columns. 3. This page fetches outcomes.csv raw and
recomputes everything in your browser — download it and check any number yourself.
The exit rule being modeled (H-EX1, frozen 2026-06-23)
Rest a +10% limit order over the 5-trading-day hold. If the 5-day high (mfe_5d) reaches +10%, the order
is assumed to fill → realized +8% net (10% minus the 2% haircut). Otherwise exit at the 5-day close
(ret_open_5dclose_net). Deterministic from the log; no discretion.
The three numbers that determine everything
p = touch rate = share of evaluable picks with mfe_5d ≥ 10 m = miss average = mean ret_open_5dclose_net of picks with mfe_5d < 10 EV = expectancy = p × (+8%) + (1 − p) × m ["plug-in" convention]"Evaluable" = graded rows where both mfe_5d and ret_open_5dclose_net are numeric (voided/pending
rows are excluded). "Plug-in" means point estimates are plugged into the formula — the uncertainty of m and
the baseline is not propagated (same convention, and same limitation, as bayes_h_ex1.py, roadmap R3).
Breakeven touch rates
p*(threshold) = (threshold − m) / (8 − m) beats-baseline p* uses threshold = baseline EV (mean same-day open→close net) absolute p* uses threshold = 0The optional −20% disaster stop (H-EX2 convention)
Adds a −20% stop alongside the target → a stopped miss realizes −22% net. Modeled here mechanically:
each miss's 5-day-close return is floored at −22%. This is optimistic — it ignores touch order within the
window and gap-through on the stop itself. The registered H-EX2 test (weekly report §4e) replays the actual
daily path from paths.csv with a conservative same-day-collision rule; that is the honest version.
Dollar scaling
position size = bankroll ÷ (picks/day × 5) [5-day hold ⇒ that many open at once] $ per trade = position size × EV $ per year = $ per trade × picks/day × 250 annual return % = $ per year ÷ bankrollThis is expectancy × turnover, not a compounded equity curve. It ignores taxes, borrowing, partial fills, liquidity limits (these are thin low-float names — size moves them), and sequencing risk: a losing streak that forces you to stop is not modeled. A negative annual figure below −100% simply means the expected bleed exceeds the bankroll within the year — you'd be broke before December.
Known biases, in the honest direction
• Fill assumption (+10% exactly) is optimistic on thin floats → real results worse.
• All-time window contains the picks that inspired the rule → flatters it (selection-on-the-data).
• The mechanical stop floor is optimistic vs the path-replay version.
• The only unbiased read is the post-2026-06-23 OOS column as n grows — judged in
weekly report §4d, with a peeking-immune Bayesian read-out in
bayes-h-ex1-LATEST.md.