Market breadth and how to read the passing count
Market breadth is how many stocks are taking part in a market's move. QM Screener measures it the most direct way a screener can. After every close it counts how many stocks passed each screen. We call each trading day a session, and the count comes from the same run that fills the table.
The Breadth card on the dashboard shows that count for the screen you're looking at, and its history chart shows how the count has changed over time.
Why the count matters
A momentum screen only passes a stock that's already doing what the strategy wants. It's trending, it's holding above its moving averages and it's beating the market. So the number of stocks that pass tells you how much the market is working for that strategy right now. When the count is high, many stocks fit that strategy's rules and the list is long. When it's low, few do and the list is short.
What you do with the count is your call. The card is a screen result. It is not advice. There's no regime label on it, so it never says bull market, correction or risk-off. It gives you a count and enough context to judge it.
How to read the card
On a phone or a narrow window the card sits above the list in Table view. Its first line shows today's count and how it compares with the recent average, and its second line has the sparkline, the index buttons and the History button. On a wide screen the card is on the Market tab and reads differently (see "On a wide screen" below), and the index buttons sit in the bar along the bottom of the page.
- Today's count. How many stocks passed the current screen at the last recorded session. Hover over it to see the screen's name and the session date. If you pick a different screen in the screen picker, the count changes with it.
- The 20-session average and the arrow. The 20-session average is the mean count over the last 20 sessions on the same screen. The arrow points up when today's count is above that average and down when it's below. It shows
=when they're equal. An up arrow means more stocks qualified today than on a typical recent day. After a screen's rule changes, the average and the arrow wait until 20 sessions have run under the new rule (see below). - The sparkline. A tiny chart of the count over the last 60 sessions. On a phone or a narrow window it's scaled to its own high and low, so look at the shape, not the height. The wide screen's starts at zero.
- The SPY, QQQ and IWM buttons. These are three index funds. SPY tracks the S&P 500, QQQ tracks the Nasdaq-100 and IWM tracks the Russell 2000. A simple moving average (SMA) is the plain mean of the last few closes. On the card, each button shows an up arrow when the fund's last close is at or above its 50-session SMA, and a down arrow when it's below. In the bottom bar of a wide screen they show the fund's move on the day instead. Press a button to open that fund's chart. The arrows and the day's moves use the up and down colours you picked in Appearance.
- History. Opens the chart described below. On a wide screen the sparkline on the Market tab opens it.
Look at the count and the indexes together. Say the count is rising while SPY is below its average. Then the strategy's stocks are holding up better than the index. If the count is falling while every index is above its average, fewer and fewer stocks are carrying the index.
On a wide screen
In a window wider than 960 pixels the card is at the top of the Market tab and reads differently.
- The count. How many stocks passed the screen you're on at the last recorded session. It says today only when that session is today's close, and names the session otherwise.
- Against a week ago. The change from 5 recorded sessions earlier, in the up and down colours you picked in Appearance. Hover over it to see both counts and their dates. It's left out until 6 sessions have run under the screen's current rule, and when the session it compares with is more than 10 days earlier, which can happen when sessions are missing from the record.
- The sparkline. The count over the last 60 sessions, or as many as are recorded, and the note above it says how many. It starts at zero. Press it, or that note, for the History panel.
- Above SMA20, SMA50 and SMA200. The share of all measured US stocks that closed above their 20-, 50- and 200-day SMA at that session. They describe the whole market, not the screen. A stock with less than 200 sessions of history counts as below its 200-day SMA, and a dash means no 200-day share was recorded for that session.
The index buttons sit in the bar along the bottom of the window and show the day's move.
The history chart
On a wide screen the Market tab shows a 60-session sparkline, and pressing it opens the full chart. On a phone or a narrow window History opens it. Either way it opens on top of the page, under the card. To close it, press the same button again, press Escape or click the dimmed page around it. The dashboard doesn't remember that it was open, so after a reload the panel is always shut.
- Screen chips. The chart shows one screen at a time. It opens on the screen in the screen picker, the one the card counts. Click another chip to swap the bars, the average and the percentile over to that screen.
- Bars. There's one bar per session. Its height is that session's passing count on the screen you chose.
- The dashed line. This is the 20-session average of the bars. We work it out over the whole series before cutting it down to the range you chose, so the line is a true average even at the left edge. Where a screen's rule changed, the line breaks and starts again.
- Index chips. Pick SPY, QQQ or IWM to draw that fund as a thin, muted line against the right-hand axis. The fund's ticker sits at the top of that axis, and the axis shows the lowest and highest close in view. None removes the line.
- Range buttons. Pick 3M (63 sessions), 6M (126 sessions), 1Y (252 sessions) or All (every session in the history the dashboard loaded, up to 1,500 calendar days). Each one counts back from the newest session. The chart opens on 6M, and the range you pick stays until you reload the page. If the screen you chose has no history as far back as the start of the range, a small "from" note gives the date its bars begin.
- The percentile. It's shown next to the controls and follows the screen chip you chose. It ranks today's count against the last 252 sessions of that screen, which is about a year of trading days. A percentile of 90 means today's count is higher than 90 percent of those sessions. If less than a year has been recorded, it ranks against the sessions there are and tells you how many. It counts only sessions under the screen's current rule.
- The tooltip. Hover over a session, or tap it, to see the date, the passing count, the 20-session average and the percentile as of that day. It also shows the share of measured stocks above their 50-day SMA, for sessions where that was recorded. When SPY, QQQ or IWM is on in the index chips, the tooltip adds that fund's close. On a wide screen the card on the Market tab shows all three shares for the last session. The API section below covers them too.
- Copy chart. It's the copy icon next to the range buttons. It copies the chart you're looking at to your clipboard as an image, with the screen, the range and the percentile written above it, and shows a check mark when it's done. If your browser won't allow that, it saves the image as a file instead.
Replayed sessions
The nightly run only started recording counts when this feature shipped. For the sessions before that, we worked the counts out afterwards from saved prices. We call those sessions replayed.
History before the feature shipped was replayed against today's universe, so names that have since delisted are missing from those sessions.
The dashboard chart draws a replayed session like any other session. The API marks each one: backfilled is true on a replayed session, and the response carries the note above. A replay never overwrites a session the nightly run recorded.
In practice, a replayed count can come out lower than the real count on that day, because a stock that has delisted since can't show up in it. The shape of the history is still useful. Just be careful when you compare the exact number on a replayed session with one on a recorded session. The API's backfilled field tells you which is which.
The series goes back as far as we could replay it from saved prices, and it grows by one session after every close. The card stays hidden until at least one screen has history.
When a screen's rule changes
A count is only comparable with counts made under the same rule. On October 3, 2026 the Momentum Continuation screen lowered its relative-strength floor from above 93 to above 85, and its count roughly doubled from the next session on because the rule changed, not the market. So the average, the arrow and the percentile only compare sessions under the current rule, and they stay blank until 20 sessions have run under it. The bars before the change stay on the chart.
Getting the numbers in code
Breadth is public. You don't need a key or an account, and everyone gets the same numbers.
- HTTP. Call
GET https://qmscreener.com/api/v1/breadth?days=N.Nis how many calendar days of history you want, from 1 to 1500. Leave it out and you get 365./api/breadthis the same endpoint without the version number. Each response comes with a weakETag. Send it back and you'll get a304until the next run. - MCP. The
market_breadthtool onhttps://qmscreener.com/mcpreturns the same document. You can pass an optionalscreento get just one screen back. That's the screen's identifier, whichlist_screensgives you. It also takes the same optionaldays. It's one of the public tools, so an AI assistant doesn't need a token to use it.
Below is a response cut down to one screen, one session and one index. The numbers are made up. The field names are real.
{
"as_of": "2026-09-23",
"days": 365,
"note": "History before the feature shipped was replayed against today's universe, so names that have since delisted are missing from those sessions.",
"screens": {
"vcp": {
"label": "VCP",
"series": [
{
"date": "2026-09-23",
"passing": 41,
"near_miss": 17,
"value_n": 9,
"screened": 3120,
"universe_n": 5480,
"pct_above_sma20": 58.4,
"pct_above_sma50": 61.2,
"pct_above_sma200": 64.9,
"backfilled": false,
"recorded_at": "2026-09-23T20:31:07Z",
"rs_gate": null
}
]
}
},
"indexes": {
"SPY": [{"date": "2026-09-23", "close": 571.3}]
}
}
screens lists every registered screen. Each one has its display label and a series, oldest first. A screen with nothing recorded has an empty series. The key is never missing.
passing, near_miss and value_n are the sizes of the three lists (Passing, Near misses and Value). screened is how many stocks the screen's rules were applied to. universe_n is how many tickers the run started with. The three pct_above_sma* fields are the share of measured stocks above their 20-, 50- and 200-day SMA. The 200-day one is null on screens that download less than 200 sessions of history.
rs_gate is the relative-strength floor a count was made under, and null on screens that have no such floor. Compare a session only with sessions that share it.
backfilled is true on a replayed session. indexes holds the SPY, QQQ and IWM closes over the same window. note is the replay caveat from above. If you show these rows anywhere, show the caveat with them.
Where to find the card
On a wide screen the card is on the Market tab. The tab bar above the chart reads Chart, Table and Market, and the rail of icons down the left edge has a Market button too. The Market tab holds the Breadth card and the sector strength strip, with every group of tiles shown. The screen picker heads the list down the left side of the page, and the bar along the bottom says which session's close the data is from and carries the SPY, QQQ and IWM buttons.
On a phone or a narrow window the dashboard is one column. The app bar at the top has the screen picker (which is also the page title) and the ... menu. A narrow window also shows the time the data was last updated and the theme toggle there; on a phone the app bar holds the Watchlist and Export buttons instead. Under it is the list bar: the list tabs (Passing, Near misses, Value), Filters, which opens the filter panel, and the Table and Chart view switch, with Watchlist and Export beside them on a narrow window. Then, in Table view, the market row holds the Breadth card and under it the sector strength strip; Chart view gives that room to the chart.
Frequently asked questions
Is a high passing count a signal to buy?
No. The count is a screen result. It is not advice. There's no regime label on the card, so nothing on it says bull, bear, risk-on or risk-off. It tells you how many stocks cleared one screen's rules at the last close. What you do with that is up to you.
Which sessions in the history chart were replayed?
The ones from before the feature shipped. The nightly run hadn't started recording yet, so we worked out their counts later from saved prices. History before the feature shipped was replayed against today's universe, so names that have since delisted are missing from those sessions. The dashboard chart draws them like any other session. The API marks each session as backfilled or not, so you can tell them apart there.
Why is there no Breadth card on my dashboard?
The card stays hidden until there's recorded history to show. It appears as soon as any screen has some. If the screen you're on has none yet, the card tells you so instead of showing a number. On a wide screen the card is on the Market tab, so the Chart and Table tabs don't show it. On a phone or a narrow window it's shown in Table view: Chart view gives that room to the chart.
Can I compare the count on one screen with another?
Compare a screen with itself. Each screen has its own rules. One that tests eight trend conditions usually passes fewer stocks than one that tests two. So the useful question is how today's count compares with the same screen's recent history. That's what the average and the percentile measure.
Do I need a subscription to read breadth?
No. The counts are public. Every account sees the card on its dashboard, free accounts included, and you can get the history over HTTP or MCP without a key. A subscription gets you the stocks behind each count.
Read next
- How to screen for momentum stocks covers the measurements every screen is built from.
- Momentum setup tags explains what BASE, TIGHT, TREND, EXT and PARA mean on a row.
- Momentum screens over MCP shows how to connect an AI assistant, including the
market_breadthtool. - The Momentum Pullback screen covers the newest screen, which narrows Momentum Continuation to names back at their short averages.
- Docs has the HTTP API and the error format.
- All guides lists everything we've published.
This page is for education. It is not financial advice. QM Screener lists stocks that passed published filters and counts them. It doesn't recommend trades, size positions or know anything about your situation. It covers US stocks, uses end-of-day data and refreshes once per trading day after the close.