The SEC publishes a roster of every registered investment adviser each month. It’s a big spreadsheet, and nobody looks at the differences between one month and the next. Those differences are where the interesting stuff is: firms registering, firms leaving, firms changing custodians, headcount jumps.
Tributary downloads each month’s roster, compares it to the last one, ranks what changed, and publishes the result as a static site.
How it works
- A GitHub Actions workflow runs a few times a month, pulls the new roster, and rebuilds the site. No server.
- Rosters before December 2025 are
.xlsx, later ones are CSV. I wrote a small stdlib-only xlsx reader so the pipeline has no dependencies. - The fetch step heals itself. It grabs the newest months plus any month since January 2024 that’s missing a snapshot, so a fresh run rebuilds the whole history.
- The SEC sometimes re-posts a month byte-for-byte, and some months have no data at all. The build skips duplicates and labels gaps instead of inventing a change.
- Every firm gets its own timeline page. There’s also an A–Z directory and a page per “buying window.”
What I learned
April is noisy. Annual amendments push the event count to roughly ten times a normal month, so “typical” on the site means the median, not the average.
