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, so the denominator reflects only issues the calculation can legitimately measure.
Key Takeaways
- 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 Investment'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.
The Denominator Is Not the Whole Universe
The eligible count is the part of this formula most often glossed over and it materially changes the answer. Issues without enough price history to compute a valid moving average are excluded from the denominator, so the reading describes the subset the calculation can legitimately measure rather than the index as listed. After a period of many new listings, the eligible set and the full universe can differ enough to matter.
The measure is also binary per issue. A stock a fraction above its moving average and one trading far above it each contribute the same single count, which means the reading captures how many are participating and nothing about how strongly. Two markets with identical percentages can be in quite different states.
Reference ranges deserve less authority than they get. Descriptions like above 80% being stretched or below 20% being washed out are informal conventions that different sources apply differently, and there is no formal threshold behind either. They are useful vocabulary and poor triggers.
Finally, the moving-average choice frames the question. The 50-day version moves faster and speaks to the intermediate picture; the 200-day version is slower and characterises the broader regime. A figure quoted without saying which one, and over which universe, is not reproducible.
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.
Why does this measure stay low during a sharp recovery?
Because a constituent has to climb back above an average that is itself still falling from the preceding decline. Early in a rebound the average is dropping toward price at the same time price is rising toward it, and until they cross the constituent is not counted. The reading can therefore remain depressed well into a recovery that is already visible on the index chart.
Does this measure trend the way a cumulative breadth line does?
No, and the difference is structural. The percentage is bounded between zero and one hundred, so it cannot accumulate: a long period of broad strength pins it near the top rather than carrying it higher. That makes it well suited to comparison across different periods and poorly suited to the kind of divergence work that relies on comparing a level today with a level years ago.
Should the underlying average be simple or exponential?
The convention is a simple moving average, and published reference ranges assume it. An exponential version responds faster, so constituents cross it earlier and the resulting percentage turns sooner and reaches different extremes. Neither is more correct, but the two produce distinct series, and comparing a reading built on one against commentary written about the other is a silent mismatch.
What does it mean when the 50-day and 200-day versions disagree?
That short-term and long-term participation are describing different things. A high 50-day reading with a low 200-day reading means many constituents have recovered above a recent average while remaining below a longer-term one, which is arithmetically what an early rebound from a deep decline looks like. The reverse configuration describes recent weakness within an otherwise intact longer-term structure.
Can this measure be computed on a sector or an equal-weighted index?
Yes, for any defined constituent set. Sector versions are common and useful precisely because the index-wide figure averages sector differences away, so rotation between groups is invisible in the headline number and obvious in the sector breakdown. The calculation is unchanged; only the universe differs, and reference ranges from the index-wide series should not be carried over.
Why do two providers report different percentages for the same day?
Price adjustment is the usual cause. If one provider computes the moving average on dividend-adjusted prices and another on unadjusted prices, the two averages sit at different levels, and every constituent trading near its average can fall on either side. Universe definition and the handling of constituents with insufficient history account for most of the remainder.
References
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. Key reference sources include:
- CMT Association, Technical Analysis Body of Knowledge and Research: cmtassociation.org: professional body of knowledge covering moving-average-based breadth measures.
- NYSE, Historical Market Data: nyse.com/market-data/historical: exchange-level price-history conventions this measure is built on.
- Nasdaq, Market Activity: nasdaq.com/market-activity: issue-level price data for a comparable universe.
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.