Key Takeaways
Direct answer: Percent above moving average equals the count of issues trading above their moving average, divided by the eligible issue count, times 100. Eligible issues exclude any stock without enough price history to compute a valid moving average — a recently IPO'd stock with no real 200-day average, for example — so the denominator reflects only issues the calculation can legitimately measure.
- Percent above MA = (count above MA / eligible count) × 100, over a defined universe.
- The 50-day version is faster and more commonly used for intermediate-term breadth reads.
- The 200-day version is slower and more often used to characterize the broader trend regime.
- Eligible count excludes issues without sufficient price history, not the full universe — this distinction materially affects the result.
- Readings well above 80% or well below 20% are often described informally as stretched, but there is no universally agreed threshold.
The Formula: Count Above MA Over Eligible Count
As implemented in Swoopr's breadth calculations, percent above moving average is defined as: percent above MA = (count of issues trading above the moving average / eligible issue count) × 100. "Eligible issue count" is the operative detail — it is not simply the size of the full universe. Any issue without enough price history to compute the chosen moving average, such as a stock that IPO'd 30 trading days ago and therefore has no valid 200-day average yet, must already be subtracted out of the denominator by whoever assembles the eligible set before the ratio is calculated.
The implementation returns a defined "not applicable" result, rather than a divide-by-zero error, when the eligible count is zero — for example, a newly defined universe on its first trading day, before any issue has enough history to qualify. That distinction matters in a real system: a divide-by-zero either crashes the calculation or silently produces NaN/Infinity, either of which can corrupt a downstream chart or table. Returning an explicit "not defined" value instead lets the caller render "not available" cleanly and signals unambiguously that the reading genuinely cannot be computed yet, rather than that it happens to equal zero.
Common mistake
The common mistake is computing the percentage against the full universe size instead of the eligible count. If 40 of a 500-stock universe are too recently listed to have a valid 200-day average, dividing by 500 instead of the true 460 eligible issues silently understates the real participation rate among stocks the measure can actually assess.
Worked Example: 312 of 500 Eligible Issues
Illustrative numbers — not live market data.
Assume a defined universe where, on a given day, 500 issues are eligible for the 50-day moving average calculation (they all have at least 50 trading days of price history), and 312 of those eligible issues are trading above their own 50-day moving average.
Percent above 50-day MA = (312 / 500) × 100 = 62.4%.
A reading of 62.4% describes intermediate-term participation as majority-positive but not extreme: roughly three out of every five eligible stocks are trading above their own trend line, while nearly two out of five are not, even on a day the headline index might be up strongly if a handful of large constituents did the heavy lifting. The reading says nothing on its own about how far above or below the average any individual stock sits — a stock trading 0.1% above its 50-day average and a stock trading 15% above it both count identically in this measure.
What's the difference between using the 50-day and 200-day version?
The two versions of this measure use the identical formula, differing only in which moving average each issue is compared against, and that single choice changes what the number represents. A stock's 50-day average moves with roughly the last two-and-a-half months of trading, so it reacts relatively quickly to a shift in price direction — a stock can cross above or below its 50-day average within a matter of weeks during a meaningful move. A stock's 200-day average moves with roughly the last ten months of trading, so it reacts much more slowly, and a stock crossing its 200-day average generally reflects a more durable, longer-running shift in trend.
Because of that difference in responsiveness, the 50-day version of percent above MA is typically used for intermediate-term breadth reads — how the market's shorter-term momentum is distributed right now — while the 200-day version is more often used to characterize the broader trend regime: roughly, how much of the market is currently in a long-term uptrend versus a long-term downtrend. Neither version is more "correct" than the other; they are the same calculation applied at two different time horizons, and reading them together shows whether short-term participation and the longer-term trend regime agree or disagree.
Typical Reference Ranges — Convention, Not a Rule
Traders and analysts commonly describe readings well above 80% as "stretched" toward overbought participation, and readings well below 20% as "stretched" toward oversold participation, on the reasoning that when an unusually large or unusually small share of the market is above its own moving average simultaneously, that state has historically tended not to persist indefinitely. It's worth being explicit that these are informal, descriptive conventions passed down through technical-analysis practice, not a rule with a precise, universally agreed threshold — one source's "stretched" cutoff might be 85% or 75%, and there is no formal statistical basis fixing the number at exactly 80.
A reading in the stretched range also does not, by itself, predict an imminent reversal. Breadth participation has stayed above 80% for extended stretches during strong, broad bull-market advances, and has stayed below 20% for extended stretches during prolonged downtrends, without reverting on any predictable schedule. Treat these reference ranges as a way to describe the current state of participation relative to its own history, not as a trading signal on their own.
Common mistake
The common mistake is treating an 80% or 20% threshold as a hard rule that triggers an action. These figures are descriptive shorthand that different practitioners define slightly differently, not a formally defined boundary the underlying math produces.
Why does the eligible-issue count matter?
The eligible-issue count exists specifically to exclude issues the calculation cannot legitimately measure yet — most commonly, a stock that has traded publicly for fewer days than the moving-average period requires. A stock that IPO'd 30 trading days ago has no real 200-day moving average: there simply isn't 200 days of price history to average. Including that stock in the denominator as if it could be measured, or worse, arbitrarily counting it as "not above" its (nonexistent) average, would understate the true participation rate among the issues the measure can actually assess.
This is also why a well-built implementation returns an explicit "not defined" result rather than a divide-by-zero error when the eligible count itself is zero, instead of producing NaN or Infinity that could silently corrupt a chart or downstream calculation. The distinction between "zero eligible issues, so this reading doesn't exist yet" and "the reading happens to equal zero" is meaningful, and collapsing the two into the same numeric output would misrepresent what actually happened.
Misconceptions Versus Reality
| Misconception | Reality |
|---|---|
| The 50-day and 200-day versions should always show similar readings | They measure different time horizons and routinely diverge — a market can show strong short-term participation (high 50-day reading) while the longer-term trend regime (200-day reading) is still weak, or the reverse |
| Dividing by the full universe size is the same as dividing by the eligible count | Recently listed issues without enough price history for a valid moving average must be excluded from the denominator; dividing by the full universe instead silently understates true participation |
| Above 80% or below 20% is a precise, universally defined threshold | These are informal descriptive conventions used across technical-analysis practice; different sources use somewhat different cutoffs, and there is no formal statistical rule fixing the exact number |
| A stretched reading means a reversal is imminent | Breadth participation has remained stretched above 80% or below 20% for extended periods during strong trends without reverting on any predictable schedule |
Risks, Limitations, and Exceptions
- The measure treats every eligible issue equally regardless of how far above or below its moving average it sits, so it cannot distinguish a barely-above-average stock from one trading well above its average.
- Universe and eligibility definitions materially affect the result — a reading computed against the NYSE composite will differ from one computed against a narrower index, even on the same day.
- Reference ranges like "above 80%" or "below 20%" are descriptive conventions, not formally defined thresholds, and different sources apply them somewhat differently.
- A stretched reading is a description of the current state of participation, not a dated or guaranteed prediction of what price will do next.
- Data-vendor differences in how eligibility, corporate actions, and moving-average initialization are handled can produce different values for the same nominal date and universe.
Frequently Asked Questions
What does the percentage of stocks above a moving average measure?
It measures what share of a defined, eligible universe of stocks is currently trading above its own moving average, expressed as a percentage. Unlike the index level, which one large constituent can move on its own, this reading treats every eligible issue individually, so it directly shows how broadly a trend is shared across the market rather than concentrated in a few names.
What's the difference between using the 50-day and 200-day version?
The 50-day version reacts faster to recent price action and is typically used for an intermediate-term read on breadth, since a stock crosses above or below its 50-day average more readily than its 200-day average. The 200-day version moves more slowly and is more often used to characterize the broader trend regime — roughly, how much of the market is in a long-term uptrend versus a long-term downtrend. Neither version is more correct; they answer the participation question over different time horizons.
Why does the eligible-issue count matter?
The eligible count excludes issues that don't yet have enough price history to compute a valid moving average, such as a stock that IPO'd 30 days ago and has no real 200-day average. If those issues were left in the denominator, or if the calculation divided by the full universe regardless of eligibility, the percentage would silently understate true participation and the reading would not represent what it claims to represent.
Sources and Methodology
This guide follows the same market-data conventions documented across the market breadth cluster. Moving-average eligibility and corporate-action handling follow standard NYSE and Nasdaq market-activity data conventions; different data providers can apply slightly different rules for adjusting historical prices around splits and dividends, which can shift exactly when an issue crosses above or below its moving average.
The worked example on this page uses a clearly labeled illustrative dataset, not live market data. This content was reviewed by the Swoopr Editorial Team in August 2026.
Related Reading
- Market Breadth & Participation — the parent hub for this content group, covering every breadth indicator on Swoopr.
- New Highs vs. New Lows — the sibling trend-position measure that tracks price extremes rather than trend-line position.
- McClellan Oscillator and Summation Index — a smoothed breadth-momentum measure that complements this trend-position lens.