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=P for buys
  • transaction_code=S,K for sells and hedges (weighted, sells dominant)
  • min_value=50000 to 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.