10-K · open10k.com

As-Filed Financial Statements at Scale

Line-Item Structure, Concept Identity, and a Path Toward Standardized XBRL Data

Tim Olsen · Gonzaga University
Northwest Accounting Research Group · Portland, OR · October 23, 2026

open10k.com · Experimental features: open10k-lab.pages.dev

5,372,616

distinct XBRL reporting elements in the SEC data, most of them registrant extensions

Olsen · As-Filed Financial Statements at Scale · NWARG 2026

Pop quiz

You want ten years of Apple's income statement, exactly as Apple filed it, in Excel.

What does that cost you today?

A

A data subscription

B

An afternoon of copy-and-paste from EDGAR

C

Nothing
Olsen · As-Filed Financial Statements at Scale · NWARG 2026

Answer: C, as of this year

Before

  • Vendor data: costly, and it's the vendor's standardized interpretation, not the filing
  • Chychyla & Kogan (2015): material discrepancies between Compustat and the 10-K
  • Do-it-yourself: the SEC data sets are normalized tables, so one balance sheet cell sits at the intersection of all of them

open10k.com

  • What the registrant filed
  • Organized the way the registrant organized it
  • Every XBRL fiscal year
  • Free, no login
Olsen · As-Filed Financial Statements at Scale · NWARG 2026

1

Constructing open10k.com

The engineering, briefly

One pipeline, one source of truth

SEC Financial Statement & Notes data2009 → today
→
Parquet~10 GB, queried in place with DuckDB
→
One Malloy semantic modelall accounting logic
→
Excel workbook + web pageper registrant

The model decides:

  • which filing supplies the row structure
  • how presentation and calculation linkbases become an indented hierarchy
  • which amount wins after a restatement (the most recently filed)
  • how dimensional facts (segments, geography, products) attach to their lines

No value is scraped, estimated, or re-keyed. Python only renders.

Olsen · As-Filed Financial Statements at Scale · NWARG 2026

Two features that make it trustworthy, not just convenient

amber Visible concept substitution

