Companies

Methodology

How every number on a company page is built: where it comes from, which fiscal year it is assigned to, what currency it is in, what is copied from the filing and what is computed here. None of this is a promise of accuracy; it is a description of what the code does.

As-reported, not normalised

The financial statements are built from the XBRL data the company filed with the SEC in its 10-K. The figure you see is the one the company reported that year, on the line where it reported it. Prior years are not restated, items are not adjusted to "make them comparable" across companies, and no proprietary sector-normalisation model is applied.

This has an uncomfortable consequence worth stating out loud: two companies in the same sector may present operating expenses differently, and here they will look different. That is preferred to inventing a comparability that the actual accounting does not have. Where the filing itself allows the breakdown to be reconciled against its subtotal, the check is run and that reconciliation is used to group items correctly.

Figures that accounting does not publish as such — EBITDA, free cash flow, net debt, invested capital — are not taken from any provider: they are built here from the reported lines, and the formula is written out below and in the glossary.

Every figure anchored to its fiscal close

A company with a September year-end reports, in its "fiscal 2025", twelve months running from October 2024 to September 2025. Assigning that figure to calendar 2025 — or worse, putting it in the same column as a December-year-end company's — produces comparisons that look right and are not.

Here the closing month is taken from the company's own registration data at the SEC, and each period is labelled by its fiscal year, not by its publication date. That anchoring is not cosmetic: it also governs which price is matched against which earnings in the historical ratios, computed with the price at each year's FISCAL close rather than at 31 December. Rolling it out meant relabelling and re-seeding nearly twenty companies whose columns were off by a year.

Currencies and minor units

An ADR may trade in dollars while filing its accounts in euros or pounds. Matching price against earnings then requires an exchange rate, so the price currency and the reporting currency are stored separately and declared on the page, instead of assuming they match.

The case that best illustrates why this matters is pence. The London Stock Exchange quotes in pence — code "GBp", which is not ISO 4217 — while the accounts are in pounds. No currency pair covers that minor-unit code: when the rate was requested, the provider resolved it as "GBP", case-insensitively, and returned the rate to the major unit without the factor of 100. No error, no warning: everything crossing price with statements — EPS against price, forward P/E, historical ratios, intrinsic value — came out a hundred times too large, while the trailing P/E happened to come out right.

The fix is applied to the CURRENCY, at the ingestion boundary: the price and the historical closes and dividends, which travel in the same unit, are divided by the minor-unit divisor and the code becomes the real ISO one. From there, everything that already multiplied by the exchange rate is correct without touching anything else. There are dedicated tests for this behaviour, plus a guard band that, faced with a scale mismatch between two sources of the same figure, prefers NOT to rescale rather than propagate the error into half a dozen ratios.

What is reported and what is computed

This is the most important distinction on the page. Some rows are transcriptions of the filing; others are arithmetic performed here on those transcriptions. The latter inherit the errors of the former and add the assumptions of their formula, so the formula is shown.

Reported — transcribed from the filing

  • Net sales
  • Cost of sales and operating expenses
  • Operating income (EBIT) and net income
  • Basic and diluted EPS
  • Operating cash flow and capital expenditure
  • Assets, liabilities and equity
  • Cash, financial debt and minority interests
  • Shares outstanding and weighted averages
  • Declared dividend per share

Computed here — with its formula

Free cash flow (FCF)
FCF = Operating cash flow − Capex
EBITDA
EBITDA = EBIT + Depreciation & amortisation
Margins
Margin = Line item ÷ Net sales
Net debt
Net debt = Financial debt − Cash and equivalents
Invested capital
Invested capital = Equity + Financial debt − Cash
ROIC
ROIC = EBIT × (1 − tax rate) ÷ Invested capital
Enterprise value (EV)
EV = Market cap + Net debt (× FX when currencies differ)
P/E and EV multiples
P/E = Market cap ÷ Net income · EV/EBITDA · EV/Sales · EV/FCF
Historical ratios by fiscal year
Price at fiscal close × shares ÷ that year's reported figure
Payout and dividend yield
Payout = DPS ÷ EPS · Yield = DPS ÷ Price

The valuation models

The DCF, EPV/WACC, JP Valuation and the quality scores are NOT data: they are models. Change an assumption and the result changes, which is why they live in tabs separate from the financial statements rather than mixed in with them.

The DCF discounts future cash flows to present value. Its inputs — growth, margin, discount rate, terminal value — can be edited on the page itself, and the starting point comes from the company's history and from analyst consensus. EPV values current earning power assuming no growth, which is the conservative reading of the same business.

JP Valuation and the quality scores are house criteria: the first estimates an intrinsic value from an earnings growth path, the second summarise financial strength and business quality into a rating. Their internal weightings are not published. What is stated — and it is what you need in order to use them — is what goes into each, which series they are computed over, and that neither is a buy signal: they are a filter for deciding which company is worth reading the accounts of, and those accounts are in the other tabs.

How often it updates

Not everything refreshes at the same rate, because not everything changes at the same rate. The page declares the currency and the period covered; below is the cadence of each block.

  • Price, market cap and enterprise value: during the session, delayed; outside market hours they freeze at the last close.
  • Current ratios and market snapshot: once per trading day.
  • Annual financial statements: reviewed periodically and extended when the company files a new 10-K; closed years are left untouched unless the way a field is computed changes, in which case the whole history is rebuilt.
  • Consensus estimates: weekly. News, earnings calendar and insider transactions: daily. Analyst recommendations: monthly.

Known limitations

Publishing the limits is part of the method. These are the ones known and not yet solved:

  • ADRs reporting under IFRS and companies that don't file with the SEC have shorter history and less detail: the deep history only exists where there is us-gaap filing.
  • A row can be empty because the company doesn't report that concept, not because it is zero. The gap is shown as a gap: nothing is interpolated, no prior-year value is carried forward, and no filler zero is inserted.
  • ROIC, invested capital and net debt describe banks and insurers poorly, since their balance sheet IS the business rather than its support. The number is still computed, but there it doesn't mean what it appears to.
  • Price history and analyst consensus don't come from SEC filings, so their depth and accuracy depend on market sources and cannot be checked against the 10-K.
  • The statements are annual. There is no quarterly series, and therefore no TTM readings between filings.

When something is wrong

Errors are fixed at the source and the whole company is re-seeded rather than the cell patched: a wrong figure is almost never wrong in only one place. The pence case described above was found that way, fixed at ingestion, and forced a re-seed of the affected tickers.

If a figure doesn't match the original filing, check it first against the company's own submission on EDGAR — it is public — and let us know the ticker, the fiscal year and the row.

Content last reviewed against the code on .