Methodology

How Distill computes its capital-cycle metrics, screener fields, and sector aggregates from SEC filings. The per-company facts are verifiable against EDGAR (every value carries the XBRL concept it came from); the aggregates are our computation, so here is exactly how they’re built, and where they stop.

Audited August 2026

Measured accuracy

Each layer of the data has been audited against its primary source, the filing itself, and carries a number with a sample size behind it. This wave covers 131 externally verified cases and found zero value errors in the 2009-and-later data.

LayerAudited periodSample & methodResult
XBRL fundamentalsFY2010–202572 facts, 12 concepts × 6 era bands, 10-K first prints, read against the rendered statements72/72 exact
Insider (Form 4)Live stream30 transactions re-read field by field from the filed XML29/30 exact, 1 ambiguous, 0 errors
Institutional ownership (13F)2016–20269 managers diffed against their actual filings, run twice9/9 exact
Text-derived fundamentalsFY1995–2009196 verified-tier facts, stratified, independently re-derived98.0%{' '}precision (95% CI 94.9%–99.2%)

The text-derived FY1995–2009 dataset serves its verified tier on the Pro plan, with source and verification fields on every row.

How each audit was run

One protocol across all four layers. Independent readers fetch the primary document from EDGAR and re-derive each sampled value without seeing our stored value or the parser’s hints; the comparison happens after they report. Samples come from a seeded stratified sampler across eras and concepts. Every claim carries its n and every rate a Wilson 95% confidence interval.

XBRL audit, FY2010–2025

12 concepts across 6 era bands, sampled from 10-K first prints and checked against the rendered statements in the same filing: all 72 matched. The audit tests mapping semantics as well as values, including that NetIncomeLoss excludes non-controlling interests, that OperatingIncomeLoss maps to the printed operating subtotal, and that a genuine zero is stored as a zero. One case surfaced a ticker-label defect (CIK, accession and value correct, ticker pointing at another registrant); it is on the data-quality list.

Form 4 audit

30 transactions re-read field by field from the filed XML: 29 exact, none wrong. The remaining case is two derivative rows identical on every field we store and differing only by exercise price, which we do not persist.

13F audit

9 managers for the quarter ended 31 March 2026, re-aggregated from the 13F-HR filings by three independent readers and diffed on totals, position counts and top-ten order. The first run failed two of nine: option and principal-amount rows were dropped, understating Elliott by 20.97% and Duquesne by 13.02%, and hiding a $2.43bn index put hedge. After the fix every manager reconciles to the filer’s declared total to the dollar, composition partitions the stored total exactly across all 233,249 manager-quarters, and the only discrepancy left is a filer’s own $1k arithmetic error between its header total and its rows, where we serve the row sum. The protocol re-runs after any loader change.

Pre-2009 text audit

FY1995–2008 predate XBRL, so those facts are parsed from the text of each 10-K. 196 verified-tier facts, stratified across era bands and concepts, were re-derived by independent readers: 192 agreed, for 98.0% precision, 95% CI 94.9%99.2%. All 4 errors are correlated failures, where both filings of a continuity pair mis-parse the same way; the four modes are catalogued in the deep-history section below.

FY2009 is the seam year and carries two tiers: 5,476 facts checked against the filer’s own first XBRL print (verified_by = xbrl) and 4,688 bridged by the continuity check (verified_by = continuity). A third tier, continuity-widened, serves single-print facts and is measured on its own audit, never blended into the figure above. Financial-SIC filers and multi-registrant filings are excluded from the verified tier, and the FY1995–2008 tier covers 40%47% of continuity-checked facts in the core years. Exclusion counts, the per-concept table and the full error-mode catalogue are in the deep-history section below.

A known date normalization

Filers on a 52- or 53-week fiscal calendar end their year on a weekday near month-end, such as 29 or 30 December. We store the period end normalised to month-end, so a stored date can sit about a day from the date printed on the filing. This is deliberate, it keeps periods comparable across filers, and the reported values are unaffected.

Source & universe

Everything is derived from SEC EDGAR XBRL (public domain), the structured financial facts companies file in their 10-K and 10-Q. We normalise each issuer’s tag choices to a canonical concept set so “revenue” means the same thing across companies. About 7,000 US filers have recent XBRL financials in the corpus; roughly 3,300 of them clear the listed-equity and revenue-floor tests the screener applies below.

Listed-equity universe

