Tous les articles
Analyse d'indices

Do politicians beat the stock market? We tested 6,487 trades

House members' disclosed stock purchases returned +6.0% over 6 months. The S&P 500 returned +7.1% over the same windows. We tested 6,487 trades.

Adrien Chantreuil
Adrien Chantreuil
Founder, ACCE Investments

<p class="lede">Congressional stock trading is the most shared investing story on the internet and one of the least measured. We tested it against 6,487 disclosed purchases, entering on the day each filing became public. They returned +6.0%. The market returned more, and the typical member did worse than the average suggests.</p><h2>The number everyone quotes is a raw return</h2><p>Across every purchase in our sample, held 6 months, the average return was <strong>+6.0%</strong>. That is a real figure, and it is the kind of figure that gets screenshotted.</p><p>Over those same windows, the S&amp;P 500 returned <strong>+7.1%</strong>.</p><p>That single comparison is most of the story. Almost every viral claim about congressional trading reports what the trades made, not what they made <em>relative to simply owning the index</em>. In a decade that was mostly a bull market, any portfolio of large American companies produces a number worth posting. The benchmark is the part that never appears beside it.</p><h2>Most members do not do this at all</h2><p>Before any of the numbers, one fact reframes the subject. A member only files a transaction report when they trade a reportable security. Across six Congresses, 289 House members filed one. Well over six hundred people sat in those seats.</p><p>And among those who do trade, the activity is wildly concentrated. Of the 109 members with a backtested purchase, the median has <strong>17</strong>. The most active has <strong>721</strong>.</p><p>That matters for every figure below, and we come back to it.</p><h2>Where the legend comes from</h2><p>The famous figure is real, and it is old. A study of Senate trading between 1993 and 1998 found senators beating the market by roughly twelve percentage points a year, with House members around six. Those numbers are still the ones quoted today.</p><p>They describe a world that no longer exists. The STOCK Act took effect in 2012 and forced every trade into public view within 45 days. Every study of the period since has found something far weaker, and several have found nothing at all.</p><h2>What we expected to find, and did not</h2><p>Members do not disclose when they trade. They disclose up to 45 days later, and <strong>7.4%</strong> of the filings in our data missed even that deadline. Across 38,458 disclosures the median delay is <strong>11 days</strong>.</p><p>We assumed that delay was the reason copying Congress does not work, and built the test to measure it: every trade priced twice, once from the day the member dealt and once from the day you were allowed to know.</p><p>The difference is <strong>0.12 percentage points</strong>.</p><p>That is close enough to nothing to change the conclusion. Even with a time machine, buying the instant a member bought, you would still have trailed the index. The delay is real and the late filings are real, but they are not what makes this fail. The trades were not good enough for the timing to matter.</p><figure class="congress-lag-figure"><svg viewBox="0 0 720 488" role="img" aria-label="Average excess return versus SPY for each group, comparing entry on the disclosure date against entry on the transaction date." style="display:block;width:100%;height:auto;overflow:visible"><line x1="116" x2="116" y1="22" y2="454" stroke="var(--dv-grid)" stroke-width="1" stroke-dasharray="2 4" /><text x="116" y="470" text-anchor="middle" fill="var(--text-tertiary)" font-size="11" font-family="var(--font-mono)">-4%</text><line x1="339.20000000000005" x2="339.20000000000005" y1="22" y2="454" stroke="var(--dv-grid)" stroke-width="1" stroke-dasharray="2 4" /><text x="339.20000000000005" y="470" text-anchor="middle" fill="var(--text-tertiary)" font-size="11" font-family="var(--font-mono)">-2%</text><line x1="562.4000000000001" x2="562.4000000000001" y1="22" y2="454" stroke="var(--dv-axis)" stroke-width="1.5" /><text x="562.4000000000001" y="470" text-anchor="middle" fill="var(--text-tertiary)" font-size="11" font-family="var(--font-mono)">0%</text><text x="562.4000000000001" y="15" text-anchor="middle" fill="var(--text-tertiary)" font-size="10" font-family="var(--font-mono)" letter-spacing="0.8">MATCHES SPY</text><g><title>All members: disclosed -1.1% vs SPY, traded -1.0% vs SPY, lag costs 0.1 pts</title><text x="102" y="55" text-anchor="end" fill="var(--text-secondary)" font-size="12.5">All members</text><line x1="439.1288232754589" x2="452.07866684959356" y1="51" y2="51" stroke="var(--dv-axis)" stroke-width="2" stroke-linecap="round" opacity="0.35" /><circle cx="452.07866684959356" cy="51" r="6" fill="var(--bg-surface)" stroke="var(--dv-axis)" stroke-width="2" /><circle cx="439.1288232754589" cy="51" r="6.5" fill="var(--dv-series-1)" stroke="var(--bg-surface)" stroke-width="2" /><text x="425.1288232754589" y="55" text-anchor="end" fill="var(--danger)" font-size="12" font-weight="700" font-family="var(--font-mono)">-1.1%</text></g><g><title>House: disclosed -1.1% vs SPY, traded -1.0% vs SPY, lag costs 0.1 pts</title><text x="102" y="97" text-anchor="end" fill="var(--text-secondary)" font-size="12.5">House</text><line x1="439.1288232754589" x2="452.07866684959356" y1="93" y2="93" stroke="var(--dv-axis)" stroke-width="2" stroke-linecap="round" opacity="0.35" /><circle cx="452.07866684959356" cy="93" r="6" fill="var(--bg-surface)" stroke="var(--dv-axis)" stroke-width="2" /><circle cx="439.1288232754589" cy="93" r="6.5" fill="var(--dv-series-1)" stroke="var(--bg-surface)" stroke-width="2" /><text x="425.1288232754589" y="97" text-anchor="end" fill="var(--danger)" font-size="12" font-weight="700" font-family="var(--font-mono)">-1.1%</text></g><g><title>Democrats: disclosed -1.5% vs SPY, traded -1.1% vs SPY, lag costs 0.4 pts</title><text x="102" y="139" text-anchor="end" fill="var(--text-secondary)" font-size="12.5">Democrats</text><line x1="400.57836228900766" x2="443.3239438921216" y1="135" y2="135" stroke="var(--dv-axis)" stroke-width="2" stroke-linecap="round" opacity="0.35" /><circle cx="443.3239438921216" cy="135" r="6" fill="var(--bg-surface)" stroke="var(--dv-axis)" stroke-width="2" /><circle cx="400.57836228900766" cy="135" r="6.5" fill="var(--dv-series-1)" stroke="var(--bg-surface)" stroke-width="2" /><text x="386.57836228900766" y="139" text-anchor="end" fill="var(--danger)" font-size="12" font-weight="700" font-family="var(--font-mono)">-1.5%</text></g><g><title>Republicans: disclosed -0.7% vs SPY, traded -0.9% vs SPY, lag costs -0.2 pts</title><text x="102" y="181" text-anchor="end" fill="var(--text-secondary)" font-size="12.5">Republicans</text><line x1="479.8671512614582" x2="460.99883780658223" y1="177" y2="177" stroke="var(--dv-axis)" stroke-width="2" stroke-linecap="round" opacity="0.35" /><circle cx="460.99883780658223" cy="177" r="6" fill="var(--bg-surface)" stroke="var(--dv-axis)" stroke-width="2" /><circle cx="479.8671512614582" cy="177" r="6.5" fill="var(--dv-series-1)" stroke="var(--bg-surface)" stroke-width="2" /><text x="493.8671512614582" y="181" text-anchor="start" fill="var(--danger)" font-size="12" font-weight="700" font-family="var(--font-mono)">-0.7%</text></g><g><title>Majority: disclosed -1.1% vs SPY, traded -1.2% vs SPY, lag costs -0.1 pts</title><text x="102" y="223" text-anchor="end" fill="var(--text-secondary)" font-size="12.5">Majority</text><line x1="439.95905757949487" x2="427.9775536614643" y1="219" y2="219" stroke="var(--dv-axis)" stroke-width="2" stroke-linecap="round" opacity="0.35" /><circle cx="427.9775536614643" cy="219" r="6" fill="var(--bg-surface)" stroke="var(--dv-axis)" stroke-width="2" /><circle cx="439.95905757949487" cy="219" r="6.5" fill="var(--dv-series-1)" stroke="var(--bg-surface)" stroke-width="2" /><text x="453.95905757949487" y="223" text-anchor="start" fill="var(--danger)" font-size="12" font-weight="700" font-family="var(--font-mono)">-1.1%</text></g><g><title>Minority: disclosed -1.1% vs SPY, traded -0.7% vs SPY, lag costs 0.4 pts</title><text x="102" y="265" text-anchor="end" fill="var(--text-secondary)" font-size="12.5">Minority</text><line x1="438.08641156757506" x2="481.4103065368701" y1="261" y2="261" stroke="var(--dv-axis)" stroke-width="2" stroke-linecap="round" opacity="0.35" /><circle cx="481.4103065368701" cy="261" r="6" fill="var(--bg-surface)" stroke="var(--dv-axis)" stroke-width="2" /><circle cx="438.08641156757506" cy="261" r="6.5" fill="var(--dv-series-1)" stroke="var(--bg-surface)" stroke-width="2" /><text x="424.08641156757506" y="265" text-anchor="end" fill="var(--danger)" font-size="12" font-weight="700" font-family="var(--font-mono)">-1.1%</text></g><g><title>Democrat-majority: disclosed -2.3% vs SPY, traded -1.9% vs SPY, lag costs 0.4 pts</title><text x="102" y="307" text-anchor="end" fill="var(--text-secondary)" font-size="12.5">Democrat-majority</text><line x1="308.8452823559941" x2="355.676992106866" y1="303" y2="303" stroke="var(--dv-axis)" stroke-width="2" stroke-linecap="round" opacity="0.35" /><circle cx="355.676992106866" cy="303" r="6" fill="var(--bg-surface)" stroke="var(--dv-axis)" stroke-width="2" /><circle cx="308.8452823559941" cy="303" r="6.5" fill="var(--dv-series-1)" stroke="var(--bg-surface)" stroke-width="2" /><text x="294.8452823559941" y="307" text-anchor="end" fill="var(--danger)" font-size="12" font-weight="700" font-family="var(--font-mono)">-2.3%</text></g><g><title>Democrat-minority: disclosed -1.0% vs SPY, traded -0.7% vs SPY, lag costs 0.3 pts</title><text x="102" y="349" text-anchor="end" fill="var(--text-secondary)" font-size="12.5">Democrat-minority</text><line x1="455.4159225365954" x2="489.5890735808803" y1="345" y2="345" stroke="var(--dv-axis)" stroke-width="2" stroke-linecap="round" opacity="0.35" /><circle cx="489.5890735808803" cy="345" r="6" fill="var(--bg-surface)" stroke="var(--dv-axis)" stroke-width="2" /><circle cx="455.4159225365954" cy="345" r="6.5" fill="var(--dv-series-1)" stroke="var(--bg-surface)" stroke-width="2" /><text x="441.4159225365954" y="349" text-anchor="end" fill="var(--danger)" font-size="12" font-weight="700" font-family="var(--font-mono)">-1.0%</text></g><g><title>Republican-majority: disclosed -0.5% vs SPY, traded -0.9% vs SPY, lag costs -0.4 pts</title><text x="102" y="391" text-anchor="end" fill="var(--text-secondary)" font-size="12.5">Republican-majority</text><line x1="509.12101938309286" x2="461.63207172521" y1="387" y2="387" stroke="var(--dv-axis)" stroke-width="2" stroke-linecap="round" opacity="0.35" /><circle cx="461.63207172521" cy="387" r="6" fill="var(--bg-surface)" stroke="var(--dv-axis)" stroke-width="2" /><circle cx="509.12101938309286" cy="387" r="6.5" fill="var(--dv-series-1)" stroke="var(--bg-surface)" stroke-width="2" /><text x="523.1210193830929" y="391" text-anchor="start" fill="var(--danger)" font-size="12" font-weight="700" font-family="var(--font-mono)">-0.5%</text></g><g><title>Republican-minority: disclosed -1.5% vs SPY, traded -0.9% vs SPY, lag costs 0.6 pts</title><text x="102" y="433" text-anchor="end" fill="var(--text-secondary)" font-size="12.5">Republican-minority</text><line x1="392.32772817342743" x2="459.0342316543087" y1="429" y2="429" stroke="var(--dv-axis)" stroke-width="2" stroke-linecap="round" opacity="0.35" /><circle cx="459.0342316543087" cy="429" r="6" fill="var(--bg-surface)" stroke="var(--dv-axis)" stroke-width="2" /><circle cx="392.32772817342743" cy="429" r="6.5" fill="var(--dv-series-1)" stroke="var(--bg-surface)" stroke-width="2" /><text x="378.32772817342743" y="433" text-anchor="end" fill="var(--danger)" font-size="12" font-weight="700" font-family="var(--font-mono)">-1.5%</text></g><text x="395" y="486" text-anchor="middle" fill="var(--text-tertiary)" font-size="10" font-family="var(--font-mono)" letter-spacing="0.9">AVERAGE EXCESS RETURN VS SPY · 6-MONTH HOLD</text></svg><figcaption>Filled dot: bought the day the filing became public. Hollow ring: bought the day the member actually traded, which nobody outside Congress could have done. The two sit almost on top of each other, and that is the finding: the delay costs almost nothing, because there was no edge in the trades for it to erode.</figcaption></figure><h2>What the numbers say</h2><p>Every disclosed purchase, held 6 months, weighted equally. Equal weighting is not a convenience: filings disclose an amount <em>range</em>, "$15,001 to $50,000", never an amount, so any dollar weighting would invent precision the source does not have.</p><div class="table-scroll"><table><thead><tr><th>Group</th><th>Trades</th><th>Average return</th><th>vs S&amp;P 500</th><th>vs Nasdaq 100</th><th>Beat the S&amp;P</th></tr></thead><tbody><tr><td>All members</td><td>6,487</td><td>+6.0%</td><td class="neg">-1.1%</td><td class="neg">-2.7%</td><td>43.8%</td></tr><tr><td>House</td><td>6,487</td><td>+6.0%</td><td class="neg">-1.1%</td><td class="neg">-2.7%</td><td>43.8%</td></tr><tr><td>Democrats</td><td>3,333</td><td>+4.6%</td><td class="neg">-1.5%</td><td class="neg">-3.0%</td><td>43.8%</td></tr><tr><td>Republicans</td><td>3,154</td><td>+7.4%</td><td class="neg">-0.7%</td><td class="neg">-2.3%</td><td>43.8%</td></tr><tr><td>Majority</td><td>3,611</td><td>+5.9%</td><td class="neg">-1.1%</td><td class="neg">-2.0%</td><td>43.8%</td></tr><tr><td>Minority</td><td>2,876</td><td>+6.0%</td><td class="neg">-1.1%</td><td class="neg">-3.5%</td><td>43.7%</td></tr><tr><td>Democrat-majority</td><td>1,247</td><td>-3.9%</td><td class="neg">-2.3%</td><td class="pos">+0.7%</td><td>45.2%</td></tr><tr><td>Democrat-minority</td><td>2,086</td><td>+9.7%</td><td class="neg">-1.0%</td><td class="neg">-5.3%</td><td>43.0%</td></tr><tr><td>Republican-majority</td><td>2,364</td><td>+11.1%</td><td class="neg">-0.5%</td><td class="neg">-3.4%</td><td>43.1%</td></tr><tr><td>Republican-minority</td><td>790</td><td>-3.5%</td><td class="neg">-1.5%</td><td class="pos">+1.2%</td><td>45.8%</td></tr></tbody></table></div><p>Those averages weight every trade equally, which means the member with 721 purchases counts for roughly 42 times the median member. So it is fair to ask whether a handful of busy accounts are carrying the result.</p><p>Averaging each member separately and then averaging across the 80 members with at least 5 purchases gives <strong>-2.7</strong> against the S&amp;P, against <strong>-1.1</strong> trade-weighted.</p><p>It gets worse, not better. The prolific traders are the stronger ones, so weighting by trade count flatters Congress. Every figure in this article is the generous version.</p><p>Two columns carry the argument. <strong>vs S&amp;P 500</strong> asks whether the trades beat the market. <strong>vs Nasdaq 100</strong> asks the harder question, because these portfolios hold a lot of large-cap technology and that tilt alone beats the S&amp;P in a technology rally. Congressional purchases trail both, and they trail by more the longer you hold them.</p><h2>It is not about which party</h2><p>The obvious objection is that one party looks better than the other because it held power, not because it picked better. Controlling the House means committee chairs, agenda control and earlier sight of what is coming. So we split every trade by whether the member's party held the House on the day it was disclosed.</p><p>Members trading while their party controlled the House: <strong>-1.1</strong> against the S&amp;P. Members in the minority: <strong>-1.1</strong>. The difference is 0.02 points, which is to say none.</p><p>The raw returns tell you why people believe otherwise. Republicans trading while Republicans held the House returned <strong>+11.1%</strong>. Democrats trading while Democrats held it returned <strong>-3.9%</strong>. A fifteen-point gap, and an obvious headline.</p><p>Against the market over the same windows, those two groups sit at -0.5 and -2.3. The enormous difference in what they earned is a difference in what the market did while each party held the gavel. It is not a difference in skill.</p><h2>But some of them really do beat the market</h2><p>This part is true, and it is why the story survives. Of the 42 members with at least 40 disclosed purchases in our data, <strong>16 beat the S&amp;P 500</strong> and 26 trailed it. The best, Byron Donalds, beat it by <strong>+14.5 points</strong> across 44 trades. The worst, James R. Langevin, trailed by 20.2 points.</p><p>An article about that first member is accurate. So is a screenshot of their portfolio. Nothing about it is invented.</p><p>Here is what those articles leave out. 16 of 42 is fewer than you would expect from 42 people picking stocks at random, which is roughly half. The spread between the best and the worst is the shape chance makes across a few dozen people. And you would have had to choose the right 16 in advance.</p><p>That ratio holds however you cut it. Among the 80 members with at least 5 purchases, 30 beat the index. Raise the bar to forty trades and it is 16 of 42. The proportion barely moves, which is what you would expect if the winners are being produced by variance rather than by skill.</p><p>Every one of those posts is written after the results are known. Nobody was recommending the winners before their good run; they were identified by it. Copying "Congress" means copying all 42, and all 42 is -1.1 against the index.</p><p>One case resists that explanation better than the others: Josh Gottheimer, +0.6 points across 721 trades. That is a large enough sample that luck is a weaker story, and it deserves examining on its own rather than dismissing.</p><h2>We measured it. It does not work.</h2><p>No group cleared the bar. Across 6,487 disclosed purchases, buying what members of Congress bought, on the day you were actually allowed to know about it, returned <strong>-1.1 points against the S&amp;P 500</strong> over 6 months. Individual trades beat the index 43.8% of the time, against the 50% you would get from a coin.</p><p>Neither chamber rescued it, and neither party did either. The numbers sit close enough to zero that the honest description is not "a small edge" but "no edge we can measure".</p><p>And that is the flattering figure. Give every member equal weight instead of every trade, so the busiest accounts stop dominating, and it falls to <strong>-2.7</strong> against the S&amp;P and <strong>-3.2</strong> against the Nasdaq 100. There is no weighting we tried that makes copying Congress look like a good idea.</p><p>This is the same place the academic work landed. Studies of the post-2012 period find congressional returns statistically consistent with random stock picking. Our data agrees, and we can now say so with a number attached rather than a citation.</p><h2>How we ran it</h2><ul><li><strong>Source.</strong> 38,458 disclosures from 289 members, filed under the STOCK Act and read from the Clerk of the House's own published filings between 2001-11-30 and 2026-09-03.</li><li><strong>Entry.</strong> The first close on or after the disclosure date. We also priced every trade from the transaction date, which was not public information, and report both.</li><li><strong>Purchases only.</strong> A congressional sale can be a mandated divestment, a tax loss or a spouse rebalancing. Averaging those in with buys produces a number that means nothing.</li><li><strong>Benchmarks.</strong> S&amp;P 500 and Nasdaq 100 closing prices over the identical window, measured end to end rather than compounded from daily returns.</li><li><strong>Weighting.</strong> Equal per disclosure, for the reason above, and reported again with each member weighted equally so the 721-trade filers cannot carry the result.</li><li><strong>Limits.</strong> House only. The Senate publishes through a portal that blocks automated access, so nothing here describes it. Options are excluded, and some of the most-cited congressional trades are options.</li></ul><h2>What we are doing with it</h2><p>We track every congressional disclosure and show it on the stock pages, so you can see which members bought a company and how late they told you. We are not publishing an index built on it. The bar we set before running any of this was that a group had to beat the S&amp;P <em>and</em> the Nasdaq 100 with at least 300 trades behind it. Nothing came close, so there is nothing to sell you, which is the honest outcome of asking the question properly.</p><p>We do run <a href="/indices">indices</a> where the evidence supported one. <a href="/indices/smart-money">ACCE Smart Money</a> tracks stocks that multiple quality institutional managers are accumulating, built from 13F filings rather than from a story about them. And if you would rather test an idea yourself than take anyone's word for it, the <a href="/screener">screener</a> is the same engine we used here.</p>

See the full picture, free
ACCE scores thousands of stocks across six valuation models, with fair value, conviction and the full thesis on every name. Start free, no card required.
Partager :Publier sur X
Retour au blog