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 above the table shows that count for the screen you're looking at. Its History panel 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, the market is rewarding the strategy and you have setups to pick from. When it's low, the market isn't rewarding it. Most traders stand aside or trade smaller until that changes.
You make that call yourself. 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
The card has two lines. The first shows today's count and how it compares with the recent average. The second has the sparkline, the index buttons and the History button.
- 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 at the top of the page, 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. - The sparkline. A tiny chart of the count over the last 60 sessions. It's scaled to its own high and low, so look at the shape, not the height.
- 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. 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. Press a button to open that fund's chart. The arrows use the up and down colours you picked in Appearance.
- History. Opens the panel described below.
Look at the count and the index arrows 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.
The History panel
History opens on top of the page and covers the whole market row. To close it, press the History 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 app bar, 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.
- 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. 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.
- 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. A replayed session is labelled as replayed. When SPY, QQQ or IWM is on in the index chips, the tooltip adds that fund's close. The shares above the 20-day and 200-day SMA are in the data too. The API section below covers them.
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.
Every place that shows the history tells you this. On the chart, replayed sessions have a shaded background and their bars are drawn lighter. The tooltip labels each one as replayed too. A session the nightly run recorded is drawn at full strength, and a replay never overwrites it.
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 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.
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"
}
]
}
},
"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.
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
The top of the dashboard has three rows. The app bar has the screen picker (which is also the page title), the time the data was last updated, the theme toggle and the ... menu. Under it, the market row shows two cards side by side. Breadth comes first, then the sector strength strip. On a narrow screen they stack. Next come the list tabs (Passing, Near misses, Value) and then the list bar. The list bar has Filters, which opens the filter panel, Watchlist, the Table and Chart view switch, and Export.
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.
Why are some sessions in the History chart drawn lighter?
Those sessions were replayed. 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 lighter bars and the shaded background mark exactly those sessions, and the tooltip labels each one as replayed.
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.
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. - 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.