How Breadth Score is calculated
BreadthMarket measures S&P 500 participation across 11 GICS sectors. Every sector has equal weight, regardless of its size or market capitalization.
The closing-price calculation
- Calculate SMA20. Average each stock's split-adjusted closing prices over the calculation session and the preceding 19 trading sessions.
- Compare the close. A stock counts as above SMA20 only when its close is strictly greater than that average. Equality does not count.
- Measure each sector. Divide the number above SMA20 by the number of eligible constituents in that sector, then multiply by 100.
Breadth Score = sum of the 11 sector percentages · 0–1100
Breadth Percent = Breadth Score ÷ 11 · 0–100%
Breadth Percent is also called Sector Balanced Breadth. Both express the same measure: a score of 660 equals 60%.
Intraday readings and collection times
For an intraday reading, each eligible stock's accepted price fills the current session's place in the 20-session window. We average that price with the stored prices from the preceding 19 trading sessions, then compare the same accepted price with that average. Some earlier daily inputs may still be provisional.
If a new quote is unavailable or unusable, the most recent valid price may be carried forward after validation. A stock without usable inputs is omitted under the eligibility rules below. The displayed collection time records when the price batch was retrieved; it is not the trade time of every price in the reading.
Example: equal sectors, different stock counts
Suppose one sector has 8 of 10 eligible stocks above SMA20 (80%), while another has 40 of 100 (40%). The two sectors contribute 80 + 40 = 120 points to Breadth Score, even though they contain different numbers of stocks.
If each of the other nine sectors is at 60%, the full score is 120 + (9 × 60) = 660, and Breadth Percent is 660 ÷ 11 = 60%. This is an average of sector percentages. It does not mean exactly 60% of all individual S&P 500 stocks are above SMA20.
Eligibility and missing data
Each included stock needs a complete 20-session price window. Stocks without usable price inputs or the required history are omitted from that calculation, alongside exclusions based on trading history or permanently ceased trading. The full constituent count and resulting coverage are retained.
When a daily result enters published history
A daily result enters published history once its closing prices and the prior-session inputs it depends on have been confirmed. The dashboard can show a newer intraday or provisional reading while those checks are pending. Publication depends on completing the checks, rather than a fixed time of day.
What does historical rank mean?
Historical rank compares the latest reading with saved daily observations in a period ending on that reading's date. A rank of 80 means 80% of that period's readings were strictly lower. Tied readings do not count as lower; the latest reading is included once.
Rank requires complete trading-session coverage and at least 20 observations. Breadth Score and Breadth Percent share the same rank. Ranks and regime labels describe participation; they do not predict returns.
Example: 60% breadth and an 80th-percentile rank
Suppose the current score is 660 (60% breadth). A complete 20-session period, including the current session, contains 16 scores below 660, two equal to 660 and two above it. The historical rank is 16 ÷ 20 × 100 = 80. The two equal readings, including the current one, stay in the 20-session denominator but do not count as lower.
The 60% reading describes sector participation. The 80th-percentile rank describes how that reading compares with the selected period.