Buy / Sell Signal
The four panels in one number — and its honest counterpart
Updated June 4, 2026
The Signal panel at the top of the SYMBOL card is the synthesis layer. The four panels below it — Perform, Persist, Profit, Peril — each describe one lens. Buy and Sell combine those lenses into the two numbers a reader actually wants up front: is this a buy? and is this deteriorating?
What goes into the score
Modern multi-factor scoring rests on five durable signal families, each with decades of out-of-sample evidence:
| Factor family | Dashboard input | Academic anchor |
|---|---|---|
| Momentum | marketBeat1Y — 252-day excess return vs SPY | Jegadeesh & Titman (1993); Asness, Moskowitz, Pedersen (2013) |
| Quality | businessBeat — TTM revenue + margin + cash-flow YoY composite | Novy-Marx (2013); Fama-French 5-factor; AQR's Quality Minus Junk |
| Defensive | average of volRatio + drawdownRatio (both higher = calmer) | Frazzini & Pedersen (2014), Betting Against Beta |
| Trend | trendPersistence — share of weeks above SMA-200 | Moskowitz, Ooi, Pedersen (2012), Time Series Momentum |
| Flow | accumDistFlow — 60-day signed-dollar-volume share | Granville (1963), Wyckoff; Llorente et al. (2002) |
These five are chosen because they capture economically independent risk premia — each has paid off across long history without depending on the others. Value is conspicuously absent — the dashboard intentionally doesn't carry it (we score on ratios, not raw multiples), and value's recent decade has been weaker than its long-term reputation. Earnings revisions would be a sixth strong addition if we had sell-side data, which we don't.
How the score is computed
Each of the five inputs is already a 0-100 percentile rank vs the cohort. The buy composite is their geometric mean, with zeros clipped to 1 so the math degrades gracefully:
buyRaw = (max(1, p₁) × max(1, p₂) × … × max(1, pₙ)) ^ (1 / n)
The composite is then re-ranked cross-sectionally across the universe — so percentiles.buySignal = 80 means "this stock's composite beats 80% of the cohort," not "this stock scored 80 in absolute terms."
Two design choices worth flagging:
- Geometric, not arithmetic. A single weak factor drags the composite toward zero. We want "winner on ALL fronts" semantics — a stock with perfect quality but terrible flow is not a buy, no matter how good its other four legs look. Arithmetic mean would let any one strong leg paper over a fatal weakness on another.
- Equal weighting. Brandt, Santa-Clara, Valkanov (2009) and DeMiguel, Garlappi, Uppal (2009) both showed that 1/N portfolios match or beat covariance-optimized ones out-of-sample, because the parameter estimation noise overwhelms the signal. Same logic for factor weights. Cliff Asness has called this "sin a little" — diversification dominates precision.
There's also a distress veto: if all three risk markers are deeply red simultaneously (volRatio ≤ 20 AND drawdownRatio ≤ 20 AND accumDistFlow ≤ 30), the raw composite is capped at 30 before ranking. This catches the "high momentum + deteriorating risk + flow leaving" pattern — the pre-blow-up setup of names that briefly look strong on a couple legs while the rest fall apart.
Why a separate Sell number
A low buy score doesn't necessarily mean sell. It could just mean "mid-pack on a few legs." The Sell composite is built differently — from four deterioration signals, not absence-of-strength:
sellRaw = mean(100 − marketBeat1M,
100 − accumDistFlow,
100 − trendPersistence,
100 − drawdownRatio)
(recent weakness, money flowing out, broken trend, currently in a drawdown). This catches the cooling-leader pattern — a stock that's been a year-winner but is now losing the cohort on multiple short-window measures simultaneously. That's the trim signal a simple "low buy" filter misses.
The two numbers are not symmetric and don't need to add to anything. They answer different questions:
- Buy = should this be a destination for capital?
- Sell = is this deteriorating, regardless of where it ranks today?
A stock can have both moderate buy (50) and moderate sell (50) — that just means "mid-pack everywhere." A stock with high buy AND high sell is unusual — typically a recent year-leader that's started to wobble; useful as a "watch closely" flag.
What the score does NOT promise
Honest about scope:
- Not a forecast. The composite is a current ranking. None of the input signals were optimized for next-month returns — they're descriptive percentiles. A stock with buy = 90 has won the recent past on five lenses, not necessarily the next quarter.
- Not a substitute for thesis. The four panels below the Signal tiles are the why. A 90 driven by momentum + flow with mediocre quality is a different stock than a 90 driven by quality + defensive with mediocre flow. Read the components, not just the headline.
- Not symmetric. Sell = 90 is a deterioration signal, not "short candidate." Most short setups need fundamental or balance-sheet stress markers we don't track (Altman Z-score, debt covenants, going-concern flags).
A note on what the model surfaces
On any given snapshot, the top of the buy ranking is often dominated by ETF wrappers — value factor baskets (VLUE, VTV, DFLV), momentum funds (MTUM, SPMO), and broad-market wrappers. This is the model being honest, not biased. ETFs structurally win the defensive leg (lower volatility, smaller drawdowns by diversification), and they have no businessBeat leg to drag them down because they're not single businesses.
The dashboard's universe is deliberately inclusive of ETFs alongside stocks — the whole frame is "every dollar competes for the same destinations." When individual equities crack the top decile alongside the ETF flagships, that's the genuine high-conviction read — a single name that beats not just its peers but the diversified wrappers too.
What to do with the number
The Signal tiles are most useful as the entry point into the rest of the card, not the exit:
- Glance the Buy / Sell pair → headline answer.
- Read the four panels below → the why — which factors are firing, which are weak.
- Read the news strip + commentary → the narrative — what real-world story matches the numbers.
- Decide.
The composite is a starting point for a thesis, not a thesis itself.