The screener covers US-listed common equity. Many entities file XBRL without ever being a listed stock: captive finance subsidiaries (Ford Motor Credit), bond vehicles, preferred-stock trusts, and ETFs all file 10-Ks or exchange-delisting notices. We classify each CIK from its EDGAR submissions record: an exchange listing, a current ticker, or a Form 25 delisting notice marks it as equity, and a CIK that keeps filing with none of those is marked a shell and dropped from the screen. The classification is deliberately fail-open, so a CIK we have not yet classified stays in the universe rather than being silently dropped. Point-in-time screens resolve listing from a separate table built on the filings only a public company makes: Forms 3/4/5, proxy statements, and >5%-ownership reports.

Point-in-time & survivorship

Every fact is stored as it was filed, keyed to its EDGAR accession, including values a later filing restated. An as-of query for a past date returns only filings accepted by then, at their then-reported values: no restatement substituted in, no later filing leaking backward. The universe screener runs the same way at every calendar quarter-end since 2009, and listing is resolved as of that date: a company that traded in 2016 but has since delisted or been acquired appears on the dates it was listed and drops off afterward, and its sector is the one it filed under then, resolved from the SIC code on file at that date and falling back to its current classification only when no historical SIC exists. The result is the cross-section an investor could actually have used on the day: survivorship-free, lookahead-free. The full history is available as a single bulk panel for offline research.

Coverage still ramps up over those earliest years. The SEC phased in the XBRL mandate by filer size between 2009 and roughly 2012, so the number of companies in the as-of universe grows sharply across that window: 2009-03-31 has no filers on file at all, 2009-06-30 has 1, 2009-09-30 has 2, 2009-12-31 has 29, 2010-06-30 has 370, 2011-06-30 has 1,124, and 2012-06-30 reaches 3,349, close to the roughly 3,600 the as-of universe holds from 2014 on. A screen run against an early quarter mostly reflects how many companies had begun filing XBRL by then. Treat 2012 onward as the point the cross-section is broadly usable.

Reproducibility

Two different promises get confused here, so we separate them. The first we make: we keep every version of every fact.The point-in-time record is append-only. Since 2009 we hold each filing’s own statement of each annual fact, keyed to its EDGAR accession, and we do not overwrite them. A later restatement is stored alongside the earlier value, never in place of it. Pre-2009 text-parsed facts are retained per parser version.

The second we do not yet make: an as-of answer is not guaranteed byte-identical over time.As-of results are recomputed from that filing record using our current concept mapping, plausibility bounds and listing model. When we improve any of those, and we do, a past as-of answer can change. An example: mapping an additional XBRL tag into capital expenditure corrected one utility’s FY2024 capex from $399M to $7.63bn, because the right value had never been ingested. That is a fix, and it changes what a 2015 query returns. Every such change bumps the methodology version at the foot of this page. Today there is no version identifier you can pin to a single query, and we do not retain the prior computation.

What we are building toward: every as-of response carrying a vintage identifier, a bump to that identifier whenever the computation changes, and prior vintages queryable for a stated window, so a result cited in published research stays reproducible by a third party. Until that ships, treat an as-of figure as reproducible from the filing record and the formulas on this page, not as a frozen number.

One issuer per CIK

A company with multiple share classes (e.g. GOOG/GOOGL) files once under one CIK but trades under several tickers. We keep one ticker per CIK (the shortest unpunctuated symbol on file for that CIK), so a single company can’t appear two or three times in a screen or skew a sector median.

Annual basis

Capital cycles play out over years, so the metrics are computed on a fiscal-year (FY) basis: the latest fiscal year for which income-statement financials exist. Quarterly rows are excluded from the cycle views (a single quarter’s capex over a partial quarter’s revenue is lumpy and its year-over-year growth explodes). Where a per-company fundamentals call returns the latest quarter, it also carries a trailing-year (trailing*) figure for the annual view, labelledtrailingBasis“TTM” when four contiguous quarters were available and “FY” when the fiscal year was the only clean window.

Formulas

Net / gross / operating margin

NetIncome / Revenue (gross: GrossProfit or Revenue−COGS; op: OperatingIncome)

Shown only when the ratio is between −500% and +100%. A margin above revenue is impossible (one-time gain, tiny revenue, or a wrong concept).

Debt / EBITDA

LongTermDebt / (OperatingIncome + D&A)

