How this engine works
What the scoring engine measures, why grades change, and how to interpret the rules behind each verdict. This page updates when the underlying ADRs do.
Composite scoring (ADR-013)
Every position is scored on four factors, weighted to produce a composite from 0–100. Quality carries the heaviest weight, valuation and momentum each carry a substantial share, and health rounds out the composite (exact weights are internal to the engine). Composite maps to a letter grade A+ through F using these thresholds: A+ ≥ 88, A ≥ 82, A- ≥ 76, B+ ≥ 70, B ≥ 64, B- ≥ 58, C+ ≥ 52, C ≥ 46, C- ≥ 40, D+ ≥ 34, D ≥ 27, D- ≥ 18, F < 18.
| Factor | Emphasis | What drives it | Common flags |
|---|---|---|---|
| Quality | Heaviest | ROIC, ROE, Debt-to-Equity, accrual quality, operating margin trend | Falling ROE, leveraged balance sheet, accruals divergence |
| Valuation | Substantial | P/E, EV/EBITDA, PEG, P/B, FCF owner-earnings yield spread vs FRED 10Y | Multiple expansion vs sector, negative spread vs Treasury |
| Momentum | Substantial | Earnings revision velocity, beat/miss cadence, 12-1m price momentum | Downward revisions, rating cuts, sector momentum decay |
| Health | Supporting | Altman Z, Piotroski F, interest coverage, Debt-to-Equity, current ratio | Altman Z < 1.81 (distress), Piotroski ≤ 3 (weak fundamentals) |
Valuation blend (ADR-014)
Valuation isn't just P/E. For most positions it's a single criterion, a yield spread measured against the live 10-year Treasury rate (FRED DGS10), with the familiar multiples shown alongside for context only:
- Yield spread (the weighted criterion): 50% trailing FCF yield (Enterprise-Value-denominated) plus 50% owner-earnings yield, minus the current FRED 10-year Treasury yield. Positive spread = the position yields more than the risk-free baseline. P/E, EV/EBITDA, PEG, and P/B vs sector medians appear on the page but carry no weight in this score.
- Financials fallback:Banks and insurers, where free cash flow isn't a meaningful measure, are scored on P/B (55%) plus earnings yield (45%) instead.
Spec modes
Some positions need rule adjustments — a growth stock at a band edge, an ETF that shouldn't be graded like a single stock, a position with thin data. Spec modes encode those adjustments so the same engine handles edge cases without silent grade drift.
| Mode | When it activates | Effect |
|---|---|---|
| Lynch hysteresis | PEG-eligible growth stocks scoring near a grade band edge | Valuation grade persists across small score moves to avoid flapping on momentum noise. |
| ETF gate | Position symbol resolves to an ETF rather than a single equity | Single-stock factor analysis bypassed; ETF graded on diversification + cost characteristics. |
| Conservative composite penalty | Coverage ratio below the engine confidence threshold | Composite downgraded to reflect that the engine had limited factor data. Position is not failed — it is flagged as "lower confidence." |
Coverage ratio
Each grade carries a coverage ratio— the fraction of factor data the engine had available when scoring this position. 100% means every input was present. Below 90% the engine starts applying the conservative composite penalty so a thin-data grade can't masquerade as high-confidence.
Daily snapshot cron
Every day at 22:00 UTC, the scheduled snapshot writer (spec 026) re-scores every held position and writes oneSCORE#row per (user, symbol, date). The Today tab's 7-day trend indicators and the per-position sparkline both read from this corpus.
Engine performance verification
The engine self-tests against its own historical snapshots and keeps a dated, append-only record of its verdicts for forward evaluation.
The option-pricing surface behind the quant concepts, with its synthetic implied-volatility smile mode, as an interactive 3D exploration.
Engine version v4 · Last updated 2026-07-17. When the methodology changes, the version stamp bumps and this page updates.