<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mees Wijnants</title>
    <description>The latest articles on DEV Community by Mees Wijnants (@meeswijnants).</description>
    <link>https://dev.to/meeswijnants</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4222472%2F2c31ca76-b895-4743-89f2-9c15b726e912.jpg</url>
      <title>DEV Community: Mees Wijnants</title>
      <link>https://dev.to/meeswijnants</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/meeswijnants"/>
    <language>en</language>
    <item>
      <title>How we track the stock trades of every U.S. politician (STOCK Act data, 2026)</title>
      <dc:creator>Mees Wijnants</dc:creator>
      <pubDate>Tue, 03 Nov 2026 11:01:47 +0000</pubDate>
      <link>https://dev.to/meeswijnants/how-we-track-the-stock-trades-of-every-us-politician-stock-act-data-2026-12p0</link>
      <guid>https://dev.to/meeswijnants/how-we-track-the-stock-trades-of-every-us-politician-stock-act-data-2026-12p0</guid>
      <description>&lt;p&gt;&lt;em&gt;By Mees Wijnants, founder and CEO of Wolf of Washington&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every member of the U.S. Congress has to report their stock trades. The data is public, but it is spread across thousands of PDFs on two different government websites. At &lt;a href="https://wolfofwashington.io/congresstrading/" rel="noopener noreferrer"&gt;Wolf of Washington&lt;/a&gt; we turn those filings into one clean, searchable list. This post explains how that works and what the data shows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The legal basis: the STOCK Act
&lt;/h2&gt;

&lt;p&gt;Since the STOCK Act of 2012, members of the House and Senate must report any stock trade above $1,000 within 45 days. In the House this report is called a &lt;strong&gt;Periodic Transaction Report (PTR)&lt;/strong&gt;. Senators file theirs in the Senate eFD system.&lt;/p&gt;

&lt;p&gt;The two official sources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;House: &lt;a href="https://disclosures-clerk.house.gov/FinancialDisclosure" rel="noopener noreferrer"&gt;Clerk of the House, Financial Disclosure Reports&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Senate: &lt;a href="https://efdsearch.senate.gov/" rel="noopener noreferrer"&gt;Senate Electronic Financial Disclosures&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The pipeline, step by step
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Collect.&lt;/strong&gt; We pick up new filings from both chambers as they appear. The House publishes a yearly index file with every document ID; each PTR links to its own PDF.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read.&lt;/strong&gt; Many PTRs are clean electronic PDFs. Some are scanned paper forms, which need extra care. For each line the useful fields are owner (self, spouse, joint, dependent child), asset, type (purchase, sale, exchange), transaction date, notification date and amount range.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean up.&lt;/strong&gt; Asset names in filings are written in many ways. They need to be matched to the right company, and stocks need to be kept apart from options.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify.&lt;/strong&gt; Every trade on a politician page links back to the original filing, so anyone can check it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review.&lt;/strong&gt; Experienced traders on our team look at every new filing. Of the 16,781 congressional trades reported in the last 1.5 years, we shared 221 with members since March 2025. Less than 1.5% makes the cut.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Our database now holds more than 102,000 trades from more than 350 members of Congress since 2012.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the data shows
&lt;/h2&gt;