Shown when EBITDA is positive and |ratio| ≤ 30. EBITDA = operating income + depreciation & amortisation. The sector median excludes Financials, whose balance sheets have no comparable EBITDA.

Net debt / EBITDA

(LongTermDebt − Cash) / EBITDA

Same bounds as debt/EBITDA.

CapEx intensity

CapEx / Revenue (latest fiscal year)

Annual only; shown 0–200%.

R&D intensity

R&D expense / Revenue

Shown up to 1000% of revenue. Extreme values are real for pre-revenue biotech (R&D far exceeds tiny revenue).

DSO / DIO (days)

Receivables/Revenue×365 ; Inventory/COGS×365

Shown 0–1095 days; long cycles can be genuine (e.g. aged wine inventory).

Buyback intensity

Share repurchases / Revenue (fiscal year)

Shown 0–100%.

Net dilution

Year-over-year change in shares outstanding

Nulled when |Δ| > 50%. That magnitude is a stock split or corporate action, not organic dilution.

Financial health ratios

Debt/equity, current ratio, cash/debt, operating margin, net margin, ROA, ROE, operating cash flow/debt

Each one arithmetic over two filed lines, reported per filing period for the last 20 quarters, so any of them can be re-derived from the fundamentals endpoints. A 0 to 100 composite over these ratios was withdrawn on 26 August 2026: no filing states what a company’s health score should be, so nothing could verify one. The ratios are reported; the judgement is not made for you.

Piotroski F-score

Count of nine fundamental-strength checks passed

Profitability, leverage/liquidity, and operating-efficiency signals. Sparse filings mean some checks have no inputs, so the score carries the number of checks actually evaluated; below four evaluable checks a company is left unrated. Not scored for Financials or Real Estate.

Sloan accruals

(NetIncome − OperatingCashFlow) / average total assets

Assets averaged across the current and prior fiscal year, or current-year assets when no prior year is on file. Lower (or negative) = earnings are more cash-backed.

Altman Z″ (distress)

6.56·(WC/TA) + 3.26·(RE/TA) + 6.72·(EBIT/TA) + 1.05·(BookEquity/TL)

Book-value bankruptcy-risk score (>2.6 safe / 1.1–2.6 grey / <1.1 distress). EBIT is operating income as filed; scores outside −10 to 20 are returned as null. Excludes Financials & Real Estate. Penalizes capital-return-heavy firms (negative retained earnings/equity from buybacks read as weakness). Confirm distress with negative operating margin or low interest coverage, don’t rely on Z″ alone.

Sanity bounds & the revenue floor

Ratios with a small denominator can produce nonsense (a $3M-revenue shell with a one-time gain shows a 300% “net margin”). Two guards: a baseline $10M revenue floor on the screener (real operating companies only), and per-metric bounds shown above: values outside them are returned as null rather than a misleading number. The bounds are deliberately wide enough to keep genuine extremes (a deeply unprofitable biotech, a heavily-levered utility) and only cut the impossible.

Sector aggregates

Sector figures are medians (not means) across the in-scope companies in each sector, computed per fiscal year, which is what makes the cycle views a series rather than a snapshot. The median is robust to the long tail (one outlier can’t move it), which is why the sector views stay sensible even though individual companies vary widely. Sector is denormalised onto each fact so the analytics stay sourced to SEC data end-to-end.

Institutional ownership (13F)

Ownership data comes from quarterly 13F-HR filings: every manager holding $100M+ in 13F securities must file within 45 days of quarter-end. Three rules govern how we aggregate them. A holder is a filer family. Related CIKs are grouped under one stable holder (Vanguard reports through nine CIKs; we show one row), so holder counts aren’t inflated by filing structure and a manager reorganising its entities doesn’t look like an exit plus a new position. A quarter reports only once complete. Because the filing window runs 45 days, the newest quarter on file is usually one most managers haven’t filed for yet; comparatives are computed only against quarters that passed the completeness guard. Null means unknown, never zero. Where a change can’t be certified (incomplete baseline, no prior position), we return null rather than a number.

Two coverage caveats. The ticker-to-manager reverse view is not a complete holder register: a manager appears when the ticker is among their larger positions (books are stored to 95% of value, capped at 200 positions). And quarterly history currently spans the trailing year of complete quarters, accruing forward each quarter; deep multi-year 13F history spans 2017-03-31 to the current quarter. Reported values are normalised to whole dollars (pre-2023 filings reported thousands).

