Skip to content

v1.4.0

Choose a tag to compare

@xang1234 xang1234 released this 13 Jul 07:36
da4d01a

Stock Scanner v1.4.0

Stock Scanner v1.4.0 turns the Daily Snapshot into a clearer market-regime dashboard, makes scan results faster and more actionable, extends reliable multi-market RRG history to the static site, and hardens the data pipelines that keep both live and static experiences current.

Highlights

Market Health & Exposure (new)

  • A transparent daily 0–100 recommended-exposure score now combines distribution days, follow-through-day context, index position versus the 50/200-day moving averages, VIX, and market breadth into a plain-language market stance (#255).
  • The live Daily Snapshot and static home page share the same exposure gauge, score history, and contribution breakdown, so users can see both the recommendation and why it changed.
  • Static US exposure now requires a valid SPY benchmark before publication, preventing incomplete market-health readings (#273, #289).

More actionable scan results

  • The new RS Line Blue Dot signal identifies stocks whose relative-strength line is making a recent high, including “RS high before price” leadership. It is available as a persisted scan field, filter, API/static-site field, and results-table marker with date context (#278).
  • Static scan results now rank by composite score consistently with the live app, while stale rows with missing or zero volume are refreshed before static snapshots are built (#275).
  • Live preset filtering no longer spends tens of seconds counting blob-heavy rows: lean count queries and PostgreSQL expression indexes restore practical preset performance (#251).
  • Broad-universe scans may safely omit a tiny stale tail and show a durable warning; custom and test scans remain strict (#283).
  • Scan results now expose the date behind industry-group ranks, making ranking context easier to trust (#262).

Multi-market RRG history and date coherence

  • Static RRG now supports the same market set as the live application and carries forward 12 compact weekly observations per market through a dedicated release asset, instead of depending on expiring workflow artifacts (#299).
  • Missing history can bootstrap safely, while failed restoration or invalid state cannot overwrite known-good history.
  • Rankings, movers, RRG, breadth, and snapshot freshness now share stronger “as of” semantics and date-coherence checks.
  • RRG exploration adds a tail visibility toggle and clearer silver hover highlighting (#250).

Faster live experience and better mobile usability

  • Persisted query caching, route-level lazy loading, a lighter initial bundle, cached group rankings, and batched chart-neighbor fundamentals make refreshes and chart browsing noticeably faster (#241, #245).
  • The API can run multiple Uvicorn workers with migration-safe startup coordination (#240).
  • The static site now has scrollable mobile navigation, responsive chart/detail layouts, and horizontally scrollable tables instead of collapsed charts and unreachable tabs (#247).

Data and publishing reliability

  • Daily price bundles now download and import as verified streams with bounded database batches, atomic replacement, and checksum/metadata validation, preventing large-universe refreshes from being OOM-killed (#282).
  • Live deployments now receive the weekly GitHub-published IBD classification bundles for every supported market; classification refresh and temporary-file handling were also hardened (#246, #271, #292).
  • Lost refresh workers, delta-refresh coverage accounting, progress callbacks, and non-finite market values now fail or recover explicitly instead of leaving ambiguous runtime state (#258, #263, #267, #277, #280).
  • China index identity and benchmark freshness now use market-aware symbol handling, AKShare index feeds with Yahoo fallback, and a China-only manual static build option (#288, #291, #294).
  • Static publishing can retain valid last-known-good data for failed selected markets while still publishing successful current markets and enforcing completeness/schema gates (#296).

Deployment notes

  • This release includes database migrations for Market Health & Exposure and scan-filter indexes. Run the normal migration step (alembic upgrade head) before serving the new backend.
  • Existing deployments may optionally backfill market-exposure history so the timeline is populated immediately; otherwise it will accumulate through the daily pipeline.
  • Rolling static RRG history bootstraps automatically and is maintained as a compact release asset.

Community contributions

Thanks to @kjpou1 for improving the local backend workflow, NaN handling, IBD classification updates, price-refresh progress propagation, and temporary-directory portability (#227, #258, #271, #277, #292).

Full changelog: v1.3.0...v1.4.0