&lt;p&gt;Most people assume &lt;a href="https://wolfofwashington.io/congresstrading/nancy-pelosi" rel="noopener noreferrer"&gt;Nancy Pelosi&lt;/a&gt; is the most active trader in Congress. By number of trades she is not. Among the politicians on our &lt;a href="https://wolfofwashington.io/congresstrading/" rel="noopener noreferrer"&gt;congress trading page&lt;/a&gt;, the most active in the last 12 months (as of 30 October 2026):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Politician&lt;/th&gt;
&lt;th&gt;Trades, last 12 months&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://wolfofwashington.io/congresstrading/ro-khanna" rel="noopener noreferrer"&gt;Ro Khanna&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;3,676&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://wolfofwashington.io/congresstrading/kevin-hern" rel="noopener noreferrer"&gt;Kevin Hern&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;196&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://wolfofwashington.io/congresstrading/markwayne-mullin" rel="noopener noreferrer"&gt;Markwayne Mullin&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;81&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://wolfofwashington.io/congresstrading/tom-kean-jr" rel="noopener noreferrer"&gt;Tom Kean Jr&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://wolfofwashington.io/congresstrading/cleo-fields" rel="noopener noreferrer"&gt;Cleo Fields&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Pelosi stands out for size, not volume: large option positions in big tech, mostly made by her husband Paul Pelosi. She also has the highest estimated &lt;a href="https://wolfofwashington.io/congresstrading/nancy-pelosi/net-worth" rel="noopener noreferrer"&gt;net worth&lt;/a&gt; of the politicians on our page, followed by &lt;a href="https://wolfofwashington.io/congresstrading/kevin-hern/net-worth" rel="noopener noreferrer"&gt;Kevin Hern&lt;/a&gt; and &lt;a href="https://wolfofwashington.io/congresstrading/peter-meijer/net-worth" rel="noopener noreferrer"&gt;Peter Meijer&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons for anyone building on this data
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amounts are ranges.&lt;/strong&gt; A filing says "$1,000,001 to $5,000,000", never an exact number. Treat every dollar figure as an estimate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delays are real.&lt;/strong&gt; Up to 45 days can pass between trade and report. The data tells you what happened, not what will happen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Owner matters.&lt;/strong&gt; "SP" means spouse. A large share of headline trades are not made by the politician personally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Volume is not signal.&lt;/strong&gt; Thousands of small managed account trades say less than one large, well timed position.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it yourself
&lt;/h2&gt;

&lt;p&gt;If you want to start with one politician, I open sourced a small tool: &lt;a href="https://github.com/MeesWijnants/pelosi-trade-finder" rel="noopener noreferrer"&gt;Pelosi Trade Finder&lt;/a&gt; (MIT, &lt;a href="https://doi.org/10.5281/zenodo.23914626" rel="noopener noreferrer"&gt;DOI 10.5281/zenodo.23914626&lt;/a&gt;). It lists every official PTR of Nancy Pelosi, or any House member, with a direct link to the original PDF.&lt;/p&gt;

&lt;p&gt;For the full picture across 500+ politicians, see &lt;a href="https://wolfofwashington.io/congresstrading/" rel="noopener noreferrer"&gt;wolfofwashington.io/congresstrading&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Not investment advice.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About the author.&lt;/strong&gt; Mees Wijnants is the founder and CEO of &lt;a href="https://wolfofwashington.io" rel="noopener noreferrer"&gt;Wolf of Washington&lt;/a&gt;, which tracks the public stock trades of 500+ U.S. politicians for 5,000+ members. He studied Economics and Politics at Leiden University. More at &lt;a href="https://meeswijnants.github.io/" rel="noopener noreferrer"&gt;meeswijnants.github.io&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opendata</category>
      <category>python</category>
      <category>finance</category>
      <category>datascience</category>
    </item>
    <item>
      <title>I built a free open source tool to track Nancy Pelosi's official stock trade reports</title>
      <dc:creator>Mees Wijnants</dc:creator>
      <pubDate>Mon, 02 Nov 2026 13:58:30 +0000</pubDate>
      <link>https://dev.to/meeswijnants/i-built-a-free-open-source-tool-to-track-nancy-pelosis-official-stock-trade-reports-23mj</link>
      <guid>https://dev.to/meeswijnants/i-built-a-free-open-source-tool-to-track-nancy-pelosis-official-stock-trade-reports-23mj</guid>
      <description>&lt;p&gt;I wanted a simple way to see every official stock trade report filed by Nancy Pelosi, straight from the source. The data is public, but it is spread over yearly index files and PDFs that are hard to search. So I wrote a small, free and open source Python script that does the searching for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/MeesWijnants/pelosi-trade-finder" rel="noopener noreferrer"&gt;github.com/MeesWijnants/pelosi-trade-finder&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Latest filings (auto updated weekly):&lt;/strong&gt; &lt;a href="https://github.com/MeesWijnants/pelosi-trade-finder/blob/main/FILINGS.md" rel="noopener noreferrer"&gt;FILINGS.md&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Why this data exists
