Methodology · US SEC Filings & Financial Data API

Methodology: US SEC Filings & Financial Data

Companies and filings come from the SEC's EDGAR submissions data and financial metrics from its XBRL companyfacts data, both loaded nightly from the SEC's bulk archives. Values are as filed: each metric is taken from a fixed, ordered list of XBRL concepts, the latest filed value wins, and the first reported value is kept when it was restated. A release is published only after format, uniqueness, unit and benchmark checks pass.

By New Odyssey · Published · Markdown

Sources

Datasets, sources and refresh
DatasetSourceReleaseRefresh
delphi.companiesEDGAR submissions (nightly bulk archive; JSON API for selected companies), U.S. Securities and Exchange CommissionAs of the archive build date (source_date)Nightly; stale after 3 days
delphi.filingsEDGAR submissionsAs of the archive build dateNightly; stale after 3 days
delphi.financial_metricsXBRL companyfacts (nightly bulk archive; JSON API for selected companies)As filed; latest filed value, with the first reported value on restatementNightly; stale after 3 days

How values are produced

  • Filings: 10-K, 10-K/A, 10-Q and 10-Q/A metadata only (no document text), each with its EDGAR filing index as evidence.
  • Metrics: eight metrics, each mapped to an ordered list of us-gaap or dei concepts; for each period the first concept with a value wins and is returned in concept. The full mapping is in Get SEC financial statements as JSON.
  • Periods are identified by their dates, not by the filing's fiscal-year tags, because a 10-K also carries earlier years as comparatives. Annual values must cover 350 to 380 days, quarterly values 80 to 100 days; quarterly operating cash flow falls back to the year-to-date value (is_ytd: true).
  • Restatements: the fact from the latest filing wins; the earliest one is kept in first_reported, with is_restated when they differ.
  • Nothing is derived: no Q4 from annual minus quarters, no liabilities from assets minus equity.
  • EIN and LEI are kept only where EDGAR publishes a valid one; the EIN is filer supplied and not verified by the SEC.

Validation checks

Every release runs the dataset's required checks before it can become active. A blocking check that fails stops the release, and the previous one keeps serving. Records that did not change keep their original published_at, and every record carries a provenance block with its source_url, the source snapshot it was read from and the validation status of its release.

Checks run on each release
CheckWhat it guards
row_count_range, row_count_vs_previousRow counts within bounds, and no drop of more than 10% against the active release
unique_record_id, required_fields_presentOne row per record key; no missing required fields
cik_format, accession_format, form_allowed, dates_not_futureIdentifiers and forms are well formed; no dates in the future
rejected_records, parse_errorsRejected or unparseable source records stay under a small share (facts with mistyped future period ends are rejected and counted)
metric_unit_sanityEach metric is in its unit (USD, USD/shares, shares)
benchmark_accuracyReviewed annual revenue and net income values for benchmark companies must match on value, unit, fiscal year and period end (99% or better)
ticker_uniquenessTickers shared by several companies stay within a tolerance
metric_value_sanityNon-blocking: flags implausible values for review

Known limits

  • As filed: XBRL tagging errors in a filing are passed through; check evidence_url.
  • No Q4 values; quarterly operating cash flow is usually year-to-date.
  • A company that tags none of a metric's concepts returns an empty series for it.
  • Periods older than a company's first XBRL filing are not covered.
  • Not included: real-time filing streams, full-text search of filings, insider trading (Forms 3, 4 and 5), ownership, analyst recommendations or estimates.

Data from SEC EDGAR. Olympus is not affiliated with or endorsed by the U.S. Securities and Exchange Commission.

Sources