Posts  / #POST-248651
REDDIT

I found lookahead bias in my own published insider-buying study, so I re-ran it without it. The numbers got worse. Here they are. (906K Form 4 transaction records, 2023–2026)

A few months ago, I posted a study here on insider cluster buying, meaning cases where multiple insiders at the same company buy stock in the open market within a short period.

Original post:
[https://www.reddit.com/r/ValueInvesting/comments/1srl7qn/comment/ohgb6gd/](https://www.reddit.com/r/ValueInvesting/comments/1srl7qn/comment/ohgb6gd/)

The research used roughly 906,000 historical Form 4 transaction records from 2023 through early 2026. The cluster section reported mean excess returns over SPY of about:

* **+2.02% after 5 days**
* **+2.41% after 10 days**
* **+2.29% after 30 days**

I later turned the research into a live detection system. While trying to make the research logic and the live logic agree exactly, I audited my own pipeline and found a problem in the published study.

# The flaw

The original study measured cluster returns from the **earliest qualifying filing** in the cluster.

But a cluster is not actually identifiable at that point.

If Insider A files a purchase on Monday, there is only one insider. You do not know a cluster exists.

If Insider B files on Thursday, the cluster becomes observable on Thursday.

My old research effectively started the return clock on Monday, while using Thursday's filing to decide retrospectively that Monday belonged to a cluster.

That means part of the measured return occurred **before a real-time observer could have known a cluster existed**.

The original write-up implied that the cluster result did not have this lookahead problem. That was wrong.

I published a correction rather than quietly replacing the numbers.

Then I rebuilt the study around the moment the cluster actually becomes observable.

# The corrected design

I kept the cluster definition fixed:

* Same ticker
* Form 4 transaction code **P** (open-market purchase)
* Each qualifying transaction row worth at least **$100,000**
* At least **two distinct reported insider names**
* Qualifying filings no more than **11 calendar days apart**, based on filing dates

The important change is the event model.

A cluster forms only when a new qualifying filing causes the rolling population to cross from fewer than two insiders to at least two.

So:

* first insider: no event
* second distinct insider: cluster forms
* third/fourth/later purchases: members of the existing cluster, not new events
* another event happens only after the rolling population falls below two and later crosses the threshold again

Returns begin from the **formation event**, not from the earliest member.

For the historical period, SEC acceptance timestamps were not available in the database. I therefore used a conservative and uniform entry convention:

**the first regular NYSE open strictly after the formation filing date.**

I did not infer same-day entry times.

# Corrected results

The formation-based study produced **1,328 cluster events**.

||Original retrospective study|Formation-aligned study|
|:-|:-|:-|
|Observations|440 transaction-row observations|1,328 formation events|
|5-day mean excess vs SPY|\+2.02%|**+1.18%**|
|10-day mean excess vs SPY|\+2.41%|**+1.27%**|
|30-day mean excess vs SPY|\+2.29%|**+0.10%**|

One caveat matters a lot here:

**These are related studies, but they are not directly comparable cohorts.**

The difference is not just the return anchor. The original study also used different observation weighting, cluster construction, role composition and quality-selection rules.

So I cannot honestly say:

>

The new study is the more implementable one, but the gap between the two results cannot be attributed entirely, or by a specific amount, to lookahead.

# The average is positive. The typical event is not.

This was probably the most useful result of the rerun.

For events with valid returns:

|Horizon|Mean excess|Median excess|% with excess return > 0|
|:-|:-|:-|:-|
|5 days|**+1.18%**|\-0.04%|49.23%|
|10 days|**+1.27%**|\-0.05%|49.57%|
|30 days|**+0.10%**|\-1.23%|45.57%|

So the average 5-day and 10-day results are positive, but the **median cluster goes roughly nowhere**.

At 10 days:

* bottom 10% averaged **-16.9%**
* top 10% averaged **+27.8%**
* the cutoff to enter the top decile was **+11.9%**

That last distinction matters. It would be incorrect to say "one in ten gained more than 20%." The top-decile *average* was +27.8%; the threshold for entering that group was +11.9%.

The distribution is simply very wide.

# Are the positive means statistically meaningful?

I also ran inference on the corrected study rather than assuming that a positive mean automatically meant something.

There were 1,162 events with valid 5-day and 10-day returns.

Using standard errors clustered by **formation date**:

# 5 days

Mean excess return: **+1.18%**

95% confidence interval: **+0.53% to +1.83%**

p ≈ **0.0004**

# 10 days

Mean excess return: **+1.27%**

95% confidence interval: **+0.50% to +2.04%**

p ≈ **0.0013**

# 30 days

Mean excess return: **+0.10%**

95% confidence interval: **-1.00% to +1.19%**

Not statistically distinguishable from zero.

A bootstrap that resampled entire formation dates produced very similar confidence intervals.

That tells me the positive short-horizon **mean** probably isn't just sampling noise under this particular dependence treatment.

But statistical significance is not consistency.

The medians are still approximately zero and the hit rates are still approximately 50%.

Those are very different statements.

# What about tiny, illiquid stocks?

This was another obvious criticism I wanted to test before publishing the rerun.

Unfortunately, I do **not** have reliable historical point-in-time market capitalization for the whole study.

So I cannot honestly tell you what percentage of the events were microcaps.

What I could measure ex ante was liquidity.

For each event, I calculated median daily dollar trading volume over the 20 trading sessions strictly before the formation filing.

The least-liquid group, with median daily dollar volume below $1 million, had:

* 236 events
* **+4.97%** mean excess return at 5 days
* **+4.66%** at 10 days

So yes, illiquid names materially amplify the headline result.

Then I removed that group.

Among the **839 events with at least $1 million in median pre-formation daily dollar volume**:

# 5 days

* mean: **+0.54%**
* median: **+0.04%**
* hit rate: **50.3%**

# 10 days

* mean: **+0.87%**
* median: **+0.17%**
* hit rate: **51.4%**

# 30 days

* mean: **+0.04%**

So I don't think it is accurate to say that the entire short-horizon result is an illiquidity artifact.

But it would also be wrong to ignore how much the least-liquid names amplify the overall mean.

And because I don't have historical point-in-time market cap, I can't answer the separate "is this mostly microcaps?" question properly.

# What I think cluster data is actually useful for now

My view changed after doing this.

I don't think this research supports:

>

It doesn't.

The median event is approximately flat at 5 and 10 days. About half outperform SPY and half don't. The distribution is wide in both directions.

What the data seems better suited for is **detection rather than prediction**.

Something unusual has happened:

multiple insiders at the same company have independently disclosed six-figure open-market purchases within days of each other.

Historically, some of those situations subsequently moved a lot. Many did essentially nothing. Some performed badly.

You can't know in advance which one will land in which part of that distribution.

So the potentially useful information is simply knowing that the event happened when it happened, and then deciding whether the specific company deserves more work.

The methodology produced around **six cluster formations in a typical rolling seven-day period**, but they were unevenly distributed. Some weeks were quiet; some had bursts.

# Why publish worse numbers?

Because the alternative bothered me.

I had already published the stronger result publicly. Once I found that the event anchor depended on information that only arrived later, leaving the old numbers up without correcting them would turn the research into marketing.

The original retrospective numbers are still on the research page because they describe what that original calculation actually produced.

The correction is there too.

And now the formation-aligned results are published beside them.

Full methodology, correction, aligned study and limitations:

[https://avantinsider.com/research/insider-buying-signal-analysis/](https://avantinsider.com/research/insider-buying-signal-analysis/)

If you find another flaw in the corrected methodology, I'd genuinely like to hear it. The last audit made the research substantially better, even though it made the headline numbers worse.

**Disclosure:** I built Avant Insider, which hosts this research and also has paid Form 4 alerting products. The linked research article is public.