Methodology
Trades: House and Senate
Every row is one line from a periodic transaction report that a member of Congress filed under the STOCK Act. This page says what we load, how a row traces back to its filing, and what the numbers can and cannot tell you.
Official sources
- House: the House Clerk’s Financial Disclosure site, which publishes every periodic transaction report (PTR) as a PDF, with a yearly index. disclosures-clerk.house.gov ↗
- Senate: the Senate’s Electronic Financial Disclosure system (eFD). efdsearch.senate.gov ↗
- Who is who: a member’s name, party, state and Bioguide ID come from the public congress-legislators ↗ roster, never from the text of a filing.
We use no third-party trade aggregators. If a trade is not in one of those two official systems, it is not on SlushFund.
What's loaded
- House: electronic PTRs from 2021 to today. Earlier years are not loaded.
- Senate: electronic PTRs filed from 2024 to today, for every senator who served in that window.
- Each row is one transaction line: who, which company and ticker, buy, sell or exchange, the date of the trade, the date it was filed, and the amount band the member reported.
- The bar at the top of this page shows the coverage and last load that are in the database right now.
Loaders run by code. Nobody types a trade in by hand. The House loader reads each PDF; the Senate loader reads each eFD report page. Both wait at least a second between requests to the government sites.
How a row traces to its filing
- Every row keeps the filing’s own ID (the House document number or the Senate report ID) and the web address of that filing.
- “View filing ↗” on a row opens the original PDF or eFD page, so anyone can check the line against the source.
- When a member amends a report, the row keeps both: the first report is the main link, and the amendment is a second link beside it.
- The filed date is the date the first version of the report was filed, because the STOCK Act’s 45-day clock belongs to the original filing.
- The member and party are matched to the roster by name and checked by hand when a name is ambiguous. A name we cannot match is listed for review, never guessed.
Caveats, in plain English
- Amounts are bands, not exact values.
The law lets members report a range such as $15,001–$50,000. We show the range exactly as filed. We never turn it into a midpoint, and we never add ranges together and show the total as if it were a real amount.
- Same-day lots are folded into one row.
If a member reports several lots of the same stock, in the same direction, on the same day, in one filing, we store them as one row. The row lists every band that was disclosed (for example “2 × $1,001–$15,000”). The row’s internal minimum and maximum are sums, so counts of “trades” are counts of rows, not of lots.
- Scanned and paper filings are not loaded.
Some House filings are scanned images, and some senators file on paper. Code cannot read them reliably, and we do not guess. A member who files mostly on paper will look like they trade less than they do. The Senate lists paper filings; we do not turn them into rows.
- Only lines with a ticker symbol are loaded.
In our first full Senate load (October 2026), about four in ten source lines had no ticker, such as bonds, many funds and private assets. Those lines are not in the table. Treat any count of trades as a minimum.
- Options are shown with their terms, when the filing gives them.
Where the filing says whether an option is a call or a put, we show it, with the strike price and the expiry date (for example “Sold call options · strike $340 · expires Dec 18, 2026”). Where a filing leaves a term out, the row says so and the filing has the rest. Options and other non-stock assets are listed apart from stock purchases and sales and never counted as one.
- “Days to file” is not a verdict.
We do not show a days-to-file count or label any filing late on a trade row. The STOCK Act asks for a report within 30 days of the member learning of a trade and no later than 45 days after the trade, and an amended report carries a later date than the original. Where a trade is dated more than two years before its report, or the dates as filed look inconsistent, the row carries a plain date note that describes the dates; it is not a ruling. Any days-to-file figure is measured to the first report, never to an amendment. We count calendar days from the trade date to the first report. We do not adjust for weekends or holidays, so a report filed on the next business day after a weekend deadline is included. The board of reports filed more than 45 days after the trade shows it, measured to the first report.
- Who owns the asset matters.
Members also report trades by a spouse or a dependent child. The row shows the owner (self, spouse, joint, child).
- Committees are today’s seats.
Committee membership comes from the current roster. It may not match the seats a member held on the day of a past trade.
- Filings contain typos.
We show dates as filed. A date that cannot be right (for example one in the future) gets a plain date note on the row instead of being corrected silently, and no lateness is computed for it.
How we check
After a load, we re-open a random sample of stored rows against the original filing, using a second parser written separately from the loader, and compare every field. A row that does not match is investigated, and the cause is fixed in the loader, not patched in the data.
Audit status. Reviews separate from the builder, on October 3 and 4, 2026, compared sampled rows and page figures with the original House Clerk and Senate eFD filings. Data problems they found were fixed and checked again. They were samples, so this page describes the method and publishes no match rate. The board of reports filed more than 45 days after the trade was re-checked against the filings on October 4, 2026.
Found something wrong? Report an error. Past changes are in the corrections log.