Data Dictionary
← Use in your AI · HomeDisclosed stock trades of U.S. members of Congress and senior executive-branch officials (STOCK Act periodic transaction reports and OGE Form 278-T). 56,971 records — 25,434 congressional, 31,537 executive.
Machine-readable version (for AI agents & data buyers): /data-dictionary.json · Usage terms: data license
Fields
| Field | Type | Congress | Exec | Description |
|---|---|---|---|---|
id | string | 100% | 100% | Stable, immutable record id (tl_<hash>). Re-pullable / citeable. |
branch | string | 100% | 100% | "congress" or "executive". |
person | string | 100% | 100% | Member of Congress or executive-branch official who filed. |
personId | string | 100% | 100% | Stable person id: bio:<Bioguide> for resolved Congress members, else name:<slug>. |
role | string | 100% | 100% | Chamber (House/Senate) for Congress; title for executive officials. |
party | string | 100% | 0% | D / R / I (Congress; resolved from the legislators index). |
state | string | 100% | 0% | Two-letter state (Congress). |
agency | string | 0% | 100% | Department/agency (executive branch). |
ticker | string | 85.1% | 18.8% | Stock ticker; null for non-listed assets (bonds, funds, private holdings). |
issuerId | string | 99.9% | 100% | Normalized issuer id: tic:<TICKER> when listed, else ast:<slug> of the asset name. |
asset | string | 99.9% | 100% | Free-text asset/company name as disclosed. |
type | string | 100% | 100% | Canonical action: buy | sell | partial_sale | exchange | other. |
typeRaw | string | 100% | 100% | Original filing transaction code, preserved for audit (e.g. p, s, s (partial), e). |
amountRange | string | 99.8% | 100% | Disclosed dollar RANGE (e.g. "$1,001 - $15,000") — not an exact figure. |
amountMin | number | 100% | 100% | Lower bound of the disclosed range. |
amountMax | number | 100% | 100% | Upper bound of the disclosed range (null for open-ended "$X +"). |
tradeDate | date | 100% | 100% | Date of the transaction (ISO). The correct anchor for timing analysis. |
disclosureDate | date | 95% | 98.8% | Date the filing was disclosed. Lags the trade by 30-45 days; sparse on historical rows. |
sector | string | 79.1% | 6.5% | GICS-style sector of the ticker. Populated only for single-company equities; empty for ETFs/funds (see securityType) and non-listed assets. |
securityType | string | 81.6% | 0% | Instrument class from market-data classification (EQUITY, ETF, MUTUALFUND, INDEX, …). When sector is empty, securityType=ETF/MUTUALFUND signals "sector N/A — diversified fund," not missing data. |
potentialConflict | boolean | 9% | 0.5% | Heuristic flag: ticker sector overlaps the person's committee/agency jurisdiction. Only fires on a real sector match, so ETFs/funds (no sector) are never flagged. Not an accusation. Percentage shown is the share flagged true. |
filingUrl | string | 99.7% | 100% | Link to the primary-source filing. |
returns | object | 77.9% | 17.4% | Forward split/dividend-adjusted stock return + market-adjusted (vs SPY) abnormal return at ~1mo/3mo, anchored on the disclosure date where available (point-in-time) else the trade date. A PROXY for trade timing, NOT the official's realized profit (execution price, exact size, and holding period are unknown). Null when no price match. |
Enrichment completeness by year — Congress
Sector, conflict flags, and disclosure dates are populated mainly on recent data. Don’t assume historical rows carry them.
| Year | Rows | sector | disclosureDate |
|---|---|---|---|
| 2021 | 5,453 | 80.5% | 95.8% |
| 2022 | 4,449 | 75.6% | 95% |
| 2023 | 4,784 | 76.4% | 92.6% |
| 2024 | 2,780 | 72.9% | 93% |
| 2025 | 6,095 | 82.8% | 95.5% |
| 2026 | 1,873 | 86.7% | 100% |
Enrichment completeness by year — Executive
Executive trades come directly from OGE Form 278-T filings, so they carry a disclosure date and a primary-source link. Tickers are extracted where the filing names a listed security.
| Year | Rows | disclosureDate | ticker | sector |
|---|---|---|---|---|
| 2001 | 1 | 100% | 0% | 0% |
| 2019 | 783 | 92.1% | 37.2% | 7.7% |
| 2020 | 1,418 | 93.1% | 66.9% | 23.6% |
| 2021 | 2,003 | 99.7% | 68.2% | 29% |
| 2022 | 1,297 | 92.7% | 74.1% | 14.6% |
| 2023 | 1,041 | 90.1% | 83.8% | 14.9% |
| 2024 | 599 | 99.8% | 80.3% | 9.5% |
| 2025 | 22,729 | 100% | 3.2% | 1.7% |
| 2026 | 1,666 | 100% | 17.8% | 17% |
Sources
- Congress: STOCK Act periodic transaction reports via Financial Modeling Prep, plus a historical backfill. House disclosure dates + filing links from the House Clerk bulk index; Senate dates + efdsearch.senate.gov links from the FMP feed (recent filings — the historical Senate backlog is sparse).
- Executive: OGE Form 278-T filings pulled directly from the U.S. Office of Government Ethics — each row links to its primary-source filing and carries the disclosure date.
- Prices: split/dividend-adjusted daily closes (Yahoo) for the returns fields.
Known limitations
- Disclosed date is not the trade date — STOCK Act filings lag 30-45 days. Anchor timing analysis on tradeDate.
- Dollar figures are disclosed ranges, not exact amounts (interval-censored).
- Conflict flags are heuristic potential overlaps, not assertions of wrongdoing.
- Spouse/dependent and blind-trust trades are co-mingled; the filer name is not proof of the filer's decision.
- Congressional sector/potentialConflict enrichment is populated mainly on recent data — see per-year completeness.
- Disclosure dates + filing links are present for essentially all House trades and for recent Senate trades; the historical Senate backlog (mostly pre-2025) is sparse on both, because the upstream feed only exposes recent Senate filings. New Senate trades are captured going forward, so Senate coverage rises over time.
- Returns are forward stock performance after disclosure (split/dividend-adjusted, market-adjusted vs SPY) — a reproducible proxy for trade timing, not the filer's realized profit. We do not know their execution price, exact size (amounts are ranges), or holding period.
- Not investment advice.