Key insights
- Analysis of 9,000 insider purchases since January 2025 suggests potential alpha generation by tracking SEC filings. The study measures returns from the filing date close, offering a more realistic view for retail investors. While sample sizes vary across holding windows (5 days to 12 months), the findings could inform short-term trading strategies based on insider activity, although further details on specific results are needed to assess true profitability.

"Follow the insiders" is one of the most repeated ideas in retail investing. There's been a lot of studies published linking insider purchases to excess returns and there's good reasoning why it should work. Afterall company executives have the best insight into their own company's performance and as Peter Lynch said "Insiders might sell their shares for any number of reasons, but they buy them for only one: they think the price will rise". I'm particularly interested in the direct purchase transactions, when insiders buy their own stock on open market with their own money. I ran a number of queries to test if simply following those insider trades allows you to beat the market.
Important methodology notes first. I built my own database for tracking insider trades and this is where I source my data from. I fetch transaction data from sec-api and use financial data APIs to source prices and additional context for each transaction. I used it to grab every open-market insider purchase filed since January 2025. Then I compared each one to SPY across multiple holding windows. 9,000 purchases across 2,008 tickers, about 16 months of data.
One thing that matters a lot and most research doesn't mention, I measure everything from filing-date close, not the insider's transaction price. This is the price you'd actually get if you saw the filing and bought the stock that day. Most academic research uses the transaction price, which includes the days between when the insider bought and when the filing went public. It measures what the insider got and most often looks better. I'm interested in what you'd get if you followed them.
|Window|N (transactions)|N (unique tickers)| |:-|:-|:-| |5 days|8,900|1,999| |1 month|8,556|1,949| |3 months|7,290|1,742| |6 months|5,440|1,462| |12 months|2,015|771|
Sample sizes per holding window. N drops at longer windows because newer filings haven't reached those horizons yet. The 12 month window only covers Jan-Apr 2025 filings, the earliest cohort in the dataset.
The averages are misleading
Before I show the results, see this. Raw average return across all insider purchases at 3 months is +25.6%. That number is meaningless for the typical follower.
|Window|Raw Mean|Trimmed Mean|Raw Median|Trimmed Median| |:-|:-|:-|:-|:-| |3 months|25.61%|5.99%|2.12%|2.12%| |6 months|26.39%|11.77%|4.23%|4.23%|
Raw vs P1/P99 trimmed (top and bottom 1% removed). The mean drops by 4x when you remove 2% of the data.
When removing 2% of observations changes the mean this much, the mean was telling you about the tails, not the typical purchase. A handful of extreme small-cap winners, stocks that went up 500%, 1000%, sometimes more, pull the raw average up. Remove the top and bottom 1% and the mean drops to 6%. The median sits near 2% either way, which is obvious when trimming top and bottom.
I checked the top performers, the ones the trimming removes. They're all micro-caps. $20-50M companies that 10x'd. Real money, real returns. Removing them isn't dismissing them, it's separating their dynamics from the rest of the sample.
When mean and median diverge this much, the "average" is describing a result almost nobody actually gets. A few lottery tickets pull the number up. The median, the result you'd most likely experience, sits near zero.
Every number from here on is P1/P99 trimmed. I show medians alongside means throughout. Those trimmed numbers above were absolute returns. From here on I'm measuring against SPY, what your purchase returned minus what the index returned over the same period.
If you followed every insider filing, here's what you'd get
|Window|N|Mean|Median|Beat SPY %|SD| |:-|:-|:-|:-|:-|:-| |5 days|8,722|+1.51%|+0.50%|54.7%|7.89%| |1 month|8,384|+1.27%|-0.08%|49.7%|14.77%| |3 months|7,145|+1.14%|-2.44%|44.3%|29.07%| |6 months|5,330|-0.60%|-7.34%|39.2%|46.37%| |12 months|1,974|+0.70%|-6.82%|41.4%|66.24%|
SPY-excess returns per holding window. Beat SPY % = share of purchases that outperformed the index. SD = standard deviation of excess returns.
There's a real short-term lift after these filings. At 5 days, a majority beat SPY by a small amount. Whether that's the market reacting to insider information or simple mean reversion in beaten-down stocks isn't something this dataset can disentangle, but the lift is there.
By 1 month it's a coin flip.
By 3 months, 44% of purchases beat SPY. By 6 months, only 39%. The median trailed by 7.3 points. Real winners exist but they're outnumbered.
One thing worth flagging on the 12 month row. It only covers stuff filed in the first four months of 2025, anything later just hasn't had a year on it yet to be in there. So it's not the same purchases as the 6 month window with more time tacked on, it's a different slice of the data. Even in that slice only 41% beat SPY at the one year mark. More time doesn't seem to fix things.
Look at the SD column. At 6 months it's 46.37%, nearly fifty percentage points of spread around the mean. A mean of -0.60% tells you basically nothing when individual outcomes scatter that widely. It's not that insider purchases don't work. It's that the range of outcomes is so wide that the filing alone doesn't narrow it enough.
I also checked this counting each company once instead of each filing, so a ticker with 10 insider buys counts once, not 10 times. Counting only the first transaction per ticker. Results are slightly better across every window but the direction doesn't change.
|Window|Beat SPY % (per filing)|Beat SPY % (per ticker)| |:-|:-|:-| |5 days|54.7%|58.7%| |1 month|49.7%|52.5%| |3 months|44.3%|46.4%| |6 months|39.2%|40.3%| |12 months|41.4%|44.5%|
Per-filing vs per-ticker beat-SPY rates. The ticker lens counts each company once (median return across all its filings).
The gap is consistent but small. Companies with lots of insider filings tend to drag the per-filing numbers down a bit, but even when you control for that, the majority still lost to SPY at 3 months and beyond.
One last thing worth pulling from the first table though. Mean sits above median at every single window, and the gap actually grows at longer horizons (1pp at 5d, 6.7pp at 6m, 7.5pp at 12m). The tails are already trimmed so it's not extreme winners pulling things up. A chunk of these purchases still made enough money to drag the average above the median anyway. At the same when less than 50% beat the SPY. The full sample lost to SPY because the noise washes everything out, but that gap tells you a real chunk of these purchases worked. They're just buried in the pile, and figuring out what separates them from the rest is where this actually gets interesting.
Full distribution
Here's the full distribution so you can see what we're dealing with.
|Window|P10|P25|Median|P75|P90| |:-|:-|:-|:-|:-|:-| |5 days|-6.41%|-2.51%|+0.50%|+4.41%|+10.26%| |1 month|-14.44%|-6.75%|-0.08%|+7.24%|+17.55%| |3 months|-29.60%|-14.68%|-2.44%|+11.31%|+33.50%| |6 months|-47.86%|-26.71%|-7.34%|+13.39%|+50.36%| |12 months|-72.26%|-38.95%|-6.82%|+20.22%|+81.65%|
SPY-excess return distribution by percentile. At 6 months the P10-to-P90 range spans 98 percentage points. At 12 months it's 154.
At 6 months, the bottom 10% trailed SPY by 48 points. The top 10% beat it by 50. That's the spread you're working with. The filing alone just doesn't tell you which side you end up on.
Winners vs losers
One number that puts this in perspective. I split winners from losers and looked at the median outcome for each group separately.
|Window|Median Winner (vs SPY)|Median Loser (vs SPY)|Skewness| |:-|:-|:-|:-| |5 days|+3.90%|-2.89%|0.38| |1 month|+7.29%|-6.72%|0.27| |3 months|+13.85%|-13.03%|0.37| |6 months|+20.71%|-21.23%|0.44| |12 months|+29.86%|-33.31%|0.34|
Median winner = median SPY excess among purchases that beat SPY. Median loser = median among those that didn't. Skewness uses Pearson's second coefficient.
At 6 months, the median winner beat SPY by +20.71%. The median loser trailed by -21.23%. Almost perfectly symmetric in magnitude, but 61% of purchases landed on the losing side. The alpha is real for the winners. +21% over the index is substantial. The question is what separates them from the 61% that didn't make it.
Skewness sits between 0.27 and 0.44 across windows, which is just what stock returns look like in general. A stock can go up 200% but it can only go down 100%, so returns always lean a bit to the right. Nothing weird going on. Just means the averages will look better than what most people actually get, because the winners win bigger than the losers lose.
Does this hold across time?
Checked whether this was driven by one unusual quarter or if it held across the full sample.
|Quarter|N|Median SPY Excess (5D)|Beat SPY % (5D)|Median SPY Excess (1M)|Beat SPY % (1M)| |:-|:-|:-|:-|:-|:-| |Q1 2025|1,670|+0.59%|54.2%|-0.98%|45.8%| |Q2 2025|1,975|-0.26%|48.9%|-1.45%|45.1%| |Q3 2025|1,589|+1.00%|59.8%|-0.31%|48.4%| |Q4 2025|1,796|+0.82%|56.9%|+1.81%|56.7%| |Q1 2026|1,636|+0.58%|55.4%|+0.85%|53.2%|
5-day and 1-month SPY excess by filing quarter. Q2 2026 excluded, too early for the windows to be meaningful.
At 5 days, four of five quarters cluster between 54-60%. Q2 2025 is the weak one. At 1 month it's more mixed, below 50% beat rate for the first three quarters of 2025, then flips positive in Q4 2025 and Q1 2026. The aggregate finding isn't being driven by a single weird quarter.
Side note. I ran this analysis in March on 8,307 transactions. The numbers above are from April with 9,000 transactions. Fixed-period results moved by less than 1.2 percentage points between the two snapshots. The finding replicates with more data.
So what
If you bought every insider filing at filing-date close, you'd have a brief edge that fades within weeks. The 5-day effect is consistent across most quarters but it's gone by 1 month. By 6 months, 39% beat SPY. The losers outnumber the winners.
Bu