homescannersectorsstrategiesglossaryabout

Methodology

How the momentum score, fundamental score, and setup detection actually work.

Momentum Score (0-100)

Combines four signals into one number: how a stock is performing versus the market, whether volume backs up the move, how close it is to its own highs, and whether it's trending. Each input is scored 0-100 on its own, then combined with these weights:

Relative Strength
30%
Distance from High
30%
Relative Volume
20%
Trend
20%

Relative Strength (RS)

How the stock has performed versus the S&P 500 (SPY) over the same period — outperformance scores higher.

Relative Volume (RVOL)

Today's trading volume compared to its own 20-day average — a way of checking whether a price move has real participation behind it.

Distance from High

How close the stock is trading to its own recent high — the closer, the higher the score.

Trend

Whether price is above or below its own moving average — a simple read on whether the stock is currently in an uptrend or downtrend.

This same structure runs at three timeframes — short-term (~2 weeks), overall (~3 months), and long-term (~1 year) — using a shorter or longer lookback window and moving average for each, so a stock can look strong short-term but weak long-term, or vice versa.

Theme Watchlist

The Theme Watchlist ranks the 11 SPDR sector ETFs (XLK, XLF, XLV, XLE, XLI, XLY, XLP, XLB, XLU, XLRE, XLC) using the exact same momentum score model above — applied to each ETF's own price action instead of a single stock. This is intentional: one scoring methodology across the whole site, not a second competing one for sectors.

This is a completed-bar snapshot, not a live scanner — a deliberate difference from the Daily Scan and Movers pages. The Daily view uses the previous completed trading day's close as its latest input; "today" is excluded even after the market has closed, until the calendar date actually changes. The Weekly view uses the previous fully completed week's close (through Friday) — the current in-progress week is excluded even late on a Friday before the close. Neither view ever fetches intraday (1m/5m/15m) data, and both are cached by calendar period rather than a short timer, so reloading the page repeatedly during the same day (or week) never triggers a fresh fetch — the "as of" date shown on the page is exactly the session or week the numbers reflect.

Clicking a sector shows a curated list of that sector's largest and most liquid names, sorted by the same last-completed-session's volume. This list is a hand-picked representative set of well-known companies per sector — not a live index-constituents feed. If a company changes sectors or a better representative name should replace one on the list, it's updated directly in the code.

Fundamental Score (0-100)

A separate rating built from company financials rather than price action. The long-term score leans heavily on this, since a year of price trend alone doesn't capture whether a company is actually fundamentally healthy.

Growth
30%
Valuation (PEG)
25%
Profitability
25%
Analyst View
20%

Growth averages year-over-year revenue and earnings growth. Valuation uses the PEG ratio (P/E adjusted for growth rate) rather than raw P/E, since a high P/E can still be reasonable for a fast-growing company. Profitability averages profit margin and operating margin. Analyst view blends the consensus rating with how far the current price sits from the average analyst price target.

The Three Setups

MA Bounce

Stock is trending up, dips down and taps its 8, 21, or 50 EMA, then rejects — closes back above that same line. Any of the three counts.

Breakout

Stock has been consolidating in a tight range — tight relative to that stock's own average daily range, not a flat percentage — then closes above the previous day's high on volume meaningfully above average. This is the daily rule; see below for how the interactive chart's intraday views confirm breakouts differently.

Undercut & Rally

Price dips below the previous day's low (a shakeout) but rallies back above that same low by the close — often a sign of a failed breakdown and a shift back to buyers.

Daily setups vs. intraday breakout confirmation

MA Bounce, Undercut & Rally, and the daily Breakout rule above decide what counts as a signal on the Daily Scan, the watchlist, and the single-ticker scanner. The interactive chart's daily and weekly views mark exactly these same daily signals.

The chart's intraday views (1m through 4h) work differently for Breakout only. Each intraday timeframe independently evaluates its own candles against the same PDH-based level the daily rule uses — a close above the level with volume above that timeframe's own 20-bar average — without waiting for the daily candle to close, and without requiring the full daily rule to have fired that day. A breakout confirmed on one timeframe does not imply it's confirmed on another. A candle that trades above the level but closes back below it is shown as a separate, muted "sweep" marker — informational only, never counted as a signal or included in any backtest.

The only backtest shown on the scanner page is the Execution Backtest below. It uses the same setup definitions, but enters on the intraday candle where a setup actually confirmed instead of at the next day's open.

Execution Backtest

For each day a setup fired, the Execution Backtest finds the actual intraday candle where it confirmed and enters at the open of the following candle. It prefers 5-minute data, then 15-minute, then 1-hour, and uses daily precision only for signals too old for any intraday history to reach.

Every trade targets 1:1 R — a deliberate trade-off favoring a higher win rate over a larger payoff per winning trade. The stop sits slightly below the signal day's low, with a buffer of 0.25 times that stock's own average daily range so one tick of noise does not stop it out. (Only on the daily-precision fallback, a breakout that gaps above the previous day's high uses a stop just under that high instead, since the signal day's own low is not a meaningful reference on a gap day.) A trade exits at whichever comes first, stop or target. If a single candle touches both, it counts as a stop. Intraday-precision trades have no time limit: they can be held overnight and across days, and one that has hit neither is marked Open rather than force-closed. The daily-precision fallback uses the older daily simulation instead, which closes a trade at the close after 10 trading days. A win is any trade that exits with a positive R.

Headline stats — trades, win rate, average R, maximum drawdown — count 5-minute-confirmed trades only. Anything resolved on a lower-precision timeframe is listed separately and never blended into those numbers.

Small samples. Yahoo Finance keeps only about 60 days of 5-minute data, so most tickers show a handful of 5-minute trades, or none. A win rate based on a few trades says very little, and a 100% or 0% result on a handful of trades is not evidence of anything. Older signals fall into the lower-precision list and are not counted in the headline numbers.

Look-ahead caveat. The Execution Backtest chooses its days using the daily rule, and the daily rule depends on that day's close and total volume, which are not known until 4:00 PM ET. A trade can therefore be entered earlier in the day on a day already known to have finished well. That likely overstates win rates and average R. Read the numbers as optimistic, not as what someone acting in real time would have seen.

Backtested results describe the past, not the future. Historical win rate and average return for a setup do not guarantee it will perform the same way going forward. Markets change, and a setup that worked well in one period can behave very differently in another. This tool is meant to organize signals and historical context — not to predict outcomes.