Repository navigation
Reconciling Form 4 acceptance timestamps: submissions JSON versus SGML headers #1631
|
Hi, How does EdgarTools reconcile acceptance timestamps from the submissions JSON with those in complete-submission SGML headers? I maintain InsiderFilings.info. While validating our Form 4 database, we identified 288 stored timestamps that contained New York wall-clock values in a field our application interpreted as UTC. We corrected them individually against SEC submission headers, using These were errors in our stored data. They do not, by themselves, establish an error in EdgarTools or in the current SEC JSON. Three concrete examplesThe following values come from our source checks dated 18 October 2026. All three are original Form 4 filings. Accession | Header acceptance time, New York | UTC derived from header | Previous value in our database -- | -- | -- | -- 0001193125-26-057701 | 2026-02-18 19:18:28 | 2026-02-19 00:18:28Z | 2026-02-18 19:18:28 0001437749-25-031540 | 2025-10-22 18:15:16 | 2025-10-22 22:15:16Z | 2025-10-22 18:15:16 0001412100-25-000070 | 2025-05-28 08:32:51 | 2025-05-28 12:32:51Z | 2025-05-28 08:32:51Complete SEC submissions: To reproduce the comparison, locate The conversion alone can be reproduced with Python 3.9+ and an available IANA timezone database:
This snippet reproduces the timezone conversions; it does not download or validate the source documents. My questions are:
I have not reproduced an EdgarTools bug and am asking about the recommended approach before drawing any library-specific conclusions. Current JSON responses may also differ from historical snapshots. For context, our descriptive study documents the correction and validation procedure, with data and reproduction code: Disclosure: I maintain the database and authored the study; its validation is internal. The study measures recorded acceptance, not first public availability or provider receipt. |
Replies: 1 comment 1 reply
|
Read from the code at main (2b92e2a), so this is what it does today:
Our own measurement agrees with the second point: on 2026-10-11 I compared 450 filings from 25 companies' submissions files against their headers. Within a file the result was uniform (every filing right, or every filing shifted by the Eastern offset), but the same filing read differently in two different files. So a per-file check is cheaper than a per-filing one, but the shift is not something to correct blindly: take the header as the reference. Write-up and method: #1501 (comment) One caveat on your examples: the first row (19:18:28 ET on 2026-02-18) is on the 19th in UTC, so any pipeline that stores UTC and then takes |
Read from the code at main (2b92e2a), so this is what it does today:
filing.acceptance_datetimeon a filing fromget_filings()/company.get_filings()comes fromacceptanceDateTimein the submissions JSON (edgar/entity/data.py, parsed withfromisoformat(... 'Z' -> '+00:00'), so it is treated as UTC).filing.header.acceptance_datetimecomes from the<ACCEPTANCE-DATETIME>line of the filing's own SGML header (edgar/headers.py,strptime('%Y%m%d%H%M%S')), which is naive Eastern time, not UTC. TheEntityFilingdocstring says the JSON value is "not reliably UTC" and recommends the header for a precise time (one extra request per filing).