Honest limitations

Deep history · pre-2009

Text-derived fundamentals, FY1995–2009

Everything above this section is XBRL: structured facts the filer itself tagged, filed from 2009 onward. Fiscal years 1995–2008 predate XBRL entirely, so that history is reconstructed by parsing the text of each 10-K’s financial statements, not by reading a tag the company asserted. That is a different, weaker source, and this section states exactly how much weaker. FY2009 is the seam year: XBRL existed but only the largest filers had adopted it, so this dataset also reaches FY2009 through an additional, stronger verification path — described in its own section below. A third path, continuity-widened, admits facts that survive in only one print at all, with no second one to check against, described in its own section below.

One further distinction, separate from the accuracy question above: this corpus and the 2009+ point-in-time (as-of) surface serve two different restatement semantics. This corpus serves each filing exactly as originally printed, with no later amendment folded in. The as-of surface serves whatever was on file at the as-of date, amendments included. Apple’s FY2009 revenue shows the gap: $36,537M here, from the original 2009-10-27 10-K, versus $42,905M read as-of 2010-06-30, once the 2010-01-25 10-K/A adopting ASU 2009-13/14 was on file. Both figures are correct for what they represent. A series that splices this corpus into the as-of surface across the 2009 boundary will read that accounting-standard adoption as a business event that never happened.

Text-derived fundamentals, FY1995–2009, non-financial single-registrant US filers. Continuity tier measured at 98.0% precision (n=196, 95% CI 94.9%99.2%); per-concept continuity table and complete error-mode catalogue published below. The continuity-widened tier, described below, is measured separately at 96.0% precision (n=200, 95% CI 92.3%98.0%) and never blended into the continuity figure. Not XBRL-grade and never presented as such.

The 98.0% figure measures transcription fidelity: whether the value the parser captured matches what the filing itself printed, checked against independent human re-reads of the source document. Unit-scale normalization (whether a value is stated in the filing’s own thousands or millions and converted correctly) is checked four ways: the continuity and accounting-identity guards described below; a cross-fact coherence check (new in parser v15) that compares each fact’s magnitude against its own filing’s other statements; and a level-plausibility scan (new in parser v16) that checks each fact’s magnitude in both directions against the same company’s own history across years, whether a value looks roughly 1,000 times too large or 1,000 times too small for that company. A fact that fails any of these checks is demoted: removed from the verified tier rather than served (2,642 rows corpus-wide from the coherence check, plus 7 rows individually document-confirmed wrong and demoted at export, plus 1,278 rows demoted by the level-plausibility scan). A demoted value is dropped from serving; it is never adjusted or corrected in place. Absent beats wrong: no value this pipeline knows to be implausible is served. Known residuals that survive, disclosed rather than hidden: coverage is not symmetric (an over-scaled balance sheet at a typical assets-to-revenue ratio is caught only by absolute magnitude bounds), a uniformly mis-scaled filing is structurally invisible to cross-fact checks, and three individually-documented soft cases (a rounded selected-data figure, an 8-month fiscal-transition stub served as printed, a receivables line mapping trade receivables only) are recorded in the audit log rather than corrected by hand.

Filings

118,743

Fact rows

2,289,298

Verified facts

535,619

Verified, FY1995–2009

535,611

Verified facts are the sum of all three tiers: continuity, continuity-widened and xbrl. Each row carries its own verifiedBy value, so a caller can select one tier, or several, depending on how much corroboration the use case needs.

123,021 10-K / 10-K405 filings were parsed from EDGAR Feed tars; 118,743 remain after removing unkeyable and period-suspect records and deduplicating to the latest accession per company-year. Rows split 1,147,176 current-fiscal-year facts and 1,142,122 comparative-vintage facts (the same figure as it reappears, restated or not, in the following year’s filing). The product window is fiscal years 1995–2009.

The full verification design tiers, coverage by year, per-concept continuity, error modes, exclusions

What “verified” means

A fact reaches the verified tier only when: it is the filing’s own reported value for its fiscal year, not a comparative column carried by a later filing; the filer is a single registrant, not a combined filing; the filer falls outside the excluded financial-SIC range below; the parser’s own identity checks pass; the fact was read directly off a statement rather than computed by subtraction; and, independently, the same fact re-parsed from the following year’s comparative column agrees with it.

