Researching insider stock sales - Part 1

When researching a company and its management you often want to see how insiders are compensated in company stock, and how they are trading that stock. For this research we can view a company's SEC filings using edgartools - a python library built for query and viewing Edgar filings. Note, I am the main author of edgartools, and if you think it useful, give it a star on GitHub.

Insider Security Transactions

There are two main filing types that cover insider stock transactions. Forms 3,4, and 5 cover insider security transaction in general while Form 144 are filed for sales of restricted securities.

Restricted Security Sales

Restricted stock are securities that are typically issued to insiders, such as executives, directors, and major shareholders, as part of their compensation package or as an investment in the company. Since these securities are acquired in private, unregistered transactions, the SEC places restrictions on the sale, ensuring that when they are sold, it is done in a controlled manner, without creating market volatility, or harming the company's stock price.

The restrictions are outlined in Rule 144, so in order to sell restricted stock, a company has to file a Form 144 filing on behalf of the person selling.


Here are a few examples of when SEC Form 144 might be used:

  • A company executive who has acquired shares of their company's stock through an employee stock purchase plan wants to sell some of those shares to pay for a down payment on a new home. They would need to file SEC Form 144 to sell those shares.
  • A venture capital firm that invested in a startup during its early stages wants to sell some of its shares now that the company has gone public. The venture capital firm would need to file SEC Form 144 to sell those shares.
  • An executive of a publicly traded company receives shares of stock as part of their compensation package. If they want to sell those shares, they would need to file SEC Form 144.

As an example, on March 31st, 2023 Apple gave their Chief Financial Officer Luca Maestri $11, 588, 538 worth of restricted stock units as part of his compensation. The company then filed a Form 144 with the SEC to allow him to sell that stock on April 13th.

Using edgartools to research filings

edgartools makes it really easy to access filings from the Edgar system. It is written in Python and so you will need to install using pip

pip install -U edgartools

Since you are researching a company like Apple, you will need to find a way to get the company's filings using edgartools. This is easy because with edgartools you can get a company by ticker Company("AAPL") or CIK Company(). First import edgartools and set your SEC identity to use the Edgar API.

from edgar import *

# Set your identity so that Edgar knows who you are
set_identity("First Last")

Then, you can get the company and list the company's filings.

# Get the company Apple
aapl = Company("AAPL")

# Get the form 144 filings
filings = aapl.get_filings(form=144)

Apple has only 2 Form 144 filings, both recent. This is not necessarily that surprising - while Amazon has 5 restricted stock filings, Microsoft and Tesla each have none.

After getting the list of filings you can view and investigate individual ones. With edgartools a list of filings is contained in a Filings object and an individual filing is in a Filing object. You can access individual filings using the [] notation.

filing_0 = filings[0]
filing_1 = filings[1]

Working with a Form 144 filing

What distinguishes edgartools from other Edgar clients is the wide variety of ways of working with a filing. You can:

  1. Open a filing in your browser with
  2. View the filing as markdown with filing.view()
  3. Convert the filing to a data object with filing.obj()

With Option #3 edgartools will retrieve any document that contains data for the filing - typically XML or JSON and convert it into a Python object containing the data accompanying that filing. This feature has been implemented for many different form types e.g. 10-K's,  10-Q's and Form D and conveniently means that you don't really have to parse filings into structured data.

With Form 144, filing.obj() returns a Form144 class.

The Form 144 Data Object

If you open the form 144 filing in the browser you will see a form with several sections.

The Form144 data object generally contains the data from the form - as parsed from the filing xml.

The two important data items - securities information and securities to be sold are contained as pandas DataFrames within the Form144.

Securities Information

The securities information section contain information about the specific sale - how many units will be sold, and on what date and the market value. The Shares outstanding relates to how many shares of the Issuer remains and is only important since one of the restrictions is that the sale cannot be more than 1% of the issuer's shares outstanding.

Securities To Be Sold

This contains information about how the securities were acquired. It is usually one row - typically insiders sell the same securities they have acquired, but sometimes the sale can be of securities acquired on different dates.


This article shows how to view Form 144 filings insider sales of restricted stock by insiders using edgartools. In the follow-up, we will look at how to use research other insider transactions detailed on Forms 3, 4 and 5.

Dwight Gunning

Dwight Gunning