A Cracked Quant’s Guide to Beating the SEC’s Feed
I asked EDGAR for a filing that didn’t exist yet, and eventually it said yes.
A little after 11 on Friday, I pointed a script at EDGAR and started requesting filings that hadn’t been announced yet.
These were ordinary public URLs that simply didn’t exist at the moment I first asked, and the script’s whole job was to keep asking, politely, until one of them stopped returning an error and started returning a filing.
The reason this works is a quirk of how EDGAR publishes documents, and the reason it’s worth writing up is that the quirk hands you a filing tens of seconds before the feed everyone else watches knows the filing exists.
When the SEC says a filing is “public”, which clock is it talking about: the one where the file is on a server, or the one where everyone was told about it?
So today, I’m going to show you exactly how to do it yourself.
Where the seconds come from
EDGAR is pretty old now, and as such, it’s a well-documented pipeline: a submission gets accepted, validated, assigned an accession number, reassembled, and only then handed to the dissemination service that feeds the RSS streams, the paid subscriber feed, and every data vendor downstream of them.
Each stage takes time, and most importantly, the stages don’t finish all at once.
A developer named John Friedman noticed this in August 2025 in the crudest, best way possible: he looked at the HTTP headers.
A 10-K’s SGML file carried a
Last-Modifiedtimestamp nine seconds before his RSS poller first saw the filing, and when he widened the check to roughly 4,000 filings, the delay between EDGAR accepting a document and the RSS feed publishing it averaged around 25 seconds.
If you know anything about how fast price moves after an earnings release, you know that even just a 5 second lead is major.
So, naturally, being inspired by his finding, I set out to run an experiment to see if this has already been arbitraged away to nothing.
Surprisingly, it hasn’t.
The accession number is just a counter
Every EDGAR submission gets an accession number, and the format does most of the work for you:
0001193125-26-351131 = {submitter CIK}-{two-digit year}-{sequence}
Now, this is pretty much the entire bedrock of the edge, so let’s take a second to actually define those:
Submitter CIK: This just identifies whoever submitted the filing, and most companies pay a filing agent to press the button and the agent files under its own CIK all day long for hundreds of clients.
Sequence #: Basically what it sounds like and is a counter that increments with each submission the agent makes that year.
What makes this prediction feasible is the submitter population is tiny and concentrated. Friedman’s follow-up repo found that ten submitters accounted for about 42% of all filings in 2024, so watching a handful of counters covers a huge slice of the market and companies tend to stick with the same agent year after year.
When I pulled the current-filings feed that morning, the busiest submitters were two law firms, Seward & Kissel and Willkie Farr, and a compliance shop, each churning out filings under a single prefix.
If the last thing an agent filed was sequence
003661, the next thing it files will be003662.
The trick, in four steps
Once you know how that works, you can see how the whole pipeline can be run from a simple laptop:
Keep reading with a 7-day free trial
Subscribe to Alphanume Research to keep reading this post and get 7 days of free access to the full post archives.

