August 15, 2026
Why We Built Quantgress
Products like Quiver Quantitative and CapitolTrades package congressional trading disclosures, plus a growing list of adjacent alternative datasets, into a paid API. It's a real product: clean endpoints, a dashboard, an SLA. What it's selling access to, though, is data that's already public record. Every Periodic Transaction Report a senator or representative files under the STOCK Act lands on a government website the day it's disclosed. Nobody needs anyone's permission to read it.
So Quantgress is the build-it-yourself version. Own scrapers against primary sources: efdsearch.senate.gov, the House Clerk's disclosure site, SEC EDGAR, FEC, FINRA, USPTO, USAspending, Wikimedia, normalized into one local DuckDB file, served over a thin read-only API. Nothing routes through a third party's interpretation of the filing. If a number looks wrong, you can trace it back to the exact page it came from.
It started narrower than it ended up
The project was scoped originally against just congressional trades: Senate and House PTRs, unioned into one trades view, with tickers resolved out of free-text asset descriptions where the filing itself didn't include one. That was phases 1 through 5: scrapers, entity resolution, a daily driver, an API.
Everything after that was the discovery that Quiver's actual catalog is much wider than congressional trades alone: lobbying filings, insider Form 4s, 13F institutional holdings, off-exchange short volume, granted patents, corporate PAC donations, executive pay, even OCR'd disclosures for the sitting president. Eighteen phases later, most of that catalog has a Quantgress equivalent. Each one is still just a scraper against a primary government source, not a new architecture.
What stays intentionally difficult
Guesses are never allowed to overwrite what was actually filed. When entities.py recovers a ticker from a free-text asset name the filer never gave a symbol for, that recovered value lands in a separate *_guess column, flagged as inferred. The original text is preserved untouched. Anyone building on top of this data can decide for themselves whether an inferred ticker meets their bar. The option to exclude it is never taken away.
Keep the provenance visible. Don't paper over what the data actually says. That instinct is most of what "self-hosted alternative" means here: not cheaper access to the same black box, but a different, auditable one.