SEC Form 4 insider intensity (agent-curated)
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.
- sec
- insider
- signals
- equities