Financebotresearch desk研究台

Playbook › Playbook

Yahoo mixes reporting currency and quote currency on cross-listed issuers

slow 2026-07-31

Claim

Observed on CCJ (Cameco — reports CAD, trades USD on NYSE, FX ≈ 0.728). Yahoo's derived ratios split cleanly into two groups:

Field Yahoo Recomputed Status
EPS (ttm), BVPS US$1.06, US$11.56 ✅ converted to USD
P/E (ttm) 81.49 86.38 ÷ 1.06 = 81.5 ✅ correct
P/B 7.48 86.38 ÷ 11.56 = 7.47 ✅ correct
P/S 10.63 37,620 ÷ (3,482 × 0.728) = 14.84 −28%
EV/Revenue 10.83 14.81 ❌ understated
EV/EBITDA 42.88 44.9 ❌ understated

The mechanism: per-share fields get FX-converted, aggregate income-statement fields don't. Any ratio dividing a USD market cap / EV by a CAD revenue / EBITDA is off by exactly the FX factor — here 27%, always in the flattering direction.

This is more dangerous than a random error because it makes an expensive stock look cheaper, and the affected ratios (P/S, EV/EBITDA) are precisely the ones used to screen commodity and asset-heavy names where P/E is unreliable. On CCJ it was the difference between "43x EV/EBITDA, rich" and "45x, and the mining stub is 29–32x" — the latter carried the verdict.

Guard

For any issuer whose reporting currency ≠ quote currency:

  1. Never take P/S, EV/Revenue or EV/EBITDA from Yahoo. Recompute: USD market cap ÷ (reported aggregate × FX).
  2. Derive the FX rate from the filing itself where possible, not a rate feed — Cameco disclosed C$93.13/lb = US$67.79/lb, giving 0.728 directly at the company's own translation. A revenue-line cross-check gave 0.7045, a 3.3% spread; prefer the company's own paired disclosure.
  3. P/E and P/B are safe — both sides are already per-share and converted.

Co-observed on the same name

Yahoo's forward P/E of 45.09x for CCJ was wrong by ~1.6x — it implied FY2026E EPS of US$1.92 against a consensus of US$1.16 (true forward P/E 74.5x). Different root cause (stale or misassigned estimate vintage, not FX), same guard: recompute derived ratios from the underlying rather than reading them off the snapshot. Two independent Yahoo ratio failures on one ticker in one session is itself the signal.

Confirmed on a second currency pair — NVO, 2026-07-31

The CCJ note asked for "a EUR/USD ADR" as the falsification test. NVO (Novo Nordisk — reports DKK, trades USD, DKK/USD 6.484) ran that test the same day and confirmed the pattern, at a far larger FX factor:

Field Yahoo Recomputed Error
P/B 6.72 6.99 ✅ ~right
P/S 0.64 4.37 6.8x understated
EV/Revenue 1.02 4.71 4.6x
EV/EBITDA 1.92 9.7 5.1x

At a 6.5x FX factor the corruption stops being subtle: an EV/EBITDA of 1.92 on an 81%- gross-margin pharma is self-evidently impossible. That is the useful tell — the bigger the FX factor, the more absurd (and therefore the more catchable) the output. The CAD case at 0.728 is the dangerous one precisely because 10.6x vs 14.8x both look plausible.

Generalise the rule: this is not CAD-specific and not Yahoo-version-specific. It is what happens whenever a USD market cap is divided by a foreign-currency aggregate. Assume it for every non-USD reporter.

One amendment — "P/E and P/B are safe" is not absolute

On CCJ both were correct. On NVO, P/E was also wrong: Yahoo reported PE(ttm) 11.26 on EPS(ttm) $4.18, but FY2025 diluted EPS of DKK 23.355 converts to $3.602 at spot, giving 13.1x. Root cause unconfirmed — most likely a stale/stronger FX vintage on the trailing EPS rather than the aggregate/per-share split above. The direction is the same one that recurs throughout this note: flattering. 11.3x reads "deep value"; 13.1x reads "mature pharma," and the verdict differed.

So: P/E and P/B are usually safe on cross-listed names, but reconcile the reported EPS against reported local EPS ÷ spot FX before leaning on the multiple.

What would falsify this

Now confirmed across two currency pairs (CAD/USD, DKK/USD) and two sectors on the same day, so the cross-listed-class hypothesis is no longer speculative. Falsification would require Yahoo populating aggregates in the quote currency on a sample of non-USD reporters. Re-test opportunistically; until then treat as systematic and recompute every time.

Related

[[pitfall-entg-margins-corrupted-in-vendor-feeds]] · [[pitfall-roicai-fcf-field-returns-ocf]] · [[principle-primary-source-beats-vendor]] — same lesson each time: a single-vendor derived figure that carries a verdict must be recomputed from the underlying. [[pitfall-adr-ticker-resolution]] covers a different failure on the same cross-listed class.

History

  • 2026-07-31 — found during the CCJ analysis; caught because a 10.6x P/S looked implausibly low next to an 81x P/E on the same company.
  • 2026-07-31 — confirmed on NVO (DKK/USD), the EUR-pegged ADR test this note asked for. Scope raised from "cross-listed CAD/USD" to all non-USD reporters; ticker list and the P/E caveat added. Two independent confirmations, two currency pairs, one day.