Methodology

How the data flows from SEC EDGAR to this site, what a cluster is, and what we deliberately don't do.

What this site is

Insider Atlas is a descriptive research site built on public SEC filings. Most insider-data sites show you transactions and let you draw your own conclusions; Insider Atlas shows you the transactions, what the academic literature has found about patterns like them, and where the two diverge. It never turns those records into a recommendation or a security-level outcome — it says “3 insiders bought $X of stock in the same week,” cites the papers that studied that pattern, and stops there.

What this site is NOT

This is the part you should read twice.

If a cluster event on this site looks exciting, the correct next step is to read the underlying filings and the cited papers — not to trade.

Data flow and provenance

Everything on this site comes from a daily batch pipeline against SEC EDGAR — no real-time feed, no vendor data, no scraping of other aggregators. The provenance chain for any number you see is:

SEC accession number → EDGAR archive URL → normalized JSON in the repository → this page.

  1. 6pm ET, weekdays — a scheduled job fetches the day’s Form 4 index from EDGAR (master.YYYYMMDD.idx under the daily index).
  2. For each Form 4 / 4A accession, the pipeline fetches the primary ownership XML document from the EDGAR archives.
  3. The XML is parsed (Table I non-derivative + Table II derivative rows, footnotes, relationship flags) and normalized into a versioned JSON schema. Every record keeps its accession number and a resolvable sec.gov archive URL.
  4. Normalized filings are committed to the repository as data/form4/YYYY-MM-DD.json — an append-only public audit trail.
  5. Company metadata (ingest/company_metadata.py) enriches each issuer with its SIC code, SIC description, sector mapping, and exchange from data.sec.gov/submissions/ (cached 7 days).
  6. Cluster detection (ingest/cluster_detector.py) runs over the ingested window, writing one file per ISO week to data/clusters/.
  7. Aggregation (ingest/aggregator.py) produces the per-company, per-insider, per-sector, and site-wide JSON the pages are built from.
  8. The static site is rebuilt from the committed JSON. What you see is exactly what is in the repository.

The pipeline respects SEC fair-access rules: at most 10 requests per second (we run at 9 with backoff on 429/503) and a User-Agent that identifies the project and a contact address.

If you find a row you can’t trace to a filing, that’s a bug — please report it.

Update lag

Timeliness is bounded in two places, and we disclose both rather than pretend otherwise:

In the worst case a transaction appears here roughly three business days after it happened. Amended filings (Form 4/A) can also restate transactions from much earlier dates — cluster files for past weeks may therefore change when amendments arrive.

Cluster definition (v0.2)

A cluster event is: 3 or more distinct insiders at the same issuer making same-direction trades (all acquisitions or all dispositions) within the same ISO calendar week, with total reported value of at least $100,000.

The detection algorithm, in the order it runs:

  1. Every transaction is bucketed by (ISO week of trade date, issuer CIK).
  2. Routine transactions are filtered out first — codes A, D, F, I, M (grants, dispositions to the issuer, tax withholding, discretionary plan moves, option exercises under Rule 16b-3). Detection runs on the opportunistic remainder.
  3. Buckets with mixed direction after the routine filter (some insiders acquiring, some disposing) are rejected outright.
  4. Buckets with 3+ distinct insider CIKs and ≥ $100k total reported value become cluster events.
  5. A bucket whose activity is entirely routine is still evaluated over the routine transactions, and — if it qualifies — surfaces as a routine-only window (routine = true). These are excluded from every headline cluster count and shown only behind a drill-down, because the literature finds them uninformative.

Notes on the construction:

There is no SEC definition of a “cluster”; other sites use windows from 7 to 90 days. Ours is deliberately the tight end, and the definition is versioned — if it changes, the version stamps on cluster pages change with it.

Routine vs opportunistic

The single most important split on this site, exposed everywhere rather than buried:

RoutineOpportunistic
CodesA D F I MP S G and the rest
Typical realityscheduled grants, tax withholding, option exercisesdiscretionary open-market buys and sells
Literature verdictessentially no information (C/M/P 2012)where the documented associations concentrate
Treatment herebadged routine, excluded from headline cluster counts, visible on drill-indrives cluster detection, sector flows, and KPIs

All dollar aggregates on this site (sector heatmap, KPI chips, company/insider flow columns) use opportunistic transactions only, so a wave of January option grants doesn’t masquerade as conviction buying.

Heatmap metric

Each sector cell’s fill encodes net open-market flow ÷ gross flow over the trailing 7 days, using non-routine codes only: (buys − sells) / (buys + sells), clamped to [−1, +1]. Equal cell sizes are deliberate — the grid compares direction and intensity across sectors, not market size. Color is never the only encoding: every cell carries a signed mono caption.

Dates

Form 4 has at least four dates. We keep them separate and you should too:

DateMeaning
Trade dateWhen the transaction executed (drives cluster-week bucketing)
Filing dateWhen EDGAR accepted the form (drives public availability, 2-business-day rule)
Signature dateWhen the form was signed — never used as trade date
Data as ofThe last completed batch on this site

13F institutional holdings (Phase 3)

Quarterly Form 13F-HR reports, ingested per quarter from EDGAR (ingest/13f_quarterly.py). Every 13F-HR filed in the 45-day window after quarter-end is scanned (cover page + summary), and the top 50 managers by reported 13(f) value get their full information table ingested, plus their previous-quarter report for change classification. Positions are matched across quarters by (CUSIP, put/call flag, shares-vs-principal type) after summing rows split by investment discretion; each position is classified NEW / INCREASED / DECREASED / UNCHANGED / CLOSED. When no previous-quarter report is matched, changes show as no data — never as “no change”.

