Skip to main content
Python function: getPoliticianTradesData()
SpecificationValue
Delivery Frequencycontinuous
Data Frequencyevent-driven
Reporting Lag< 5 min from filing publication; politician filing delay typically 8–45 days after trade
Coverage520+ politicians (Senate + House), 4,700+ tickers, STOCK Act disclosures
HistorySince 2014-01-02
AvailabilityFree

Product Overview

Overview

Congressional Trading Activity provides structured, near real-time data on securities transactions disclosed by U.S. Senators and House Representatives, as mandated by the STOCK Act of 2012. The dataset unifies filings from two separate government disclosure systems into a single queryable feed. The dataset contains 68,000+ transactions from 520+ politicians across 4,700+ tickers, with history back to January 2014.

Data Pipeline & Latency

Scalar Field ingests congressional disclosures through two independent, continuously running pipelines:
  • Senate (EFD): Polls the Electronic Financial Disclosures system at efdsearch.senate.gov every 60 seconds, fetching Periodic Transaction Reports (PTRs). Each new report is parsed into structured transaction rows.
  • House (Clerk): Polls the House Clerk’s Financial Disclosure portal at disclosures-clerk.house.gov every 5 minutes. PTR PDFs are downloaded and parsed into structured rows. Yearly index archives are also processed for historical coverage.
New filings appear in the database within minutes of publication on the government portals.

Politician Filing Delay (transaction date → disclosure filing, last 12 months, Senate)

How long after the actual trade do politicians file their disclosure:
Delay% of filings
1–7 days4%
8–30 days63%
31–45 days15%
> 45 days18%
The STOCK Act requires filing within 30 days of the transaction (Senate) or 45 days (House). In practice, ~67% of Senate filings arrive within 30 days, while ~18% exceed the 45-day window.

Timestamp Semantics: ts_recv vs filed_date vs transaction_date

TimestampMeaningUse Case
ts_recvWhen Scalar Field’s pipeline first ingested the record (New York time). This is the point-in-time timestamp.Point-in-time backtesting. Use this as your event timestamp to avoid look-ahead bias.
filed_dateWhen the disclosure was filed/received by the government portal (New York time).Regulatory analysis. Measures compliance with STOCK Act filing deadlines.
transaction_dateThe actual date the politician executed the trade.Event studies. The true economic event date — but only known after the filing lands.

Coverage

  • Senate: ~75 unique senators with PTR filings, ~1,400 unique tickers, ~16K transactions.
  • House: ~325 unique representatives with PTR filings, ~3,600 unique tickers, ~53K transactions.
  • Combined: 520+ politicians, 4,700+ tickers, 68,000+ transactions.
  • Asset types: Stocks, stock options, municipal securities, corporate bonds, government securities, commodities/futures, cryptocurrency, and more.
  • Transaction filter: Paper/scanned filings are automatically excluded from the unified feed.
  • History: January 2014 to present, with continuous updates.

Annual Volume (Senate + House combined)

YearTransactions
20142,213
20154,818
20164,706
20174,775
20185,475
20196,707
20208,721
20216,638
20224,545
20235,381
20243,654
20258,639

Transaction Split

Across the full dataset: 51% Purchase / 48% Sale / 1% Exchange.

Asset Type Breakdown (Senate)

Asset TypeCount
Stock11,217
Municipal Security1,055
Other908
Stock Option545
Corporate Bond438
Commodities/Futures146
Non-Public Stock122
Cryptocurrency7

Asset Type Breakdown (House)

CodeAsset TypeCount
STStock34,491
GSGovernment Securities2,386
CSCorporate Bond1,261
OTOther996
OPStock Option721
HNHedge Fund/Private Equity165
PSNon-Public Stock146
VAVariable Annuity61
OIOwnership Interest (Holding)60
ABAsset-Backed Securities57

Querying the Data

Basic Usage

from scalarlib import getPoliticianTradesData

# All congressional trades in 2024
df = getPoliticianTradesData(start='2024-01-01', end='2024-12-31')

# Filter by ticker
df = getPoliticianTradesData(tickers=['AAPL', 'MSFT'], start='2024-01-01', end='2024-12-31')

# Filter by politician name (regex, case-insensitive)
df = getPoliticianTradesData(start='2024-01-01', end='2024-12-31', politician_name='(?i)pelosi')

# Multiple politicians
df = getPoliticianTradesData(start='2024-01-01', end='2024-12-31', politician_name='Boozman|Fetterman')

# Filter by transaction date instead of filed date
df = getPoliticianTradesData(start='2024-01-01', end='2024-12-31', date_column='transaction_date')

Parameters

ParameterTypeRequiredDescription
tickersstr, list, or NoneNoStock ticker(s). None returns all tickers.
startstrYesStart date (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS).
endstrYesEnd date (same format; date-only is inclusive).
politician_namestrNoPostgres regex pattern on full_name. Prefix with (?i) for case-insensitive.
date_columnstrNo'filed_date' (default) or 'transaction_date'.

Column Definitions

Congressional Trades Schema

ColumnTypeDescription
ts_recvdatetimePoint-in-time timestamp: when Scalar Field ingested the record (New York time).
filed_datedatetimeWhen the disclosure was filed with the government portal (New York time).
full_namestringPolitician’s name (format: Last, First).
filer_typestringRole: Senator, Representative, Former Representative.
chamberstringSenate or House.
sidestringTransaction direction: Purchase, Sale (Full), Sale (Partial), Exchange.
tickerstringTicker symbol of the security (may be null for non-equity assets).
asset_namestringFull name/description of the asset.
asset_typestringSecurity type: Stock, Stock Option, Corporate Bond, Municipal Security, Government Securities, Cryptocurrency, etc.
ownerstringOwnership: Self, Spouse, Joint, Dependent Child.
transaction_datedateCalendar date the trade was executed.
transaction_value_lower_rangefloatLower bound of the reported transaction amount range (USD).
transaction_value_upper_rangefloatUpper bound of the reported transaction amount range (USD).
descriptionstringAdditional detail (e.g., option strike/expiry, bond coupon).
uid_linkstringLink to the original filing on the government portal.

Amount Ranges

Congressional disclosures report transaction values in ranges rather than exact amounts:
Range
1,0011,001 – 15,000
15,00115,001 – 50,000
50,00150,001 – 100,000
100,001100,001 – 250,000
250,001250,001 – 500,000
500,001500,001 – 1,000,000
1,000,0011,000,001 – 5,000,000
5,000,0015,000,001 – 25,000,000
25,000,00125,000,001 – 50,000,000
Over $50,000,000