10b5 Plan Disclosures Feed¶
General Information¶
10b5-1 Plans are pre-arranged trading plans that allow insiders to execute open market purchases, sales and exercise-and-sales regardless of whether a trading window is open. The VerityData 10b5-1 Plan Disclosure database contains over 20 years of 10b5-1 plan information with daily point-in-time files available starting in 2013.
The SEC made significant changes to Rule 10b5-1 in 2023. These rule changes have had a meaningful impact on the level of disclosure around 10b5-1 plans and transactions giving investors important new insights into insider behavior and management’s valuation views.
Additional Point-in-time notes¶
- Updates to company-related fields (ticker, cusip, company_name, etc.) do not trigger updates in the feed, only updates to plan specific fields trigger an update.
- Company-related fields are as of the asof field, not the original insert, meaning values such as ticker, cusip, etc. may change when comparing an initial insert to a later update for the same plan_id. (e.g. a transaction with ticker "FOO" at insert will show as "BAR" on subsequent updates if the company's ticker changed between the two asof dates. The original insert will always show "FOO", however.)
- Not all fields are available with point-in-time accuracy. Please see the Data Dictionary for more information.
Track Plan Activity via the Insider Transaction Feed¶
Our Insider Transaction feed has a number of detailed columns related to 10b5-1 transaction activity. Join the plan_id field to the associated_plan field in the Insider Transaction feed to create additional analytics. Some example joins fields are suggested at the end of this page, below the Data Dictionary.
Data Dictionary¶
| Heading | JSON Subfield | Description |
|---|---|---|
| ticker | Ticker of the company. Tickers in [square brackets] indicate de-listed or inactive companies. | |
| cusip | CUSIP identifier of the company. | |
| class_status | Denotes the status of the company at the time of last_update. Useful to exclude posthumous edits to inactive companies from your modeling / testing. | |
| company_name | Name of the company. | |
| sector | Sector of the company | |
| mcap | [Not Point In Time Data] Market Cap of the company as of the filing date. | |
| insider_name | Name of the insider. | |
| rptcik | SEC assigned unique identifier of the Insider. | |
| age | Age of the insider. | |
| gender | Gender of the insider. | |
| disclosure_date | The date that the filing was filed at the SEC. | |
| filed_time | The exact date and time in YYYY-MM-DD hh:mm:ss the filing was filed at the SEC. | |
| received_time | The exact time in YYYY-MM-DD hh:mm:ss.ssssss that we received the filing, usually within seconds after the File_time above. The date and time listed is generated by our internal servers. This field is NULL for all transactions prior to 2008. NOTE: This field may read earlier than the File_Time field as our server time and the SEC's server time are not synced. | |
| form_type | Form-type of the source filing. | |
| plan_id | Verity's unique numerical id given to each 10b5-1 plan, this should be considered your Primary Key. This plan_id maps to the associated_plan field in the Insider Transaction feed. | |
| status | Open, Closed | |
| plan_type | “Buy”, “Sell”, "ExSell", "Both", "Gift", "Tax", "Other", “Unknown” | |
| adoption_date | The date the plan was adopted | |
| is_initiation | Boolean TRUE if this is a plan initiation disclosure. | |
| start_date | Plan start date | |
| end_date | Plan end date | |
| max_shares | Maximum shares to be transacted under the plan | |
| min_shares | Minimum shares to be transacted under the plan | |
| max_value | Maximum value for transactions under the plan | |
| min_price_threshold | Boolean TRUE if the plan has minimum price threshholds. This field is only populated since April 2024. It will always be FALSE prior to that. | |
| min_price | Boolean TRUE if the plan has minimum price threshholds. This field is only populated since April 2024. | |
| max_price | Maximum price for transactions under the plan | |
| price_thresholds | [JSON Data] Nested fields for price thresholds associated with the plan. A plan may have multiple price thresholds. | |
| threshold_id | Unique ID provided by VerityData for the price threshold | |
| low | Minimum price for the threshold | |
| high | Maximum price for the threshold | |
| start_date | Threshold start date | |
| end_date | Threshold end date | |
| last_update_threshold | The date of the last update for this threshold. | |
| notes | Notes disclosed about the plan | |
| current_amendment_id | Unique ID provided by VerityData for the most recent Amendment | |
| current_amendment_disclosure_date | The date that the most recent amendment filing was filed at the SEC. | |
| current_amendment_start_date | Plan start_date as amended | |
| current_amendment_end_date | Plan end_date as amended | |
| current_amendment_shares | Plan max_shares as amended | |
| current_amendment_notes | Plan notes as amended | |
| amendments | [JSON Data] Nested fields for amendments associated with the plan. A plan may have multiple amendments. | |
| amendment_id | Unique ID provided by VerityData for the Amendment | |
| amendment_disclosure_date | The date that the amendment filing was filed at the SEC. | |
| amendment_start_date | Plan start_date as amended | |
| amendment_end_date | Plan end_date as amended | |
| amendment_shares | Plan max_shares as amended | |
| amendment_notes | Plan notes as amended | |
| last_update_amendment | The date of the last update for this amendment. | |
| terminated_type | Completed, Expired, Terminated, Closed (Est). Closed (Est) is used for plans with adoption dates prior to January 1, 2023 that have no transactions over the last 400 days AND plans with adoption dates post January 1, 2023 that were disclosed on Form 4 prior to the current open plan. | |
| terminated_date | The date the plan was terminated. NULL for Closed (Est) plans. | |
| terminated_notes | Notes disclosed about the termination. NULL for Closed (Est) plans. | |
| last_update | The date of the last update for this entry. | |
| edit_action | "U" for update, "D" for delete and "I" for new insert. | |
| split_edit | Returns TRUE if the edit was due to a split. | |
| asof | The date the record appeared in the feed |
Insider Transaction Feed Join Examples¶
| Heading | Description | Logic |
|---|---|---|
| shares_transacted | Actual shares transacted under the plan. | Join 10b5_plans.plan_id to insider_txns.associated_plan and sum insider_txns.shares |
| shares_remaining | Maximum shares to be transacted minus actual shares transacted under the plan. | 10b5_plans.max_shares - shares_transacted |
| average_price | Average price of shares transacted under the plan | Join 10b5_plans.plan_id to insider_txns.associated_plan and calculate the wtd avg: (insider_txns.shares * insider_txns.avg_pps)/sum insider_txns.shares |
| trigger_price | A trigger price is defined as follows: 1) For a New 10b5-1 Plan Initiation where the first sale is the highest price for the stock since the adoption date or the highest price since the adoption date +30 days. Only plans that have explicit adoption dates are eligible to have this type of trigger price. 2) when a sale that occurs at the highest stock price for the company over at least the prior three months; 3) when a sale that occurs at the highest price since the prior 10b5-1 sale where the sales are not associated with specific 10b5-1 plans; 4) sale that occurs at the highest price since the prior 10b5-1 sale where both transactions are associated with the same 10b5-1 plan. | Join 10b5_plans.plan_id to insider_txns.associated_plan and take the min, max or average insider_txns.trigger_price |
| first_trade | Date of first trade under the plan. | Join 10b5_plan.plan_id to insider_txns.associated_plan and take min insider_txns.txn_date |
| days_to_trade | Days between the first trade and the plan adoption date | 10b5_plans.adoption_date - first_trade |