13F cluster events are the Form 4 analog with the manager as the entity and the quarter as the window: 3+ tracked managers reporting the same position as NEW or INCREASED in the same quarter, over open equity positions only (no puts/calls, no principal-amount rows) with a $1M combined added-value noise floor (Form 4 uses $100k; 13F positions run an order larger). The framing is always “N managers added X” — with a 45-day lag and quarter-end snapshots, a shared add is routinely index membership or style flow (Lewellen 2011), not coordinated conviction.

Standing 13F caveats (rendered on every holdings page, not just here): 45-day filing lag; long-only US-listed 13(f) securities — no shorts, no international, options too partial to interpret; positions are quarter-end snapshots that miss intra-quarter round trips; only managers over $100M in 13(f) securities file, and positions under 10,000 shares and $200,000 may be omitted. Sector labels on manager pages are joined from the Form 4 pipeline’s issuer metadata, so their coverage is partial by construction.

What 50 years of literature supports — the full synthesis

This is the complete signal-support synthesis the site is built from, reproduced in full rather than distilled. Every rank below describes empirical support in published research — the strength and durability of documented historical associations — never a forecast, score, or recommendation. The papers themselves are annotated on the literature pages.

Empirical support ladder

RankPattern (as studied)Published supportHow this site handles it
AOpportunistic open-market purchases (Cohen, Malloy & Pomorski 2012 style)Strongest modern evidenceRoutine/opportunistic labels everywhere; never collapsed into raw “buy”
A−Cluster purchases (≥2–3 distinct insiders)Strong, multi-decade (Lakonishok & Lee 2001 onward)Insider counts, roles (CEO/CFO/director), and window length shown on every cluster
BPurchase-intensity net purchase ratio, especially small caps and high book-to-market after controlsStrong historical (Seyhun 1986; Lakonishok & Lee 2001)Size context noted; no security-level scoring built on it
B−Purchases at high-information-asymmetry firms (R&D-heavy, illiquid)Strong but conditional (Aboody & Lev 2000)Sector context shown; asymmetry never turned into a score
CAggregate insider buy ratio as market-level timingModerate (Seyhun 1988/1992)Treated as macro context only, never per-security
C−Form 144 planned sales / non-executionEmerging, thinner peer reviewDescriptive join to Form 4 if ever added; uncertainty labeled
DAverage Form 4 salesWeak, often null (Lakonishok & Lee 2001; Jeng, Metrick & Zeckhauser 2003)Liquidity/diversification caveat on every sales view; no “insider dumping” alarmism
DRoutine calendar sales and most 10b5-1 plan salesNoise in the return-association literatureFiltered from headlines or flagged as plan trades
ERaw “more 13F holders this quarter”Ambiguous, often uninformative (Lewellen 2011)Separate 13F module with index-membership and size caveats
EExtreme multi-institution buy herdsShort-run flow with documented long-run reversal riskFramed as crowding description, never “smart money”

What the literature treats as noise

For return association in published research, the following are noise, and this site never headlines them:

The ten principles this site is built on

The synthesis distills into ten commitments, all of them visible in the UI:

  1. Buy ≠ sell asymmetry is a first-class UI fact, not a footnote.
  2. Size stratification context accompanies any return-association claim quoted from the literature.
  3. Routine vs opportunistic flags appear wherever the data allow.
  4. Cluster definition transparency: N insiders, window length, and included roles are stated and versioned (v0.2, above).
  5. Form-type literacy: Form 4 is an executed trade, Form 144 is an intent, 13F is a quarterly snapshot — never conflated.
  6. Horizon honesty: announcement-window reactions (Brochet 2010), multi-month drift, and implementable-after-costs results (Seyhun 1986; Jeng, Metrick & Zeckhauser 2003) are different findings and cited as such.
  7. No survivorship shortcuts: quoted results come from delisting-aware samples, reported both equal- and value-weighted where the papers do.
  8. No productized backtest hero charts: the site’s job is context for public data, not selling a strategy.
  9. The ladder of papers is citable end-to-end — a reader can move from Jaffe (1974) → Seyhun (1986) → Lakonishok & Lee (2001) → Jeng, Metrick & Zeckhauser (2003) → Cohen, Malloy & Pomorski (2012) without marketing mythology.
  10. The dead-cat-bounce callout sits next to every sales visualization: sales often reflect liquidity and diversification, not a forecast of decline.

One-sentence takeaway

Across five decades of published research, insiders’ open-market purchases — especially non-routine, multi-insider clusters at smaller, high-asymmetry firms — carry the most durable documented associations; average sales and raw institutional headcount changes largely do not.

What we deliberately don’t do

What makes this different

CapabilityOpenInsiderHedgeFollowWhaleWisdomInsider Atlas
Form 4 ingestionYesYesYesYes
13F-HR holdingsNoPartialYes (paid)Yes (free, quarterly)
Cluster detectionBasic filterNoNoFirst-class
Routine vs opportunistic splitNoNoNoYes (Cohen/Malloy/Pomorski)
Annotated academic bibliographyNoNoNoYes (20 papers)
Sector heatmapNoNoNoYes (grid v1)
Insider profilesBasicNoNoCareer + transaction history
Mobile readablePoorOKOKCard-stack default
Public provenance (EDGAR link per row)PartialNoNoEvery row
CostFreeFreemiumPaidFree