&lt;/h2&gt;

&lt;p&gt;Under the &lt;strong&gt;STOCK Act (2012)&lt;/strong&gt;, members of Congress must report stock trades above $1,000 within 45 days. In the House these reports are called &lt;strong&gt;Periodic Transaction Reports (PTRs)&lt;/strong&gt; and they are published by the &lt;a href="https://disclosures-clerk.house.gov/FinancialDisclosure" rel="noopener noreferrer"&gt;House Clerk&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The Clerk offers one ZIP file per year with an XML index of every filing. Each row has the member's name, the filing type, the date and a document ID. PTRs have filing type &lt;code&gt;P&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  How the tool works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Download &lt;code&gt;https://disclosures-clerk.house.gov/public_disc/financial-pdfs/{year}FD.zip&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Parse the XML and keep rows where &lt;code&gt;FilingType == "P"&lt;/code&gt; and the name matches&lt;/li&gt;
&lt;li&gt;Build the link to the original PDF: &lt;code&gt;.../ptr-pdfs/{year}/{doc_id}.pdf&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No API key, no dependencies, Python 3.8 or newer. Standard library only (&lt;code&gt;urllib&lt;/code&gt;, &lt;code&gt;zipfile&lt;/code&gt;, &lt;code&gt;xml.etree&lt;/code&gt;).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;filings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FilingType&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;P&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;   &lt;span class="c1"&gt;# P = Periodic Transaction Report
&lt;/span&gt;        &lt;span class="k"&gt;continue&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Last&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="k"&gt;continue&lt;/span&gt;
    &lt;span class="n"&gt;pdf_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;PTR_PDF_URL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Year&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;doc_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DocID&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/MeesWijnants/pelosi-trade-finder
&lt;span class="nb"&gt;cd &lt;/span&gt;pelosi-trade-finder

&lt;span class="c"&gt;# Nancy Pelosi, last 5 years&lt;/span&gt;
python pelosi_finder.py

&lt;span class="c"&gt;# Any other House member&lt;/span&gt;
python pelosi_finder.py &lt;span class="nt"&gt;--last&lt;/span&gt; Crenshaw &lt;span class="nt"&gt;--first&lt;/span&gt; Dan

&lt;span class="c"&gt;# Export&lt;/span&gt;
python pelosi_finder.py &lt;span class="nt"&gt;--markdown&lt;/span&gt; FILINGS.md &lt;span class="nt"&gt;--json&lt;/span&gt; filings.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A GitHub Actions workflow runs the script every Monday and commits the fresh &lt;code&gt;FILINGS.md&lt;/code&gt;, so the list in the repo stays current without anyone touching it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does not do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It does not read the PDFs or extract individual trades. Every result links to the original PDF so you can check it yourself.&lt;/li&gt;
&lt;li&gt;House only. Senate reports live at &lt;a href="https://efdsearch.senate.gov/" rel="noopener noreferrer"&gt;efdsearch.senate.gov&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;It is not investment advice. Filings can be up to 45 days late, so they show what happened, not what will happen.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;I'm the founder of &lt;a href="https://wolfofwashington.io/congresstrading/" rel="noopener noreferrer"&gt;Wolf of Washington&lt;/a&gt;, an app that tracks the public stock trades of 500+ U.S. politicians and explains them in plain language. The app does the heavy lifting (parsing PDFs, alerts, history). This script is the opposite: the smallest possible tool that shows where the data really comes from. I think that transparency matters more than any feature.&lt;/p&gt;

&lt;p&gt;The code is MIT licensed. Issues and pull requests are welcome.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: I'm the founder of Wolf of Washington. This post and the tool are for education only and are not investment advice. More about me: &lt;a href="https://wolfofwashington.nl/over-ons" rel="noopener noreferrer"&gt;wolfofwashington.nl/over-ons&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>opensource</category>
      <category>finance</category>
      <category>datascience</category>
    </item>
  </channel>
</rss>
