I keep a small mental list of lawmakers whose disclosures I don't fully trust, and it isn't because I think they're crooked. It's because they're chronically late, and once you start paying attention to lateness the whole feed starts to look different. The STOCK Act says a member of Congress has to report a covered transaction within a fixed window, usually about a month and a half from when the trade happens or from when they learn about it. Most people who follow congressional trading treat every filing as one flat stream of data. The lateness, the amendments, the quiet corrections, all of that gets flattened into a single row that says who bought what and when. I think that's a mistake, and the more I look at late filings the more I think the timing metadata is telling you something the trade itself is not.
How watchdogs actually catch a late filing
The mechanism is less clever than you'd hope. A disclosure carries at least two dates that matter. There's the transaction date, which is when the trade supposedly happened, and there's the filing date or the date the document lands in the public record. Subtract one from the other and compare it against the statutory window. If the gap is bigger than the window allows, the filing is late. That's the entire trick. Watchdog groups and journalists aren't running some forensic model. They're doing date arithmetic at scale, across hundreds of members and thousands of transactions, and flagging anything where the clock clearly ran out.
The reason this works as a repeatable process, and the reason you can build your own version of it, is that the dates are structured fields, not prose. So a rough workflow looks like this:
- Pull every transaction with both its transaction date and its filing date attached.
- Compute the gap in days for each one.
- Flag anything past the statutory window as late, and bucket the rest by how late, because thirty days over is a different animal from three hundred days over.
- Group by member, so you can see who is late once versus who is late as a way of life.
- Keep a separate pile for amendments, which are filings that revise a transaction already reported, because those revisions carry their own information.
None of that requires special access. The frustrating part is that the raw data is messy. Dates get transposed, a member reports a trade made by a spouse or a dependent child with its own lag, and some filings arrive as scanned documents that resist clean parsing. So in practice a chunk of your time goes to cleaning before you can trust the gap you computed. If you skip that cleaning step, you'll flag a pile of false lates and quietly poison your own signal.
Why the penalty barely functions as a deterrent
Here's the part that changes how you should read all of this. The standard penalty for filing late is a fixed fee, and it's small. We're talking about a couple hundred dollars, a figure that hasn't meaningfully scaled with anything. For someone actively trading individual stocks in size, that fee is a rounding error. It's less than the spread on a single decent-sized order. And there's discretion baked in, so the fee can be waived, which means even that trivial amount isn't guaranteed to land.
Once you internalize that the cost of being late is roughly nothing, a lot of behavior stops looking like carelessness. If I told you that you could delay disclosing a trade by weeks or months, and the worst case was a fee smaller than your lunch tab, you'd probably stop treating the deadline as a hard constraint too. The deadline becomes a suggestion. None of this is a moral judgment, just incentives. A rule with no teeth gets treated like a rule with no teeth. So when you see a member who is late again and again, the honest read isn't that they keep forgetting. The read is that the deadline was never binding for them in the first place, and you should stop assuming their filing dates mean what the on-time crowd's filing dates mean.
Do late trades behave differently
This is the question I actually care about, and I want to be careful because it's easy to overclaim here. The honest answer is that the research is suggestive rather than settled. There's a reasonable body of work poking at whether disclosed congressional trades outperform, and the results are all over the place depending on the period, the sample, and how you handle the reporting lag. What I find more interesting than the raw performance question is the timing question sitting underneath it.
The intuition is straightforward. If a trade is disclosed on time, the market gets to react to it inside a fairly tight window after the transaction. If a trade is disclosed months late, then by the time it becomes public, whatever information advantage existed has had a long runway to play out privately. The public disclosure of a badly late trade is, in a sense, stale news about a position that already did its work. So even if late-disclosed trades looked like they outperformed on paper, a lot of that move happened in the dark, before you or any other outsider could have acted on it. The lateness eats the edge for anyone downstream.
That's why I don't try to trade the late filings directly as buy signals. By the time I see them, the useful window is usually closed. What I do instead is treat the pattern of lateness as a lens on the filer. A member who is habitually late is telling you their disclosures are low-fidelity as real-time signals, and you should discount the timeliness of everything they file, not just the trades that got flagged.
Treating amendments and habitual lateness as their own layer
So the practical move is to stop folding this metadata into the ordinary trade feed and start tracking it as a distinct layer. Concretely, I keep three things separated from the main stream.
- A filer-level lateness profile. For each member, what fraction of their filings are late, and how late on average. This is a slow-moving trait, and it tells you how much to trust the timestamp on anything new from them.
- An amendment log. When a member revises an already-reported transaction, that revision is worth reading on its own. Sometimes it's a boring typo fix. Sometimes it's a materially different number or a transaction that quietly appears where none was reported before. The pattern of who amends, and how often, is its own tell.
- An extreme-lateness bucket. Filings that are late by a normal margin are common enough to be noise. Filings that are late by many months are rarer and, in my experience, more likely to sit near something the filer would rather not have surfaced promptly.
The rule of thumb I've landed on is simple. On-time filings are the ones you can reason about as timely information. Late filings are better read as commentary on the filer than as tradeable events. And a member who shows up in your extreme-lateness bucket and your amendment log at the same time is the one I'd actually spend a few minutes looking at by hand, because two weak signals about the same person start to add up.
The uncomfortable thing about all of this is that the strongest signal in the timing data comes from the enforcement being weak. If the penalty had teeth, lateness would be rare and mostly accidental, and it wouldn't tell you much. Because the penalty is trivial, lateness is a choice, and choices reveal preferences. So I've made my peace with reading the deadline not as a rule people follow but as a filter that sorts filers into ones who treat disclosure as real and ones who don't. That sort is the part I keep.