That last step is the load-bearing one, and for FY1995–2008 it is corroboration against ourselves, not against an independent source: two of our own parses of the same underlying number agreeing with each other. That is weaker than the XBRL-era claim, which checks a filer’s own structured, company-asserted tag. All 430,297 verified facts in FY1995–2008 are corroborated this way (verified_by = continuity). FY2009 is different: 5,477 of its verified facts instead carry verified_by = xbrl, checked directly against that filer’s own first-printed XBRL value — the independent corroboration the rest of the window doesn’t have. See “FY2009: an additional verification tier” below. The 98.0% figure above measures how often the continuity self-consistency check is itself right, using independent human re-reads of the original filings as the check on the checker. A fact with no adjacent filing to check continuity against, correct or not, never reaches this ladder; the continuity-widened tier below reaches it a different way.

A third tier: continuity-widened

The continuity check above needs a second, independently-typeset print of the same fact to corroborate it. Some facts survive in only one print: no adjacent filing exists for the parser to check against, so continuity can never reach them regardless of whether the single surviving print is correct. Parser v16 adds a separate tier for exactly this case: 84,718 facts admitted by in-filing structural anchors and magnitude guards instead of a second print (verified_by = continuity-widened).

This tier is measured on its own audit, separately from the continuity figure above and never blended into it: 96.0% precision (n=200, 95% CI 92.3%98.0%), from an independent audit of the cells this tier promotes. Every served row carries its own verifiedBy value, so a query can include this tier or exclude it depending on how much corroboration it needs.

Coverage by fiscal year, FY1995–2008

Reaching the verified tier requires an adjacent filing to check continuity against, so a correct fact from a filer with no adjacent-year coverage can never earn verified status; the gap between “current facts” and “verified” below is bounded by coverage, not read as an error rate. Verified share holds in a 29–46% band across the whole window with no post-2001 cliff.

FYFilingsCurrent factsVerifiedVerified share
19952,79122,3337,93635.5%
19967,86464,55018,63228.9%
19977,59067,69426,83539.6%
19989,49985,00134,22540.3%
19999,28488,21132,65137.0%
20008,34382,17633,31440.5%
20018,39683,78634,67141.4%
20027,88680,82335,05643.4%
20037,76977,75031,69040.8%
20047,72072,97832,56644.6%
20058,26378,96436,11945.7%
20068,07479,25633,26842.0%
20077,18872,84433,71246.3%
20088,72690,71739,62243.7%

FY2009: an additional verification tier

FY2009 is the year XBRL adoption began, phased in by filer size, so the text parse for that year can sometimes be checked against something the pre-2008 window never has: the same filer’s own first-printed XBRL value. This dataset serves FY2009 through two mutually exclusive verification tiers — every FY2009 row carries exactly one, never both:

  • verified_by = xbrl 5,477 rows. A genuine, no-lookahead XBRL first print exists for that filer and concept, and the text-parsed value agrees with it (exact match within 0.1%, or close within 2%). This is the strongest tier in the whole pre-XBRL dataset: independent corroboration against the filer’s own structured tag, not against another of our own parses.
  • verified_by = continuity 4,690 rows. No XBRL first print exists for that filer (XBRL adoption hadn’t reached them yet in FY2009), so the row is bridged the same way as FY1995–2008: two of our own parses of the same number, a year apart, agreeing with each other. Scoped to XBRL-absent filers only, so it never overlaps or double-counts against the xbrl tier above.

Together the two tiers verify 10,167 FY2009 rows out of 90,632 current-fiscal-year facts — a 11.2% verified share, lower than the 29–46% band FY1995–2008 holds to. That is not a coverage regression: FY2009 clears a different, narrower bar (an XBRL first print or a bridged continuity match) rather than the continuity-only ladder the rest of the window uses, and the 98.0% precision figure above is measured on the combined served corpus, FY2009 included.

Read that gap as a signal, not noise, and note it runs opposite to what the raw density suggests. FY2009’s 11.2% verified share sits far below FY2008’s 43.7%, yet individual FY2009 facts that clear the gate are checked to a higher standard: some against a genuine independent source (the filer’s own first-printed XBRL tag) rather than two of our own parses agreeing with each other, which is all FY1995–2008 can offer. Apparent coverage density and per-fact reliability move in opposite directions across this seam. Only verified facts are served (see “What ‘verified’ means” above), so a fact that fails FY2009’s stricter gate is simply absent rather than served on a weaker guarantee; part of the FY2008-to-FY2009 drop in verified rows is exactly this: facts that would have cleared FY2008’s continuity-only bar are correctly excluded once measured against FY2009’s narrower one. A cross-seam comparison should read FY2008’s higher density as including a higher share of facts that were never checked against an independent source, not as evidence FY2008 is the more reliable year.

