Strasmore Research
Learn Matt ConnorBy Matt Connor · data as of August 9, 2026 · refreshed weekly

Market Cap and Which Share Count It Uses

Market cap is price times a share count, but which one? Shares outstanding versus the weighted average count and float, and how to spot a stale vendor number.

Market cap is a share price multiplied by a share count, and the only question worth asking is which count. The standard answer is shares outstanding: every share the company has issued and not retired, as of the cover page of its most recent quarterly or annual report. Two neighboring numbers get mistaken for it: the weighted average share count, which exists for earnings per share, and free float, which is what index providers weight by.

Which share count does market cap use?

Shares outstanding is a point-in-time count: the number of shares in existence on a stated date, held by insiders, funds, index trackers, and everyone else. A company prints that figure on the cover page of each quarterly and annual report, dated a few weeks after the period the report covers. Market cap is that count multiplied by the latest price. A stock at $50 with 200 million shares outstanding is a $10 billion company; at $55 the same 200 million shares make it $11 billion.

The weighted average share count is a different construction. It lives on the income statement, and it exists to make earnings per share meaningful. Shares issued halfway through a quarter were only outstanding for half of it, and the basic weighted average count weights each share by the fraction of the period it existed. The diluted version adds the shares that would come into existence if options, restricted stock units, warrants, and convertible securities converted. Both are averages over a window that has already closed. Neither counts anything on any single day.

You can measure the mismatch instead of taking anyone's word for it. Divide a published market cap by the same session's closing price and the share count behind it falls out.

QueryThe recovered share count against the filed diluted count
The exact SQL behind every number
WITH vendor AS
(
    SELECT
        ticker,
        argMax(toFloat64(market_cap), date)             AS mkt_cap,
        argMax(toFloat64(price), date)                  AS px,
        argMax(formatDateTime(date, '%b %e, %Y'), date) AS priced_on
    FROM global_markets.stocks_ratios
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'JPM', 'XOM')
      AND price > 0
      AND market_cap > 0
    GROUP BY ticker
),
filed AS
(
    SELECT
        ticker,
        argMax(toFloat64(diluted_shares_outstanding), (filing_date, period_end))   AS diluted,
        argMax(formatDateTime(period_end, '%b %e, %Y'), (filing_date, period_end)) AS period_covered
    FROM
    (
        SELECT
            arrayJoin(tickers) AS ticker,
            filing_date,
            period_end,
            diluted_shares_outstanding
        FROM global_markets.stocks_income_statements
        WHERE hasAny(tickers, ['AAPL', 'MSFT', 'NVDA', 'KO', 'JPM', 'XOM'])
          AND timeframe = 'quarterly'
          AND diluted_shares_outstanding > 0
    )
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'JPM', 'XOM')
    GROUP BY ticker
)
SELECT
    v.ticker                                                      AS ticker,
    round(v.mkt_cap / v.px / 1e6)                                 AS implied_shares_mm,
    round(f.diluted / 1e6)                                        AS filed_diluted_shares_mm,
    round(abs(v.mkt_cap / v.px - f.diluted) * 100 / f.diluted, 2) AS gap_pct,
    f.period_covered                                              AS period_covered,
    v.priced_on                                                   AS priced_on
FROM vendor AS v
INNER JOIN filed AS f ON f.ticker = v.ticker
ORDER BY gap_pct DESC
Run this yourself

Across these household names the recovered count and the filed diluted count sit between 0.24% and 4.43% apart. The widest split belongs to JPM, where 2658 million recovered shares meet 2782 million on the statement for the period ended Dec 31, 2025. A company retiring stock through a quarter finishes with fewer shares than its own quarterly average. Both counts are correct, and they answer different questions.

How fast does the count move between reports?

Two mechanics move the count between filings. Buybacks retire shares and lower it. Issuance raises it: employee stock compensation vesting each quarter, secondary offerings, convertible notes converting, and acquisitions paid in stock. A large repurchase program grinds the count down quarter after quarter, and every per-share figure moves with it. Dividends show up in a holder's total return against price return. Buybacks show up here, in the count.

QueryApple's basic and diluted share counts, quarter by quarter
The exact SQL behind every number
SELECT
    toString(period_end)                                                    AS quarter_end_date,
    formatDateTime(period_end, '%b %Y')                                     AS quarter_label,
    round(argMax(toFloat64(basic_shares_outstanding), filing_date) / 1e6)   AS basic_shares_mm,
    round(argMax(toFloat64(diluted_shares_outstanding), filing_date) / 1e6) AS diluted_shares_mm
FROM global_markets.stocks_income_statements
WHERE has(tickers, 'AAPL')
  AND timeframe = 'quarterly'
  AND period_end >= '2021-01-01'
  AND basic_shares_outstanding > 0
  AND diluted_shares_outstanding > 0
GROUP BY period_end
ORDER BY period_end
Run this yourself

Over this stretch the diluted count went from 16929 million shares in Mar 2021 to 14810 million in Dec 2025. The two lines run close together and slope the same way, and the distance between them is the overhang from options and restricted stock units: 14810 million diluted against 14748 million basic in the last period on the chart. Every point on those lines is an average for a quarter that had already closed when it was published. A live price multiplied by any of them is part current number and part historical one, which is the trade every data source makes. The mechanics behind the slope are covered in buybacks against dividends.

Why market cap and index weight disagree

