Skip to content
Hero Background Light

What is the STOCK Act? Congressional Trading Disclosure Explained

What is the STOCK Act? Congressional Trading Disclosure Explained

The STOCK Act brought unprecedented transparency to congressional stock trading. For the first time, investors could see what members of Congress were buying and selling—and use that information in their own analysis.

What is the STOCK Act?

The Stop Trading on Congressional Knowledge (STOCK) Act is a 2012 law that prohibits members of Congress and their staff from using non-public information for personal financial gain. More importantly for investors, it requires them to publicly disclose their stock trades.

Key provisions:

  • Members of Congress cannot use insider information from their official duties
  • Stock transactions over $1,000 must be disclosed within 45 days
  • Disclosures are publicly available online
  • Applies to both House Representatives and Senators

Why Congressional Trades Matter

Members of Congress have access to information that most investors don’t:

Information Advantage Example
Committee briefings Early knowledge of regulatory changes
Legislative drafts Understanding which industries will be affected
Agency hearings Insight into upcoming policy shifts
Private meetings Direct access to executives and lobbyists

While trading on material non-public information is illegal, the timing and patterns of congressional trades can still provide insights.

Notable Trading Patterns

Several studies have shown that congressional stock portfolios tend to outperform the market:

  • Members on finance committees may trade financial stocks more profitably
  • Trades often precede significant legislative announcements
  • Some members have developed reputations for well-timed trades

Disclosure Format

Congressional trades are disclosed with the following information:

Field Description
Representative/Senator Name of the member
Transaction Date When the trade occurred
Disclosure Date When the periodic transaction report became public
Type Purchase, Sale, or Exchange
Asset Stock ticker or description
Amount Range Approximate value (e.g., “$1,001 - $15,000”)

Note: Unlike SEC Form 4, congressional disclosures use value ranges rather than exact amounts.

The two dates matter more than they might appear. The transaction date is when the member traded; the disclosure date is when anyone outside Congress could have known about it. The gap between them — up to 45 days, often less — is the only window in which the information was private. Any analysis that treats the transaction date as the moment the signal became actionable is using information that was not yet public.

Amount Ranges Explained

Congressional disclosures use standardized ranges:

Range Typical Significance
$1,001 - $15,000 Small position
$15,001 - $50,000 Moderate position
$50,001 - $100,000 Significant position
$100,001 - $250,000 Large position
$250,001 - $500,000 Very large position
$500,001 - $1,000,000 Major position
$1,000,001 - $5,000,000 Exceptional size
Over $5,000,000 Maximum disclosed range

Trades in the higher ranges are particularly noteworthy as they represent significant conviction.

Tracking Congressional Trades

You can access House and Senate trading data through the FinBrain API:

import pandas as pd
from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_API_KEY")
# Get House trades for NVDA
house_df = fb.house_trades.ticker("NVDA", as_dataframe=True)
print("=== House Trades ===")
print(house_df.head())
# politician transactionType amount disclosureDate
# date
# 2024-01-08 Nancy Pelosi Purchase $1,000,001 - $5,000,000 2024-02-02
# Get Senate trades for META
senate_df = fb.senate_trades.ticker("META", as_dataframe=True)
print("\n=== Senate Trades ===")
print(senate_df.head())
# Filter for large purchases
large_amounts = ["$500,001 - $1,000,000", "$1,000,001 - $5,000,000", "Over $5,000,000"]
large_buys = house_df[
(house_df["transactionType"] == "Purchase") &
(house_df["amount"].isin(large_amounts))
]
print(f"\nLarge House purchases: {len(large_buys)}")
# How long did each of those take to reach the public?
lag = (pd.to_datetime(large_buys["disclosureDate"]) - large_buys.index).dt.days
print(f"Median disclosure lag: {lag.median():.0f} days")

Building Signals from Congressional Data

Common strategies for using congressional trading data:

  1. Follow large purchases – Focus on trades in the highest value ranges
  2. Track multiple buyers – When several members buy the same stock
  3. Monitor committee members – Members with relevant oversight may have better insight
  4. Combine with other signals – Use alongside insider data and sentiment

Important Considerations

  1. Disclosure delays – Trades can be reported up to 45 days after execution
  2. Not investment advice – Congressional trades are just one data point
  3. Legal compliance – Some members have faced scrutiny for suspicious timing
  4. Spouse trades – Members must also disclose trades by spouses

Key Takeaways

  1. The STOCK Act requires members of Congress to disclose stock trades
  2. Disclosures must be filed within 45 days of the transaction
  3. Large purchases in the $500K+ ranges signal strong conviction
  4. Both House and Senate data are available for analysis
  5. Congressional trading data can complement other alternative data sources

Track what Congress is buying and selling. Explore the Congressional Trading Dataset.