G0
Data Quality
price ≥ $2 · 20d $vol ≥ $3M · 120+ trading days · mcap ≥ $100M
Untradable names die here. Sub-$2 prints, sub-$3M daily dollar volume, fewer than 120 trading days of history, or sub-$100M market cap mean we can't act on a signal even if we generated one. Hard-reject layer — nothing downstream runs.
G1
Discovery Quality
passes hard filters · confidence ≥ 45 (strong ≥ 70)
Baseline conviction from the discovery pipeline. Below 45 confidence the candidate is rarely worth the technical-analysis bandwidth. Bands of 45/60/70 map to weak/moderate/strong.
G2
Market Regime
risk_on (+2) · neutral (0) · risk_off (−5) · stress (−12, cap)
Classifies the macro tape (SPY trend, VIX, breadth). Adjusts the final score by ±2 to −12. Stress regimes cap promotion to watchlist — the best stock in a bad tape still gets hurt.
G3
Technical State
broken (reject) · basing (cap) · early_recovery · confirmed_trend · extended (cap)
The architectural centrepiece. Replaces v2's rigid “price > 50 EMA and 50 EMA > 200 EMA” with five tape regimes derived from EMA structure, slopes, RSI, swing-low formation, and Bollinger compression. broken hard-rejects, extended caps to wait-for-pullback, basing caps to watchlist; early_recovery and confirmed_trend are eligible. This is what lets underdogs in technical-repair phases score.
G4
Momentum & RS
5d return ∈ [−1.25·ATR, +2.5·ATR] AND RS vs SPY/QQQ/IWM positive
ATR-normalised return bounds (not flat percentages) catch parabolic blow-offs and active drawdowns without false-flagging quiet stocks. Plus relative strength against the theme-appropriate benchmark over 20d and 60d. Outperforming both is a +driver, lagging is a −driver.
G5
Volume & Accumulation
5d:50d ≥ 0.80 · OBV slope rising · UD ratio ≥ 1.20 · breakout-day ≥ 1.50×
Multi-factor volume read — not just “is volume alive” but “is money flowing in.” OBV slope, up/down volume ratio, and at least one >1.50× breakout day within the last 5 sessions confirm institutional accumulation.
G6
Event Risk
0–5d → blocked · 6–10d → caution · 11+ → clear · post-event → confirm
Four tiers, not binary. Inside the 5-day earnings window the candidate caps to watchlist. 6–10 days out caps to early_recovery. Clear (>10 days) is unrestricted. The first 3 sessions after an earnings print require confirmation (no premature re-promotion on gap-ups).
G7
Fundamentals & Catalyst
fundamental_quality (0–25) · analyst net signal · insider activity · short-squeeze potential · catalyst presence
Pulls fundamental_quality (0–25) from v2 scoring, plus the analyst-change net signal, insider buying/selling pattern, short-interest squeeze potential, and any known upcoming catalyst. Weighted at 15% of the final score. When all five sources are empty the weight is redistributed across G3/G4/G5 rather than crediting a neutral 50.
G8
Sentiment & News
news sentiment label · confidence · pump/promotional phrase detection
Reads news_sentiment.json — sentiment label (positive/negative/bull/bear), confidence (numeric or textual: low/medium/high), and a free-text signal scanned for explicit pump phrases (pump-and-dump, paid promotion, meme stock, etc.). Pump pattern caps tier to watchlist. Never a standalone driver. Optional — when data is absent the weight is redistributed by the engine rather than crediting a neutral 50.
G9
Options Overlay
put/call OI ratio · ATM IV · interpretation text · earnings proximity
Reads options_signals.json: put/call open-interest ratio, at-the-money IV, an interpretation/signal field, and earnings proximity hint. Tactical edge layer; contributes 2.5% weight when present and is dropped entirely (weight redistributed) when data is absent. IV rank, skew, and gamma walls are not yet ingested.
G10
Adaptive Lockout
−15% → 20d · −25% → 60d · 2-in-90d → 120d hard · repair required
Replaces v2's flat 60d window. Cooldown length scales with damage; two stops in 90 days produces a 120-day hard lockout. To re-enter early the chart must show technical repair — reclaim 20 EMA, higher-low structure, and EMA rising — otherwise hard-rejects.
G11
Risk Sizing
low 1.00× · medium 0.65× · high 0.35× · speculative 0.15× · blocked 0×
Final synthesis. Combines tech state + event tier + lockout + liquidity into a five-bucket position-size multiplier and an ATR-based stop loss (price − 2.0 × ATR-14). Determines how much capital, if any, the candidate actually deserves.