Insider Cluster Re-Test — We Extended It to 45 Quarters, and Found a Look-Ahead Error in the Process
Machine-readable: Markdown · 한국어 원문
⚠ This article was corrected on 2026-09-04. The conclusion as published on 9/3 ("still passes, 60-day holding +4.04%p") was based on figures that contained the look-ahead error described in §3 below. What was originally written stays in §1–2, and §3–5 record what was wrong and what remains. Not deleting a wrong article but appending the correction is the rule of this series.
1. What we originally set out to do
Part 12 was the only pass among five copy-trading tests, but its sample was 11 quarters. We downloaded the SEC dataset back to 2015Q1 and re-ran it over 45 quarters, 271,293 open-market purchases. The definition is the same — cluster = transaction-code P purchases by two or more different officers, directors, or 10% holders on the same ticker and same filing date, versus SPY, 0.2% round-trip.
2. The results published on 9/3 (contains look-ahead — do not cite)
| Signal | Holding | Sample | vs SPY | t |
|---|---|---|---|---|
| Cluster 2+ persons | 20 days | 2,532 | ||
| Cluster 2+ persons | 60 days | 2,532 | ||
| Cluster 2+ persons (2015–2023H1, out of sample) | 20 days | 1,990 |
On the basis of this table we wrote "half of it survives out of sample" and "the half-life is three months or more." We retract both.
One thing we found in this process does hold up: a single ticker's "2-person $760M purchase" appearing three days in a row turned out to be an investment company and its owner as an individual jointly reporting a single purchase under two names on one filing. A definition that counts by number of reporters mistakes such cases for clusters. We changed the definition to "2 or more separate accessions & 2 or more reporters" (8% of the total are joint filings), and all corrected figures below use that definition (n=2,279).
3. What was wrong — we were buying at the closing price on the filing date
It came out when we reopened the pipeline to compute the out-of-sample figure for the 60-day holding separately. The default behavior of searchsorted(filing date), the code that finds the entry point, is "the first trading day on or after the filing date" — and if the filing date is a trading day (98%), that is that day's close. The documentation said "next trading day's close"; the code did not. It was inherited as-is from the shared function of the 8/20 research, so Part 12 has the same error.
Why this is fatal: measuring actual EDGAR acceptance times, out of 100 cluster filings, 68% are after the close (16:00–22:00 ET), 28% are intraday, and 4% are pre-open. Buying at the filing date's close is physically impossible for two-thirds of the signals, and for the remaining third, if the second filing arrives after the close you cannot know that day whether it is a cluster.
And that one day was most of the signal:
| Entry point (2+ independent accessions, n=2,279) | 20 days | 60 days |
|---|---|---|
| Filing-date close (original backtest, look-ahead) | +1.31%p t 4.6 | +4.31%p t 6.2 |
| Next-session open (actually possible) | +0.57%p t 2.0 | +3.57%p t 5.1 |
| Next-session close | +0.30%p t 1.1 | +3.44%p t 4.8 |
Overnight return from the filing-date close to the next day's open is +0.76% (t 9.9), and the next day's intraday return is +0.26% (t 2.8). Three-quarters of the reaction to the filing is over before the open. The proposition this series has confirmed repeatedly ("the half-life of information is everything") here came out to under one day.
4. What the 60-day effect really is — the single year 2020
The +3.57%p at 60 days with next-session-open entry still looks large. Split by year:
- 2020: +19.1%p (n=385 — officers bought during the March crash and a V-shaped rebound followed)
- The 11 years excluding 2020: +0.68%p, t 1.4. The sign swings between -3.05 and +5.09
- Looking only at Part 12's sample (2023H2–), it is -0.47%p
Yesterday's conclusion that "60 days is the strongest" was a case of being fooled by the single year 2020. The original observation in the 8/20 note ("weakens after 60 days") was right.
5. What remains
- Next-session open · 20 days · clusters of $1M or more in value: +1.48%p, t 2.5, n=472 (~43 per year). Only the top quartile by value is positive; the bottom half is 0. Weak, but not zero
- However, in the universe for which we have price data (large and mid cap), this signal occurs 1–2 times per month. Six months of tracking gives a sample of 6–12 — statistically nothing can be decided
6. Decision
We are removing it from the live-candidate list. The collector (daily EDGAR → cluster detection) costs almost nothing, so we leave it running and just log the signals to the ledger. At whichever comes first — after March 2027, or 60 independent clusters within the universe — we will score the live sample on next-session open · 20 days · versus SPY close. We will not change the definition at that point. If it is under +1%p or negative, we terminate.
7. Korea did not work
We applied the same idea to Korean filings (OpenDART reports of ownership by officers and major shareholders). 2,236 currently listed tickers, 32,274 rows from 2024-09 to 2026-09. "Holding increase" clusters, 60 days: -4.16%p (t -3.6). The cause is the data — the Korean API does not distinguish the reason for the holding increase (on-market purchase / stock options / bonus / bonus issue), so what we tested was not "insider buying" but "changes in officer holdings." There is no filter corresponding to transaction code P in the U.S. Form 4.
8. What this episode leaves the series
We wrote look-ahead as the first item in Part 11, and two days after writing that article we found our own look-ahead. One line of entry-point code differed from the sentence "next trading day," and nobody read the two of them together. We are adding one item to the backtest methodology list: print the dates directly from the code and check the entry point with your own eyes. Do not trust the sentence in the documentation.
This article documents tests on historical data for informational purposes only. It is not investment advice or a recommendation to buy or sell any security. Past test results do not guarantee future returns.
Comments
Comments on methods, data and interpretation are welcome. Buy/sell recommendations for specific securities may be removed.