US Equity Basic Adjustment Factors Guide
US Equity Basic Adjustment Factors Guide
version 1.1 (Jan 2022)
We are here to help you do great things with our market and reference data. For questions, feedback, and other concerns, you may reach our team of experts using the following contact information:
algoseek customer support
support@algoseek.com
(+1) 646 583 1832
algoseek sales
sales@algoseek.com
(+1) 646 583 1832
DATA ORGANIZATION AND FILE FORMAT 4
HOW TO APPLY ADJUSTMENT FACTORS 6
APPENDIX A. FREQUENTLY ASKED QUESTIONS 8
The Adjustment Factors dataset provides information about corporate events affecting price and/or volume for historical backtesting. algoseek provides two versions of US Equity Adjustment Factors datasets: a basic version and a detailed version that contains several extra fields. In this document, they are collectively referred to as Adjustment Factors datasets.
algoseek uses a unique identifier called Security ID (SecId) to identify each equity, including stocks, ETFs, ETNs, ADRs, preferred stocks, and stock warrants, among others. The SecId remains unchanged when a security’s ticker name changes.
For each SecId, this dataset provides a list of events with adjustment factors and event details for the creation of forward or backward adjusted pricing for any date from 2007 to the present.
To find the SecId for a combination of exchange ticker and trade date, use the algoseek Lookup File. Please contact your account manager if you do not have the access to Lookup File.
There are two data aggregation options for this dataset:
tradedate: one CSV file with data per symbol per effective date
SecId: one CSV file with data for all effective dates per Security ID - a unique security identifier used by algoseek that remains unchanged when the ticker changes
Both aggregation options provide exactly the same data fields.
algoseek provides Equity adjustment data in plain-text CSV files. The first row of CSV file is a fixed header, and then rows of data corresponding to individual bars (see Table 1).
Data files are organized with one file per effective date or by SecId. For example, all corporate events that occurred on Mar 3, 2020 are stored in a separate CSV file under a tradedate aggregation.
In SecId-based aggregation, all adjustment data for the security with an ID 33449 (AAPL) for a single year is stored in a single CSV file.
Table 1: Sample Basic Adjustment Data
SecId | Ticker | EffectiveDate | AdjustmentFactor | AdjustmentReason | EventId |
33449 | AAPL | 20131106 | 0.994195440470912 | CashDiv | 745852 |
33449 | AAPL | 20140206 | 0.994049825396516 | CashDiv | 765842 |
33449 | AAPL | 20140508 | 0.9944456637 | CashDiv | 795226 |
33449 | AAPL | 20140609 | 0.1428571429 | BonusSame | 3018370 |
Table 2 below summarizes the name, brief description, and data type for each data field (column) in an Equity Adjustment Factor CSV file.
Table 2: Adjustment Factor Fields and Descriptions
Field | Type (Format) | Description |
SecId | integer | Unique security identifier |
Ticker | string | Ticker on the Effective Date |
EffectiveDate | string (YYYYMMDD) | Date that the event becomes effective |
AdjustmentFactor | decimal | The value of the Adjustment factor for the event |
AdjustmentReason | string | The reason for the Corporate Event. See subsection “Adjustment Reason” below for a list of types. |
EventId | integer | Unique Event ID under the AdjustmentReason, i.e., each pair of AdjustmentReason and EventId is unique. |
Each adjustment event relates to an Event Type, and each Event Type may include different Adjustment Reasons. The table below describes the different adjustment types and reasons and if it affects Price and/or Volume.
Table 3: Adjustment Reason Table
Event Type | Adjustment Reason | Description | Affects Price | Affects Volume |
BON | BonusSame | Bonus issue in the same class | Yes | Yes |
BonusDiff | Bonus issue in a different class | Yes | No | |
CAPRD | CapReduct | Capital Reduction | Yes | Yes |
CONSD | Cons | Consolidation | Yes | Yes |
DIST | Distrib | Distribution | Yes | No |
DIV | CashDiv | Cash Dividend | Yes | No |
ScriptDiv | Script dividend in the same class | Yes | Yes | |
ScriptDivDiff | Script dividend in a different class | Yes | No | |
DMRGR | DeMerg | De-merger | Yes | No |
ENT | EntSame | Entitlement in the same class | Yes | No |
EntDiff | Entitlement in a different class | Yes | No | |
RCAP | CapRet | Capital Return | Yes | No |
RTS | RightsSame | Rights in the same class | Yes | No |
RightsDiff | Rights in a different class | Yes | No | |
SCSWP | SecSwap | Security Swap | Yes | Yes |
SECRC | Reclass | Reclassification | Yes | Yes |
SD | Subdiv | Any subdivision (by any stock split, stock dividend, reclassification, recapitalization or otherwise) or combination (by the reverse stock split, reclassification, recapitalization or otherwise) of the Class A Common Stock. | Yes | Yes |
Note: All following adjustment reasons should be considered as splits (or reverse splits): BonusSame, ScriptDiv, Subdiv, and Cons.
When backtesting the historical “as-is” prices and volumes, they need to be adjusted to account for price events like a dividend and volume changes like a split. Use Table 3 Adjustment Reasons to determine if Price and/or Volume (a.k.a. Size) fields need to be adjusted.
Table 4: Some Corporate Events of Apple Inc. in 2014
SecId | Ticker | Effective Date | Adjustment Factor | Adjustment Reason |
33449 | AAPL | 20140508 | 0.994445664 | CashDiv |
33449 | AAPL | 20140609 | 0.142857143 | BonusSame |
33449 | AAPL | 20140807 | 0.995050548 | CashDiv |
Creation of a backward (starting from the latest date) time series of Apple Inc. for 2014:
In this scenario, we start with the most recent data. The most recent corporate event happened on Aug 7, 2014 (see Table 4 for a sample of corporate events for Apple Inc. in 2014). All prices after this date (including itself) should be multiplied by the factor
Before Aug 7, 2014, starting from Aug 6, 2014, up to (and including) Jun 9, 2014, the price should be multiplied by a cumulative factor
where f1 - adjustment factor on Aug 7, 2014. From Jun 6, 2014, up to May 8, 2014, the price should be adjusted by the factor
where f2 - adjustment factor on Jun 9, 2014. And finally, all prices before May 8, 2014, should be adjusted by the cumulative factor
where f3 - adjustment factor on May 8, 2014. This method is very convenient to use when you already have adjusted data and then need to accommodate new corporate events (dividend, split, etc.). You simply need to multiply all prices before that date by a corresponding factor.
If you want to adjust the volume as well, you should divide it by the corresponding factor. We have one event that affects volume on Jun 9, 2014. All volumes after this date (including itself) should be divided by the factor
And all volumes before Jun 9, 2014, should be adjusted by the cumulative factor
where f1 - adjustment factor on Jun 9, 2014.
When you work with a Detailed dataset, it is very clear because you have access to the columns with additional information. Using the Detail column, you can see that these dividends differentiate by dividend period (for example, interim and final dividends). If you use the Basic dataset, you do not have access to this information, and it looks like they are the same. You should keep in mind that they differentiate by payment time types.
There are a couple of securities that were publicly traded, then went OTC and again back to public trading. In the period when they were OTC, securities can’t be linked with appropriate tickers because algoseek doesn’t work with OTC securities. And providing OTC symbols will cause inconsistency with the current database of symbols.