SEC Form 4 insider intensity: trailing-90d buy/sell signals per US ticker
Daily enrichment signals scoring insider open-market transaction intensity for the ~54 US-listed companies in the curated company dictionary (private, ticker-less companies are out of scope). Each day the SEC's keyless ticker->CIK map and the keyless EDGAR full-text search API are queried for Form 4 filings (``form == "4"``; ``4/A`` amendments excluded) in the trailing 90-day window; each filing's primary XML (stored under the reporting owner's CIK directory for agent-filed forms, under the issuer's CIK directory for self-filed forms) is parsed for non-derivative transactions. Transactions are classified by SEC transaction code (P = open-market purchase, S = open-market sale; other codes counted separately) and window-filtered on transaction date. Per ticker: n_form4, n_insiders, n_buy_tx / n_sell_tx / n_other_tx, buy_shares / sell_shares, buy_value_usd / sell_value_usd (shares x price, priced transactions only), net_buy_value_usd, share_imbalance in [-1, 1] (null when no priced buy/sell transactions), n_insider_buyers / n_insider_sellers, pct_10b51 (share of filings under a Rule 10b5-1 plan), insider_score = 100 * (50% min-max((imbalance+1)/2, null->0.5) + 25% min-max(log1p(n_buy_tx)) + 25% min-max(log1p(n_insider_buyers))), min-maxed within the snapshot so it is a relative, not absolute, intensity gauge. Who joins this: a quant desk joins trailing-90d insider buy/sell intensity per ticker to their positions/returns table on ticker + as_of; an IR team joins on ticker to their corporate calendar. Primary key: (as_of, ticker); join keys: ticker, company_name, as_of, country_code (ISO alpha-3, always USA — Canadian insider trades are reported on SEDI, which offers no keyless bulk access). Nullability: share_imbalance is null for tickers with no priced buy/sell transactions. Caveats: insider_score is a within-snapshot relative measure, not comparable across days; most executive sales are 10b5-1 planned (see pct_10b51); derivative-table transactions (options exercises etc.) are out of scope; filings occasionally miscode transaction codes. No filing text is stored. Sample use: filter insider_signal = 'accumulation' for tickers with clustered insider buying, or order by insider_rank for today's strongest insider-buying intensity.
- Rows
- 54
- Columns
- 24
- Source cadence
- Daily
- Last refreshed
- Sep 28, 2026
- Theme
- finance
| Column | Type | Description |
|---|---|---|
| as_of | string | Snapshot date (UTC, YYYY-MM-DD) — the last complete UTC day; the trailing-90-day window ends here. Part of the primary key. (unit: date) |
| ticker | string | Primary-listing stock symbol. Part of the primary key; the join key for positions/returns tables. (unit: symbol) |
| company_name | string | Canonical company name from the connector's curated dictionary (shared with the hn_company_sentiment series). (unit: text) |
| country_code | string | Issuer country, ISO alpha-3 — always USA for this dataset (Canadian insider trades live on SEDI). (unit: ISO alpha-3) |
| sector | string | Closed sector vocabulary from the connector (semiconductors, software, ai-lab, ...). (unit: category) |
| window_days | integer | Trailing window length in days (90), inclusive of as_of. (unit: days) |
| n_form4 | integer | Number of distinct Form 4 filings parsed for the ticker in the window (4/A amendments excluded). (unit: count) |
| n_insiders | integer | Number of distinct reporting-owner names across the ticker's filings. (unit: count) |
| n_buy_tx | integer | Open-market purchase transactions (SEC transaction code P) in the window. (unit: count) |
| n_sell_tx | integer | Open-market sale transactions (SEC transaction code S) in the window. (unit: count) |
| n_other_tx | integer | Non-derivative transactions with other codes (A, D, G, M, F, ...) in the window. (unit: count) |
| buy_shares | float | Total shares acquired in open-market purchases. (unit: shares) |
| sell_shares | float | Total shares disposed in open-market sales. (unit: shares) |
| buy_value_usd | float | USD value of open-market purchases (shares x reported price; priced transactions only). (unit: USD) |
| sell_value_usd | float | USD value of open-market sales (shares x reported price; priced transactions only). (unit: USD) |
| net_buy_value_usd | float | buy_value_usd minus sell_value_usd; positive means net insider buying. (unit: USD) |
| share_imbalance | float | (buy_value - sell_value) / (buy_value + sell_value), in [-1, 1] (+1 = all buying); null when the ticker has no priced buy/sell transactions. (unit: ratio) |
| n_insider_buyers | integer | Distinct reporting owners with >= 1 open-market purchase in the window. (unit: count) |
| n_insider_sellers | integer | Distinct reporting owners with >= 1 open-market sale in the window. (unit: count) |
| pct_10b51 | float | Share of the ticker's filings flagged aff10b5One (Rule 10b5-1 planned trading). High values mean sales are mostly pre-planned, not discretionary. (unit: share) |
| insider_score | float | 0-100 composite = 100 * (0.50 * min-max((imbalance+1)/2, null->0.5) + 0.25 * min-max(log1p(n_buy_tx)) + 0.25 * min-max(log1p(n_insider_buyers))), min-maxed within the snapshot. Within-snapshot relative — not comparable across days. (unit: score) |
| insider_rank | integer | Rank by insider_score desc (1 = strongest buying intensity); ties broken by n_form4 desc, then ticker asc. (unit: rank) |
| insider_signal | string | Categorical flag: 'quiet' (no P/S transactions), 'accumulation' (net buying, >= 3 distinct buyers), 'distribution' (net selling, >= 3 distinct sellers), 'buying' / 'selling' (net direction), else 'mixed'. (unit: category) |
| row_hash | string | Deterministic 16-hex-char content hash over (as_of, ticker, n_form4, n_buy_tx, n_sell_tx, net_buy_value_usd) — identical input yields an identical snapshot. (unit: hash) |
First 10 sample rows — a preview, not the complete dataset.
| as_of | ticker | company_name | country_code | sector | window_days | n_form4 | n_insiders | n_buy_tx | n_sell_tx | n_other_tx | buy_shares | sell_shares | buy_value_usd | sell_value_usd | net_buy_value_usd | share_imbalance | n_insider_buyers | n_insider_sellers | pct_10b51 | insider_score | insider_rank | insider_signal | row_hash |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-09-27 | INTC | Intel | USA | semiconductors | 90 | 2 | 2 | 1 | 0 | 2 | 105,263 | 0 | 9,999,985 | 0 | 9,999,985 | 1 | 1 | 0 | 0 | 73.27 | 1 | buying | 81328bb66c2b4625 |
| 2026-09-27 | UBER | Uber | USA | mobility | 90 | 22 | 8 | 4 | 3 | 150 | 1,011,000 | 101,397,781 | 35,314,015.88 | 655,847,109.37 | -620,533,093.49 | -0.898 | 3 | 2 | 0 | 52.55 | 2 | selling | c8b61bdbdc794b25 |
| 2026-09-27 | CRM | Salesforce | USA | software | 90 | 22 | 14 | 1 | 2 | 35 | 4,176 | 4,500 | 999,450.85 | 1,172,746.1 | -173,295.25 | -0.08 | 1 | 1 | 0 | 46.27 | 3 | selling | 341742435aa0823d |
| 2026-09-27 | GTLB | GitLab | USA | dev-tools | 90 | 9 | 7 | 1 | 1 | 7 | 4,188 | 8,725 | 122,959.68 | 331,550 | -208,590.32 | -0.459 | 1 | 1 | 0 | 36.79 | 4 | selling | 87456dab1d5595fc |
| 2026-09-27 | CFLT | Confluent | USA | data-infra | 90 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | 0 | 25 | 5 | quiet | 64d26166ba301ee4 |
| 2026-09-27 | GROQ | Groq | USA | semiconductors | 90 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | 0 | 25 | 6 | quiet | 34803d2b7f51b25d |
| 2026-09-27 | HCP | HashiCorp | USA | dev-tools | 90 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | 0 | 25 | 7 | quiet | 7c635b87431a7dd7 |
| 2026-09-27 | DELL | Dell | USA | hardware | 90 | 82 | 14 | 0 | 1,102 | 78 | 0 | 2,148,372 | 0 | 1,103,128,611.2 | -1,103,128,611.2 | -1 | 0 | 12 | 0 | 0 | 8 | distribution | 5da529ec2a95fd70 |
| 2026-09-27 | CRWV | CoreWeave | USA | cloud-infra | 90 | 71 | 12 | 0 | 710 | 92 | 0 | 11,290,142 | 0 | 1,075,615,324.15 | -1,075,615,324.15 | -1 | 0 | 9 | 0 | 0 | 9 | distribution | 3ba6a804c0100be5 |
| 2026-09-27 | CRWD | CrowdStrike | USA | cybersecurity | 90 | 54 | 11 | 0 | 695 | 8 | 0 | 1,519,353.52 | 0 | 358,115,540.73 | -358,115,540.73 | -1 | 0 | 9 | 0 | 0 | 10 | distribution | dff6e5bcec5f7f2c |
Profiled Sep 28, 2026 from snapshot 20260928T045044Z-2a2c93540965
Measured- Completeness
- 99.8%
- Rows
- 54
- Columns
- 24
- Columns with gaps
- 1
| Column | Missing | Distinct | Range | Distribution |
|---|---|---|---|---|
| as_ofvarchar | 0% | 1 | — |
|
| tickervarchar | 0% | 61 | — |
|
| company_namevarchar | 0% | 55 | — |
|
| country_codevarchar | 0% | 1 | — |
|
| sectorvarchar | 0% | 13 | — |
|
| window_daysbigint | 0% | 1 | 90 → 90median 90 | |
| n_form4bigint | 0% | 34 | 0 → 82median 15 | 1 outside 1st–99th percentile |
| n_insidersbigint | 0% | 20 | 0 → 17median 8 | 1 outside 1st–99th percentile |
| n_buy_txbigint | 0% | 3 | 0 → 4median 0 | 1 outside 1st–99th percentile |
| n_sell_txbigint | 0% | 35 | 0 → 1,102median 19.5 | 1 outside 1st–99th percentile |
| n_other_txbigint | 0% | 35 | 0 → 150median 17.5 | 1 outside 1st–99th percentile |
| buy_sharesdouble | 0% | 5 | 0 → 1,011,000median 0 | 1 outside 1st–99th percentile |
| sell_sharesdouble | 0% | 52 | 0 → 101,397,781median 134,213 | 1 outside 1st–99th percentile |
| buy_value_usddouble | 0% | 5 | 0 → 35,314,016median 0 | 1 outside 1st–99th percentile |
| sell_value_usddouble | 0% | 47 | 0 → 1,103,128,611median 13,830,436 | 1 outside 1st–99th percentile |
| net_buy_value_usddouble | 0% | 43 | -1,103,128,611 → 9,999,985median -13,830,436 | 2 outside 1st–99th percentile |
| share_imbalancedouble | 5.6% | 5 | -1 → 1median -1 | 1 outside 1st–99th percentile |
| n_insider_buyersbigint | 0% | 3 | 0 → 3median 0 | 1 outside 1st–99th percentile |
| n_insider_sellersbigint | 0% | 12 | 0 → 12median 4 | |
| pct_10b51double | 0% | 5 | 0 → 1median 0 | 1 outside 1st–99th percentile |
| insider_scoredouble | 0% | 6 | 0 → 73.27median 0 | 1 outside 1st–99th percentile |
| insider_rankbigint | 0% | 49 | 1 → 54median 27.5 | 2 outside 1st–99th percentile |
| insider_signalvarchar | 0% | 4 | — |
|
| row_hashvarchar | 0% | 47 | — |
|
- Current
20260928T045044Z-2a2c93540965 · sha256 2a2c93540965…
54 rows · first snapshot
Point any LLM at the metadata endpoint — the documentation above is machine-readable too (JSON-LD + Croissant).
curl "https://datazimuts.com/v1/datasets/sec_insider_intensity/insider_intensity_trailing90d" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/sec_insider_intensity/insider_intensity_trailing90d").json()
print(ds["title"], ds["rows"], "rows")
# Sample rows for an LLM context window
for row in ds.get("sample_rows", [])[:5]:
print(row)API endpoint: https://datazimuts.com/v1/datasets/sec_insider_intensity/insider_intensity_trailing90d
Tip: fetch /llms.txt for the full machine-readable catalog.
Where this data comes from and what was made from it. Other people's work shows as counts; only shared projects are named.
Cite this snapshot
Pinned to snapshot 20260928T045044Z-2a2c93540965 and its content hash, so readers get exactly the data you used.
SEC Form 4 insider intensity (agent-curated). (2026). SEC Form 4 insider intensity: trailing-90d buy/sell signals per US ticker [Data set, snapshot 20260928T045044Z-2a2c93540965, sha256 2a2c93540965]. Datazimuts. Retrieved 2026-09-28, from https://datazimuts.com/en/datasets/sec_insider_intensity/insider_intensity_trailing90d?snapshot=20260928T045044Z-2a2c93540965
@misc{dz_sec_insider_intensity_insider_intensity__2a2c9354,
title = {{SEC Form 4 insider intensity: trailing-90d buy/sell signals per US ticker}},
author = {{SEC Form 4 insider intensity (agent-curated)}},
year = {2026},
publisher = {Datazimuts},
howpublished = {\url{https://datazimuts.com/en/datasets/sec_insider_intensity/insider_intensity_trailing90d?snapshot=20260928T045044Z-2a2c93540965}},
note = {Snapshot 20260928T045044Z-2a2c93540965, sha256 2a2c935409651a774e9661975bdeaf365faa08fee5f00cde1c78d2cad4f7a637; accessed 2026-09-28}
}Embed a table or a chart
Paste this into any page. The embed is pinned to the same snapshot, follows the reader's light or dark setting, and always shows the source, license and a link back.
<iframe src="https://datazimuts.com/embed/chart?dataset=sec_insider_intensity%2Finsider_intensity_trailing90d&lang=en&theme=auto&snapshot=20260928T045044Z-2a2c93540965&x=as_of&y=window_days&agg=avg" title="SEC Form 4 insider intensity: trailing-90d buy/sell signals per US ticker" width="100%" height="380" style="border:0" loading="lazy"></iframe>
Ask about this dataset. Answers come only from its catalog record, measured profile and change history, and list the facts they used.