Skip to main content
Python function: getInsiderTradesData()
SpecificationValue
Delivery Frequencycontinuous, daily
Data Frequencyevent-driven
Reporting Lag87% within 5 min of SEC acceptance; full coverage within 24h
Coverage5,300+ U.S. equities, 97,000+ insiders, SEC Forms 3/4/5
HistorySince 2009-01-02
AvailabilityFree

Product Overview

Overview

Corporate Insider Transactions provides structured, near real-time data on insider buying and selling activity derived from SEC Forms 3, 4, and 5 (including amendments 3/A, 4/A, 5/A). The dataset captures non-derivative transactions — direct open-market purchases and dispositions — filed by corporate officers, directors, and beneficial owners (10%+ holders) of U.S. public companies. The dataset contains 3.5M+ transactions spanning 5,300+ tickers and 97,000+ unique insiders, with history back to January 2009.

Data Pipeline & Latency

Scalar Field ingests insider filings through two complementary paths:
  • Real-time stream: A persistent connection to SEC EDGAR receives filing notifications within seconds of acceptance. Structured transaction data is fetched by accession number and written to the database. If the data is not yet available, the system retries automatically until it arrives.
  • Daily reconciliation: A batch job runs each morning, performing an incremental pull by ticker to catch any filings missed by the real-time stream or delayed in SEC indexing.

Ingestion Latency (last 7 days)

The gap between when the SEC accepts a filing (filed_at) and when it appears in Scalar Field (ts_recv):
Lag% of filings
< 1 minute73%
1–5 minutes14%
5–60 minutes9%
1–24 hours4%
> 24 hours0%
87% of filings are ingested within 5 minutes of SEC acceptance. The remaining ~13% are typically filings where the SEC API indexes the structured data with a short delay; these are caught by automatic retries or, in rare cases, the daily batch reconciliation.

Timestamp Semantics: ts_recv vs filed_at vs transactionDate

This distinction is critical for backtesting and signal construction:
TimestampMeaningUse Case
ts_recvWhen Scalar Field’s pipeline first ingested the record (UTC → New York time). This is the point-in-time timestamp — the earliest moment this data was available in the system.Point-in-time backtesting. Use this as your event timestamp to avoid look-ahead bias.
filed_atWhen the SEC filing was officially accepted by EDGAR (UTC → New York time).Regulatory timing analysis. Measures the insider’s filing delay relative to the transaction.
transactionDateThe actual date the insider executed the trade.Event studies. The true economic event date — but note this is only known after the filing lands.

Insider Filing Delay (transaction date → SEC filing, last 7 days)

How long after the actual trade do insiders file with the SEC:
Delay% of filings
Same day4%
1 day19%
2 days44%
3–5 days29%
> 5 days5%
Insiders are required to file Form 4 within 2 business days of the transaction. In practice, ~67% comply within 2 days, while ~33% file later. This means that even with a perfect real-time feed, there is an inherent information delay between when an insider trades and when the market can observe it.

Coverage

  • Universe: 5,300+ U.S.-listed equities with SEC insider filings (NYSE, NASDAQ, AMEX, OTC issuers).
  • Insiders: 97,000+ unique filing insiders.
  • Filing types: Forms 3 (initial statement of beneficial ownership), 4 (changes in ownership), and 5 (annual summary), plus their amendments (3/A, 4/A, 5/A).
  • Transaction filter: Only non-derivative transactions with acquired/disposed codes — Buy (A) and Sell (D). Derivative transactions (option exercises, conversions) are excluded.
  • History: January 2009 to present, with continuous daily updates.
  • Volume: ~1,500 transactions/day on average; ~270K/year in recent years.

Annual Volume

YearTransactions
2009134,566
2010156,020
2011152,509
2012165,646
2013170,764
2014171,229
2015171,205
2016171,877
2017181,639
2018197,736
2019205,018
2020234,433
2021294,368
2022241,628
2023245,931
2024274,757
2025271,592

Buy/Sell Split

