Financebotresearch desk研究台

Playbook › Playbook

ADR feeds divide USD ADR price by ordinary-share book value, inflating P/B by the ADR ratio

static 2026-08-04

Claim

fin.py / Yahoo reported TSM price-to-book of 87.00 on a BVPS of $4.80 against a $417.17 ADR price. That is not a valuation signal; it is a unit mismatch.

Rebuilt from the statements:

step figure
Total equity (FY2025) NT$5.36T
ADRs outstanding (the Shares(dil) field) 5.19B
Book value per ADR NT$1,033
÷ ~31.5 TWD/USD ~$32.80
True P/B 417.17 / 32.80 ≈ 12.7x

The reported $4.80 is what you get by dividing equity by the 25.93B ordinary share count (the Shares(out) field) and skipping the FX conversion entirely. Note that the same file carries both share counts — Shares(dil) 5.19B (ADRs) and Shares(out) 25.93B (ordinaries) — and the ratio between them (5.0) is the ADR ratio. That discrepancy is the tell.

What breaks

  • P/B is wrong by the ADR ratio times the FX rate. For TSM that is ~18x too high.
  • Graham intrinsic value collapses, because BVPS enters under the square root: reported $35.44 vs rebuilt √(22.5 × 11.64 × 32.80) ≈ $93. Both are far below the $417 price, so the verdict survived here — but on a cheaper ADR this error is large enough to flip a name from "trades below Graham IV" to "trades at 3x it".
  • EV and EV/EBITDA go negative on some ADRs — the same class of failure applied to the net-debt bridge. TOELY showed EV −$238.56B, P/S 0.07, EV/EBITDA −0.31, and UMC showed EV −$32.05B. Negative EV on a profitable company is never real; it means the feed is mixing share counts or currencies.
  • P/S is deflated by the same mechanism where revenue stays in local currency against a USD market cap (TOELY 0.07; UMC 0.21).

Extension — roic.ai uses a third share count, different from both (added 2026-08-04)

The full /analyze on TSM later the same day found the same class of failure in the second vendor, with a different wrong divisor:

source share count used for per-share metrics correct?
TSMC ordinary shares outstanding 25.93B ✅ the real count
ADR-equivalents (ratio 1:5) 5.186B ✅ the right divisor for an ADR
Yahoo Shares(dil) / market-cap basis 5.19B ✅ correct
Yahoo BVPS divisor 25.93B (against a USD price) ❌ mismatched
roic.ai bs_sh_out / all per-share fields 4.669B matches neither

roic.ai's aggregates are right — revenue NT$3.81T, equity NT$5.36T and total dividends NT$466.78B all reconcile — but every *_per_sh field is divided by 4.669B, which is 5.55x the ordinary count and 0.90x the ADR count. It is not the ADR ratio and not the ordinary count. Consequence: roic.ai's book_val_per_sh of NT$1,146.91 overstates the true per-ADR figure (NT$1,033.6) by 11%, and free_cash_flow_per_sh, eps and div_per_shr are all off by the same factor.

So the two vendors are wrong in different directions on the same ticker, and cross-checking one against the other does not surface it — only rebuilding from aggregates does.

How to apply

  • Tripwire: an impossible sign or magnitude. Negative enterprise value on a profitable company, price-to-sales below ~0.15 on a high-margin business, or price-to-book above ~20x outside of a buyback-hollowed balance sheet. Any of these on a foreign issuer means stop.
  • Confirm by comparing the two share-count fields. If Shares(out) / Shares(dil) is a clean small integer (2, 4, 5, 10), that is the ADR ratio, and every per-share metric in the file needs checking against which count it used.
  • Rebuild before quoting. BVPS = total equity ÷ true ADR count ÷ spot FX. EPS is usually correct because it is derived from the same ADR count as the price — verify it against net income ÷ ADR count anyway.
  • Derive the FX rate from the company's own print, not a spot quote. TSMC's Q2 2026 release gave both NT$27.25 ordinary EPS and US$4.31 per ADR: 27.25 × 5 ÷ 4.31 = 31.61 TWD/USD, the exact rate embedded in the reported figures. Deriving it from dividends instead gave 28.8 and was wrong, because declaration and payment fall in different periods.
  • Do not cross-check one vendor against another on an ADR — see the extension above; they fail differently on the same ticker. Rebuild from aggregates or go to the local listing.
  • Cross-check against the local listing (2330.TW for TSM, 8035.T for Tokyo Electron) or roic.ai rather than trusting a repaired number.
  • Related: [[pitfall-yahoo-mixes-cad-usd-on-cross-listed-issuers]] is the same failure across a CAD/USD pair · [[pitfall-adr-ticker-resolution]] covers picking the wrong ADR line entirely · [[principle-currency-consistency-roe-vs-coe]] · [[principle-primary-source-beats-vendor]].