Direct Answer
A corporate action adjustment checker computes the backward price-adjustment factor for a stock split or cash dividend and verifies that the adjusted price series stays continuous across the ex-date. Enter the split ratio or dividend amount with surrounding price data, and the tool flags any discrepancy between the expected and actual post-adjustment close. Unadjusted or mis-adjusted historical data is a common source of phantom backtest returns.
Event Details
E.g., 4-for-1 split: N=4, D=1. 3-for-2 split: N=3, D=2.
Closing price the day before the ex-date.
First open price on or after the ex-date. Used to verify continuity.
Closing price on the ex-date. Used to compute unadjusted return check.
Cash dividend per share paid to shareholders on the record date.
Closing price the day before the ex-date.
First open price on the ex-date. Should be approximately prior close minus dividend.
Enter multiple split events (most recent first) to compute the cumulative backward adjustment factor, the single multiplier applied to all prices before the earliest event in the chain.
Most recent unadjusted close. Used to show what the fully-adjusted pre-split price would have been.
Adjustment Formulas
Stock Split, Backward Adjustment Factor
For a forward split (N-for-D), each old share becomes N/D new shares. The post-split price is expected to be D/N × pre-split price. The backward adjustment factor applied to all historical prices before the ex-date:
adjusted_price = unadjusted_price × factor
Example: 4-for-1 split, factor = 1/4 = 0.25. A pre-split close of $499.23 adjusts to $124.81. If the post-split open is $125.02, the continuity gap is $0.21 (0.17%), likely due to after-hours trading, not a data error.
Cash Dividend, Backward Adjustment Factor
For a dividend of $D per share with prior close $C, the ex-date open is expected to drop by approximately $D. The backward adjustment factor:
adjusted_price = unadjusted_price × factor
Example: $0.82 dividend with prior close $42.50. Factor = (42.50 − 0.82) / 42.50 = 41.68 / 42.50 = 0.9807. All historical prices before the ex-date are multiplied by 0.9807.
Cumulative Multi-Event Adjustment
When multiple corporate actions have occurred in a security's history, the cumulative factor is the product of all individual factors, applied from most recent to oldest:
adjusted_price = unadjusted_price × cumulative_factor
Example: AAPL had 5 splits since 1987 (2-for-1 in 1987, 2-for-1 in 2000, 2-for-1 in 2005, 7-for-1 in 2014, 4-for-1 in 2020). Cumulative factor: (1/2) × (1/2) × (1/2) × (1/7) × (1/4) = 1/224. A 1987 unadjusted price of $0.50 would adjust to $0.50 × (1/224) ≈ $0.0022 in a fully backward-adjusted series.
Related Guides
FAQ
Why does price adjustment run backward through history?
Adjusting backward keeps the most recent price equal to what actually traded, which is what anyone looking at a chart or a current quote expects. Every earlier price is scaled so the series is continuous across the event. Adjusting forward instead would leave history intact and make today price disagree with the market, which is worse for almost every use. The consequence of the backward convention is that the entire stored history changes whenever a new event occurs.
How is a split adjustment factor applied to volume as well as price?
For a split expressed as new shares over old shares, historical prices are divided by that ratio and historical volumes are multiplied by it, so the traded value in each bar stays constant. Omitting the volume side is a common error and produces an apparent collapse in historical turnover at the split date, which distorts any liquidity filter, any volume-weighted calculation, and any signal comparing current volume against a historical average.
How does a cash dividend factor differ from a split factor?
A split factor is exactly known from the ratio and applies cleanly to prices and volumes. A dividend factor depends on the price level, conventionally computed as one minus the dividend divided by the closing price before the ex-date, so the same cash amount produces a different factor at a different price. Dividend adjustment also does not affect volume. Because the factor depends on a price, small differences in which close a vendor uses produce slightly different adjusted histories.
What does the multi-event chain mode compute?
When several events affect the same instrument, the adjustment applied to a date before all of them is the product of each individual factor rather than any single one. The chain mode multiplies the factors in sequence so the cumulative effect on an early price can be checked in one step. This matters because errors compound: a factor omitted or applied twice somewhere in the middle of a long history shifts every price before it, and the discrepancy is easiest to detect at the oldest date.
Why does the checker ask for a price on or after the ex-date?
The factor alone can be computed from the event terms, but confirming it was applied correctly requires comparing the adjusted series across the boundary. Supplying a post-event price allows the tool to test whether the adjusted close before the event and the actual price after it form a continuous series, which is the property the adjustment is supposed to produce. A factor that is arithmetically right and a series that still jumps means the factor was applied to the wrong dates.
Does the checker handle reverse splits?
Yes, through the same ratio inputs. A reverse split simply has fewer new shares than old, for example one new share for ten old ones, which produces a factor greater than one and multiplies historical prices rather than dividing them. The arithmetic is identical and the direction follows from the ratio. The practical warning with reverse splits is that they often accompany other changes such as a ticker change, so the price history and the symbol mapping usually need attention together.
Which corporate actions does this checker not cover?
It covers splits and cash dividends and chains of those. Spin-offs, mergers with a mixed cash and stock consideration, rights issues, stock dividends paid in a different security, return of capital distributions, and special situations such as bankruptcy reorganizations each need their own treatment and are not modeled here. Those events also frequently require an official ratio or a market value that is not derivable from the price series alone.
Should adjusted or unadjusted prices be stored as the primary series?
Storing raw prices with a separate table of events and factors is generally more robust, because the adjusted series can then be regenerated whenever a new event occurs or a past factor is corrected. Storing only the adjusted series means the original is unrecoverable and any correction requires refetching. It also loses the actual traded price, which is what an execution record, a limit price, and a tax lot all refer to.
How should a small discrepancy in the checker output be interpreted?
A residual of a fraction of a cent is usually rounding, since vendors differ on how many decimal places they retain and when they round. A discrepancy of the order of a whole tick or larger normally indicates a real problem: the factor applied to the wrong date, a dividend adjustment computed from a different reference close, or an event missing from the chain. Comparing the size of the residual against the instrument tick size is a quick way to separate the two.