Skip to content
Politician Trade Tracker

How to read this

What the data is, and the four things worth knowing before you act on any of it.

Every row comes from a Periodic Transaction Report — the filing the STOCK Act requires of a member of Congress after buying or selling a security. The pipeline downloads the filed PDFs from the House Clerk and parses them. Nothing is inferred, and nothing is scraped from another tracker: every row links back to its source document.

1Amounts are ranges, not numbers

A filing says "$1,001 – $15,000", never "$7,412". Every dollar figure here is the midpoint of that range. Treat it as an order of magnitude — the error on a single trade is large, and it only averages out across many.

2You are reading old news

The deadline is 45 days and plenty of filings miss it. Median time from trade to disclosure in this dataset is 27 days. Any edge here is slow, and everyone else reading the same public filings sees it at the same moment.

3Much of this is not stock picking

A large share of disclosed volume is a managed account, an adviser rebalancing, an index fund, or Treasury bills. The "Held by" column shows whether it was the member, a spouse, or a dependent child. Filter to Stock and read the asset names before drawing conclusions.

4Disclosure is not evidence

A well-timed trade may be luck, an adviser's decision, or coincidence. This site shows what was filed. It does not show why.

Coverage, stated plainly

SourceTrade dataStatus
US HouseYesWorking — this is the dataset
US SenateYes, butSenate eFD blocks automated access

What “net flow” means

Estimated buy dollars minus estimated sell dollars. Positive means the disclosed activity leaned toward buying; negative, toward selling. It is a direction, not a position size — both halves are range midpoints.

The headline figure counts equities only. Measured across every asset class it is dominated by fixed income, and misleadingly so: a Treasury bill reaching maturity is disclosed as a sale, not a decision to sell. One member rolling T-bills can outweigh every stock trade in Congress and flip the sign. On the current snapshot, government securities net −$123.8M against corporate bonds at +$146.2M — a portfolio moving between fixed-income buckets, which is not a market view at all.

Even the equity figure is small next to gross volume, so read it as a lean, not a verdict.

The signal score

Each ticker is scored −100 to +100 from breadth (how many distinct politicians moved and whether they agreed, weighted 0.6), flow (whether the dollars agreed, 0.4), scaled by confidence (participant count, with sharply diminishing returns) and freshness (share of weight surviving a 120-day half-life decay).

Eight people each buying once beats one person buying eight times — the second is usually one adviser rebalancing one account. The tiers are calibrated to the real distribution, which is overwhelmingly flat: the median ticker scores zero, and so does the 75th percentile.

Not investment advice. This measures what a group of people with ordinary brokerage accounts did, reported a median of 27 days after they did it.

How the data stays current

The site is static — it ships a snapshot rather than querying a database, which is what makes it fast and free to host. A GitHub Action re-runs the whole pipeline every morning, and commits the new snapshot only when something actually changed:

ingest.py # new filings (seconds if nothing new)
export_json.py # rebuild the snapshot
leaderboard.py # rank members against the S&P 500
score_trades.py # conflict scores
positions.py # open → closed positions

It refuses to publish a snapshot materially smaller than the live one, so a parser regression or a truncated fetch cannot quietly replace a complete dataset with half of one.

Snapshot generated 2026-10-15. Newest filing 2026-10-14. Last 5 years of trades.