Item 703 repurchase evidence, as the issuer printed it.
69,161 released Item 703 table rows, plus a ledger of all 43,397 filings examined, from the 10-K and 10-Q filings of Persistfolio’s reconstructed historical S&P 500 cohort — with raw reported values, filing provenance, source hashes, and a record of what was withheld and why.
Persistfolio Historical SEC Item 703 Repurchase Evidence
US$499 one time — Individual / Academic (one named individual)
US$1,495 one time — Business / Commercial (one legal entity, internal use)
The sample is the full release restricted to 12 issuers chosen by a fixed hash of the CIK (626 released facts and 434 ledger filings), copied verbatim with exactly the same columns as the paid files, plus a short walkthrough and the release documentation. It contains: sample/README.md, sample/reported_facts.csv, sample/filing_ledger.csv, README.md, DATA_DICTIONARY.md, methodology.md, LIMITATIONS.md, CERTIFICATION_REPORT.md, RELEASE_NOTES.md.
What You Get
- reported_facts.csv (69,161 rows) — one row per released Item 703 table row: raw cell text, typed cell status, reported numeric value, evidenced display scale, standardized value where safe, period information, Persistfolio interpretation fields, source EDGAR URL and document SHA-256
- filing_ledger.csv (43,397 filings) — every filing examined: its disposition, released fact count, withheld fact count, withholding reasons, SEC source, document SHA-256, and the independent confirmation hash for no-disclosure filings
- A buyer sample (626 facts, 434 filings from 12 issuers) with a short walkthrough of three rows worth inspecting
- README.md, DATA_DICTIONARY.md (every column and every enumerated value), methodology.md, LIMITATIONS.md, CERTIFICATION_REPORT.md, RELEASE_NOTES.md and LICENSE.txt
- release_manifest.json and SHA256SUMS (sha256sum -c verifies every delivered file), and the evidence record of the 13 quarantined filings (adjudicated_unsafe_tabular_filings.json)
Why This Is Different
- Historical constituent scope: the companies of a reconstructed historical S&P 500 cohort, including former members, for the periods they were members — not today’s survivors projected backwards
- Extracted Item 703 table evidence: the four SEC columns as printed, with typed cell status, the reported number and an explicitly evidenced display scale, kept separate from Persistfolio’s own interpretation fields
- Fail-closed QA: 38,174 manufactured facts were withheld rather than guessed, and every withholding is counted per filing in the ledger
- Row-level provenance: every released row carries its SEC EDGAR document URL and the SHA-256 of the exact bytes read, and the filing ledger accounts for every filing examined, including those that released nothing
Coverage & Product Facts
- Coverage
- 2004-09-30 – 2025-09-30
- Source
- SEC EDGAR 10-K, 10-Q, 10-K/A and 10-Q/A primary documents (the Regulation S-K Item 703 table), each retrieved and SHA-256 hashed by Persistfolio; issuer scope from the Persistfolio Historical Cohort Release 1.1 while each company was a member
- Observation Frequency
- Issuer-reported Item 703 table rows per filing — predominantly monthly rows, plus total rows and sub-rows — from quarterly (10-Q) and annual (10-K) reports
- Release
- item703-repurchase-evidence-2025-09-30-r1 (2025-09-30)
- Formats
- CSV + Markdown + JSON (manifest and quarantine record)
- Update Policy
- Fixed, dated release (periods of report through 2025-09-30). One-time purchase; no lifetime updates. Future releases are sold separately.
Methodology & QA
Every in-scope filing’s primary document is retrieved from SEC EDGAR and hashed. The Item 703 table is located by its heading and SEC column signature; column identity comes from each caption’s meaning, never position, and a table whose columns cannot be established is refused rather than guessed. Every row is recorded with the exact cell text, its typed status and the number as printed; a display scale is applied only where the filer’s own table states it and it can be placed on the cell. A fact is released only when its filing is processed cleanly and no review rule fires; everything else is withheld and counted in the filing ledger. A no-disclosure outcome requires a second, independent, byte-identical retrieval.
Certification status: Release gate PASS with 0 blockers on the full certified manufacturing run (37794101419). The gate and the certification decision are Persistfolio’s own; no third-party audit has been performed on this release. — read the full certification report →
Data Dictionary
| File | Field | Description |
|---|---|---|
| reported_facts.csv | fact_id | `filing_key:row_index` - the row's position in the extracted table. Stable within this release only. |
| reported_facts.csv | filing_key | `cik:accession_number`, joins to `filing_ledger.csv`. |
| reported_facts.csv | cik | SEC Central Index Key of the filer (10 digits). |
| reported_facts.csv | security_ids | Semicolon-separated Historical Cohort security_id(s) (PFHC-...) the filing is linked to through the cohort membership window. |
| reported_facts.csv | company_label | The cohort's label for the issuer. |
| reported_facts.csv | accession_number | From SEC EDGAR. form_type is one of 10-K, 10-Q, 10-K/A, 10-Q/A. |
| reported_facts.csv | form_type | From SEC EDGAR. form_type is one of 10-K, 10-Q, 10-K/A, 10-Q/A. |
| reported_facts.csv | filing_date | From SEC EDGAR. form_type is one of 10-K, 10-Q, 10-K/A, 10-Q/A. |
| reported_facts.csv | period_of_report | The filing's verified period of report (periodVerification `effectivePeriodEnd`): the SEC metadata date where it agrees with or is plausible against the cover page, the cover-page date where the metadata is implausible. **Blank** when the period could not be established; it is never filled with an unverified date. |
| reported_facts.csv | sec_metadata_period_of_report | The period of report in SEC EDGAR's filing metadata, exactly as recorded. Provenance only; it may be wrong (see the status). |
| reported_facts.csv | period_of_report_verification_status | How `period_of_report` was established (table below). |
| reported_facts.csv | period_raw | The row label exactly as printed. |
| reported_facts.csv | normalized_month | YYYY-MM when the label (or its parent month for a sub-row) resolves to one calendar month; empty otherwise. Rows whose label explicitly names a longer span (quarter, three/six/nine months, 13/26 weeks, year-to-date) are never released. |
| reported_facts.csv | row_type | See below. |
| reported_facts.csv | parent_period | For MONTH_SUBROW / TOTAL_SUBROW, the label of the owning row. |
| reported_facts.csv | series_label | A share class or series named by the table's own header, when the table reports more than one. |
| reported_facts.csv | total_shares_purchased_raw | (a) Total number of shares (or units) purchased. _raw: The cell text exactly as printed by the filer (whitespace trimmed only). Always the authority. |
| reported_facts.csv | total_shares_purchased_status | (a) Total number of shares (or units) purchased. _status: How the cell was read (table below). |
| reported_facts.csv | total_shares_purchased_reported_value | (a) Total number of shares (or units) purchased. _reported_value: The number as printed, without any display scale. Empty unless status is VALUE. Never negative in this package. |
| reported_facts.csv | total_shares_purchased_display_scale | (a) Total number of shares (or units) purchased. _display_scale: A multiplier (1000, 1000000, ...) only where the filer's own table states one that governs this cell ("in thousands", "in millions"). Empty means none was stated or none could be placed safely. |
| reported_facts.csv | total_shares_purchased_standardized_value | (a) Total number of shares (or units) purchased. _standardized_value: `_reported_value × _display_scale`. Empty when no scale applies. |
| reported_facts.csv | total_shares_purchased_scale_statement | (a) Total number of shares (or units) purchased. _scale_statement: The filer's own text that set the scale, where recorded. |
| reported_facts.csv | average_price_paid_raw | (b) Average price paid per share (or unit). _raw: The cell text exactly as printed by the filer (whitespace trimmed only). Always the authority. |
| reported_facts.csv | average_price_paid_status | (b) Average price paid per share (or unit). _status: How the cell was read (table below). |
| reported_facts.csv | average_price_paid_reported_value | (b) Average price paid per share (or unit). _reported_value: The number as printed, without any display scale. Empty unless status is VALUE. Never negative in this package. |
| reported_facts.csv | average_price_paid_display_scale | (b) Average price paid per share (or unit). _display_scale: A multiplier (1000, 1000000, ...) only where the filer's own table states one that governs this cell ("in thousands", "in millions"). Empty means none was stated or none could be placed safely. |
| reported_facts.csv | average_price_paid_standardized_value | (b) Average price paid per share (or unit). _standardized_value: `_reported_value × _display_scale`. Empty when no scale applies. |
| reported_facts.csv | average_price_paid_scale_statement | (b) Average price paid per share (or unit). _scale_statement: The filer's own text that set the scale, where recorded. |
| reported_facts.csv | shares_purchased_under_programs_raw | (c) Total number of shares (or units) purchased as part of publicly announced plans or programs. _raw: The cell text exactly as printed by the filer (whitespace trimmed only). Always the authority. |
| reported_facts.csv | shares_purchased_under_programs_status | (c) Total number of shares (or units) purchased as part of publicly announced plans or programs. _status: How the cell was read (table below). |
| reported_facts.csv | shares_purchased_under_programs_reported_value | (c) Total number of shares (or units) purchased as part of publicly announced plans or programs. _reported_value: The number as printed, without any display scale. Empty unless status is VALUE. Never negative in this package. |
| reported_facts.csv | shares_purchased_under_programs_display_scale | (c) Total number of shares (or units) purchased as part of publicly announced plans or programs. _display_scale: A multiplier (1000, 1000000, ...) only where the filer's own table states one that governs this cell ("in thousands", "in millions"). Empty means none was stated or none could be placed safely. |
| reported_facts.csv | shares_purchased_under_programs_standardized_value | (c) Total number of shares (or units) purchased as part of publicly announced plans or programs. _standardized_value: `_reported_value × _display_scale`. Empty when no scale applies. |
| reported_facts.csv | shares_purchased_under_programs_scale_statement | (c) Total number of shares (or units) purchased as part of publicly announced plans or programs. _scale_statement: The filer's own text that set the scale, where recorded. |
| reported_facts.csv | remaining_authorization_raw | (d) Maximum number (or approximate dollar value) of shares (or units) that may yet be purchased under the plans or programs. _raw: The cell text exactly as printed by the filer (whitespace trimmed only). Always the authority. |
| reported_facts.csv | remaining_authorization_status | (d) Maximum number (or approximate dollar value) of shares (or units) that may yet be purchased under the plans or programs. _status: How the cell was read (table below). |
| reported_facts.csv | remaining_authorization_reported_value | (d) Maximum number (or approximate dollar value) of shares (or units) that may yet be purchased under the plans or programs. _reported_value: The number as printed, without any display scale. Empty unless status is VALUE. Never negative in this package. |
| reported_facts.csv | remaining_authorization_display_scale | (d) Maximum number (or approximate dollar value) of shares (or units) that may yet be purchased under the plans or programs. _display_scale: A multiplier (1000, 1000000, ...) only where the filer's own table states one that governs this cell ("in thousands", "in millions"). Empty means none was stated or none could be placed safely. |
| reported_facts.csv | remaining_authorization_standardized_value | (d) Maximum number (or approximate dollar value) of shares (or units) that may yet be purchased under the plans or programs. _standardized_value: `_reported_value × _display_scale`. Empty when no scale applies. |
| reported_facts.csv | remaining_authorization_scale_statement | (d) Maximum number (or approximate dollar value) of shares (or units) that may yet be purchased under the plans or programs. _scale_statement: The filer's own text that set the scale, where recorded. |
| reported_facts.csv | activity_status | Persistfolio's classification of the row - an interpretation derived from the row's reported values, its label and the surrounding Item 703 text. They are not values reported by the issuer and not standardized SEC fields. See "Interpretation fields" below. |
| reported_facts.csv | component_structure | Persistfolio's classification of the row - an interpretation derived from the row's reported values, its label and the surrounding Item 703 text. They are not values reported by the issuer and not standardized SEC fields. See "Interpretation fields" below. |
| reported_facts.csv | program_relation | Persistfolio's classification of the row - an interpretation derived from the row's reported values, its label and the surrounding Item 703 text. They are not values reported by the issuer and not standardized SEC fields. See "Interpretation fields" below. |
| reported_facts.csv | economic_mechanism | Persistfolio's classification of the row - an interpretation derived from the row's reported values, its label and the surrounding Item 703 text. They are not values reported by the issuer and not standardized SEC fields. See "Interpretation fields" below. |
| reported_facts.csv | classification_confidence | HIGH or MEDIUM (REVIEW facts are not released). Describes the component/program classification; see below. |
| reported_facts.csv | source_document_url | The SEC EDGAR primary document the row was read from. |
| reported_facts.csv | source_document_sha256 | SHA-256 of the exact bytes retrieved for that document in the certified run. |
| filing_ledger.csv | filing_key | `cik:accession_number`, joins to `filing_ledger.csv`. |
| filing_ledger.csv | cik | SEC Central Index Key of the filer (10 digits). |
| filing_ledger.csv | security_ids | Semicolon-separated Historical Cohort security_id(s) (PFHC-...) the filing is linked to through the cohort membership window. |
| filing_ledger.csv | company_label | The cohort's label for the issuer. |
| filing_ledger.csv | accession_number | From SEC EDGAR. form_type is one of 10-K, 10-Q, 10-K/A, 10-Q/A. |
| filing_ledger.csv | form_type | From SEC EDGAR. form_type is one of 10-K, 10-Q, 10-K/A, 10-Q/A. |
| filing_ledger.csv | filing_date | From SEC EDGAR. form_type is one of 10-K, 10-Q, 10-K/A, 10-Q/A. |
| filing_ledger.csv | period_of_report | The filing's verified period of report (periodVerification `effectivePeriodEnd`): the SEC metadata date where it agrees with or is plausible against the cover page, the cover-page date where the metadata is implausible. **Blank** when the period could not be established; it is never filled with an unverified date. |
| filing_ledger.csv | sec_metadata_period_of_report | The period of report in SEC EDGAR's filing metadata, exactly as recorded. Provenance only; it may be wrong (see the status). |
| filing_ledger.csv | period_of_report_verification_status | How `period_of_report` was established (table below). |
| filing_ledger.csv | disposition | The filing's single final outcome (below). |
| filing_ledger.csv | disposition_reason | Why, in words, where the pipeline records one (always for REVIEW, RETRIEVAL_FAILURE, narrative and confirmed no-disclosure filings). |
| filing_ledger.csv | clean_facts_released | Rows of this filing in `reported_facts.csv`. |
| filing_ledger.csv | facts_withheld_for_review | Facts manufactured from this filing but withheld. |
| filing_ledger.csv | withheld_review_reasons | Semicolon-separated review reasons of the withheld facts (below). |
| filing_ledger.csv | source_document_url | The primary document and the exact payload retrieved. |
| filing_ledger.csv | source_document_bytes | The primary document and the exact payload retrieved. |
| filing_ledger.csv | source_document_sha256 | The primary document and the exact payload retrieved. |
| filing_ledger.csv | confirmation_document_sha256 | For NO_RELEVANT_DISCLOSURE: the hash of the independent second retrieval (always equal to `source_document_sha256`). |
Full data dictionary (JSON) → · Complete dictionary with enumerated values and date semantics (Markdown) →
Pricing & License
Individual / Academic: US$499 one time — Individual / Academic (one named individual)
Commercial / Business: US$1,495 one time — Business / Commercial (one legal entity, internal use)
Redistribution / embedding / resale: Not permitted under the standard license — contact Persistfolio about a custom or enterprise license
Release-specific research-data license (item703-repurchase-evidence-2025-09-30-r1) — see full license terms
Known Limitations
- Cohort scope, not all SEC filers: only companies in the Persistfolio Historical Cohort, and only while each was a member.
- Some filings are partially represented: unsafe rows are withheld (38,174 facts in all) while the filing’s clean rows are released. Check facts_withheld_for_review in the ledger before treating a filing’s rows as complete.
- One safely mapped Item 703 table per filing: where a filing reports more than one table, the others are not extracted, and totals across tables are not reconstructed.
- Unsupported table structures go to REVIEW rather than being extracted.
- Narrative-only disclosures are not turned into facts (2,969 narrative filings, 753 explicit no-purchase statements and 7 schema gaps produce none).
- Column (d) can be remaining shares or approximate remaining dollars, depending on the issuer and table; there is no unit field. Do not sum or compare it across rows without checking the raw text.
- Amendments (10-K/A, 10-Q/A) are separate filings and are not deduplicated; do not automatically sum an original and its amendment.
- Unresolved periods are left blank rather than guessed: period_of_report is empty where the period of report could not be established, with the raw SEC metadata date and a verification status kept alongside.
- 1 persistent retrieval failure (Ball Corp. 10-Q/A filed 2007-10-17) is not represented.
- Fixed release with a 2025-09-30 period-of-report cutoff; later SEC amendments or corrections are not reflected.
- No lifetime updates; future releases are sold separately.
FAQ
Is this every SEC filer?
No. It covers the companies of the Persistfolio Historical Cohort (an independent reconstruction of S&P 500 membership), and only for the periods each company was a member.
Are these financial-statement buyback totals?
No. These are the rows of the Item 703 “Issuer Purchases of Equity Securities” table as reported in 10-K and 10-Q filings. They are not cash-flow-statement repurchase amounts, and values are not reconciled to financial statements.
Does a missing fact mean zero repurchases?
No. Use the filing ledger: every filing examined has one disposition, which distinguishes a confirmed absence of Item 703 from narrative-only disclosure, an explicit no-purchase statement, REVIEW, a schema gap and a retrieval failure. A filing can also be partially represented.
Are program purchases separate from other purchases?
Columns (a) total shares purchased and (c) shares purchased under publicly announced plans or programs keep the distinction exactly as the filer reported it. The interpretation fields (component_structure, program_relation, economic_mechanism) are Persistfolio-derived classifications, documented in the data dictionary; they are not issuer-reported SEC fields.
Can a filing be partially represented?
Yes. Clean rows can be released while unsafe rows of the same filing are withheld; the ledger records how many facts were released and withheld for every filing, and why.
What does column (d) measure?
Either the remaining number of shares that may be purchased or the approximate remaining dollar value, depending on the filer and the table — the same issuer can switch over time. Inspect the raw text and any stated display scale before aggregating; the raw value is authoritative.
Are amendments deduplicated?
No. A 10-Q and a later 10-Q/A (or a 10-K and a 10-K/A) are separate filings and can both carry facts for the same period. Decide which to use rather than summing both.
Does it include future updates?
No. This is a fixed, dated release (periods of report through 2025-09-30). Future releases are sold separately.
Can I redistribute it?
Not under the standard license: resale, redistribution, sublicensing, customer-facing APIs and substitute products are not permitted. Your own derived research, charts and statistics that do not reconstruct the data are permitted, subject to the license. Broader distribution needs a custom or enterprise license.
Is it official S&P data?
No. Persistfolio is independent and is not affiliated with S&P Global or S&P Dow Jones Indices. The cohort is Persistfolio’s own reconstruction, and the repurchase values come from SEC filings.
Persistfolio is independent and is not affiliated with, sponsored by, endorsed by, or authorized by S&P Global or S&P Dow Jones Indices. S&P 500® is a trademark of S&P Dow Jones Indices LLC and/or its affiliates. This product is an independent research reconstruction and is not an official S&P dataset.
Changelog
- item703-repurchase-evidence-2025-09-30-r1 (2025-09-30) — Release 1, the first release, built from certified manufacturing run 37794101419 (release gate PASS, 0 blockers).
