Seven factors. One consistent framework. Category weights are design choices, not weights optimized through a historical backtest.
Peer comparisons
Each metric uses the same Finviz Industry when the minimum valid peer count is met; otherwise it tries Sector. If both are too small, the metric is unscored. The target stock is included. Momentum compares the entire uploaded universe. Finviz labels are not assumed to be GICS classifications.
From percentile to score
Midrank percentiles give equal values equal scores. Percentile bands map to 1–5: up to 20% → 1, up to 40% → 2, up to 60% → 3, up to 80% → 4, above 80% → 5. All tied observations receive 3. Lower-is-better metrics reverse the percentile.
Missing data and eligibility
Missing values are never filled in. A category needs at least 50% of its metric weight available, then remaining weights are renormalized. Official ranking requires every positive-weight category plus 80% weighted metric coverage. Provisional scores renormalize available categories and should be reviewed separately.
Financial exceptions
Banks, insurers and REITs do not receive EV/EBITDA, debt/equity or current-ratio scores. Nonpositive valuation multiples and negative debt/equity are invalid. These stocks may remain provisional until a specialized industry model is used.
What the categories measure
Important limits
Earnings measures reported surprises, not historical analyst estimate revisions. Lower raw beta scores higher, including negative beta. No market-cap matching, absolute quality caps, moving-average trends, index-membership checks or competition-eligibility checks are included.
Portfolio construction
Finviz Data → Metric Scores → Category Scores → Final Quant Score → Ranking → Candidate Engine → Portfolio Constraints → Final Quant Portfolio. Your full investment budget is used for one stock portfolio with sector-specific limits. Include receives processing priority but must pass every cutoff and concentration limit. Exclude always removes a ticker. Quant Rank is unchanged. Equal stock weights use 100% / target count; underfilled slots remain unallocated. Sector-specific blank limits inherit global limits; zero excludes that sector. Sector maximums are ceilings, not target allocations.
Allocation choices
Equal Weight preserves equal target slots. Weighted Allocation uses final scores or linear ranks, with automatic redistribution subject to actual sector weight sums and a single-stock cap. Custom Portfolio lets you enter your own tickers and weights. Monte Carlo uses the selected source and models any remaining cash at 0% return and volatility.
Data and exports
CSV contents are parsed and scored inside this browser. Uploaded CSV and Excel data stay in this browser and are saved only on this device so the last uploaded universe can be restored after reload. Portfolio settings and ticker decisions are saved only on this device; export a setup JSON to transfer them. Export Excel saves a snapshot of values, including the current view, all scores, metric audit, raw data and model settings. Upload a new CSV here to recalculate.