THE REFS BET
The refs bet. We keep score.

Methodology & Sources

Where every number comes from, and how every calculation will work. Nothing on this site is estimated or inferred without disclosure.

The rules, precisely

The STOCK Act (Stop Trading on Congressional Knowledge Act of 2012) requires members of Congress to file a Periodic Transaction Report for securities transactions exceeding $1,000 — within 30 days of becoming aware of the transaction, and no later than 45 days after it. Amounts are disclosed as ranges (e.g., "$15,001–$50,000"), not exact figures. The standard penalty for a late filing is a $200 fee.

Two consequences follow, and this site states them everywhere they matter:

  • The lag: a disclosure can arrive up to 45 days after the trade. "Simultaneous" on this site always means reconstructed after the fact from filed records.
  • The ranges: tables always show the range exactly as filed. Where a calculation needs a single number, the range midpoint is used and labeled as such.

Current coverage updated live

What is actually in the database right now. Published because a transparency site that hides its own gaps is not one.

Filings registered5,639 every one keeps its official document link, parsed or not
Machine-readable (parsed)4,693 83% of registered filings
Not machine-readable763 scans and handwritten filings awaiting page-building; source always linked
In reader verification183 scans turned into transcribable pages on Help Us — includes paper-only Senate filings that have no electronic version
Awaiting processing0 backfill in progress
Transactions parsed47,880 306 members, 3,259 securities, 2015-05 → 2026-12

Backfill order: 2019 to present first, then back toward the STOCK Act's 2012 passage. A member showing no transactions may simply have filings we have not parsed yet — the member page says which.

How a scanned filing becomes data

Some disclosures are filed on paper, by hand, and no machine can read them. Rather than drop those transactions, readers transcribe them from the original scan on the Help Us page. A transcribed value is never taken on one person's word — it earns a label that says exactly how far through verification it is, and it always links back to the scan it came from.

provisional Entered by the site operator directly from a scan. It is published so the record isn't lost, but it is not yet independently confirmed. The operator can make the first call — never the last.
reader-verified Several people, each viewing the scan with different settings, independently read the same transaction the same way. Only then is a value treated as confirmed.
under review Someone reported a possible error. The value stays visible, flagged, while the scan is re-opened for a fresh read.

Every row transcribed this way carries one of these labels next to its record link — a value with no label came straight from a machine-readable filing. Anyone can report an error on a verified value; that re-opens its scan for one fresh reading, not a permanent vote. Confirmed readings settle a challenge by standing; a different reading corrects the value. The thresholds themselves are not published, so they cannot be gamed.

Sources of record

DataSource
House trade disclosuresdisclosures-clerk.house.gov (filing index + original PTR documents)
Senate trade disclosuresefdsearch.senate.gov (electronic financial disclosure system)
Members & committeesCongress.gov + the public congress-legislators dataset
Bills, hearings, committee meetingsCongress.gov (official API)
Roll-call votesclerk.house.gov and senate.gov official vote records
Market pricesDaily closing prices, cached from public market-data feeds; the benchmark is SPY
Sector classificationSEC company/CIK records and SIC codes
Federal contracts (planned)USASpending.gov, FPDS.gov
Campaign finance (planned)FEC.gov

Corrections applied to the playbook's source list: the statute is the STOCK Act (not "STOCKS Act"); the Senate system lives at efdsearch.senate.gov; and the ProPublica Congress API cited in earlier drafts was retired in 2024 — the official Congress.gov API replaces it. Aggregators such as CapitolTrades are used only as cross-checks; citations on this site point to primary records.

How “Inside the Huddle” pairings are produced

The Huddle report pairs a disclosed transaction with committee activity. A pairing appears when all three conditions hold:

  1. The committee work is substantive. Only markups and hearings count. Routine referrals — a bill being handed to a committee — are excluded: they are paperwork, and including them would bury every real signal under administrative noise.
  2. The sector falls in that committee's published jurisdiction. Each security is assigned a sector from its SEC filing classification (SIC code), and each committee is mapped to the sectors its own jurisdiction statement claims. Every row of that map cites the committee's page, and the basis is displayed on every pairing. Broad-jurisdiction committees — Appropriations, Budget, Rules, Oversight — are deliberately not mapped: a committee that touches everything would link to everything and mean nothing.
  3. The member sat on that committee at the time, and the transaction date is within ±30 days of the activity (the window is adjustable down to same-day).

How “at the time” is established. The published roster describes only the sitting Congress, which would limit this report to the present day. That same dataset is kept in a public version-controlled repository, so we reconstruct historical rosters from its dated history, sampling monthly back to 2012, and store each seat with the span it was actually observed across. A pairing requires the trade to fall inside that span. Because samples are monthly, a seat that changed hands between two of them can be dated up to a month out, so the comparison allows 45 days of tolerance either side — deliberately generous, since wrongly excluding a real pairing is the worse error here. Seats known only from the live roster, with no history behind them, vouch for the current Congress only.

Committee activity is collapsed to committee-days. A committee marking up twelve bills in one morning is one thing that happened, not twelve, and the item count is shown.

What a pairing is not. It is a coincidence in time and subject between two public records. It is not evidence that a member knew anything, acted on anything, or did anything improper — congressional stock trading is legal. We show the window, the committee, the jurisdiction basis, and links to both original records, and leave the conclusion to the reader.

Known limits. Committee activity comes from bill status records, which capture activity tied to legislation — a hearing with no associated bill may not appear. Sector assignment is unavailable for securities without an SEC registration (foreign issuers, many funds, structured notes), so those trades cannot produce pairings at all. Absence from this page is therefore never evidence of absence.

