Luki w indeksie SEC EDGAR na koniec miesiąca
Analiza braków w rejestrze SEC EDGAR za rok 2026. Trzy terminy kończące miesiące wykazują drastyczny spadek liczby zgłoszeń względem danych z roku 2025.
Ostatni dzień handlowy miesiąca jest zazwyczaj jednym z najbardziej obciążonych dni w indeksie SEC — rejestrze wszystkich dokumentów składanych przez spółki u regulatora. W 2026 roku występuje zjawisko niemal całkowitego braku dokumentów w trzech przypadkach. 31 marca, 30 kwietnia oraz 30 czerwca odnotowano jedynie dwucyfrowe liczby zgłoszeń, podczas gdy w sąsiednich dniach rejestrowano tysiące. Schemat ten zależy od kalendarza: każdy miesiąc 2026 roku, którego ostatni dzień kalendarzowy przypada w dzień roboczy, wykazuje drastyczny spadek liczby dokumentów, natomiast każdy miesiąc, którego ostatni dzień kalendarzowy przypada w weekend, zachowuje standardowy poziom. Poniżej przedstawiono zestawienia, znaczniki czasu rejestracji wskazujące źródło problemu, jeden poprzedni dzień o podobnej charakterystyce oraz wartość liczby zgłoszeń w tych terminach.
Luka ta została po raz pierwszy zidentyfikowana jako problem związany z końcem kwartału podczas przygotowywania podsumowania Q2 oraz podsumowania H1 — stąd adres URL tej strony. Dalsza analiza wykazała, że jest to problem związany z końcem miesiąca; strona jest aktualizowana pod tym samym adresem.
Które dni są pominięte
Dokładny kod SQL dla każdej liczby
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 ordWzór przebiega pionowo w dół panelu. Ostatni dzień roboczy stycznia zawiera zgłoszenia 4332, a luty zawiera 7870 — w obu przypadkach ostatni dzień kalendarzowy przypadał w sobotę, więc ostatni dzień roboczy wystąpił jeden lub dwa dni wcześniej wewnątrz miesiąca. Następnie 55 dnia 31 marca, 34 dnia 30 kwietnia, powrót do 5527 dnia 29 maja (maj zakończył się w niedzielę) oraz 31 dnia 30 czerwca. Wartości kontrolne z roku ubiegłego wynoszą odpowiednio 3460 oraz 2289 zgłoszeń — zachowano ten sam układ dni roboczych względem końca miesiąca, przy pełnym wypełnieniu danych. Brak danych występuje dokładnie wtedy i tylko wtedy, gdy ostatni dzień kalendarzowy miesiąca w 2026 roku przypada w dzień roboczy.
Jaka jest skala deficytu, mówiąc wprost
Surowe dane liczbowe nie oddają skali tego zjawiska. Poniżej przedstawiono każdy koniec miesiąca przypadający w dzień roboczy od 2020 roku, w którym odnotowano mniej niż tysiąc zgłoszeń, zestawiony ze średnią z dni indeksu w okresie pięciu dni wokół danej daty.
Dokładny kod SQL dla każdej liczby
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 dni w ciągu sześciu i pół roku. Trzy daty z 2026 roku znajdują się na samym dole: 30 czerwca odnotowano 31 zgłoszeń przy średniej dla sąsiednich dni wynoszącej 4443 — 0.7% typowego dnia, czyli niedobór przekraczający 99%. 30 kwietnia wartość wynosi 0.6%, a 31 marca 1.2%. Przekładając to na liczbę spółek, a nie dokumentów: wszystkie nazwy z indeksu z dnia 30 czerwca 2026 roku to 27 odrębnych podmiotów zgłaszających.
Pozostałe trzy wiersze wyjaśniają, dlaczego nie jest to problem ograniczony wyłącznie do 2026 roku. Dwa z nich to zwykłe przerwy w pracy organów federalnych: 31 maja 2021 roku przypadał Memorial Day, a 31 grudnia 2021 roku obchodzono federalnie Nowy Rok 2022 (1 stycznia wypadał w sobotę). System EDGAR uwzględnia kalendarz świąt federalnych, więc bliskie zeru liczby zgłoszeń — odpowiednio 0 i 1 — stanowią obraz zamkniętego okna zgłoszeniowego, a nie błąd systemu.
Trzeci przypadek jest najbardziej istotny. 30 kwietnia 2025 roku odnotowano 928 zgłoszeń, co stanowi 19.1% wartości z dni sąsiednich — jest to spadek częściowy, a nie całkowity. Jest to jedyny koniec miesiąca przypadający w dzień roboczy od 2020 roku, który jest tak znacznie poniżej normy bez wyjaśnienia w postaci święta. Wystąpienie to poprzedza kryzysy z 2026 roku o rok: jest to łagodniejsza wersja tego samego zachowania granicznego, wynosząca około jednej piątej typowego dnia, a nie jednej setnej.
Każdy koniec miesiąca od 2020 roku
Dokładny kod SQL dla każdej liczby
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.meDługi szereg służy jako punkt odniesienia dla całej argumentacji. W przypadku 55 końców miesięcy przypadających na dni robocze między styczniem 2020 a czerwcem 2026, linia utrzymuje się na poziomie tysięcy, a następnie gwałtownie spada na prawym brzegu wykresu. Sam fakt, że koniec miesiąca przypada w dzień roboczy, nie powoduje niedoboru dokumentacji — terminy składania raportów kumulują się właśnie w tym okresie.
Co faktycznie znajduje się w brakującym dniu
Dokładny kod SQL dla każdej liczby
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 14Ta tabela wskazuje przyczynę błędu. Formularze zawierające jakiekolwiek wiersze z dnia 30 czerwca znajdują się na górze: 15 EFFECT powiadomień — własnych potwierdzeń SEC, że oświadczenie rejestracyjne stało się skuteczne — plus rejestracje doradców komunalnych, kwalifikacje ofertowe oraz powiadomienia o miejscach obrotu. Są to dokumenty generowane przez systemy SEC, a nie dokumenty składane przez spółki. Każdy typ formularza stanowiący większość standardowego dnia wykazuje 0 wierszy: 926 424B2 uzupełnień prospektu w dniu 29 czerwca i zero w dniu następnym, 595 zgłoszeń Form 4 dotyczących transakcji insiderów i zero w dniu następnym, 223 8-K raportów zdarzeń korporacyjnych i zero w dniu następnym. Wtorek kończący kwartał bez żadnych formularzy 8-K i bez żadnych formularzy insiderów nie jest faktem rynkowym. Jest to brakujący plik.
Kiedy wpłynęły wiersze
Dokładny kod SQL dla każdej liczby
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_dateZnaczniki czasu przybycia są tutaj najbliższe miana odcisku palca. Wszystkie dni czerwca do 29 czerwca trafiły do magazynu w ramach jednego zadania — 2026-07-01 09:38 UTC, jako pojedyncza partia obejmująca cały miesiąc. 30 czerwca dotarł sam następnego ranka, o godzinie 2026-07-02 09:12, niosąc swoje 31 wiersze administracyjne, podczas gdy jego sąsiad z dnia wcześniej zawierał 4439. Graniczne dni marca i kwietnia wykazują identyczny kształt, jeden miesiąc wcześniej.
Dokładny kod SQL dla każdej liczby
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_typesWiersze z 1 kwietnia trafiły po raz pierwszy 2026-05-01 — partia miesięczna kwietnia, realizowana na przełomie maja. Wiersze z 30 kwietnia trafiły 2026-05-02, jeden dzień PÓŹNIEJ niż partia, która powinna je zawierać. Ta pojedyncza doba rozdzielenia stanowi całą diagnozę zawartą w jednej liczbie: zadanie ładujące miesiąc kończy się jeden dzień przed końcem miesiąca, a dzień graniczny jest następnie przejmowany przez inną, ewidentnie niekompletną ścieżkę. Gdy ostatni dzień kalendarzowy miesiąca przypada w weekend, błąd nie generuje kosztów (nie ma nic do złożenia), natomiast gdy jest to dzień handlowy, jedna z najbardziej obciążonych sesji miesiąca zostaje zastąpiona garścią powiadomień wydanych przez SEC, rozproszonych w 6 typach formularzy.
Czy to przesunięcie o jeden dzień wynika z potoku dostawcy, czy z naszego procesu pobierania danych, nie jest możliwe do ustalenia wewnątrz tego magazynu — rozstrzygnięcie wymaga surowych dziennych plików indeksowych SEC dla tych trzech dat, a ta strona nie może przeprowadzić takiej porównawczej analizy. To, co potwierdzają potwierdzenia: trzy konkretne daty są niezdatne do celów liczenia zgłoszeń.
Status na dzień rewizji
Błąd nie został naprawiony. Każda wartość na tej stronie jest przeliczana przy każdym generowaniu strony. Według stanu na dzień 31 marca dane obejmują 55 raportów, 30 kwietnia 34, a 30 czerwca 31 — są to wartości zarejestrowane w momencie powstania luki. Indeks działa prawidłowo: 2026-07-10 zawiera 2198 raportów, dostarczanych zgodnie z harmonogramem. Granice kontrolne utrzymują wartości dla tych trzech dni na poziomie bliskim zeru, zatem uzupełnienie danych powoduje ich przekroczenie i wymusza regenerację strony z poprawionymi liczbami.
Czy brakuje czegoś jeszcze?
Błąd graniczny w jednym loaderze nie odnosi się do pozostałych. Czy 30 czerwca występuje gdzie indziej luka w magazynie danych?
Dokładny kod SQL dla każdej liczby
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 ordNie występuje. Wykres minutowy obejmuje 11982 tickerów z dnia 30 czerwca w porównaniu do 11903 z dnia poprzedniego; w tym samym dniu odnotowano również 704 rekordów dywidendowych, 215 artykułów informacyjnych oraz pełną krzywą obligacji skarbowych. Tylko indeks zgłoszeń — 31 wierszy w stosunku do 4439 — wykazuje brak danych. podsumowanie tygodnia zawiera zestawienie sesji: 30 czerwca 2026 roku był wtorkiem i pełnym dniem handlowym.
Znaczenie dla analizy liczby rejestracji
Każdy pomiar obejmujący daty 31 marca, 30 kwietnia lub 30 czerwca 2026 roku wykazuje błąd znacznie większy niż błąd zaokrąglenia: trzy dni o bardzo dużej liczbie rejestracji zostały zastąpione wartościami bliskimi zeru. Powoduje to zaniżenie sum miesięcznych za marzec, kwiecień i czerwiec, sum kwartalnych za Q1 i Q2 oraz sumy półrocznej. Nasze podsumowanie za czerwiec publikuje liczby rejestracji wraz z odpowiednim zastrzeżeniem; to samo zastrzeżenie dotyczy każdego zapytania o liczbę rejestracji w terminalu — w tym naszych — które obejmuje te daty. Przy zapytaniu o liczbę rejestracji w miesiącach 2026 roku, trzy z sześciu odpowiedzi będą niepełne o około jeden pełny dzień dokumentów.
Rodzaje formularzy (po jednym wierszu)
- 8-K — raport dotyczący zdarzeń korporacyjnych: informacja spółki o wystąpieniu istotnego zdarzenia.
- Form 4 — raport osoby posiadającej udziały (członka zarządu, dyrektora, dużego akcjonariusza) dotyczący transakcji na własnych akcjach.
- 10-Q — kwartalny raport finansowy.
- 424B2 — suplement prospektu: dokument określający cenę oferty papierów wartościowych.
- NPORT-P — miesięczny raport funduszu dotyczący składu portfela.
- EFFECT / QUALIF / MA-I / ATS-N — powiadomienia administracyjne generowane przez systemy SEC: wejście rejestracji w życie, kwalifikacja oferty, rejestracja doradcy komunalnego, składanie ujawnień przez platformę obrotu. Są to dane pozostałe po dniach przerwy. Które raporty SEC pojawiają się najczęściej przedstawia pełny rozkład.
FAQ
Czy luka w raportach SEC EDGAR została już naprawiona?
Nie, według stanu na tę rewizję. W naszej kopii indeksu daty 31 marca, 30 kwietnia oraz 30 czerwca 2026 roku nadal zawierają odpowiednio raporty 55, 34 oraz 31. Strona ta odświeża się po wprowadzeniu zmian, a jej limity spójności są ustawione tak, aby zgłosić błąd w przypadku wystąpienia uzupełnienia danych — taką funkcją jest publikowanie dowodów zamiast notatek.
Czy oznacza to, że SEC zgubiła raporty?
Nie. Dokumenty znajdują się w systemie EDGAR; brakuje jedynie jednego dnia rekordów INDEX w kopii pochodnej. Czas nadejścia wskazuje, że proces ładowania działał zgodnie z harmonogramem, dostarczając niemal pusty dzień. To, czy błąd przesunięcia o jeden dzień leży po stronie dostawcy danych, czy po naszej kopii, zostanie ustalone po przetworzeniu dziennych plików indeksu SEC dla tych trzech dat.
Czym jest indeks raportów SEC EDGAR?
EDGAR to publiczny system raportowania SEC, a jego dzienny indeks zawiera listę wszystkich dokumentów złożonych danego dnia: nazwę spółki, typ formularza, numer accession, który jednoznacznie identyfikuje raport, oraz link. Stanowi on fundament każdego systemu monitorującego raporty — od skanerów transakcji insiderów, przez kanały zdarzeń 8-K, po trackery prospektów emisyjnych.
Jakie typy formularzy brakowało 30 czerwca 2026 roku?
Wszystkich typów składanych przez spółki. Dzień ten zawiera 6 typów formularzy, z których wszystkie są administracyjnymi powiadomieniami generowanymi przez SEC. Raporty 926 424B2 z poprzedniej sesji, 595 raporty insiderów Form 4 oraz 223 8-K raporty zdarzeń, wszystkie wykazują wartość 0 w dniu wystąpienia luki.
Czy taka sytuacja miała miejsce przed 2026 rokiem?
Raz, w łagodniejszej formie. Data 30 kwietnia 2025 roku wynosi 19.1% typowego dnia — jest to sytuacja częściowa, a nie całkowity brak danych, i nie wynika ona z żadnego święta. Jedynymi innymi końcami miesięcy w dni robocze, w których liczba rekordów spadła poniżej tysiąca od 2020 roku, są 31 maja 2021 (Memorial Day) oraz 31 grudnia 2021 (federalne święto Nowego Roku); oba przypadki stanowiły rzeczywiste zamknięcia rynków, a nie błędy danych.
Metodologia
- Wszystkie liczby są usuwane z duplikatów na podstawie numeru dostępu: jedno zgłoszenie może być indeksowane dla kilku podmiotów.
- "Średnia z dni sąsiednich" to średnia liczba dni indeksowych w ciągu pięciu dni kalendarzowych od dnia docelowego, z wyłączeniem tego dnia.
- Czas nadejścia to wartości
_ingest_timetego magazynu, a nie SEC — mierzą one przepływ danych, z jakim faktycznie styka się czytelnik tej strony. - Końce miesięcy w dni robocze to ostatni dzień KALENDARZOWY każdego miesiąca przypadający od poniedziałku do piątku; dwa z nich to święta federalne, które zostały oznaczone powyżej.
- Niniejsza notatka jest aktualizowana w miejscu; pierwotne ujęcie kwartalne zostało zastąpione dowodami miesięcznymi pod tym samym adresem URL. Każda liczba jest wynikiem zapytania, uruchamianego ponownie przez ograniczoną ścieżkę tylko do odczytu przy każdej regeneracji — można uruchomić te same zapytania samodzielnie na terminalu Strasmore.