Momentum Discovery¶
Momentum Discovery is the admin-only research page behind /momentum/discovery. It is separate from /momentum and /momentum/early:
/momentumis the confirmed Momentum Leaders report./momentum/earlyis the Early Momentum Radar for setup timing./momentum/discoveryis for broader candidate discovery and quality audit.
Current scope
Discovery uses an expanded_bars_universe: symbols already present in the grouped-daily DuckDB bars table, with sufficient history, minimum price, symbol-shape, and liquidity filters. This expands beyond the 518-symbol Momentum core, but it is still not a formal exchange master. A future reference-data ingest should replace the symbol-shape filter for definitive delisting/ADR/ETF/common-stock classification.
Screen Groups¶
The page reads discovery_screens from the latest Momentum snapshot and renders four groups:
| Group | Purpose |
|---|---|
liquid_breakouts |
Higher-quality breakouts with enough technical score and volume participation. |
early_base_breakouts |
Earlier setup-stage names that are not yet too extended. |
high_flow_confirmation |
Names where FMP or Unusual Whales confirmation is unusually strong. |
filtered_low_quality |
Rows that were visible during discovery but failed quality gates; shown for audit instead of silent promotion. |
Manual Refresh¶
Admins can use Run now on /momentum/discovery to queue the shared Momentum pipeline. It calls the same POST /api/v1/admin/momentum/run endpoint used by /momentum and /momentum/early.
Run now is not a Discovery-only job. It rebuilds the latest Momentum snapshot, including the main leaderboard, Early Momentum, and discovery_screens. First-ever runs may need to backfill history; normal refreshes usually complete faster. After the worker finishes, use Refresh to load the new snapshot. On weekends or US market holidays, the task rebuilds the latest available trading-day snapshot.
Quality Gates¶
Default gates are centralized in momentum_screener/screener_config.py:
- minimum price;
- minimum technical score;
- minimum volume ratio;
- minimum 20-day average dollar volume for expanded bars-universe inclusion;
- separate volume-confirmation ratio for liquid breakouts;
- maximum 20-day run-up and MA20 stretch for early-base rows;
- high-confirmation threshold for FMP/UW-supported discovery rows.
Low-quality rows carry flags such as low_price, low_volume, weak_technical_score, and ma_not_aligned. These flags are there to explain why a row should not be treated like a clean leader.
Paid Data¶
Discovery can use the same FMP and Unusual Whales context as the main and early Momentum pages. Paid context is still confirmation, not a standalone stock picker. To control API cost, FMP/UW are re-read only for a capped technical Discovery shortlist after the bars-based scan, not for every symbol in the expanded universe. The page should make it clear when a name is technically strong, when it is mostly paid-data confirmed, and when the row is included only for audit.
Product Boundary¶
Discovery is the right surface for the broader scan because it can absorb more noisy candidates without diluting the confirmed Top 20. The primary Momentum leaderboard can stay on the curated core universe while Discovery reports its own expanded universe size.
The output is descriptive market research, not investment advice.