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 on a green candle. 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.

Each setup's historical performance (win rate, average R, trade count, max drawdown) is shown per-ticker on the scanner page, based on how that setup has actually performed on that specific stock over the past ~2 years. Trades target 1:1 R — a deliberate trade-off favoring a higher win rate over a larger payoff per winning trade.

Breakout's stop-loss sits slightly below the signal day's low (a small buffer sized to that stock's own average daily range, so it isn't stopped out by a single tick of noise). On a day the breakout candle gaps up above the previous day's high, the stop instead sits that same buffer below the previous day's high — the signal day's own low isn't a meaningful reference point on a gap day, since it can sit far below the level that was actually broken.

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 single-ticker scanner, and the historical win-rate stats shown per ticker. 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 win rate, average R, trade count, and max drawdown shown per ticker are the daily strategy's results only. They describe the daily Breakout rule, not the chart's timeframe-specific intraday confirmations, which are a separate strategy with its own (currently unpublished) backtest.

Execution Backtest

The scanner's per-setup "Execution Backtest" is a separate, more realistic simulation from the historical stats above: instead of entering at the next day's open, it finds the actual intraday candle where a setup genuinely confirmed and uses that real timestamp, preferring 5-minute data first, then 15-minute, then 1-hour, and finally daily precision only for signals too old for any intraday history to reach. Trades hold as long as needed — overnight, across multiple days — with no artificial timeout, and an unresolved trade is marked Open rather than force-closed. Headline stats reflect 5-minute-confirmed trades only; anything resolved on a lower-precision timeframe is shown separately, never blended into the same numbers.

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.