Financebotresearch desk研究台

Playbook › Playbook

EPS and share-count CAGRs use the weighted average, which cannot see a step change in shares

static 2026-08-27

Claim

The two share counts in a filing answer different questions and are not interchangeable:

  • Weighted-average diluted shares — an income-statement construct. It weights each share by the fraction of the period it existed. It is the correct denominator for EPS for that period and it is the only thing vendors use to build EPS, P/E and share-count CAGRs.
  • Ordinary shares outstanding — a balance-sheet line, a point-in-time count. It is what you actually own a fraction of, and it is what market cap is computed from.

In a normal year with steady buybacks or drip issuance the two track each other and nobody notices. After a discrete issuance late in a period they diverge violently, and every vendor ratio silently picks the wrong one.

The case that caught it — TSLA, 2026-08-27

Quarter end Ordinary shares outstanding Weighted-avg diluted
2025-06-30 3,224M 3,519M
2025-09-30 3,324M 3,526M
2025-12-31 3,751M (+427M) 3,539M
2026-03-31 3,755M 3,538M
2026-06-30 3,949M (+194M) 3,540M

The balance-sheet count rose 22.5% in twelve months. The weighted average rose 0.6%.

Two causes, both disclosed in 10-Q Note 9: the 2025 CEO Performance Award (~423.7M shares) ratified 2025-11-06, and Musk's exercise of 303,960,630 options at $23.34 on 2026-06-16 after the Delaware Supreme Court reinstated the 2018 award. The June exercise landed two weeks before quarter-end, so it moved the weighted average by roughly 2/13ths of its true weight.

What broke

Field Reported Truth
fin.py Shares(dil) CAGR (3y) 0.5% +22.5% in 12 months
PE(ttm) 331.6x 368x on shares actually outstanding
Revenue/share, FCF/share off the vendor count flattered by ~12% —

The P/E error has a specific shape and it is always in the same direction. Yahoo computes market cap from sharesOutstanding (3.949B — correct) but EPS from the weighted average (3.54B). Numerator right, denominator wrong, so the multiple is understated. The gap is exactly the ratio of the two counts: 3,949 ÷ 3,540 = 1.116, and 331.6 × 1.116 = 370. It reconciles.

Note the asymmetry with a buyback. A large buyback late in a period produces the mirror error — the weighted average overstates the count, so EPS is understated and the P/E reads too high. Same mechanism, opposite sign, and much rarer to matter because buybacks are usually gradual. Issuance is lumpy; that is why this pitfall almost always makes a stock look cheaper.

How to spot it in thirty seconds

  1. Compare Ordinary Shares Number on the quarterly balance sheet against Diluted Average Shares on the quarterly income statement. If they differ by more than ~3%, stop and find out why. On TSLA the gap was 11.6%.
  2. Never quote a share-count CAGR from a vendor. Read the balance-sheet count at the two endpoints yourself. fin.py's Shares(dil) trend row is the weighted average and will report ~0% through a 20%+ dilution event.
  3. Cross-check against a second vendor's balance-sheet field. roic.ai's bs_sh_out gave 3,216M FY2024 → 3,751M FY2025 (+16.6%), independently confirming the step was real and not a Yahoo artifact.
  4. Look at paid-in capital. TSLA's APIC went $40.4B → $45.9B in twelve months. A jump in APIC without a matching jump in retained earnings is issuance, and it is visible even when the share-count fields disagree.

What triggers it

Any discrete, dated issuance — and all of these are findable in advance:

  • A reinstated, ratified or newly granted executive equity award (the TSLA case, twice)
  • An acquisition closing with a stock component (watch for this on RKLB — the Iridium deal issues ~42M+ shares at close and the guided count goes 641M → ~700M)
  • A PIPE, ATM block, or converted convertible settling near a period end
  • A secondary offering

How to apply

  • Compute every per-share metric off the balance-sheet count, not the vendor's. This is analysis_notes.md §1.4 and §1.6 — per-share is what I own — and the vendor cannot do it for you.
  • When the tripwire fires, restate the trailing P/E before comparing the name to anything.
  • The forward P/E is usually less affected, because consensus share counts are built from the post-issuance base — but confirm rather than assume, and check the fiscal year while you are there ([[pitfall-vendor-forward-eps-is-the-wrong-fiscal-year]]).
  • Related: [[pitfall-diluted-share-count-toggles-across-profit-loss]] (a different mechanism — the diluted count contracts when a company crosses into a loss, because dilutive securities become antidilutive) · [[pitfall-yahoo-share-count-dual-class-fpi]] (the count is a share class problem rather than a timing problem).

History

  • 2026-08-27 — Established from the TSLA analysis. Filed static: this is permanent GAAP mechanics plus a permanent vendor design choice, not a feature of any market regime.