promote residual momentum ranking
Deploy / lint (push) Successful in 7s
Deploy / test (push) Successful in 1m8s
Deploy / deploy (push) Successful in 35s

This commit is contained in:
2026-07-02 21:00:39 +02:00
parent 849489a4b5
commit aadec7d403
21 changed files with 310 additions and 185 deletions
+6 -6
View File
@@ -222,11 +222,11 @@ async def _get_ohlcv_priority_tickers(db: AsyncSession) -> list[str]:
async def _get_top_pick_feeder_ids(db: AsyncSession) -> set[int]:
"""Ticker ids whose latest LONG setup makes them a top-pick feeder.
A dashboard 'top pick' is the highest-momentum *qualified* setup. Sentiment
can never move a ticker's momentum percentile (the gate's core axis) — only
its confidence and EV ranking. So the only tickers that are, or could become
with positive sentiment, a top pick are momentum leaders that already have a
tradeable long setup clearing the R:R floor. That set is exactly:
A dashboard 'top pick' is the highest residual-momentum *qualified* setup.
Sentiment can never move a ticker's activation percentile (the gate's core
axis) — only its confidence and EV ranking. So the only tickers that are, or
could become with positive sentiment, a top pick are residual-momentum leaders
that already have a tradeable long setup clearing the R:R floor. That set is exactly:
latest long setup with momentum_percentile >= gate AND rr_ratio >= floor.
@@ -311,7 +311,7 @@ async def _get_sentiment_priority_tickers(db: AsyncSession) -> list[str]:
is always fully covered. The two tiers only affect ORDER, so a mid-run provider
rate limit still lands the names we care about first:
Priority: top-pick feeders (momentum leaders with a tradeable long setup, see
Priority: top-pick feeders (residual-momentum leaders with a tradeable long setup, see
``_get_top_pick_feeder_ids``) + the curated watchlist + open paper trades —
the set we never want shown without sentiment.
Filler: top-N by composite — a cheap discovery net for names not yet covered.