Distill Markets · Change log · Methodology 2026.10.1 · Revised 24 October 2026
Change log
The dated changes that moved a served value or changed a rule, newest first; rule changes before 2026.10.1 are listed under Revisions in the methodology. A point-in-time read changes only for a late filing, a correction or a rule change; the full statement is under How the data changes in the methodology. Changes to the response shape follow the API stability policy in the docs.
Progress
Covered now
- XBRL facts
- Refresh
- Nightly at 23:30 UTC: filers with a new 10-K or 10-Q since their last fetch, plus the 200 longest unfetched. Filings 5 to 120 days old with no facts on file are read from their instance document, listed issuers first, up to 100 a night on production.
- Fact versions
- Range
- Quarterly data sets from 2009q2.
- Refresh
- Checked nightly; a quarter is imported when the SEC publishes its data set, about four times a year, so filings from the current quarter arrive after it closes.
- As-of universe
- Range
- Calendar quarter-ends from 2009-06-30.
- Refresh
- Rebuilt on demand when a scoring or identity rule changes; each build is named by its vintage.
- Text-derived history, FY1995-2009
- Range
- Fiscal years 1995 to 2009, annual.
- Refresh
- None. A closed corpus, loaded once.
- 13F holdings
- Refresh
- Nightly. A quarter fills in over the 45 days managers have to file.
- Schedules 13D and 13G
- Range
- Parsed from the EDGAR December 2024 XML cutover forward; earlier filings come from a separately loaded history.
- Refresh
- Nightly at 23:30 UTC.
- Form 4 insider transactions
- Refresh
- Nightly at 23:30 UTC, and every 15 minutes from 13:00 to 21:59 UTC on weekdays.
- Macro series
- Refresh
- Nightly at 23:30 UTC; each series carries its own frequency (daily, weekly or monthly).
- Filing events
- Refresh
- Nightly at 23:30 UTC, and every 15 minutes from 13:00 to 21:59 UTC on weekdays.
Known limits planned for a later release
- New CIKs and first annual reports
- Extension-tagged revenue
The full list, including the limits that are accepted or inherent, is under Limitations in the methodology.
Changes
- rule changed
The methodology page, version
2026.10.1, and theX-Methodology-Versionheader on every API responseThe methodology now states the as-of universe rules in force since 2026-10-21 (rows keyed on CIK, one holder per symbol per date, the older revenue concepts for pre-2018 filings, the bank revenue basis) and restates how a point-in-time read changes. A point-in-time read returns the filing record we hold, under the methodology version in force when it is computed. It changes for three reasons only: a filing that reaches us late (fact versions are loaded from the SEC’s quarterly financial statement datasets, so a read for a recent date fills in when the SEC publishes, each filing keeping its real filing date); a correction to our own parsing or computation; or a rule change, which moves the methodology version. Corrections and rule changes are listed, dated, at /changelog, and every as-of screen response and panel export row names the build that produced it invintageandbuilt_at. This replaces the earlier statement that point-in-time reads are reproducible and change only for a correction. The full statement is under How the data changes. - values changed
/api/v1/sec/screenwithas_ofand/api/v1/sec/screen/exportThe as-of universe was rebuilt at all 70 dates (vintagepit.4313732ece93). Tickers read from a filing’s document names rather than from a trading symbol (TMB,NONE,FIL,NA, and digit-bearing tokens such asC004) are refused, and where one sat beside a real symbol it is removed: the row carries the real symbol or a CIK label instead.isListedEquity(is_listed_equityin the export) is dated against the listing end and reads false on rows dated on or after the issuer’slisted_until; 17,417 rows on 4,933 CIKs moved to false. The export already left those rows out, so its rows did not change. No row was added or removed and no revenue value changed; a stored copy of an as-of screen response should be pulled again. - values changed
/api/v1/sec/screenwithas_of,/api/v1/sec/screen/exportand/api/v1/sec/fundamentals/{ticker}/as-of/{asOf}Every as-of date of the panel was rebuilt (70 dates, 2009-06-30 to 2026-09-30); a stored copy of any as-of response should be pulled again. The panel is keyed on CIK: a company whose symbol is now held by another filer with its own row at the date appears under a CIK label (CIK0000886158for the original Bed Bath & Beyond) instead of being displaced; join oncikNumberin the screen response and thecikcolumn in the export. Revenue is filled for pre-2018 filings tagged with the older revenue concepts, so rows that carried a fiscal year and no revenue now carry one. Banks that file net interest income and noninterest income getrevenue_financial_basisin the export, kept apart fromrevenue. The entry rule and the ticker convention are stated under Known limits on the as-of page. Nothing was removed or renamed. - values changed
/api/v1/sec/fundamentals/{ticker},/api/v1/sec/financial-health/{ticker},/api/v1/analysis/compare,/api/v1/analysis/entity/{tickerOrId}The fields listed under Rolling Out are now served on production: the bank revenue basis (revenueFinancialBasisand its three basis fields), the four bank ratios with their*Basisfields on the financial-health panel,ffoNareitand therealEstateblock for real estate filers, andaccountingStandardfor foreign private issuers (interestPaidClassificationis in the shape but served for no filer yet: its three IFRS cash-flow tags are not in the corpus). Each is absent, not null, where it is not computed for the filer. - values changed
/api/public/benchmarkTwo cell classes added:ahead(our value comes from a filing the SEC companyfacts feed has not published yet) andstale(companyfacts has a newer period and nothing at ours). Neither is graded. The headline match rate still divides exact and close cells by all cells, so a run with many ungraded cells reads lower, not wrong. Per-field and per-sector rows carryaheadandstalecounts. - values changed
/api/v1/sec/fundamentals/{ticker}and every surface built from the fact tableA 10-K or 10-Q that companyfacts has not published within five days of filing is now read from the filing’s own XBRL instance document and loaded under the same key, with its accession and filing date. Latest-value reads can therefore lead the SEC feed by days to weeks. Values are the filer’s own, from the same document companyfacts is built from. - values changed
derived
totalLiabilitieson/api/v1/sec/fundamentals/{ticker}and/historyWhere a filer tags no liabilities total and the figure is derived from the balance-sheet identity, it now subtracts total equity including noncontrolling interests; before, it subtracted parent-only equity and so counted NCI as a liability. Filers with no NCI are unchanged; for the rest the derived total falls by the NCI amount (Coca-Cola’s moves from 70,584M to 68,483M).totalLiabilitiesConceptUsedstill says when the figure is derived. The screener’saltman_zinput and the as-of panel keep the parent-only derivation for now and are noted under Coverage. - values changed
/api/public/delisted/{ticker}facts,firstFiscalYear,lastFiscalYearandfactCountnow describe the company’s record as filed up to the day its listing ended, from both the pre-2009 text corpus and the XBRL record. Before, they covered pre-2009 only. A consumer that assumed everyfiscalYearwas at most 2009 should stop. - values changed
13F ownership comparatives for the 2025-03-31 and 2025-06-30 quarters
Both quarters had lost their quarter-over-quarter comparatives during an earlier targeted recompute, which overwrote them with null instead of preserving values it could not recompute. Their raw holdings were re-imported from the SEC’s bulk 13F data sets and the comparatives rebuilt, so which managers added, increased or cut a position reports real counts again instead of null. - fixed
13F ownership recompute
Recomputing a quarter whose baseline raw holdings had been reclaimed overwrote that quarter’s certified comparatives with null, so a repair moved the gap one quarter back instead of closing it. The compute now carries a value forward only for a row whose identity and levels are unchanged; a certified baseline still overwrites with fresh values. Invariant INV-83 checks that a certified quarter’s comparatives never vanish this way again. - values changed
The ticker carried per CIK on the as-of panel, the live screener and display labels
One ticker per CIK was picked by shortest-then-alphabetical, so DTE Energy was keyed to a baby bond (DTB), Prudential to PFH and Comcast to CCZ. One rule now picks the primary security everywhere: preferred, warrant, unit and right siblings are demoted first, then EDGAR’s own ticker order, falling back to the old rule only where a CIK’s tickers differ by a single class letter. 32 CIKs were re-keyed; no company lost sector or facts. Invariant INV-82 pins the rule. - values changed
Weighted-average share counts on
/api/v1/sec/fundamentals/{ticker}and historyBruker’s weighted-average diluted share count was served as 156, 154, 152 and 149 for FY2019 to FY2022 against filed values between 157,200,000 and 147,200,000: the filer tagged the concept in millions. A guard now withholds a value below 1% of a ceiling built from the same period’s share count or the series median, gated to values that look like a units error rather than a reverse split; 6,044 rows across 748 tickers on the corpus as measured then. Withheld values serve as null and are never rescaled. Invariant INV-81 detects a recurrence. - values changed
ConocoPhillips in the text-derived history (
get_deep_history,/api/v1/sec/pre2009)Three cells read a LUKOIL equity-method note instead of the filed income statement: FY2005 revenue of 96,367M and FY2006 of 113,607M, against filed totals of 183,364M and 188,523M. Corrected to the filed statement. - values changed
Fiscal years, share counts and depreciation and amortization across the fundamentals corpus
A fiscal-year binning defect that dropped January-1 period ends colliding with the following December was fixed: 2,904 tickers had a fiscal year restored and 986 revenue-bearing rows were recovered. A share count that disagreed with both the period before and the period after it, the signature of a split re-presented mid-series, is dropped rather than served on a mixed basis: 9,094 rows over 2,255 tickers. A combined depreciation-and-amortization tag smaller than the issuer’s own separately filed intangible amortization for the same window now sums the two, with the basis label saying so: 2,635 coordinates over 573 tickers. Separately, the nightly data-quality audit had run truncated for three nights and now reports a failing check by name instead of stopping. - values changed
The text-derived history, parser v15
A scale-selection bug that let one outsized value override a filing’s stated scale (balance sheets off by a factor of a thousand or a million, the Pfizer FY2008 class) was fixed, and a cross-fact coherence check now withholds any fact whose magnitude is impossible against its own filing’s other statements: 2,642 rows withheld from the verified tier, plus 7 rows individually confirmed wrong. Verified rows went from 441,932 to 440,472. Precision on the audit protocol: 192 of 196 (97.96%). - values changed
The text-derived history, parser v14
Reprocessed under parser v14: precision on the n=200 independent reread rose from 95.5% to 97.5%, with no regressions against v13. The served window widened one year to FY2009, and FY2009 rows carry averifiedBytier (xbrlorcontinuity). Endpoint shapes were unchanged. - added
Schedule 13D/13G blockholders
Coverage reaches back to 2015: 1,050,999 filings from before the SEC’s 2024-12-18 structured-XML boundary, parsed from the older text format and verified at 99.2% on a sampled audit. Percent is served exactly as filed. - values changed
XBRL fundamentals preprocessing
Values that violate an accounting identity (for example long-term debt exceeding total liabilities) are dropped rather than served. The rule is stated under Plausibility and staleness on the methodology page.