Pre-Flight — Steps 1 · 1a · 1b
tap for detail →
Reads the active risk mode, applies yesterday's retrospective as hard constraints, and enriches any open position still missing a stop or target — all before a single new candidate is sourced.
Watchlist Carry-Forward
Step 1c
Every ticker still sitting on yesterday's watchlist is re-checked against its own recorded condition before any new sourcing begins — resolve first, discover second.
confirmed → today's candidate pool
pending → stays on watchlist
stale / invalid → excluded
Sourcing — the wide mouth of the funnel
Step 2
Seven screener sources run in parallel, plus a rotating sector sweep. A scan may not call it a thin day below 15 candidates across 5+ sectors without proving the screeners were actually down.
Hard Filters — first kick-out gate
Step 3
Every sourced candidate is checked against a fixed set of pass/fail thresholds — RSI , 200-day EMA , earnings date, market cap, liquidity, P/E . Fail any one and it's excluded before a setup is ever scored.
candidate
passes every check
continues →
fails RSI · EMA · earnings ·
cap · liquidity · P/E
EXCLUDED
Fig. 1 — a candidate either clears every threshold, or exits sideways into Excluded.
Setup Scoring — the decisive fork
Step 4
Every survivor is scored 0–5 against up to three setups and kept at its best-fitting score. This single number decides Excluded, Watchlist, or New Buy.
0–5
best-fitting setup score
score 0–2
EXCLUDED
score 3–4 · missing 1 confirmation
WATCHLIST
score 4–5
NEW BUY
Fig. 2 — one setup score, three possible landings.
Existing Positions — a parallel track
Step 5
A separate pass, sourced from positions.json instead of the screeners — every currently open position is checked against exit rules the same scan.
positions.json — open positions
exit rules, evaluated in order
EXIT
SWAP
ADD
aggressive only
HOLD
Fig. 3 — checked in order: stop → earnings → time stop → swap → pyramid add → default hold.
Signals Output
Step 6
Everything lands in one of five buckets for the day. Four are today's signals; the fifth is the audit trail the retrospective mines later.
new buy
hold
exit
watchlist
excluded
Today's scan output
Retrospective audit
2:05pm MDT, daily
lessons_for_next_scan
written into retrospective.json
closed trades, watchlist history
writes the file
Step 1a, next morning —
applied as hard constraints
Fig. 4 — the loop closes: nothing the retrospective finds stays a suggestion past one sunrise.