Limitations

What these workbooks cannot do

The eight things most likely to matter when you use the data. Most are consequences of a design choice rather than bugs, and each has a plausible remedy if you are willing to pay for it.

Click any to expand.

1 Nothing is standardised across companies

Every number is exactly as the filer reported it. There is no common chart of accounts here, no mapping, no reclassification. One company’s “Revenue” is another’s “Net sales” is a third’s “Total revenues”; one reports “Cost of revenue” where another splits it across three lines. Line order, subtotals and even the fiscal calendar are each company’s own. Stacking two workbooks side by side does not give you a comparable panel.

Remedy: a mapping layer onto a standard taxonomy. That is a different and much harder project, and it necessarily involves thousands of judgement calls about what counts as equivalent — every one of them a place where the data stops being what the company actually said. This project deliberately stops short of it.

2 The row structure is today’s structure, so an early blank is rarely missing data

The most recent annual report defines the rows; values are then filled back through every prior filing. A line the company reported for years and has since dropped does not appear at all — not as a blank row, not anywhere. A line introduced recently shows a short history.

This is also why a blank cell in an early period is usually not missing data. Apple’s “Net sales” only reaches back to FY2017 because earlier filings tagged it under a different concept (pre-ASC 606). The line item is real; the older number simply lives under a name this workbook does not carry.

Remedy: build the row set from the union of all filings rather than one, carrying a “last reported in” marker per row. Substantially harder, because line order and labels conflict across filings — you would need a merge strategy for rows that exist in some years and not others.

3 Concept substitution is inference, not fact

Filers quietly retag a line without changing the line. Where that happened, the value is substituted and the cell shaded amber, with a note naming the concept it was actually filed under and a Tag Aliases tab listing every substitution and its evidence.

The rule behind it is strict — at least two periods of exact agreement, zero disagreements, matching sign convention and time basis, and the alternate concept must not itself be a line on the statement — but it is still inference. Two genuinely different concepts that happen to coincide for one company can slip through: an issuance line and an employee-stock-plan line that always matched, say.

Remedy: a reviewed exception list, so a human can veto a specific pair. Raising the agreement threshold helps too, at the cost of missing real renames that had short overlap windows.

4 A column can mix filings, so a statement may not foot

Each concept independently takes its most recently filed value. If a later filing restated one line but did not carry another, a column ends up mixing vintages and the internal articulation breaks. Observed in Berkshire Hathaway and Walmart, with discrepancies around 0.05%.

Since August 2025 the workbooks no longer stay quiet about this. Each statement carries live Excel formulas checking its own subtotals — taken from the filer’s own XBRL calculation linkbase, not a hardcoded list — plus the balance-sheet identity and the cash-flow identities, and a set of checks that span statements. A failure is written into the workbook where you can see it and click through the arithmetic. A blank check means “not evaluable” — usually a sparse early year — never “passed”.

Remedy: treat a statement as a coherent artifact — for each period pick the single most authoritative filing and take the whole column from it, falling back per-concept only where that filing is silent.

5 Restatements overwrite what was originally filed

Where a figure was later restated, the newest version wins, so a row reads consistently across its whole history. The cost is that you cannot see what was originally reported — which is precisely what a restatement study would want. Period columns whose filing was later amended are marked, so at least you know where to look.

Remedy: keep every vintage alongside the filing that reported it, and let the reader choose “as originally filed” or “as most recently restated”. The data is already collected; only the collapse discards it.

6 Statements only, and segment splits need not add up

Only the reports the SEC classifies as financial statements are included. The notes — where tax reconciliations, debt schedules and lease maturities live — are not.

Segment and geography breakdowns do appear, pulled from wherever the filing disclosed them, but do not expect them to sum to the line above. A company may break a line down only in part, may disclose the same split on two different bases (net sales to customers and total segment sales), and may have redefined its segments partway through the years shown. The arithmetic checks ignore those rows for exactly that reason. A breakdown also only attaches to a statement that declares the matching axis, so a filer who reports one without declaring it will have it omitted.

Remedy: include the note reports too. They are available and structured the same way; the cost is a much larger and messier output, since note tables are irregular.

7 Foreign filers report under a different regime, in their own currency

Foreign private issuers are included now — 20-F filers such as ASML and ARM, and 40-F filers reporting under the Canadian MJDS. They are not like for like with a 10-K. Most report under IFRS rather than US GAAP, which is a separate concept vocabulary with different statement structures, and they report in their own currency: ASML’s figures are euros, Toyota’s are yen. The SEC does not translate them and neither does this site. The form and the currency are named on every download row and on the file name, and the Read Me tab flags any second currency inside a workbook.

Foreign private issuers also file no 10-Q. Their interim reporting goes out on a 6-K, which carries no XBRL statements, so there is no interim data for them at all.

Remedy: none that is honest. Converting currencies would require picking a rate and a date and would stop the figures being as filed. Compare a foreign filer against itself over time, not against a US filer.

8 The data lags, and corporate history is not tracked

Everything comes from the SEC’s Financial Statement and Notes data sets, which lag the filings themselves by roughly a couple of months. A very recent 10-K will not be here yet.

Everything also keys on CIK. Mergers, redomiciliations and re-listings create a new CIK, so a company’s history simply starts there — Broadcom begins in 2015 because the current entity came out of a restructuring and its predecessor sits under a different CIK. In the same vein, a fiscal year is labelled for the calendar year it ends in, which matches how Apple, Microsoft and NVIDIA name their own years but not how some January and February year-end retailers name theirs.

Remedy: a CIK-succession map, hand-curated or derived from EDGAR’s former-name records, and a per-company fiscal-year override.

What it is good for

Given all that: seeing a single company’s own statements, as that company reported them, over a much longer span than any one filing shows — with the arithmetic structure intact, every substitution visible, the statements checked against themselves, and every number linked back to the filing it came from.

What it is not: a comparable cross-company database.

Tell me what’s wrong with them

This list is going to be incomplete. If you find a number that looks wrong, that’s the most useful email you can send: olsent@gonzaga.edu. I’d love to hear from you!