🏠 Home 🔍 Today's Scan 📰 Daily Report 📈 Hit Rate 📊 Base Rate ❓ Methodology 📚 Learn 🪙 Crypto Scanner 📋 All Tools ⏪ Investment Simulator 🧾 Tax Calculator🧮 Pension vs. Direct ⚡ Leverage ⚖️ Rebalancing 💹 DCA 📉 Averaging-Down B/E 💰 Dividend Calendar
← Back to the Learn hub
🧪 Real Measured Data · Signal Rejected

Insider Buying Didn't Work
— 360K Transactions Tested

“Insider buying means the stock goes up” is a widely-held belief. We tested it against 360,000+ Form 4 filings. It didn't hold up. In fact, CEO/CFO open-market purchases with their own money performed the worst. We publish the real numbers and the limitations, unfiltered.

Written by Dawn · IT Engineer · Published
💡 Key takeaway — When we measured stocks that insiders bought on the open market with their own money, all five ways of defining "insider buying" came back negative on a volatility-adjusted, 20-trading-day surge basis. The worst was CEO/CFO buying (−2.5pp).

Why We Re-Tested — the First Attempt (A1) Used the Wrong Method

We'd previously tested this using only "was a Form 4 filed" (A1). It failed. The real transaction-code breakdown explains why.

Transaction CodeCountNature
S — Open-market sale112,028Discretionary
A — Grant/award80,577Not discretionary
F — Tax-related disposition60,195Not discretionary
M — Option exercise51,640Mechanical
P — Open-market purchase26,912Bought with their own money

Sells outnumber buys 4 to 1. Lumping all of these together as "a Form 4 was filed" can't be a signal to begin with. So this time we separated transaction codes, keeping only self-directed purchases with the insider's own money (code P) and excluding grants, tax-related dispositions, option exercises, and gifts — none of which reflect a discretionary decision. We queried strictly by filing date, not transaction date, since Form 4 is filed within 2 business days of the trade, meaning the trade isn't knowable to the market until the filing lands — this keeps future information from leaking into the test.

The Numbers — Volatility-Adjusted Basis (mfe_atr), All Negative

As of 2026-08-14 · population 63,912 episodes, 51,494 successfully joined (80.6%) · source: this repository's INSIDER_VALIDATION_REPORT.md (based on 360,899 SEC EDGAR Form 4 quarterly-dataset filings) · Wilson 95% confidence intervals

SignalSampleHit RateBase RateLiftCI Lower
Sells only (no buys)12,5129.8%10.3%−0.5pp9.3%
Cluster buying (multiple insiders)1,5328.4%10.3%−1.9pp7.1%
Open-market purchase (P)4,3398.1%10.3%−2.2pp7.3%
Net buying (buys > sells)3,6718.0%10.3%−2.4pp7.1%
CEO/CFO buying1,5807.8%10.3%−2.5pp6.6%

All five ways of measuring it came back negative, none were statistically significant (the CI lower bound never clears the base rate), and the direction doesn't hold up when sliced by volatility (ATR) quartile either — every stratified verdict came back rejected. Stocks CEOs and CFOs bought with their own money performed the worst of all.

The Trap — a Fixed +15% Threshold Passes

Measure the exact same data against a fixed +15% target (mfe15) instead, and you get a completely different picture.

SignalLift (mfe15)Wilson·BH
Cluster buying+4.0ppPasses
CEO/CFO buying+3.0ppPasses
⚠️ Stop here and you'd wrongly conclude "insider buying works." Both signals fail when stratified by volatility (ATR) quartile — the direction doesn't hold up across bands. This is the same trap covered in the volatility illusion article: a signal that looks good on a fixed threshold disappears once you switch to a volatility-adjusted basis or slice it by band.

