StockScore Formula Methodology
The formula represents one defined quantitative methodology. Other methodologies may use different inputs, assumptions or weightings and may produce materially different results.
Formula position is relative to the eligible companies and available data at a specific calculation time. A change in position may result from changes to the company's data, market data, the eligible universe or data availability.
StockScore formula results are not valuations, price targets, forecasts, investment recommendations or suitability assessments.
1. Formula Identification
Formula name: StockScore Formula. Current version: v1.0. This is the version in effect from the launch of this published methodology page, 22 September 2026. Version v1.0 introduces formal version labelling and public disclosure of a calculation that was already in use; it does not change any input, weighting or eligibility rule.
2. Eligible Universe
The eligible universe for each calculation is the set of companies that are constituents of the S&P 500 index and have a share price over $5, as returned by the data source's screener filters ("Index: S&P 500" and "Price: Over $5") at the time of that calculation. A company that does not meet both filters on a given calculation date is outside the eligible universe for that date and does not receive a formula position.
3. Inclusion, Exclusion, Missing-Data, Negative/Zero and Outlier Rules
Only companies meeting the eligible-universe filter in Section 2 are included in a given calculation. Companies are not additionally excluded for having incomplete data. Instead, missing values for the two formula inputs are replaced with a fixed placeholder value before ranking:
- A company with no reported P/E ratio is treated as having a P/E of 100 — the least favourable value used anywhere in the calculation — rather than being removed from the universe. This applies whether an individual company's P/E is unreported, or the data source's response is missing the P/E field entirely.
- A company with no reported ROA is treated as having an ROA of 0, again rather than being removed from the universe.
A negative or zero P/E or ROA value is not treated as missing and is not floored, adjusted or excluded — it is ranked exactly at its reported value, alongside every other company's reported value. A company with negative ROA, for example, ranks below every company with positive ROA, in proportion to how negative its value is.
No outlier adjustment (winsorising, capping, or exclusion of extreme values) is applied to either input. An unusually high or low P/E or ROA is ranked at its full reported magnitude, exactly like any other value.
4. Data Source, Field Mapping and Currency
Company and market data is sourced from the Finviz screener, filtered to the eligible universe defined in Section 2. Two separate screener views are queried and joined on ticker symbol:
| Displayed field | Source view | Source field | Unit |
|---|---|---|---|
| Price | Overview | Price | USD |
| P/E ratio | Overview | P/E | Ratio (dimensionless) |
| ROA | Financial (joined by ticker) | ROA | Percentage, e.g. a value of 12.5 means 12.5% |
| Sector, country, market-cap group | Overview | Sector, Country, Market Cap | — |
A company absent from the Financial view (so no ROA join match) is treated the same as a company with a missing ROA cell — see Section 3.
Currency treatment: the P/E ratio and ROA are both dimensionless (a ratio and a percentage respectively) and require no currency conversion — they are identical regardless of what currency the app displays elsewhere. Price is sourced in USD; where the app displays price in a different currency for your account, that is a display-only conversion applied after the formula has already run, and has no effect on P/E, ROA, formula position or formula score.
5. How the Formula Is Calculated
- Every company in the eligible universe is given a P/E-based rank (also labelled the value-factor rank), where a lower P/E ratio receives a better — numerically lower — rank.
- Every company is also given an ROA-based rank (also labelled the quality-factor rank), where a higher ROA receives a better — numerically lower — rank.
- The P/E-based rank and the ROA-based rank are added together to produce a combined rank for each company.
- Companies are sorted by combined rank, from lowest to highest, with ties broken by ticker symbol in ascending alphabetical order (see Section 3's fictional example for a worked tie).
- This ordering produces each company's daily Formula Position, running from 1 to N, where N is the number of companies in the eligible universe on that calculation date. A lower position number means a lower (better-ranked) combined rank.
- A Formula Score from 0 to 100 is also shown. This restates the same formula position as a percentile, so that a higher score corresponds to a higher (better-ranked) formula position. The Formula Score is purely a display restatement — it plays no part in the calculation and does not change any company's formula position.
- The Historical Formula Result shown for a company (its overall, non-daily position) is a 30-day trailing average of that company's daily formula position over the most recent calculations available.
Written as equations, for a company i in a universe of N companies:
pe_rank(i) = rank of pe(i) among all companies, ascending (lower P/E → lower rank)
roa_rank(i) = rank of roa(i) among all companies, descending (higher ROA → lower rank)
combined_rank(i) = pe_rank(i) + roa_rank(i)
formula_position(i) = position of company i when all companies are sorted by (combined_rank ascending, ticker ascending)
formula_score(i) = round(100 × (N − formula_position(i) + 1) / N)
historical_formula_result(i) = mean of the most recent up to 30 daily formula_position(i) values
6. Update Frequency
The formula is recalculated once per day by an automated job that re-fetches data from the source described in Section 4, reapplies the eligible-universe filter, and recomputes the P/E-based rank, ROA-based rank, combined rank, formula position, formula score and 30-day trailing average for every company in that day's eligible universe.
7. Worked Example (Fictional Data)
The companies, tickers, P/E ratios and ROA figures below are entirely fictional and are shown only to illustrate the calculation steps in Section 5. They do not describe any real company.
| Company (fictional) | P/E | ROA | P/E-based rank | ROA-based rank | Combined rank | Formula Position |
|---|---|---|---|---|---|---|
| Alpha Corp (ALPC) | 12 | 18% | 1 | 2 | 3 | 1 |
| Gamma Holdings (GAMH) | missing (treated as 100) | 22% | 4 | 1 | 5 | 2 |
| Beta Industries (BETI) | 45 | 5% | 3 | 3 | 6 | 3 |
| Delta Systems (DLTS) | 20 | missing (treated as 0%) | 2 | 4 | 6 | 4 |
Reading the table: Alpha Corp has both a low P/E and a high ROA, so it receives the lowest combined rank (3) and the highest formula position (1 of 4) in this fictional universe. Beta Industries (BETI) and Delta Systems (DLTS) tie on combined rank (6); ties are broken by ticker symbol in ascending alphabetical order, so BETI (alphabetically before DLTS) receives the better formula position of the two.
8. Formula Changelog
| Version | Date | Change |
|---|---|---|
| v1.0 | 23 September 2026 | Correction, not a formula change: ROA was being carried at the wrong scale from source to display (a decimal fraction instead of a percentage), affecting only the displayed ROA figure — P/E-based rank, ROA-based rank, combined rank and formula position were unaffected, since ranking order is unchanged by a constant scaling factor. Tie-breaking on combined rank was also made explicitly deterministic (ticker, ascending) rather than relying on unspecified processing order. No input, weight or eligibility rule changed; historical formula positions are unaffected. |
| v1.0 | 22 September 2026 | Initial published version. No change to underlying calculation; introduces formal version labelling and public disclosure of the methodology. |
Any future change to the formula's inputs, weights, normalisation or eligibility rules will be recorded here with the previous version, the new version, the date, what changed, why, and whether historical results were recalculated. Historical results remain tagged to the formula version that produced them and are never reinterpreted under a later version.