Registrants retag unchanged lines (Apple's "Net sales" before ASC 606).
If two elements agree exactly in ≥ 2 overlapping periods, never disagree, and share sign and period type, the earlier element fills the gap.
The cell is shaded, and a Tag Aliases sheet lists the evidence.

✓ Arithmetic verification

Live Excel formulas test every subtotal against the registrant's own calculation linkbase, plus:

  • the balance sheet identity
  • the cash flow reconciliation
  • cross-statement ties

A failed check is written where a reader can trace it (Debreceny et al. 2010; Du et al. 2013).

Olsen · As-Filed Financial Statements at Scale · NWARG 2026

What a reader sees: open10k.com/AAPL

Olsen · As-Filed Financial Statements at Scale · NWARG 2026
8,268

workbooks · 6,383 companies · Forms 10-K, 20-F and 40-F
Paper: 8,245 workbooks, incl. 1,405 Form 20-F filers and 792 non-USD reporters. Site updated monthly; October 2026 figures shown.

Olsen · As-Filed Financial Statements at Scale · NWARG 2026

2

What should a row be?

The accounting question that turned out harder than the engineering

Option 1: the most recent 10-K defines the rows

Adopt the labels, order and hierarchy of the latest annual report; fill backward.
It's what a reader of the current 10-K expects, and what open10k does by default.

But:

  • a line presented for years and then discontinued disappears, with its amounts
  • a line retagged in earlier years shows a truncated history, unless substitution catches it
  • a blank early cell usually means "reported under another element," not "not reported"
Olsen · As-Filed Financial Statements at Scale · NWARG 2026

Breakdowns that don't add up

Listing every disaggregation under a line was unreadable: Apple's Net sales carried 5 segments, 3 countries and 6 product categories in one list.

Group by axis instead. But a group is only honest if it partitions its parent line.

Across 35 registrants, 1,314 groups Result
From the notes, never articulating 226 of 616
On the face, articulating every year 197 → 254 of 698 once members must appear on the statement

Rule: show a group if its members sum to the parent in ≥ half the years; blank its members in years they don't.
A group that sums to one member nests under it (iPhone, iPad, Mac, Wearables → Products).

Olsen · As-Filed Financial Statements at Scale · NWARG 2026

Live today: color-coded breakdowns

plain on the statement pink from the notes, adds up red doesn't add up, shown as filed

Olsen · As-Filed Financial Statements at Scale · NWARG 2026

Option 2: the union of every line ever presented

For ten large registrants:

Row set Rows added vs. current structure
Naive union of all line items ever presented +59% to +129%
De-duplicated union +18% to +54%

The naive union is mostly repetition. Of 935 extra line items:

132superseded elements, already folded in
178share a label with a current row
71no annual amounts at all
554genuinely discontinued
Olsen · As-Filed Financial Statements at Scale · NWARG 2026

What still breaks, and the road not taken

Two problems persist

  • 51 earlier lines still share a label with a current row. Same line restated, or a different item with the same caption (current vs. non-current Deferred revenue)? No numeric tolerance reliably separates them.
  • A line dropped from the face can live on in the notes, so it has amounts after its "last presented" year.

Option 3: a calculation-linkbase union

  • 3,993 elements on 6,313 paths
  • 34% of elements sit on more than one path
  • 14% of current lines (EPS, share counts, equity movements) are in no calculation at all
  • 75 of 242 placements disagree with presentation, often because the old tree is stale

→ use it as a check, not the layout

Olsen · As-Filed Financial Statements at Scale · NWARG 2026

Both, in one grid: "Show 31 earlier line items"

violet discontinued lines, placed where they last appeared, labeled with their last year · amber substitutions

Olsen · As-Filed Financial Statements at Scale · NWARG 2026

3

So what?

Teaching, LLMs, and standardization

The imperfections are the lesson

Any registrant, every XBRL year, in the application students already use. No subscription, no login.

  • structure A discontinued line, a renamed line, a blank early year: each is a question about ASC 606, ASC 842, and managerial presentation choice
  • articulation Live footing checks: students verify that the statements tie, and find the rare restatements that leave them untied
  • traceability Every column links to its filing on EDGAR: audit a number back to the 10-K
  • comparability Put two registrants side by side and you see why analysts standardize, and what's lost when they do (Hoitash & Hoitash 2018)

Planned: ratio analysis on as-filed data, footing exercises, tracing one line through a change in standard.

Olsen · As-Filed Financial Statements at Scale · NWARG 2026

Statements an LLM can read from a URL

Here's open10k.com/AAPL. How did Apple's gross margin change after FY2020, and are any of those numbers substitutions?
(reads the page's embedded JSON: exact amounts by fiscal year, labels, hierarchy, substitution flags, EDGAR links)
  • No upload, no table parsing: the statements ride inside the HTML as structured data
  • Exact amounts, a source filing for every year, and the page flags its own inferences

Planned evaluation: question sets over the pages (amounts, multi-year ratios, explaining substitutions and breaks), scored against workbook values, with and without the JSON.
Open questions: page size vs. context limits, and whether models respect as-filed caveats or quietly standardize.

Olsen · As-Filed Financial Statements at Scale · NWARG 2026

A step toward, not an instance of, standardized data

open10k is deliberately not standardized: two workbooks side by side are not a panel.

But it removes most of the work between raw XBRL and standardization:
stable row identity across years · retagging linked with evidence · breakdowns only when they partition · every statement verified

What's left is concept identity: when are two line items the same economic thing?

5.37M
distinct elements
~70%
label matching correct
22%
affirmatively wrong, on contested items
Olsen · As-Filed Financial Statements at Scale · NWARG 2026

Pop quiz

A company reports its own extension AcmeNetRevenue and the standard element Revenues, in the same fiscal year.

Same concept, or different?

Olsen · As-Filed Financial Statements at Scale · NWARG 2026

Answer: almost certainly different

If an extension and a standard element meant the same thing, a registrant would have no reason to report both in the same year.

Co-occurrence as a test, across 542 contested items:

379substitutes: same construct, competing names
118complements: label matches that are false positives

Cheap, deterministic, explainable, and computed over the whole population in SQL.

Olsen · As-Filed Financial Statements at Scale · NWARG 2026

Two routes to standardized data

Route 1 · LLM-guided Malloy modeling

An LLM proposes mappings to a standard concept set from captions, taxonomy definitions, calculation parents and placement…

…but writes them as dimensions and views in the semantic model, tested like any model change:

  • the statement must still foot
  • cross-statement identities hold
  • reported totals still match

A human can veto any mapping. The LLM reads; the model makes it auditable.

Route 2 · SQL over the full fact table

Establish identity from reporting behavior, no model needed:

  • Co-occurrence: substitutes vs. complements
  • Value agreement: the substitution rule open10k already uses
  • Calculation anchoring: the standard total an element rolls into, the strongest single signal (when it exists)

Deterministic, explainable, and the baseline the LLM must beat.

Complementary: SQL resolves what the data can; the LLM handles the residue, in a form that can be checked and rebuilt.

Olsen · As-Filed Financial Statements at Scale · NWARG 2026

Contributions

  1. A free, open pipeline and site: as-filed, multi-year statements for 8,000+ registrants, with visible concept substitution and built-in arithmetic checks
  2. Evidence on structure: the costs of the most-recent-report layout, the redundancy of a naive union, the limits of a calculation union, and an articulation rule for breakdowns
  3. A design for financial statements LLMs can read from a URL
  4. Standardization reframed as concept identity, with two routes and the baseline each must exceed
Olsen · As-Filed Financial Statements at Scale · NWARG 2026
open10k.com/AAPL

Thank you. Try it on your phone right now.

Pick a ticker: open10k.com/TICKER · or browse open10k.com/companies

Tim Olsen · olsent@gonzaga.edu

References

Blankespoor, E., B. P. Miller, and H. D. White. 2014. Initial evidence on the market impact of the XBRL mandate. Review of Accounting Studies 19 (4): 1468–1503.

Chychyla, R., and A. Kogan. 2015. Using XBRL to conduct a large-scale study of discrepancies between the accounting numbers in Compustat and SEC 10-K filings. Journal of Information Systems 29 (1): 37–72.

Debreceny, R., S. Farewell, M. Piechocki, C. Felden, and A. Gräning. 2010. Does it add up? Early evidence on the data quality of XBRL filings to the SEC. Journal of Accounting and Public Policy 29 (3): 296–306.

Debreceny, R. S., S. M. Farewell, M. Piechocki, C. Felden, A. Gräning, and A. d'Eri. 2011. Flex or break? Extensions in XBRL disclosures to the SEC. Accounting Horizons 25 (4): 631–657.

Du, H., M. A. Vasarhelyi, and X. Zheng. 2013. XBRL mandate: Thousands of filing errors and so what? Journal of Information Systems 27 (1): 61–78.

Hoitash, R., and U. Hoitash. 2018. Measuring accounting reporting complexity with XBRL. The Accounting Review 93 (1): 259–287.

Olsen · As-Filed Financial Statements at Scale · NWARG 2026

Welcome. The talk has three parts: what we built, the accounting question that turned out to be harder than the engineering, and what this means for getting to standardized data.

Hook. Every one of these is a "name" a company chose for a number. Keep this number in mind: it is the reason standardized data is hard, and it comes back at the end.

Ask for a show of hands. Most people will say A or B. That was true until recently.

The XBRL mandate promised machine-readable, comparable data (Blankespoor, Miller & White 2014). Free to download; expensive to consume.

Compiled once to SQL and cached, with the CIK substituted at build time: a workbook in a few seconds.

Live page. A summary sentence, a download button, and the statements in a grid that keeps the workbook's outline.

The paper's figures are as of September 15. The site has had one monthly update since.

Each of these is a silent loss: the reader can't tell from the grid that anything is missing.

This shipped September 29. Apple's segment operating income doesn't foot because segments exclude unallocated costs, so it gets the red marker rather than being hidden.

We prototyped two designs: a toggle between two full grids (2.2x page weight) and one grid that reveals earlier rows in place (1.2x). The paper recommended the single grid; it went live September 29. Note "Deferred revenue to FY2018" next to the current "Deferred revenue": the same-label problem from the previous slide, made visible.

Label matching is the baseline every standardization method has to beat.