Free float is shares outstanding minus the shares not realistically available to trade: founder and family blocks, government stakes, strategic corporate cross-holdings, and unvested or restricted stock. Major index providers weight members by float adjusted market cap rather than full market cap, since an index fund can only buy shares that are actually for sale. Our guide to what a stock float is walks through how that adjustment gets set.

Work a hypothetical company through both figures. It has 1,000 million shares outstanding at $40, giving a $40 billion market cap. Founders hold 250 million of those shares in a block that never comes to market, leaving a float of 750 million shares and a float adjusted value of $30 billion. In an index whose members total $30 trillion of float adjusted value, this company earns a weight near 0.10%. Weighting by the full $40 billion would have put it near 0.13%. Neither number is a bug in the other. Market cap answers what the whole equity is worth. Index weight answers how much of a fund's money the purchasable shares can absorb.

That is how a company can rank fifth by market cap in a market and sit below the seventh name by index weight. Concentrated insider ownership narrows the float, and the weight narrows with it.

One company, two tickers

A dual class company is one business with two ticker symbols, usually separated by voting rights. Alphabet is the familiar case. Vendors handle it two ways, and both are defensible. Some print the whole company's market cap against every class ticker, on the view that the business has one value. Others split the value by class and count only the shares of that class.

QueryDual class tickers and the market cap printed against each
The exact SQL behind every number
SELECT
    ticker,
    round(argMax(toFloat64(market_cap), date) / 1e9, 1)                 AS market_cap_bn,
    round(argMax(toFloat64(market_cap) / toFloat64(price), date) / 1e6) AS implied_shares_mm,
    argMax(formatDateTime(date, '%b %e, %Y'), date)                     AS priced_on
FROM global_markets.stocks_ratios
WHERE ticker IN ('GOOGL', 'GOOG', 'FOXA', 'FOX')
  AND price > 0
  AND market_cap > 0
GROUP BY ticker
ORDER BY market_cap_bn DESC
Run this yourself

Read the panel in pairs. GOOGL carries a market cap of $4333.1 billion and GOOG carries $4322.9 billion. Where two classes of one company show the same value, the vendor is aggregating, and the 12230 million implied shares on that row is the whole company's count divided into a single class's price rather than a real count of that class. Where the values differ, each class is counted on its own and the two rows add up to the business.

The consequence shows up in screens and totals. Summing market cap across a list of tickers double counts every aggregated dual class name in it. Check one pair before trusting any total: if both rows print the same value, one of them has to come out of the sum.

How to tell whether a share count is stale

Every published share count has an age. It was read from a report covering a period that had already ended when the report appeared, and it stands until the next one lands. A buyback executed last week is nowhere in it.

QueryDays since the period each filed share count covers
The exact SQL behind every number
SELECT
    ticker,
    toUInt32(dateDiff('day', last_period, today())) AS report_age,
    formatDateTime(last_period, '%b %e, %Y')        AS period_covered
FROM
(
    SELECT
        arrayJoin(tickers) AS ticker,
        max(period_end)    AS last_period
    FROM global_markets.stocks_income_statements
    WHERE hasAny(tickers, ['AAPL', 'MSFT', 'NVDA', 'KO', 'JPM', 'XOM', 'WMT', 'PG'])
      AND timeframe = 'quarterly'
      AND diluted_shares_outstanding > 0
    GROUP BY ticker
)
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'JPM', 'XOM', 'WMT', 'PG')
ORDER BY report_age DESC
Run this yourself

Measured from the end of the period each count covers, the oldest here is WMT at 282 days, and the most recent is KO at 37 days. Fiscal calendars account for most of the spread. A company closing its quarter in January sits on a different rhythm from one closing in December, and this panel mixes both.

Two checks keep the number honest. Divide the market cap by the same session's price and compare the recovered count against the last filed one, as the first panel does; when they disagree by more than a percent or so, look for which report the source last read. The second check is stock splits. A split multiplies the count and divides the price on the same morning, and a source that updates one leg before the other prints a market cap wrong by the split factor until the mismatch clears.

How these counts were built

Share counts here are the basic and diluted weighted average figures from filed income statements, keyed on the period each statement covers rather than on any filing timestamp. The age column measures days from the end of that period to today, so a January fiscal quarter always looks older than a December one at the same point in the calendar. Market caps and closing prices come from the daily ratios snapshot, and the recovered count is that market cap divided by that session's price, both read from the same date.

FAQ

Is market cap price times shares outstanding or shares issued?

Shares outstanding. Issued shares include stock the company has repurchased and holds in treasury, which carries no vote and no dividend and is excluded from the outstanding count. Treasury stock sits on the balance sheet as a negative equity line, and leaving it in overstates the company.

What is the difference between shares outstanding and weighted average shares?

Shares outstanding is a count on one date, printed on a report's cover page. Weighted average shares is an average across a reporting period, weighted by how long each share existed, and it exists to make earnings per share comparable across a quarter in which the count changed. Market cap uses outstanding; earnings per share uses the weighted average.

Why is a company's index weight lower than its market cap suggests?

Index providers weight by float adjusted market cap, which strips out shares locked in blocks that do not trade. A company with heavy founder or government ownership has a float well below its outstanding count, and its index weight comes down in the same proportion.

How often does the share count change?

Constantly in reality, quarterly in the data. Buybacks, employee stock vesting, option exercises, and convertible conversions move it week to week, while the published count updates only when the next report lands. That gap is the staleness every vendor number carries.


Every panel here carries the exact SQL beneath it. To recover the share count behind a market cap for a name that is not on this page, ask for it in plain English on the Strasmore terminal.

#market cap#shares outstanding#float#index weights#fundamentals