Across the full dataset: 49% Buy / 51% Sell, roughly balanced.

Querying the Data

Basic Usage

from scalarlib import getInsiderTradesData

# All AAPL insider trades in 2024
df = getInsiderTradesData('AAPL', '2024-01-01', '2024-12-31')

# Multiple tickers
df = getInsiderTradesData(['AAPL', 'MSFT', 'NVDA'], '2024-01-01', '2024-12-31')

# All tickers (universe-wide scan)
df = getInsiderTradesData(None, '2024-06-01', '2024-06-30')

Filtering by Insider

# Filter by insider name (fuzzy, order-independent, case-insensitive)
df = getInsiderTradesData('AAPL', '2020-01-01', '2024-12-31', insider_name='Tim Cook')

# Filter by role (supports abbreviations: CEO, CFO, COO, CTO, director, VP, etc.)
df = getInsiderTradesData(None, '2024-01-01', '2024-12-31', insider_role='CEO')

Parameters

ParameterTypeRequiredDescription
tickersstr, list, or NoneNoStock symbol(s). None returns all tickers.
startstrYesStart date (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS).
endstrYesEnd date (same format; date-only is inclusive).
insider_namestrNoFilter by insider name. Fuzzy, order-independent, case-insensitive. "Tim Cook" matches "Cook Timothy D".
insider_rolestrNoFilter by insider role/position. Supports known abbreviations (see below).

Column Definitions

Insider Trades Schema

ColumnTypeDescription
ts_recvdatetimePoint-in-time timestamp: when Scalar Field ingested the record (New York time). Use this for backtesting to avoid look-ahead bias.
filed_atdatetimeSEC filing acceptance timestamp (New York time). When the Form 3/4/5 was officially filed with EDGAR.
symbolstringTicker symbol of the issuer (e.g., AAPL, MSFT).
transactionAmountfloatNumber of shares transacted.
transactionPricefloatPrice per share at which the transaction was executed (USD).
transactionTypestringSEC transaction code (S = open-market sale, P = open-market purchase, A = grant/award, M = exercise/conversion, F = tax withholding, etc.).
sidestringDirection: Buy (acquired) or Sell (disposed).
transactionDatedateCalendar date the insider executed the trade.
namestringFull name of the insider as reported in the SEC filing.
typeOfOwnerstringRelationship to issuer (e.g., “Chief Executive Officer”, “Director”, “10% Owner”).
postTransactionAmountfloatShares held by the insider after the transaction.
securityTitlestringDescription of the security (e.g., “Common Stock”).
issuerNamestringLegal name of the issuing company.
accessionNostringSEC EDGAR accession number — unique filing identifier. Construct the EDGAR URL as https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&accession={accessionNo}.

Transaction Type Codes

CodeMeaningCount
SOpen-market or private sale1,070K
AGrant, award, or other acquisition724K
FPayment of exercise price or tax liability (withholding)547K
MExercise or conversion of derivative security546K
POpen-market or private purchase296K
JOther acquisition or disposition114K
GGift105K
DDisposition to the issuer55K
CConversion of derivative security49K

Filtering Reference

Insider Role Filter

The insider_role parameter supports these abbreviations and their expansions:
AbbreviationMatches
CEOChief Executive Officer
CFOChief Financial Officer
COOChief Operating Officer
CTOChief Technology Officer
CIOChief Information Officer
PresidentPresident
DirectorDirector
VP / SVP / EVPVice President / Senior VP / Executive VP
ChairmanChairman, Chair
General CounselGeneral Counsel, GC
ControllerController
TreasurerTreasurer
SecretarySecretary, Corp Sec
10% Owner10% Owner, Beneficial Owner
Unrecognized role strings are matched as literal substrings against the typeOfOwner field.

Insider Name Filter

The insider_name parameter performs fuzzy, order-independent, case-insensitive matching. Special characters (apostrophes, hyphens, periods, commas) are stripped before comparison. For example, "Tim Cook" matches "Cook Timothy D", and "O'Brien" matches "Obrien".