Per-concept continuity

Verified facts are not spread evenly across concepts: balance-sheet stocks (cash, receivables, current assets) hold up better than income-statement flows exposed to restatement (operating income, revenue), because a restated comparative disagrees with the original by construction and the continuity check correctly fails it. The table below is the full 21-concept breakdown of the 440,472 facts verified through the continuity/xbrl ladder (the continuity-widened tier above is not yet broken out by concept).

ConceptVerified factsShare of verified tier
Net income31,0907.1%
Cash30,9767.0%
Depreciation & amortization30,8307.0%
Current assets28,9226.6%
Total assets28,6216.5%
CapEx28,4676.5%
Current liabilities28,2046.4%
Revenue27,2026.2%
Equity25,5635.8%
Interest expense22,7555.2%
Inventory22,7255.2%
Long-term debt19,9784.5%
Operating cash flow19,2604.4%
Operating income15,7393.6%
Receivables15,6303.5%
Gross profit15,3083.5%
Total liabilities14,7803.4%
R&D expense9,2962.1%
EPS (basic)9,0882.1%
EPS (diluted)9,0232.0%
Dividends7,0151.6%

The complete error-mode catalogue

The 196-fact audit found 4 errors against independent human re-reads of the source filings, all in the verified tier’s one blind spot: correlated failure, where both filings of a continuity pair mis-parse the same way, so the cross-check that is supposed to catch a parser error co-fails instead of catching it. Three modes account for all 4; there is no fourth.

Flow item as stock (2 of 4)

A cash-flow-statement line (a period delta or a rollforward addition) captured as the matching balance-sheet stock, e.g. the change in receivables read as the receivables balance.

Wrong entity (1 of 4)

An equity-method joint venture’s own combined statements, filed in the same document in a foreign currency, matched instead of the registrant’s statements.

EPS variant (1 of 4)

Continuing-operations diluted EPS captured instead of total diluted EPS, masked because the two coincided in the adjacent comparative year.

Exclusions

  • Financial-SIC filers (SIC 6000–6799) are excluded and never verified. Banks, insurers, and REITs file statements with no operating-income line and no current/non-current balance-sheet split; the parser models neither shape. That gate removes 398,178 rows (17.4% of the corpus) across 5,066 filers. These rows are parsed and retained (a narrower financial-statement model is future work), but they do not serve and are not part of this accuracy claim.
  • Multi-registrant filings are excluded from the verified tier. A filing made jointly by more than one registrant (a utility holding company and its subsidiaries, for example) has combined statements that the verification ladder does not attempt to attribute; 35,147 rows (1.5%) are gated out on this basis regardless of parse quality.
  • Derived values are excluded from verification. 43,414 rows (1.9%) are computed by subtraction (for example, a total-liabilities figure backed out from total assets minus equity) rather than read directly off a statement line; continuity agreement on a derived value would be circular, so these never enter the verified tier.
  • Coverage, not accuracy, bounds the verified share.The 29–46% verified share per fiscal year (table above) reflects how often an adjacent-year comparative exists to check against, not how often the underlying parse is wrong.

Full record: the 196-fact audit and error-mode counts are logged in planning/pre2009-solve/3-parser-scale-rebuild.md under “Measured before/after”; the FY2009 seam design is logged in planning/pre2009-solve/4-fy2009-seam.md; the continuity-widened tier, the combined three-tier corpus total and the level-plausibility demotion are logged in planning/pre2009-solve/9-v16-gate5-export.md. The exported artifact these figures are drawn from is versioned and checksummed in shards-v4r5/manifest.json (parser v16). See also the accuracy benchmark for the separate, ongoing XBRL-era comparison.

See also the accuracy benchmark, our per-cell comparison of a sample of these facts against SEC EDGAR. It reruns at least weekly and publishes the measured agreement rate and every cell that differs.

Methodology version 2026.09.3, last revised 9 September 2026. This page and the accuracy benchmark are our representation as to the accuracy of the data, under section 8 of the Terms of Service.