Rep. John R. Moolenaar (R-MI)
House · Republican (most recent term) · MI-2 · in Congress 2015–present · Bioguide ID M001194
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 | $6,045 | $361,522 | $716,999 |
| (b) Latest net worth estimate | 2025 | $141,019 | $524,009 | $906,999 |
| (c) Estimated gain / loss, nominal dollars, 2015 → 2025 (10 years spanned) | 2015–2025 | −$575,980 | +$162,487 | +$900,954 |
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 | $436,522 | $75,000 | $361,522 | $6,045 … $716,999 | computed |
| 2016 | $421,522 | $75,000 | $346,522 | $4,045 … $688,999 | computed |
| 2017 | $411,520 | $75,000 | $336,520 | $3,040 … $669,999 | computed |
| 2018 | $412,521 | $75,000 | $337,520 | $3,042 … $671,999 | computed |
| 2019 | $493,519 | $107,501 | $386,018 | $7,038 … $764,998 | computed |
| 2020 | $504,518 | $77,501 | $427,016 | $73,035 … $780,998 | computed |
| 2021 | $594,519 | $12,500 | $582,019 | $217,038 … $947,000 | computed; 1 Schedule A row(s) had the upper bound of the range lost in text extraction; completed from the fixed statutory bracket |
| 2022 | $492,508 | $187,500 | $305,008 | −$29,983 … $639,999 | computed |
| 2023 | $508,510 | $187,500 | $321,009 | −$27,981 … $669,999 | computed |
| 2024 | $540,512 | $187,500 | $353,011 | −$23,977 … $729,999 | computed |
| 2025 | $711,510 | $187,500 | $524,009 | $141,019 … $906,999 | 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.
2024 -70%
Reliability flags: 1 year(s) driven by income/one position/range artefact; 1 unparsed value(s).
Sensitivity band for the average (all ranges at floor vs. all at ceiling, same holdings both years): -9.9% to -11.6%. This band is narrow because it moves both years together; the true uncertainty is larger — see the per-year “strict envelope” column and the limitations.
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 | $395,519 | $380,018 | $0 | $24,002 | $0 | -10.0% | -10.7% … -5.0% | -161% … +141% | 91% | counted |
| 2016→2017 | $404,520 | $411,520 | $0 | $56,004 | $40,002 | -2.2% | -2.4% … -1.0% | -174% … +170% | 96% | counted |
| 2017→2018 | $395,519 | $372,518 | $0 | $8,000 | $8,000 | -5.8% | -6.2% … -3.0% | -153% … +142% | 96% | counted |
| 2018→2019 | $404,520 | $485,518 | $0 | $56,004 | $56,004 | +20.0% | +15.3% … +52.9% | -160% … +200% | 98% | counted |
| 2019→2020 | $493,519 | $488,516 | $0 | $8,000 | $8,000 | -1.0% | -4.7% … +18.5% | -133% … +131% | 100% | counted |
| 2020→2021 | $204,504 | $357,510 | $0 | $120,008 | $72,004 | +51.3% | +35.4% … +56.5% | -189% … +291% | 41% | excluded; not eligible: traced coverage 41% < 60%; many new/exited positions |
| 2021→2022 | $454,516 | $72,503 | $0 | $96,504 | $590,522 | +24.6% | +15.3% … +26.7% | -155% … +204% | 87% | counted; high turnover (buys+sells > 100% of opening value); many new/exited positions |
| 2022→2023 | $468,507 | $468,507 | $100 | $64,004 | $72,004 | +1.7% | +0.4% … +2.2% | -125% … +128% | 95% | counted |
| 2023→2024 | $436,006 | $161,506 | $100 | $88,006 | $56,004 | -70.3% | -77.4% … -67.9% | -174% … +34% | 86% | counted; many new/exited positions; single position drives the result (range jump) |
| 2024→2025 | $129,005 | $679,007 | $0 | $176,510 | $219,508 | +459.7% | +352.7% … +1078.7% | -46% … +965% | 24% | excluded; not eligible: traced coverage 24% < 60%; high turnover (buys+sells > 100% of opening value); 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 | 10013224 | House amendment | 6/22/2016 | 45 | 0 | 10013224.pdf9161288447a035d50136cc8202bfd73bc0577ef43c2317cab84abd6f3d21ff1c |
| 2016 | 10018451 | House amendment | 8/22/2017 | 51 | 0 | 10018451.pdf0c2021df8a8c16dbcc012db7926b0387d0375f5f362b6bdce9009568c4b016d9 |
| 2017 | 10024007 | House amendment | 6/28/2018 | 45 | 0 | 10024007.pdfb6764012d5fd0158d7c10d94da9c8d5b84fa7d401508ed6cc48768fb978ffa47 |
| 2018 | 10026108 | House annual | 5/14/2019 | 45 | 0 | 10026108.pdf0de05aa21eb6503a3c32bbdfbb2554c71591141aaa137cb1ccd0859a6af76ca1 |
| 2019 | 10037639 | House annual | 8/10/2020 | 46 | 0 | 10037639.pdfc5f9435d0ccfd8e01da91e6678c7a65b9fdf62d806471030605bffa1fccd3095 |
| 2020 | 10042174 | House annual | 8/13/2021 | 41 | 0 | 10042174.pdf4e3341bbc732ef6de1b4c74cadab15632c9a28de6b976a8bcd04b1c1a6840353 |
| 2021 | 10047947 | House annual | 5/16/2022 | 38 | 1 | 10047947.pdf2e7c860577d17c90f165c467b82572ce119bdcdaff28ec951f704229e989cb6b |
| 2022 | 10054706 | House annual | 8/13/2023 | 17 | 0 | 10054706.pdfc452a80010af31ec58ee9566fee242d7ac597bde242b4714af87840b8070a2c8 |
| 2023 | 10060292 | House annual | 8/20/2024 | 19 | 0 | 10060292.pdf12a3bf9e4673fc9ce051670fc16eda6d3bd6808bbf4c5672bec94738d5f57a9c |
| 2024 | 10067758 | House annual | 5/14/2025 | 23 | 0 | 10067758.pdfe671ee470cc738ba5e99b08834da773404234614abfec87a5cacea89d0610e5e |
| 2025 | 10076468 | House annual | 5/14/2026 | 19 | 0 | 10076468.pdf928bf7a5350ecb787457bf02b0a32ca7c6515e0d356e5fad1834428d18c8e8dc |
Largest movers 2021→2022
| Position (as written in filing) | Owner | Kind | Opening range(s) | Closing range(s) | Buys (mid) | Sales (mid) |
|---|---|---|---|---|---|---|
| Amy Moolenaar Roth IRA ⇒ iShares ESG Aware MSCI EM ETF (ESGE) [ST] | SP | exited | $1,001 - $15,000 | — | $0 | $32,500 |
| John Moolenaar IRA ⇒ iShares ESG Aware MSCI USA ETF (ESGU) [ST] | — | exited | $15,001 - $50,000 | — | $0 | $8,000 |
| Amy Moolenaar Roth IRA ⇒ iShares Core S&P 500 ETF (IVV) [ST] | SP | exited | $15,001 - $50,000 | — | $8,000 | $65,001 |
| Amy Moolenaar Roth IRA ⇒ iShares MSCI EAFE Growth ETF (EFG) [ST] | SP | exited | $1,001 - $15,000 | — | $0 | $32,002 |
| John Moolenaar IRA ⇒ iShares Core S&P 500 ETF (IVV) [ST] | — | exited | $15,001 - $50,000 | — | $16,001 | $32,500 |
| Amy Moolenaar Roth IRA ⇒ iShares U.S. Energy ETF (IYE) [ST] | SP | exited | $1,001 - $15,000 | — | $0 | $24,002 |
| Amy Moolenaar Roth IRA ⇒ iShares MSCI EAFE Value ETF (EFV) [ST] | SP | exited | $1,001 - $15,000 | — | $0 | $16,001 |
| Amy Moolenaar Roth IRA ⇒ iShares Global Tech ETF (IXN) [ST] | SP | exited | $1,001 - $15,000 | — | $0 | $16,001 |
Largest movers 2022→2023
| Position (as written in filing) | Owner | Kind | Opening range(s) | Closing range(s) | Buys (mid) | Sales (mid) |
|---|---|---|---|---|---|---|
| Filer Rollover IRA ⇒ Strategic Advisers Fidelity U.S. Total Stock Fund (FCTDX) [MF] | — | held | $100,001 - $250,000 | $100,001 - $250,000 | $16,001 | $32,002 |
| Filer Rollover IRA ⇒ Strategic Advisers Fidelity International Fund (FUSIX) [MF] | — | held | $15,001 - $50,000 | $15,001 - $50,000 | $16,001 | $0 |
| Spouse Rollover IRA ⇒ Strategic Advisers Fidelity U.S. Total Stock Fund (FCTDX) [MF] | SP | held | $15,001 - $50,000 | $15,001 - $50,000 | $0 | $16,001 |
| Filer Rollover IRA ⇒ Strategic Advisers Fidelity Core Income Fund (FIWGX) [MF] | — | held | $50,001 - $100,000 | $50,001 - $100,000 | $32,002 | $16,001 |
| Filer Rollover IRA ⇒ Strategic Advisers Fidelity Emerging Markets Fund (FGOMX) [MF] | — | held | $15,001 - $50,000 | $15,001 - $50,000 | $0 | $8,000 |
| Fidelity Money Market Account [BA] | SP | held | $15,001 - $50,000 | $15,001 - $50,000 | $0 | $0 |
| Filer Rollover IRA ⇒ Fidelity SAI High Income Fund (FSHGX) [MF] | — | held | $1,001 - $15,000 | $1,001 - $15,000 | $0 | $0 |
| Spouse Rollover IRA ⇒ Strategic Advisers Fidelity International Fund (FUSIX) [MF] | SP | held | $1,001 - $15,000 | $1,001 - $15,000 | $0 | $0 |
Largest movers 2023→2024
| Position (as written in filing) | Owner | Kind | Opening range(s) | Closing range(s) | Buys (mid) | Sales (mid) |
|---|---|---|---|---|---|---|
| Filer Rollover IRA ⇒ Strategic Advisers Fidelity U.S. Total Stock Fund (FCTDX) [MF] | — | exited | $100,001 - $250,000 | — | $16,001 | $32,002 |
| Filer Rollover IRA ⇒ Strategic Advisers Fidelity Core Income Fund (FIWGX) [MF] | — | exited | $50,001 - $100,000 | — | $16,001 | $8,000 |
| Filer Rollover IRA ⇒ Strategic Advisers Fidelity Emerging Markets Fund (FGOMX) [MF] | — | exited | $15,001 - $50,000 | — | $16,001 | $8,000 |
| Spouse Rollover IRA ⇒ Strategic Advisers Fidelity U.S. Total Stock Fund (FCTDX) [MF] | SP | held | $15,001 - $50,000 | $15,001 - $50,000 | $16,001 | $0 |
| Filer Rollover IRA ⇒ Fidelity SAI Inflation-Protected Bond Index Fund (FSPWX) | — | new | — | $1,001 - $15,000 | $16,001 | $0 |
| Fidelity Money Market Account [BA] | SP | held | $15,001 - $50,000 | $15,001 - $50,000 | $0 | $0 |
| Spouse Rollover IRA ⇒ Fidelity SAI Inflation-Protected Bond Index Fund (FSPWX) [MF] | SP | new | — | $1,001 - $15,000 | $8,000 | $0 |
| Filer Rollover IRA ⇒ Brokerage sweep account [BA] | — | held | $1,001 - $15,000 | $1,001 - $15,000 | $0 | $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).