Insider Transaction Feed¶
General Information¶
This document provides instructions for usage of the VerityData Insider Transaction database. This database consists of an initial historical file which contains all Purchases, Sells, and Exercise and Sells since December 2003 to the current date. This is updated on a daily basis via two files – one containing new inserts to the database and another containing updates to transactions which were previously disclosed. Information and instruction follow:
We have a number of more detailed columns related to 10b5-1 activity. Many investors ignore the importance of 10b5-1 selling. The vast majority of 10b5-1 plans relate to selling, for more on 10b5-1 selling - see our 10b5-1 Selling Truths document.
Point-in-time Data Availability¶
VerityData can offer point-in-time Insider Transaction samples dating back to 2009. These can be ingested via individual daily feed files or a single compressed file containing all rows from the daily feeds.
Point-in-time Format¶
The point-in-time files are not broken into separate "insert" and "edit" files like our standard daily feeds. Instead, both inserts and edits are combined into a single "delta" file.
For historic samples and testing, a single file is provided which contains all delta files from the sample timeframe. An additional "as of" column shows when each row would have been available in the data feed.
Additional Point-in-time notes¶
- Files are dated back to 2004 but point-in-time edit accuracy is only reflected in files from 1/1/2009 onwards for transaction-specific fields, and 5/1/2010 for company-related fields (ticker, company name, etc). Row inserts prior to 2009 will reflect transaction-specific values as they existed on 1/1/2009, and company-related values as they existed on 5/1/2010.
- Rows prior to 1/1/2009 where the lastupdate date equals the file_date were not re-edited, therefore their transaction-specific fields can be considered point-in-time accurate.
- Updates to company-related fields (ticker, cusip, companyname, etc.) do not trigger row updates in the feed, only updates to transaction-specific fields will 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 txnid. (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 Insider Transaction feed fields are available with point-in-time accuracy. Please see table below for more information.
Data Dictionary¶
Header | Description | Point-in-time |
---|---|---|
ticker | Ticker of the company. Tickers in [square brackets] indicate de-listed or inactive companies. PIT feed only - Tickers will not show [] if they are de-listed or inactive. Instead, the class_status field will show the state of the company. PIT accuracy starts on 5/1/2010. |
Y* |
cusip | CUSIP identifier of the company. PIT feed only - PIT accuracy starts on 5/1/2010. |
Y* |
class_status | Denotes the status of the company at the time of the lastupdate. Useful to exclude posthumous edits to inactive companies from your modeling / testing. PIT feed only - PIT accuracy starts on 5/1/2010. |
Y* |
company_name | Name of the company. PIT feed only - PIT accuracy starts on 5/1/2010. |
Y* |
sector | Sector of the company | N |
mcap | Market Cap of the company as of the filing date. | N |
insider_name | Name of the insider. | Y |
rptcik | Unique CIK assigned to each insider by the SEC. This is not necessarily the CIK disclosed in the filing. We maintain an internal database of CIKs and will map sceondary CIKs to a primary CIK. | Y |
position_type | Position of the insider held at the company, at the time of the transaction. Can be the following values “CEO” “CFO” “Office” Director” “10% Owner” or “Other.” | Y |
position_title | Position title of the insider in the Form 4 filing. If the insider is CEO or CFO, this will show “CEO” or “CFO,” respectively. | Y |
age | Age of the insider at the time of the transaction. | Y |
gender | Gender of the insider. | Y |
insider_iq | A proprietary metric computed based on a combination of the insider's average 3-, 6-, and 12-month performance statistics. The value ranges from +4 (most positive) to -4. A value of +4 means that the insider has solid positive returns for buying and solid negative returns for selling. This metric is metric is computed individually for purchases, sells, and exercise and sells and requires at least 3 transactions of the respective type. | N |
disclosure_date | The date that the filing was filed at the SEC. Insiders are required to file by 5:30 p.m. of the second business day following the transaction. If your model calls for a daily or weekly rebalance, when opening a position you should use a price (anywhere from open to close) from the trading day AFTER the File_date that is in the historical file. Since filings can be filed after the market close, this is a conservative approach that will ensure integrity in your backtest. | Y |
filed_time | The exact date and time in YYYY-MM-DD hh:mm:ss that filing was filed at the SEC. This date and time listed is generated by the SEC. | Y |
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. | Y |
txn_date | The date of the transaction. If an insider has multiple transactions which have been grouped together in a single transaction, we will show the latest date as the transaction date. | Y |
code | We distinguish between three types of open-market, discretiontary transactions: P - open market purchase; S - open market sell; M - option exercise and sell Our team of analysts review transactions to ensure they contain the correct code. We also have software to flag potential issues - for example validate a buy or a sell based on the share changes. We also scan and read derivative (options, warrants, restricted and convertible securities, etc.) information provided in Table II of the Form 4 filings to validate, and if necessary, change the codes. One example is when an insider exercises and then sells a portion of an option position. This would be reflected as two transactions: 1)the exercise and sell for the portion that s/he sold (code M) and 2) an exercise of the remaining amount of shares. We do not include Exercise transactions in our base file. |
Y |
shares | Amount of shares transacted. | Y |
value | Dollar value of the transaction. | Y |
avg_pps | The average price per share of the transaction. | Y |
low_pps | The lowest price per share listed if multiple prices were listed in the transaction. If transactions spanned multiple days, we use the lowest transaction price from the first day. This is to help provide insight into potential 10b5-1 trigger prices. | Y |
high_pps | The highest price per share listed if multiple prices were listed in the transaction. If transactions spanned multiple days, we use the highest transaction price from the first day. | Y |
shares_owned | The number or shares owned by the insider after the transaction. IMPORTANT - this value is often inaccurate and companies disclose this value inconsistently. | Y |
pct_chg | The percentage change in shares owned. A value of 0 means it is a New position. IMPORTANT - this value is often inaccurate as it is reliant on the shares owned provided in the filing. Companies disclose the shares owned value inconsistently. | Y |
score | Verity's proprietary transaction score ranging from +4 (most positive) to -4. 10b5-1 transactions are NOT scored. This algoritm looks at position, size among other factors. | Y |
has_10b5 | Bool denoting whether transaction was made pursuant to Rule 10b5-1. This information is disclosed voluntarily via footnotes. | Y |
associated_plan | As part of our process, we manually review footnotes to create a dataabse of all disclosed 10b5-1 plans. To create a 10b5-1 plan, an adoption date must be disclosed. If a transaction was part of a 10b5-1 plan, this field will display our internal “Plan ID.” All transactions associated with the same 10b5-1 plan will display the same Plan ID in this field. | Y |
plan_adoption_date | The adoption date of the associated 10b5-1 plan. | Y |
days_since_plan_adoption | The count of days since the 10b5-1 plan was adopted. | Y |
price_chg_plan_adoption | The percent change in a company’s stock comparing the closing price of the day that the 10b5-1 plan was adopted versus the Avg. Price for the transaction. | Y |
trigger_name | The type of trigger for the 10b5-1 sale. Can be the following values: - “3-Mon+ Trigger”: sale that occurs at the highest stock price for the company over at least the prior three months; - “New Plan Trigger”: 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; - “Txn Trigger”: sale that occurs at the highest price since the prior 10b5-1 sale where the sales are not associated with specific 10b5-1 plans; - “Plan Trigger.” sale that occurs at the highest price since the prior 10b5-1 sale where both transactions are associated with the same 10b5-1 plan. |
Y |
trigger_price | The trigger price of the transaction. | Y |
days_since_trigger | This will return the amount of days since the last prior intraday high quote was at or higher than the current Trigger Price column. | Y |
value_realized | The dollar value realized by the exercise and sell of an option. | Y |
strike_price | The strike price of the options. If there are multiple tranches, this value returns the weighted average strike price. This field will be NULL in cases where we did not detect a strike price in the filing, or it was stated as $0. | Y |
gain | The percent change of the option strike price and the average PPS for the transaction. This field will be NULL in cases where the strike price is NULL. | Y |
expiration_date | The expiration date of the options. If there are multiple tranches, this value returns the weighted average of the expiration dates. | Y |
days_to_expire | The amount of days between the exercise and expiration date of options. If there are multiple tranches, this returns the weighted average amount of days. | Y |
expiring_type | This will yield “<365” if the options were less than 1 year from expiring or “<120” if the options were less than 120 from expiring, else NULL. | Y |
departing | Returns 1 if the insider was announced to be departing the company prior to the transaction. Else, NULL. PIT Feed only - True/False bool. |
Y |
short_swing | Returns 1 if the transaction was a “short swing” transaction Else, NULL. We have flags to find potential short swing violations and we manually add this tag to the appropriate transactions. PIT Feed only - True/False bool. |
Y |
divorce | Returns 1 if the transaction was disclosed as part of a divorce in the footnotes. Else, NULL. We manually add this tag to the appropriate transactions. PIT Feed only - True/False bool. |
Y |
margin | Returns 1 if the transaction was disclosed to be part of a margin call in the footnotes. Else, NULL. We manually add this tag to the appropriate transactions. PIT Feed only - True/False bool. |
Y |
txnid | Verity's unique numerical id given to each transaction, this should be considered your Primary Key. When a client requests to receive our transaction level file on a regular basis, we will also create “edit files” at the same frequency to update or revise previously sent information using these ids. | Y |
form4a_update | Returns a Y, if the transaction had been edited or created due to a Form 4/A. A Form 4/A is filed by a company to fix an error or omission in a previously filed Form 4. Form 4/A updates may also appear in the isdaily_insiders_YYYYMMDD.txt or isdaily_insiders_edits_YYYYMMDD.txt file. In either case, the transaction had a subsequent Form 4/A filed which updated information disclosed in the original Form 4. | Y |
last_update | Applicable to ongoing feed - The date and time of the last update made to the transaction. | Y |
split_edit | Returns "Y" if the edit was due to a plit; returns "N" if the edit was not related to a split. PIT feed only - True/False bool. |
Y |
edit_action | Returns "U if the edit is an update to a previously disclosed transaction, returns "D" if a previously disclosed transaction should now be Ignored, returns "I" if the transaction should be considered a new insert. | Y |
asof | Only available in point-in-time feed files -- date the row would have been / was available via daily feed. | Y |