What we compute (each formula publishes here before its feature ships)

  • Prices — daily closing prices, adjusted for splits and dividends (without adjustment, NVIDIA's 2024 ten-for-one split would read as a 90% loss). Prices are market data, not a government record, and are used only for context and computed returns. No disclosure fact on this site depends on them.

The named plays — who qualifies, and how

Each play is a date-window query over documented periods. The windows are listed on every report page with a citation; shutdown dates follow the Congressional Research Service's record of funding gaps, and session boundaries follow the Senate's official table of sessions of Congress.

  • 10th Inning — transactions dated inside a federal funding lapse. All members; no further filter. Where a lapse affected only some agencies, the window says so.
  • Overtime — transactions during a lame-duck session by members whose service ended when that session closed: no term of theirs extends past it. That test is deliberate. The intuitive alternative — “no new term begins at the swearing-in” — is wrong for the Senate, where a member halfway through a six-year term has no new term at a two-year boundary and would be misread as leaving.
  • Preseason — transactions between an election and the swearing-in by members serving for the first time: a term begins at that swearing-in and none ever began earlier. Checking only for a previously ended term is insufficient, because a sitting member mid-term has no ended term either.

Both membership tests are derived from official term records rather than a hand-kept roster, so they cannot silently fall out of date. Being listed on any of these pages is not an allegation: trading in these windows is legal, and the reports state only that a filed transaction fell inside a documented period.

Pairing a trade with a vote

Two reports — Covering the Bet and Flagrant Foul — put a disclosed transaction next to a roll-call vote the member actually cast. The connection is built from records already published here, in four steps, none of which involves an opinion:

  1. The vote is a recorded roll call, taken from the chamber's own XML feed, on a numbered bill.
  2. That bill was handled by one or more committees — from the same bill-status records that drive the Huddle.
  3. Those committees have published jurisdictions mapped to market sectors (the cited map described above).
  4. The traded security sits in one of those sectors, and the transaction date falls inside the window.

Covering the Bet additionally requires the trade to be a sale dated before the vote. Flagrant Foul takes trades either side and shows the direction and the recorded position together.

Why we do not label a “contradiction.” The Playbook defines a Flagrant Foul as a trade that contradicts a member's voting record. Publishing that would require us to decide what a given vote was worth to an industry — whether a yea on a particular bill is good or bad for defence contractors, say. That is an opinion, and this site does not publish opinions. We publish the pairing and link both records.

Reading these pages fairly. Votes are scheduled and public in advance; members trade constantly and mostly through advisers; and a single bill routinely draws several roll calls in one day, on which a member may reasonably vote differently — each appears separately with its own roll-call number and result. Proximity in time is not evidence of anything on its own.

Coverage limit: only votes on numbered bills that also have committee activity can be paired at all, so a vote on a nomination, a resolution, or a procedural matter with no bill attached will never appear here regardless of what surrounded it.

The Spread, precisely

For every disclosed transaction in a security we have price history for:

excess = (security return over N trading days − S&P 500 return over the same span) × direction

where direction is +1 for a purchase and −1 for a sale — a purchase benefits from a rise, a sale from a decline avoided. N is 30, 90, and 180 trading days; the Scoreboard uses 90. Per member-year, the figure is the mean weighted by the midpoint of each filed dollar range, so a $5,000,000 transaction counts for more than a $1,001 one. A member-year needs at least three priced trades to appear.

This is transaction timing, not portfolio return. Congress discloses transactions, not holdings — no share counts, no cost basis, no portfolio composition. Nobody can compute a true congressional portfolio return from this data, and any site claiming to has estimated something it did not disclose. Prices are split- and dividend-adjusted.

Limits worth stating plainly: filed ranges are wide, so midpoints are approximations; small samples swing hard, which is why trade counts are always shown beside the figure; trades in funds, bonds, foreign issuers, and unlisted assets cannot be priced and are simply absent; and a member's trades may be directed entirely by a broker or adviser. Across the whole database the average excess return is close to zero — the distribution, not the headline, is the story.

  • The Whistle — rule-based flags with published thresholds (v1), and a statistical test against random-timing trades in the same security (v2). No flag will ever rest on an unpublished rule.

What we don't do

  • No motive claims. Dates, filings, and events — the reader draws conclusions.
  • No editorial beyond the framing, and no public comment system.
  • No unsourced rows: curated entries (fines, investigations, jurisdiction maps, date windows) cannot enter the database without a citation URL. This is enforced by the schema, not by policy.

Corrections policy: factual errors reported through the Comment or Suggestion link are verified against the primary record and corrected; corrections are logged on this page with dates.

Real estate — a pilot, and the gap it fills

The Playbook's self-dealing terms — Home Court Advantage, Double Dribble, Traveling — are about property, not stock. The problem is that no national database of property records exists. Deeds and transfers are public, but they live in thousands of separate county recorder offices, in incompatible formats, many not online at all. This is the gap the Playbook names, and closing it nationally is a long project.

So we are starting as a pilot: a small number of counties where members hold property and the recorder's records are reachable, entered by hand, every row carrying a citation to the county record it came from — the same standard as fines and investigations. Where a property moves through a family member, an LLC, or a business partner, that connection is flagged and its basis shown. As with everything here, we present the record and the reader draws the conclusion; the absence of a property section on a member's page means we have not yet reviewed their jurisdiction, never that none exists.

Privacy

  • First-party analytics only: page paths, daily-salted IP hashes (raw IP addresses are never stored), truncated browser identifiers, and external referrer hosts.
  • No cookies for signed-out visitors, no third-party trackers, no outside requests from these pages. An optional account sets one session cookie so you stay signed in — that is the only cookie this site issues, and only if you ask for one.
  • Accounts require a username and password. We never ask for a real name, and email is optional (recovery only). Contributor credit is off by default; there is no leaderboard and no public ranking. See Contributors.
  • Feedback submissions are private to the site operator and are never published.