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
+2 -2
View File
@@ -77,7 +77,7 @@ export default function DashboardPage() {
);
// Show qualified setups first; fall back to the full list when none qualify.
// Rank by 12-1 momentum percentile so the strongest names sit at the top.
// Rank by residual 12-1 momentum percentile so the strongest names sit at the top.
const showingQualified = qualifiedSetups.length > 0;
const topSetups: TradeSetup[] = useMemo(() => {
const pool = showingQualified ? qualifiedSetups : trades.data ?? [];
@@ -214,7 +214,7 @@ export default function DashboardPage() {
<th className="px-4 py-3 text-right">Entry</th>
<th className="px-4 py-3 text-right">R:R</th>
<th className="px-4 py-3 text-right">Target&nbsp;Prob</th>
<th className="px-4 py-3 text-right">Momentum</th>
<th className="px-4 py-3 text-right">Residual Mom.</th>
<th className="hidden px-4 py-3 md:table-cell">Action</th>
</tr>
</thead>
+2 -2
View File
@@ -216,7 +216,7 @@ export default function TickerDetailPage() {
[setupsForSymbol],
);
// Standing matrix: this ticker's momentum percentile + long confidence (from its
// Standing matrix: this ticker's residual momentum percentile + long confidence (from its
// setup), the field (every ticker's composite × momentum) for the cloud, and
// whether it qualifies / is the top pick.
const myMomentum = longSetup?.momentum_percentile ?? shortSetup?.momentum_percentile ?? null;
@@ -296,7 +296,7 @@ export default function TickerDetailPage() {
<StatusPill
tone="blue"
label="★ Top Pick"
title="Current top pick — highest-momentum qualified setup right now"
title="Current top pick — highest residual-momentum qualified setup right now"
/>
)}
{hasOpenTrade && (