Why the Numbers Come Back Negative

  • The direction is different. Insider buying is closer to a value judgment ("this stock is cheap") while this scanner looks for momentum ("this stock is about to surge") — the two point in different directions to begin with.
  • It's disadvantaged on a volatility-adjusted basis. Stocks insiders buy tend to be relatively stable, making a 6×ATR threshold harder to clear. That said, the signal is still rejected within each volatility band too, so volatility alone doesn't fully explain it.

It Doesn't Work as an Exclusion Signal Either

We also checked whether the reverse could work — "no insider buying" as a red flag. The weakest negative result was sells-only-no-buys at −0.5pp, and even that wasn't statistically significant, with stratification also inconclusive. It can't be used as an exclusion signal either.

What Else This Data Is Good For

The scanner's insider_net_pos feature (90-day net insider buying) is unrelated to this conclusion and is still computed live, every day (a real-time per-candidate lookup, observed at weight 0). This article doesn't shut that pipeline off — it explains why it carries no weight. The bulk Form 4 dataset (360K+ rows) and the collection code remain in place and can be reused for other hypotheses (e.g. sell size or timing), but daily automatic collection stays off — there's no reason to keep pulling in a rejected signal every day.

Limitations

  • Single market — this result is limited to US-listed stocks (NASDAQ/NYSE).
  • Roughly one year of data — 2025-04-01 through 2026-06-30. Results could differ in other market regimes.
  • Filing lag — Form 4 is filed up to 2 business days after the trade, so there's a real gap between when the purchase happened and when it became public.
  • Purchase motive wasn't broken down further — option exercises, grants, and tax-related dispositions are already excluded, but within code P itself we didn't separate motives like "this looks cheap" from "I need liquidity."

★The data stops at 2026-06-30. The collection script (insider_collect.py) has no automatic execution path (manual-only), and given this rejection, we haven't wired up daily automatic collection either — the numbers in this article are a snapshot as of that date.

📌 Summary — All five ways of measuring insider buying came back negative on a 20-trading-day, volatility-adjusted surge basis, and the most widely-trusted version — CEO/CFO buying — was the worst of all (−2.5pp). Results that looked good on a fixed threshold fell apart under stratification. For the basics of Form 4 filings, see how to read insider buying signals; for other rejected hypotheses on this site, see the base-rate proof page.
📮 Daily US Market Morning Brief — We send an analysis of the previous day's top 10 US gainers (TOP10) and what they had in common, every day at 8am (KST). Telegram @dawnbrief · Free · No ads · Not stock recommendations.

Frequently Asked Questions

How did you measure insider buying?

We used the SEC EDGAR Form 4 (insider transaction report) quarterly datasets and separated transaction codes. Only self-directed open-market purchases (code P) counted as the signal; grants (A), tax-related dispositions (F), option exercises (M), and gifts (G) were excluded because they aren't discretionary decisions. We queried strictly by filing date to prevent future information from leaking into the test.

Why did CEO/CFO buying perform the worst?

We can't pin down the exact reason, but read it two ways. First, insider buying is closer to a value judgment ("this stock is cheap"), while this scanner looks for momentum ("this stock is about to surge") — the two directions differ from the start. Second, stocks insiders buy tend to be relatively stable, making a volatility-adjusted threshold harder to clear. That said, the signal is still rejected within each volatility band, so volatility alone doesn't fully explain it.

So should I ignore insider buying entirely?

This article's conclusion is narrow: it can't be used to predict a surge within 20 trading days. It also can't be used as an exclusion signal (a "no insider buying" red flag) — even the weakest negative result (sells-only, -0.5pp) wasn't statistically significant. We haven't tested its usefulness for long-term value investing.

Why did the first attempt (A1) fail?

A1 only checked whether a Form 4 had been filed at all. The real breakdown shows why that failed — 112,028 sales versus 26,912 purchases, a 4-to-1 ratio. Counting buys and sells the same way as "a Form 4 exists" can't produce a signal to begin with. This time we separated transaction codes and re-tested using only purchases (code P).

Related Reading