SEC EDGAR Index gap: di missing month-ends
Three 2026 month-ends near-empty for SEC EDGAR filing index. Di receipts, di ingest evidence wey bound di fault, di 2025 precedent, and wetin break.
Normally, di last trading day for any month na one of di busiest days for SEC filing index — dat na di record of every document wey companies submit give di regulator. For 2026, e almost empty three times. March 31, April 30, and June 30 each get only double-digit filings, while di days wey dey near dem get thousands. Di pattern follow calendar: every 2026 month wey im last CALENDAR day fall for weekday na crater, and every month wey im last calendar day fall for weekend dey intact. Below: di receipts, di arrival timestamps wey show where di fault dey, di one earlier day wey match am, and wetin filing count wey touch those dates mean.
Di gap first show as quarter-end wahala while we dey put together di Q2 recap and H1 recap — na im make dis page URL be like dis. Further checking change am to month-end wahala; di page dey update for di same address.
Which days dey miss
The exact SQL behind every number
SELECT d, filings, month_ends_on FROM (
SELECT '2026-01-30' AS d, (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-01-30')) AS filings, 'Saturday' AS month_ends_on, 1 AS ord
UNION ALL SELECT '2026-02-27', (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-02-27')), 'Saturday', 2
UNION ALL SELECT '2026-03-31', (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-03-31')), 'weekday (the gap day)', 3
UNION ALL SELECT '2026-04-30', (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-04-30')), 'weekday (the gap day)', 4
UNION ALL SELECT '2026-05-29', (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-05-29')), 'Sunday', 5
UNION ALL SELECT '2026-06-30', (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-30')), 'weekday (the gap day)', 6
UNION ALL SELECT '2025-09-30', (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2025-09-30')), 'weekday, full in the prior year', 7
UNION ALL SELECT '2025-12-31', (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2025-12-31')), 'weekday, full in the prior year', 8
) ORDER BY ordDi pattern dey read straight down di panel. January last weekday carry 4332 filings and February own carry 7870 — both months wey dia final calendar day fall for Saturday, so di last weekday siddon one or two days inside di month. Den 55 for March 31, 34 for April 30, go back up to 5527 for May 29 (May end for Sunday), and 31 for June 30. Di prior-year controls siddon for 3460 and 2289 filings — di same weekday-month-end shape, fully populated. E near-empty exactly wen, and only wen, one 2026 month final calendar day na im be weekday.
How big the hole be, for plain talk
Raw counts no dey show how violent this thing be. Na every weekday month-end since 2020 wey come in under one thousand filings, each one measure against the average of the index days wey dey within five days of am.
The exact SQL behind every number
WITH daily AS (
SELECT
filing_date,
uniqExact(accession_number) AS filings,
uniqExact(cik) AS companies,
max(_ingest_time) AS last_arrived
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date >= toDate('2019-12-20') AND filing_date <= toDate('2026-07-06')
GROUP BY filing_date
),
month_ends AS (
SELECT arrayJoin(arrayMap(i -> toLastDayOfMonth(addMonths(toDate('2020-01-01'), i)), range(78))) AS me
),
sparse AS (
SELECT
e.me AS me,
toUInt32(ifNull(d.filings, 0)) AS filings,
toUInt32(ifNull(d.companies, 0)) AS companies,
d.last_arrived AS last_arrived
FROM month_ends AS e
LEFT JOIN daily AS d ON d.filing_date = e.me
WHERE toDayOfWeek(e.me) <= 5 AND toUInt32(ifNull(d.filings, 0)) < 1000
)
SELECT
toString(s.me) AS month_end,
any(s.filings) AS filings,
any(s.companies) AS companies,
toUInt32(round(avgIf(n.filings, abs(dateDiff('day', n.filing_date, s.me)) <= 5 AND n.filing_date != s.me))) AS neighbour_day_avg,
round(100 * any(s.filings) / avgIf(n.filings, abs(dateDiff('day', n.filing_date, s.me)) <= 5 AND n.filing_date != s.me), 1) AS pct_of_normal,
toString(toDate(any(s.last_arrived))) AS last_row_arrived
FROM sparse AS s
CROSS JOIN daily AS n
GROUP BY s.me
ORDER BY s.me6 days inside six and a half years. The 2026 trio dey for bottom: June 30 carry 31 filings against neighbouring-day average of 4443 — 0.7% of normal day, shortfall wey pass 99%. April 30 land for 0.6% and March 31 for 1.2%. Put am for companies instead of documents: the whole June 30, 2026 index name 27 distinct filers.
The other three rows na the reason why this no be clean "2026 only" story. Two na ordinary federal closures: May 31, 2021 na Memorial Day, and December 31, 2021 na the federal observance of New Year's Day 2022 (January 1 fall for Saturday). EDGAR dey keep the federal holiday calendar, so near-zero counts there — 0 and 1 filings — na wetin closed filing window look like, no be defect.
The third one na the interesting one. April 30, 2025 carry 928 filings, 19.1% of im neighbours — partial, no be empty. Na the only weekday month-end since 2020 wey sit that far below normal with no holiday to explain am, and e predate the 2026 craters by one year: milder version of the same boundary behaviour, at roughly one-fifth of normal day instead of one-hundredth.
Every month-end since 2020
The exact SQL behind every number
WITH month_ends AS (
SELECT arrayJoin(arrayMap(i -> toLastDayOfMonth(addMonths(toDate('2020-01-01'), i)), range(78))) AS me
),
daily AS (
SELECT filing_date, uniqExact(accession_number) AS filings
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date >= toDate('2020-01-01') AND filing_date <= toDate('2026-06-30')
GROUP BY filing_date
)
SELECT toString(e.me) AS month_end, toUInt32(ifNull(d.filings, 0)) AS filings
FROM month_ends AS e
LEFT JOIN daily AS d ON d.filing_date = e.me
WHERE toDayOfWeek(e.me) <= 5
ORDER BY e.meDi long series na di control for di whole argument. Across di 55 weekday month-ends between January 2020 and June 2026, di line dey run flat for di thousands and den e fall off a cliff for di right-hand edge. Nothing about a month last weekday dey make filings scarce — deadlines dey cluster there.
Wetin really happen for di day wey miss
The exact SQL behind every number
SELECT
form_type,
uniqExactIf(accession_number, filing_date = toDate('2026-06-29')) AS normal_day_jun29,
uniqExactIf(accession_number, filing_date = toDate('2026-06-30')) AS gap_day_jun30
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date IN (toDate('2026-06-29'), toDate('2026-06-30'))
GROUP BY form_type
ORDER BY gap_day_jun30 DESC, normal_day_jun29 DESC, form_type
LIMIT 14Dis panel dey name di fault. Di forms wey get any row at all for June 30 dey for top: 15 EFFECT notices — na SEC own confirmations say registration statement don become effective — plus municipal-advisor registrations, offering qualifications and trading-venue notices. Dem be documents wey SEC systems dey produce, no be documents wey companies submit. Every form type wey dey make up normal day bulk show 0 rows: 926 424B2 prospectus supplements for June 29 and none di next day, 595 insider-transaction Form 4 filings and none di next day, 223 8-K corporate-event reports and none di next day. One quarter-end Tuesday wey get zero 8-Ks and zero insider forms no be market fact. Na missing file.
Wen di rows land
The exact SQL behind every number
SELECT
toString(filing_date) AS d,
uniqExact(accession_number) AS filings,
formatDateTime(min(_ingest_time), '%Y-%m-%d %H:%i') AS first_arrived
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date >= toDate('2026-06-26') AND filing_date <= toDate('2026-07-10')
GROUP BY filing_date
ORDER BY filing_dateDi time wey di rows land na di closest tin to fingerprint for here. Every June day wey reach 29th land for warehouse inside one job — 2026-07-01 09:38 UTC, one single batch wey carry di whole month. June 30 land alone di next morning, for 2026-07-02 09:12, e carry im 31 administrative rows while im neighbour wey be one day before carry 4439. Di March and April boundary days show di same pattern, just one month earlier.
The exact SQL behind every number
SELECT
(SELECT toString(toDate(min(_ingest_time))) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-04-01')) AS apr1_first_arrived,
(SELECT toString(toDate(min(_ingest_time))) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-04-30')) AS apr30_first_arrived,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-03-31')) AS mar31_filings_now,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-04-30')) AS apr30_filings_now,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-30')) AS jun30_filings_now,
(SELECT uniqExact(form_type) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-30')) AS jun30_form_typesApril 1 rows first land for 2026-05-01 — na April month-batch, wey run for di turn of May. April 30 rows land for 2026-05-02, one day LATER dan di batch wey suppose carry dem. Dat single day of separation na di whole diagnosis for one number: di job wey dey load one month dey stop one day short of di month end, and di boundary day go dey picked up by anoda path wey clear no complete. Wen a month last calendar day be weekend, di miss no cost anytin (nofin dey to file), and wen e be trading day, one of di month busiest sessions go dey swapped for handful of SEC-issued notices wey spread across 6 form types.
Weda dat off-by-one bound dey inside di vendor pipeline or for our ingest of am, e no fit determinable from inside dis warehouse — to settle am need di SEC raw daily index files for dose three dates, comparison wey dis page no fit run. Wetin di receipts establish: three specific dates no fit use for filing counts.
Status as of dis revision
E no dey fixed. Every count for dis page dey recompute each time dem generate di page, and as of dis run March 31 still dey carry 55 filings, April 30 34, and June 30 31 — di counts wey dem record wen dem first write di gap. Di index otherwise dey healthy: 2026-07-10 dey carry 2198 filings, wey arrive on schedule. Di sanity bounds here hold di three days for dia near-empty values, so a backfill go trip dem and force a regeneration wit corrected numbers.
Anytin else miss?
One loader get boundary bug, but dat one no mean di oda loaders get problem. June 30 thin for anoda place inside di warehouse?
The exact SQL behind every number
SELECT dataset, jun29, jun30 FROM (
SELECT 'SEC filing index (filings)' AS dataset,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-29')) AS jun29,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-30')) AS jun30, 1 AS ord
UNION ALL SELECT 'Minute bars (tickers)',
(SELECT uniqExact(ticker) FROM global_markets.delayed_stocks_minute_aggs WHERE window_start >= toDateTime('2026-06-29 04:00:00') AND window_start < toDateTime('2026-06-30 04:00:00')),
(SELECT uniqExact(ticker) FROM global_markets.delayed_stocks_minute_aggs WHERE window_start >= toDateTime('2026-06-30 04:00:00') AND window_start < toDateTime('2026-07-01 04:00:00')), 2
UNION ALL SELECT 'Dividends (ex-div records)',
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = toDate('2026-06-29')),
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = toDate('2026-06-30')), 3
UNION ALL SELECT 'News articles',
(SELECT count() FROM global_markets.stocks_news WHERE toDate(published_utc) = toDate('2026-06-29')),
(SELECT count() FROM global_markets.stocks_news WHERE toDate(published_utc) = toDate('2026-06-30')), 4
UNION ALL SELECT 'Treasury curve rows',
(SELECT count() FROM global_markets.treasury_yields WHERE date = toDate('2026-06-29')),
(SELECT count() FROM global_markets.treasury_yields WHERE date = toDate('2026-06-30')), 5
) ORDER BY ordE no thin. Di minute-bar tape cover 11982 tickers for June 30 against 11903 di day before; 704 ex-dividend records, 215 news articles plus full Treasury curve land for dat day too. Na only di filing index — 31 rows against 4439 — get di hole. Di week recap carry di session receipts: June 30, 2026 na Tuesday and na full trading day.
Wetin e mean if you dey count filings
Any count wey window carry March 31, April 30 or June 30, 2026 dey understated pass just rounding error: three heavy filing days don turn to near-zero. Dat one dey cut the March, April and June monthly totals, the Q1 and Q2 quarterly totals, plus the half-year total. Our own June recap dey publish im filing counts with the disclosure inside, and the same caveat dey apply to any filings-count question wey you ask from terminal — our own join — wey touch those dates. Ask for filings per month for 2026 and three out of the six answers go short by roughly one full day of documents.
Di form types for one line each
- 8-K — corporate event report: company dey tell market say something don happen.
- Form 4 — insider (officer, director, big holder) dey report trade wey dem do for dia own stock.
- 10-Q — di quarterly financial report.
- 424B2 — prospectus supplement: di pricing document for securities offering.
- NPORT-P — fund monthly portfolio-holdings report.
- EFFECT / QUALIF / MA-I / ATS-N — administrative notices wey SEC own systems dey generate: registration wey don go effective, offering wey don qualify, municipal advisor wey dey register, trading venue wey dey file disclosures. Na dis ones survive di gap days. Which SEC filings dey show face well well break di full distribution down.
FAQ
Di gap for SEC EDGAR filing, dem don fix am?
As at di time wey we dey update dis one, e never fix. March 31, April 30 and June 30, 2026 still get 55, 34 and 31 filings for dia own inside di index copy wey we get. Dis page go change automatically wen dem update am, and di sanity bounds wey we set go fail if backfill land — na why we dey publish di receipts instead of just memo.
Dis one mean say SEC lose di filings?
No. Di documents dey for EDGAR; wetin miss na one day worth of INDEX rows for di downstream copy — di arrival times show say di loader run on schedule and deliver day wey almost empty. Whether di off-by-one wahala come from di data vendor or from our own load, we need di SEC own daily index files for dose three dates to settle di matter.
Wetin be di SEC EDGAR filing index?
EDGAR na di SEC public filing system, and im daily index dey list every document wey dem file dat day: di company, di form type, di accession number wey uniquely identify di filing, and di link. Na im be di backbone for anything wey dey count filings — insider-trade screens, 8-K event feeds, prospectus trackers.
Which form types miss for June 30, 2026?
All di ones wey companies dey file. Dat day carry 6 form types, all of dem na SEC-generated administrative notices. Di previous session 926 424B2 filings, 595 Form 4 insider reports and 223 8-K event reports, all of dem drop to 0 for di gap day.
Dis kind tin don happen before 2026?
E don happen once, but e no too bad. April 30, 2025 dey at 19.1% of normal day — e be partial instead of empty, and no holiday fit explain am. Di only oda sub-1,000 weekday month-ends since 2020 na May 31, 2021 (Memorial Day) and December 31, 2021 (di federal observance of New Year's Day), both of dem na genuine closures instead of data faults.
How We Dey Do Am
- All the counts dem dey remove duplicate by accession number: one filing fit show under many entities.
- "Neighbouring-day average" na the average count of the index days wey dey within five calendar days of the day wey we dey look, but we no count that day itself.
- Arrival times na this warehouse own
_ingest_timevalues, no be SEC own — dem dey measure the pipeline wey pesin wey dey read this page actually experience. - Weekday month-ends na the last CALENDAR day of each month wey fall for Monday to Friday; two of dem na federal holidays and we don flag am like that for up.
- This note dey update for the same place; the original quarter-end framing don change to month-end evidence, for the same URL. Every number na stored query result, wey dem re-run through the gated read-only path each time dem regenerate am — you fit run the same queries yourself for Strasmore terminal.