Documentation
This page explains how DivSight calculates health scores, generates BUY/HOLD/SELL signals, and classifies investment orientations. Understanding the methodology helps you interpret scores correctly — and know when to dig deeper.
The Health Score is a 0–100 composite rating that summarizes a stock's characteristics based on the active orientation lens. Higher scores reflect stronger alignment with the criteria for that orientation — a score of 80 in Yield orientation means the stock looks strong for income-focused investing, while the same stock might score 45 in Growth orientation.
Scores are calculated in real time using data from Yahoo Finance. Because Yahoo Finance's API does not always report every metric for every company, some factors may be estimated or unavailable. The confidence indicators on each score bar show exactly which data points are live vs. derived.
DivSight evaluates each position through one of four investing lenses called orientations. The orientation determines which factors are measured and how they're weighted. Each stock has an auto-detected orientation — you can override it on any card using the pill toggles, and overrides are saved per portfolio.
| Factor | Max | Measures |
|---|---|---|
| Div Yield | 25 | Annual dividend as % of share price |
| FCF Coverage | 25 | Whether free cash flow fully funds the dividend |
| Payout Ratio | 20 | % of earnings paid as dividends (lower = safer) |
| Div Streak | 20 | Consecutive years of maintained or growing dividends |
| Debt/Equity | 10 | Financial leverage (lower = safer in downturns) |
| Factor | Max | Measures |
|---|---|---|
| Earnings Growth | 25 | Year-over-year earnings growth rate |
| Revenue Growth | 20 | Year-over-year top-line revenue growth |
| P/E vs Sector | 20 | Price-to-earnings — lower P/E suggests better value |
| 52-Week Range | 20 | Price position near annual high (momentum signal) |
| Beta | 15 | Market sensitivity — near 1.0 is optimal for growth |
| Factor | Max | Measures |
|---|---|---|
| Div Growth Streak | 20 | Consecutive years of growing dividends |
| Div Yield | 20 | Yield in the 2–5% sweet spot — not too low, not too high |
| Payout Ratio | 20 | Sustainability of the dividend payment |
| Earnings Trend | 20 | Whether earnings are stable and improving |
| P/E Ratio | 20 | Valuation check — avoiding overpriced companies |
| Factor | Max | Measures |
|---|---|---|
| 52-Week Range | 30 | Entry point relative to annual range — lower = better risk/reward |
| Beta | 25 | Volatility vs. market — higher beta = more speculative |
| YTD Momentum | 25 | Year-to-date price return |
| Volume Trend | 20 | 10-day vs 90-day volume ratio — rising volume adds conviction |
Every signal has two components: a score threshold and orientation-specific gate conditions. Both must pass for a BUY. If the score is high enough but one gate condition fails, the signal downgrades to HOLD.
| Signal | Score | Condition |
|---|---|---|
| BUY | ≥ 75 | Score ≥ 75 and all orientation-specific gate conditions pass |
| HOLD | 50 – 74 | Score is in range, or score ≥ 75 but at least one gate condition fails |
| SELL | < 50 | Score below the minimum threshold regardless of gate conditions |
Pure equity stocks (no dividend history) receive a signal based on their Growth or Speculative orientation score, since dividend-specific factors don't apply.
A yield trap warning appears when the current dividend yield is more than 1.5× the stock's 5-year average yield.
A sharply elevated yield relative to history typically means the stock price has fallen significantly while the dividend hasn't yet been cut. This can appear attractive on the surface — but a high yield caused by price distress, rather than genuine income improvement, often precedes a dividend reduction.
The warning does not automatically reduce the score. It's a flag that prompts additional research: Is the dividend sustainable at this price level? Has something changed in the business?
Each factor on the score breakdown bars shows a small confidence indicator. This tells you how reliable that particular data point is.
| Indicator | Meaning | Effect on score |
|---|---|---|
| ● Confirmed | Data retrieved directly from Yahoo Finance's API for this ticker. | Full scoring range applied. |
| ⚠ Estimated | Derived or approximated from available data — for example, using trailing vs. forward EPS ratio when direct earnings growth isn't reported. | Full scoring range applied but result may be less precise. |
| ○ Unavailable | Yahoo Finance does not report this metric for the ticker. Common for smaller companies, foreign listings, and newly public stocks. | Factor receives a partial neutral score (roughly 50% of max) to avoid penalising securities with limited data coverage. |
When many factors on a card show ○ unavailable, the score is less reliable — it's based largely on neutral placeholders rather than actual company data. Use such scores with extra caution.
Exchange-traded funds and mutual funds use a simplified model. Because funds don't have traditional earnings, FCF, or payout ratios in the same way companies do, the standard Yield or Balanced orientation factors don't translate cleanly.
ETF scores are based on: distribution yield, expense ratio (lower = better), assets under management, NAV vs market price, and YTD total return. The signal badge on ETF cards shows the score-derived signal rather than a raw BUY/HOLD/SELL, since ETF health is a different concept than dividend stock health.
You can still apply orientation pills to ETF cards — the Growth and Speculative orientation scoring functions work meaningfully for equity ETFs (beta, 52-week range, YTD return are all valid).
All data is sourced from Yahoo Finance via the open-source yfinance library. Data is fetched in real time when you analyze a portfolio — nothing is pre-cached or stale.
Known limitations:
fiveYearAvgDividendYield field, which may be absent for newer or foreign-listed securities.DivSight is not affiliated with Yahoo Finance, Morningstar, or any data provider. Data accuracy depends entirely on what Yahoo Finance reports for each ticker.