▲ stockoverlap.com
← Home

Methodology & data sources

Last updated August 2026

This page exists so you don't have to take a score on faith. It documents exactly where the numbers come from, how often they update, how the combined score is calculated, and where the limits are.

Data source

Prices, fundamentals (ROE, earnings growth, margins, revenue growth, short interest, institutional ownership), and analyst consensus price targets are pulled from Yahoo Finance via its public market-data API. We do not use SEC filings or fund-holdings data — StockOverlap screens individual stocks on fundamentals, it does not compute ETF/fund overlap.

Update frequency

The scan runs once per trading day, after market close (~6pm ET, Monday–Friday, skipping weekends and running on whatever data is available around holidays). Every notification email and the terminal header show the scan's actual timestamp so you always know how fresh a score is. Between scans, open picks' prices and upside % refresh live from Yahoo Finance each time you load the page — fundamentals themselves (score, grade) update on the next scan.

How the combined score is calculated

Two independent 12-point screens run against every stock in the scan universe, each built from individually scored factors so the total is reproducible rather than a black box:
  • Return on equity — up to 2.0 pts (≥15% worst reported year)
  • EPS growth (CAGR) — up to 2.0 pts (≥10%)
  • EPS trend consistency (R²) — up to 1.0 pt (≥0.85)
  • Gross-margin stability (variability, lower is better) — up to 2.0 pts (≤5% variation)
  • Valuation vs. sector (P/E ratio) — up to 1.0 pt (at/below sector median)
  • Balance-sheet strength (debt/equity) — up to 2.0 pts (≤0.50)
  • Short interest (% of float) — up to 1.0 pt (≤3%)
  • Insider buy/sell balance — up to 1.0 pt (net buying ≥25%)
  • Last two quarters' earnings surprises — up to 1.0 pt (both beats)
Each factor scores in tiers between its floor (0) and the max shown above, not just pass/fail — a stock at 12% ROE earns partial credit, not zero. Stocks that fail a hard floor on any factor (e.g. negative ROE, debt/equity over 2.0, more than 20% of float sold short) are dropped from this screen entirely regardless of their other scores.The value screen is scored the same way — nine factors, each in tiers up to a max, floors that drop a stock entirely if breached (revenue growth below -5%, gross margin under 8%, debt/assets over 0.80, or EPS CAGR below -20%):
  • Revenue growth (YoY) — up to 2.0 pts (≥15%)
  • Asset growth (YoY) — up to 1.0 pt (≥10%)
  • Free-cash-flow yield — up to 2.0 pts (≥6% of market cap)
  • Earnings yield, inverse of P/E — up to 1.0 pt (P/E ≤15)
  • Position in the 52-week range — up to 2.0 pts (in the bottom 30%, i.e. closer to the low)
  • 52-week range tightness — up to 1.0 pt (high-to-low spread ≤40%)
  • Short interest (% of float) — up to 1.5 pts (≤4%)
  • Institutional ownership — up to 1.0 pt (≥65%)
  • Analyst sentiment not already euphoric (consensus rating not near unanimous "strong buy") — up to 0.5 pt
A stock becomes a dual pick only when it scores on both screens the same day, the combined score (sum of both, out of 24) is 15+, and consensus analyst upside is 30%+. A combined score of 18+ earns the top-tier badge. This is not an overlap-of-holdings calculation — it's agreement between two independently-run fundamental screens on the same ticker.

Historical accuracy — what's frozen vs. live

When a pick first appears, its entry price and entry date are frozen permanently — that's the trade record and it never changes. While a pick is open, the score, grade, and analyst target shown are the current scan's numbers, not the ones from entry day — so you see where a stock stands today, not just where it stood when it was called. Return % is always calculated from the frozen entry price to the live (or, once closed, the exit) price. Closed picks freeze their exit price and are never re-priced.

Data-quality limits

Market data providers occasionally return delayed, missing, or incomplete fields — this is a real limitation of any third-party feed. Where sector or company name is unavailable for a ticker, we fall back to the most recent known value rather than showing blank data, which we flag here for transparency; we do not claim 100% completeness on every field, every day. If Yahoo Finance rate-limits or errors on a given ticker during a scan, that ticker is simply skipped that day rather than guessed at.

Survivorship & look-ahead bias

The scan universe is rebuilt daily from a live market screener, not a fixed list — a stock that gets delisted, acquired, or goes bankrupt simply stops appearing in future scans rather than being retroactively removed. The public track record is append-only: a pick's frozen entry price and history are never deleted, regardless of whether the ticker is still in the current universe. Live daily scans only ever use data available as of that day, so the scores you see were not computed with hindsight. Backtested performance numbers (used in our research, not shown as a live promise) are a different case — they apply today's analyst targets and current company fundamentals against historical dates, not the targets/fundamentals that actually existed then. That is a real source of look-ahead bias in backtests specifically, and any backtest figures we reference should be read as directional, not as a clean historical simulation.

Corporate actions & methodology changes

Returns are automatically adjusted for stock splits — a split can make a flat position look like a large loss or gain if the entry and current/exit prices aren't on the same share basis, so we check each open and closing pick against real historical split data before computing its return.

Returns are price-only and do not include dividends. For dividend-paying stocks this modestly understates the true total return an investor holding the actual shares would have earned.

Delisted, acquired, or bankrupt companies are handled the way described above (Survivorship & look-ahead bias) — they're never silently dropped from the track record.

If the scoring model or rubric itself changes, every open pick's score can shift at once — that looks like a data event, not individual businesses deteriorating. We detect this (the whole book's scores moving together in the same run) and skip exits for that run rather than closing a batch of picks purely because the yardstick changed; normal exits resume on the next scan.

Analyst-target reliability

The 30%+ consensus-upside requirement is a filter, not a guarantee — analyst price targets are opinions, revised often, and not an independent predictor of future returns on their own. In backtesting, the 30% threshold (vs. a looser 25%) showed a similar win rate and average return, meaning the extra filtering mainly narrows the list rather than materially improving odds — and, per the caveat above, that backtest itself carries look-ahead bias since it used current analyst targets against past dates. Treat the upside requirement as one input among the screen's several factors, not as a standalone signal.

Independent validation

We don't ask you to trust the score in isolation — every dual pick, win or loss, is logged the day it's called and stays on the public track record page with its frozen entry price, current/exit price, and return. Nothing is deleted or cherry-picked after the fact. That full history — not a marketing win-rate number — is the actual evidence for whether the methodology works.

Not financial advice

This is a research and screening tool. Scores and picks are not a recommendation to buy, sell, or hold any security. See our Terms of Service for the full disclaimer.