Rep. Gary J. Palmer (R-AL)
House · Republican (most recent term) · AL-6 · in Congress 2015–present · Bioguide ID P000609
Party history: R 2015–present. Source: term data in unitedstates/congress-legislators (CC0); party shown is as recorded per term there.
Estimated net worth (from public disclosures)
| Estimate | Report year | Low | Mid | High |
|---|---|---|---|---|
| (a) Estimated net worth before entering office (report year 2015, the member's first year in office) | 2015 | $257,127 | $1,446,563 | $2,635,999 |
| (b) Latest net worth estimate | 2025 | $1,631,032 | $2,660,516 | $3,690,000 |
| (c) Estimated gain / loss, nominal dollars, 2015 → 2025 (10 years spanned) | 2015–2025 | −$1,004,967 | +$1,213,953 | +$3,432,873 |
Gain Low = latest Low − earliest High; Gain High = latest High − earliest Low (widest possible spread); Mid = latest Mid − earliest Mid.
Reliability flags (net worth): none for these two endpoints. Included in the recommended dollar-gain ranking.
Net worth by report year (mid; Low–High)
| Report year | Assets (mid) | Liabilities (mid) | Net worth mid | Low … High | Status / flags |
|---|---|---|---|---|---|
| 2015 | $1,621,564 | $175,000 | $1,446,563 | $257,127 … $2,635,999 | computed |
| 2016 | $1,729,058 | $175,000 | $1,554,058 | $355,117 … $2,752,999 | computed |
| 2017 | $1,598,572 | $175,000 | $1,423,571 | $167,143 … $2,679,999 | computed |
| 2018 | $1,918,044 | $175,000 | $1,743,044 | $546,088 … $2,939,999 | computed |
| 2019 | $1,512,518 | $175,000 | $1,337,518 | $525,037 … $2,149,999 | computed |
| 2020 | $1,494,514 | $175,000 | $1,319,514 | $579,028 … $2,059,999 | computed |
| 2021 | $1,416,017 | $175,000 | $1,241,016 | $527,034 … $1,954,999 | computed |
| 2022 | $1,274,020 | $175,000 | $1,099,019 | $353,039 … $1,844,999 | computed |
| 2023 | $3,356,024 | $175,000 | $3,181,024 | $1,707,049 … $4,654,999 | computed |
| 2024 | $1,573,004 | $175,000 | $1,398,003 | $781,007 … $2,014,999 | computed |
| 2025 | $2,660,516 | $0 | $2,660,516 | $1,631,032 … $3,690,000 | computed |
- What this is: Net worth = Schedule A assets (each value range at its midpoint; low–high range shown) minus Schedule D liabilities (midpoints / ranges). Low = assets at range floors minus liabilities at range ceilings; Mid = midpoints; High = assets at ceilings minus liabilities at floors. Low and High are outer bounds of the reported ranges, not likely outcomes.
- What it excludes / understates: exact values (only ranges are reported); a personal residence is not reported as an asset (although a mortgage on it may be listed as a liability, which then lowers the estimate); retirement and federal accounts (e.g. Thrift Savings Plan, defined-benefit pensions) are only partly or not reported; assets of excepted/blind trusts, cash held below reporting thresholds, vehicles, household goods and most spouse/dependent items exempt from reporting are not included; liabilities on a personal residence, revolving credit under thresholds and loans to family may be omitted by filers.
- Open-ended top ranges (e.g. “Over $50,000,000”) are counted at their lower bound and flagged, so such values are understated.
- The change is a change in estimated net worth in nominal dollars (no inflation adjustment). It includes salary, gifts, inheritances, business income and re-valuation as well as investment results, and it is subject to range-bracket noise; it is not an investment return and implies nothing about conduct.
Estimated year-over-year change
Bars: midpoint estimate; whisker: same-position floor/ceiling band. Axis clipped to −100%…+150%. Years with insufficient traceable holdings are omitted.
| Year (t−1 → t) | Opening value (mid) | Closing value (mid) | Income (mid) | Buys (mid) | Sales (mid) | Est. gain | Same-position band | Strict envelope | Traced coverage | Status / flags |
|---|---|---|---|---|---|---|---|---|---|---|
| 2015→2016 | $415,014 | $531,012 | $2,505 | $80,005 | $120,008 | +38.2% | +33.2% … +59.2% | -135% … +211% | 26% | excluded; not eligible: traced coverage 26% < 60%; many new/exited positions |
| 2016→2017 | $8,000 | $40,002 | $0 | $64,502 | $0 | -406.2% | -1498.6% … -333.3% | -1500% … +687% | 0% | excluded; not eligible: traced prior-year value below $50,000; high turnover (buys+sells > 100% of opening value); many new/exited positions |
| 2017→2018 | $97,003 | $227,005 | $802 | $64,502 | $64,004 | +134.3% | +132.1% … +144.7% | -173% … +442% | 6% | excluded; not eligible: traced coverage 6% < 60%; high turnover (buys+sells > 100% of opening value); many new/exited positions |
| 2018→2019 | $256,002 | $412,504 | $1,750 | $64,502 | $24,002 | +46.0% | +41.4% … +59.1% | -102% … +194% | 13% | excluded; not eligible: traced coverage 13% < 60%; many new/exited positions |
| 2019→2020 | $528,504 | $1,141,010 | $4,452 | $280,018 | $330,513 | +126.3% | +114.9% … +158.4% | -105% … +357% | 35% | excluded; not eligible: traced coverage 35% < 60%; high turnover (buys+sells > 100% of opening value); many new/exited positions |
| 2020→2021 | $943,007 | $1,227,514 | $5,501 | $625,520 | $526,014 | +20.2% | +18.9% … +23.7% | -159% … +199% | 63% | counted; high turnover (buys+sells > 100% of opening value); many new/exited positions |
| 2021→2022 | $1,093,514 | $1,019,014 | $5,854 | $355,512 | $321,516 | -9.4% | -23.0% … -4.4% | -149% … +130% | 77% | counted; many new/exited positions |
| 2022→2023 | $207,501 | $2,073,505 | $5,501 | $614,004 | $191,002 | +698.1% | +640.8% … +847.4% | +110% … +1286% | 16% | excluded; not eligible: traced coverage 16% < 60%; high turnover (buys+sells > 100% of opening value); many new/exited positions |
| 2023→2024 | $750,001 | $750,001 | $0 | $0 | $0 | +0.0% | +0.0% … +0.0% | -67% … +67% | 22% | excluded; not eligible: traced coverage 22% < 60% |
| 2024→2025 | $0 | $2,212,514 | $34,506 | $1,227,514 | $766,002 | n/a | n/a … n/a | n/a … n/a | 0% | excluded; not eligible: traced prior-year value below $50,000; many new/exited positions |
Filings used
Each annual-report year uses one filing (most recently filed version among originals/amendments whose Schedule A row count is ≥ 40% of the largest). Electronic (text) PDFs are parsed. Scanned/image-only filings are OCR-read and used only if they pass the explicit validation gates described in the project README (value/income coverage, two-engine agreement, exact bracket snapping, page completeness, year-to-year position continuity); such years are labelled OCR-derived below. Scanned filings that fail validation are listed as “insufficient data – scanned”.
| Report year | Doc ID | Type | Filed | Schedule A rows | Rows with unparsed value | Source (official filing) / SHA-256 |
|---|---|---|---|---|---|---|
| 2015 | 10010836 | House annual | 5/20/2016 | 127 | 0 | 10010836.pdf5121f3bfac9d79e7d598983bfc0c33f9df632d006f19da00f555b8687d032f1b |
| 2016 | 10017859 | House amendment | 6/20/2017 | 131 | 0 | 10017859.pdff5661aa1ea42a17465df896e172a5b5d0afb7c5bacf1c76cbe50a9957a4dbd4a |
| 2017 | 10029538 | House amendment | 10/16/2019 | 153 | 0 | 10029538.pdf96fe12a6cf783cc614b53814e5e83091b5f08cabdf22bc037468d93351669c8d |
| 2018 | 10029539 | House amendment | 10/16/2019 | 130 | 0 | 10029539.pdf75e65470309aed9bfa351df717345518d3f8cea20fe1b83b1552edbbd2e1b132 |
| 2019 | 10036293 | House annual | 7/21/2020 | 37 | 0 | 10036293.pdf4c47e709cd74ff0c09e79990921492c2a9da68c9303ef2284c6e6f430274e7a6 |
| 2020 | 10040165 | House annual | 5/28/2021 | 28 | 0 | 10040165.pdff2614696df333a1fa4048a398429a51a747cc92c13f9e73e004e88980b4acee8 |
| 2021 | 10046606 | House annual | 5/14/2022 | 34 | 0 | 10046606.pdf8eba61d940b4d4cc1bd32d6a79182d7c7db136315e8c089eefb0b032bbc7def8 |
| 2022 | 10051941 | House annual | 5/8/2023 | 42 | 0 | 10051941.pdfad049c7e1623c07d12c24b5cb90d54f0e8addb9618f7af275356ed4b7f063194 |
| 2023 | 10058923 | House annual | 5/7/2024 | 49 | 0 | 10058923.pdfd6f85b062d8adee600f583dc0dba9a4571c71f37e47999e5e938dc98cf928405 |
| 2024 | 10066690 | House annual | 5/5/2025 | 7 | 0 | 10066690.pdf9a4cb45f8e0837046e337dc9ed4b286f232e5ef56cb06d7d245243a38e0bf01f |
| 2025 | 10075305 | House annual | 4/15/2026 | 32 | 0 | 10075305.pdf89f2a13bed03460b9b14275a64fd2cc9c809d119520b615996f9c9f8b9aabf45 |
Largest movers 2020→2021
| Position (as written in filing) | Owner | Kind | Opening range(s) | Closing range(s) | Buys (mid) | Sales (mid) |
|---|---|---|---|---|---|---|
| Ameriprise ADP Ann Palmer IRA ⇒ TD Ameritrade Ann IRA ⇒ MFST Eventide Core Bond Fund ETIRX | SP | new | — | $50,001 - $100,000 | $24,002 | $32,500 |
| Ameriprise ADP Gary and Ann Palmer Joint ⇒ TD Ameritrade JT Account ⇒ Vanguard Intermediat | JT | held | $100,001 - $250,000 | $50,001 - $100,000 | $8,000 | $40,501 |
| Ameriprise ADP Ann Palmer IRA ⇒ TD Ameritrade Ann IRA ⇒ Vanguard Intermediate Term VGIT [E | SP | held | $100,001 - $250,000 | $50,001 - $100,000 | $24,002 | $65,001 |
| Ameriprise ADP Gary Palmer Individual IRA ⇒ TD Ameritrade Gary IRA ⇒ Vanguard Intermediate | — | held | $50,001 - $100,000 | $50,001 - $100,000 | $24,002 | $65,001 |
| Ameriprise ADP Ann Palmer IRA ⇒ TD Ameritrade Ann IRA ⇒ OneAscent Large Cap Core ETF OALC | SP | new | — | $50,001 - $100,000 | $40,501 | $0 |
| Ameriprise ADP Ann Palmer IRA ⇒ TD Ameritrade Ann IRA ⇒ Calvert EMG Mkts Eq Cl CVMIX [MF] | SP | new | — | $1,001 - $15,000 | $8,000 | $32,500 |
| Ameriprise ADP Gary Palmer Individual IRA ⇒ TD Ameritrade Gary IRA ⇒ SCM Trust Shelton Int | — | new | — | $15,001 - $50,000 | $16,001 | $16,001 |
| Ameriprise ADP Gary Palmer Individual IRA ⇒ TD Ameritrade Gary IRA ⇒ Eventide Gilead FD In | — | new | — | $15,001 - $50,000 | $16,001 | $8,000 |
Largest movers 2021→2022
| Position (as written in filing) | Owner | Kind | Opening range(s) | Closing range(s) | Buys (mid) | Sales (mid) |
|---|---|---|---|---|---|---|
| Ameriprise ADP Ann Palmer IRA ⇒ TD Ameritrade Ann IRA ⇒ Oneascent Core Plus Bond ET OACP [ | SP | new | — | $100,001 - $250,000 | $8,000 | $8,000 |
| Ameriprise ADP Gary and Ann Palmer Joint ⇒ TD Ameritrade JT Account ⇒ Oneascent Core Plus | JT | new | — | $100,001 - $250,000 | $32,500 | $8,000 |
| Ameriprise ADP Gary and Ann Palmer Joint ⇒ TD Ameritrade JT Account ⇒ MFST Eventide Core B | JT | exited | $50,001 - $100,000 | — | $32,500 | $32,002 |
| Ameriprise ADP Ann Palmer IRA ⇒ TD Ameritrade Ann IRA ⇒ Alphacentric Income Opp IOFIX [MF] | SP | exited | $50,001 - $100,000 | — | $0 | $16,001 |
| Ameriprise ADP Ann Palmer IRA ⇒ TD Ameritrade Ann IRA ⇒ OneAscent Large Cap Core ETF OALC | SP | held | $50,001 - $100,000 | $15,001 - $50,000 | $8,000 | $0 |
| Ameriprise ADP Ann Palmer IRA ⇒ TD Ameritrade Ann IRA ⇒ MFST Eventide Core Bond Fund ETIRX | SP | exited | $50,001 - $100,000 | — | $0 | $113,502 |
| Ameriprise ADP Gary Palmer Individual IRA ⇒ TD Ameritrade Gary IRA ⇒ MFST Eventide Core Bo | — | exited | $50,001 - $100,000 | — | $0 | $40,002 |
| Ameriprise ADP Gary and Ann Palmer Joint ⇒ TD Ameritrade JT Account ⇒ Mutual Fund Series T | JT | held | $15,001 - $50,000 | $1,001 - $15,000 | $8,000 | $0 |
Method (summary)
- Schedule A asset rows are read from each annual report; the dollar range for each row is converted to its midpoint. Open-ended top ranges (“Over $50,000,000”) are excluded from the traced set and counted as a coverage loss.
- Positions are matched year to year by owner code (self/SP/DC/JT) + normalised asset name. A position that appears only in year t is included only if Schedule B shows a purchase of it in year t (opening value 0); a position that disappears is included only if Schedule B shows a sale (closing value 0). Otherwise it is excluded as unexplained.
- Estimated gain = (closing − opening + reported income − purchases + sale proceeds) ÷ opening, all at midpoints, for the traced positions. “Capital gains” income is not added again (it is already in value change and sale proceeds).
- A year counts only if traced opening value ≥ $50,000 and traced coverage ≥ 60% of the opening midpoint. A member is ranked only with ≥ 3 such years (exactly 2 = “limited data”, shown but unranked). Average = geometric mean of (1+yearly estimate).
Limitations
- Ranges are wide (up to a factor of 5 or more, and up to $50M+ open-ended); a holding can move between ranges without any real change in value, and stay in a range while moving materially. Yearly estimates are therefore noisy; the “strict envelope” shows the mathematical worst/best case and is typically wider than ±100%.
- Purchases and sales are only disclosed as ranges and only for transactions over $1,000; partial sales, dividend reinvestment, spousal/dependent accounts and retirement-plan funds are reported inconsistently. Excepted/blind trusts, personal residences and certain pensions are not reported at all.
- Filers sometimes change how they list assets (e.g. listing a brokerage account vs. its individual holdings), which can make positions untraceable across years; these are excluded rather than guessed.
- Asset values in an annual report are as of Dec 31 of the reporting year; the report year t−1→t covers that calendar year. Late or amended filings are used when filed; extensions can delay them.
- The text of these reports is machine-parsed from PDFs; parse errors are possible. Every number links back to the cited filing. This is not investment advice.
- Use of these filings is restricted by 5 U.S.C. § 105(c) (no unlawful, commercial or credit-rating purpose, and none for solicitation of money).
Generated 2026-10-01 by an automated pipeline. Data: Office of the Clerk, U.S. House of Representatives (disclosures-clerk.house.gov); member roster: unitedstates/congress-legislators (CC0).