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.

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.

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.

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.


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.