Form 4 transaction codes: complete reference
Every insider filing on Form 4 carries a one-letter transaction code that tells you what actually happened. Most screeners collapse these into buy/sell columns and destroy the signal. Here is the full reference, with real examples of when each code matters.
Want this data via API instead of reading about it? Get a free API key →
Why transaction codes matter
Almost every insider trading signal comes from correctly interpreting the transaction code. A CEO showing a Form 4 filing with 50,000 shares "disposed" looks alarming on paper. If the code is F (shares withheld for tax), it means the CEO exercised RSUs and had part withheld to cover the tax bill, which is not a bearish signal. If the code is S (open-market sale), that is genuinely bearish.
The SEC publishes 25+ distinct transaction codes. Most insider screeners collapse them into two columns (buy / sell) and destroy 90% of the signal. Here is the complete reference.
The codes that actually matter
P — Open-market or private purchase (most bullish signal)
The insider used their own cash to buy stock at market prices. This is the strongest bullish signal in the Form 4 universe. Cohen, Malloy, and Pomorski (2012) showed that P-code purchases by opportunistic insiders (defined by irregular trading patterns) predict 6-month abnormal returns of ~5%.
Filter with EdgarKit:
curl -H "x-api-key: $KEY" \
"https://api.edgarkit.com/v1/insiders/transactions?transaction_code=P&min_value=50000"
S — Open-market or private sale (context-dependent)
The insider sold stock at market prices. Sales are noisier than purchases because insiders sell for many non-informational reasons (diversification, real estate, taxes, divorce). The signal strengthens if:
- Multiple insiders sell in the same window
- The sale is a large fraction of the insider's holdings
- The sale is not scheduled via a 10b5-1 plan
A — Grant, award, or other acquisition
Stock granted to the insider as part of compensation. Not a market signal. Filter these out unless you want a picture of grant timing.
D — Disposition to the issuer (buyback participation)
Insider returned shares to the company, often as part of a stock buyback or a share settlement of RSUs. Rarely informational.
F — Payment of exercise price or tax by delivering or withholding stock
Extremely common and almost never a bearish signal. When RSUs vest, the company withholds a chunk to cover the tax bill and reports that as an F-code disposition. If you see a big red bar on Yahoo Finance for an insider "selling" 5,000 shares and the code is F, that is just tax withholding.
G — Bona fide gift
The insider gave shares to a charity, family member, or trust. Not a market signal.
I — Discretionary transaction
Broad category for transactions executed by a third party under a written plan.
J — Other acquisition or disposition
Miscellaneous. Often used when no other code fits. Check the footnotes.
K — Equity swap or similar hedging transaction
Insiders hedging their exposure to their own stock. This *is* informational, at scale. Multiple insiders hedging at the same company can signal concern.
M — Exercise or conversion of derivative security acquired from issuer
The insider exercised options or converted a derivative into common stock. Common at option vesting cliffs. The exercise itself is not a signal. What matters is what they do with the shares next (hold or sell).
V — Transaction voluntarily reported earlier than required
Signals urgency or transparency. Rare.
X — Exercise of in-the-money or at-the-money derivative security
Explicitly exercising options. Often paired with an S-code sale of the resulting shares (a "cashless exercise").
The codes that rarely matter
- C — Conversion of derivative security (routine mechanic)
- E — Expiration of short derivative position (mechanic)
- H — Expiration or cancellation of long derivative position (mechanic)
- O — Exercise of out-of-the-money derivative (rare)
- U — Disposition pursuant to a tender offer (M&A context)
- W — Acquisition or disposition by will or laws of descent (estate)
- Z — Deposit into or withdrawal from voting trust (rare)
The gold standard filter for signal
If you want the highest-signal subset of Form 4 activity, filter to:
transaction_code=Pfor buystransaction_code=S,Kfor sells and hedges (weighted, sells dominant)min_value=50000to strip out immaterial small trades- Exclude 10b5-1 filed plans if that field is available
EdgarKit exposes all of the above as query parameters. See the Track Insider Buying guide for a working code example.
Common misinterpretations
"CEO sold $10M of stock": Check the code. If it is F, that is tax withholding on an option exercise, not a bearish signal.
"Insider bought $5M of stock": Check the code. If it is A, that is a compensation grant, not a market signal. If it is M followed by no S-code sale, the insider exercised options and held, which *is* mildly bullish.
"Cluster of sales": Check if the sales are 10b5-1 pre-committed. Every large company has multiple 10b5-1 plans firing on a schedule. This is not a cluster of independent decisions, it is a scheduled distribution.
Try it
Signup for a free EdgarKit key at edgarkit.com/#signup. 10,000 requests per month gets you enough to build a working screener with proper code filtering.