---
title: "Corporate Action Adjustment Checker"
description: "Corporate action price adjustment: enter a split ratio or cash dividend to compute the backward adjustment factor and check price continuity across the ex-date."
canonical: https://www.getswoopr.com/trading-technology/market-data-engineering/corporate-action-adjustment-checker/
source: "Swoopr Investment: https://www.getswoopr.com"
---

## 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.






      

# Corporate Action Adjustment Checker



Enter a stock split ratio or cash dividend amount with surrounding price data. This tool computes the backward adjustment factor, shows you the adjusted price series across the ex-date, and verifies that the adjustment produces a continuous series, flagging any discrepancy between the expected and actual post-adjustment close.




![Close-up of a businessman reading a newspaper indoors, focusing on business headlines.](https://www.getswoopr.com/images/hero/trading-technology-market-data-engineering-corporate-action-adjustment-checker.webp)
*Photo by [nappy](https://www.pexels.com/@nappy/) via [Pexels](https://www.pexels.com/photo/person-holding-white-and-blue-business-paper-936137/)*






      






## Event Details






Stock Split


Cash Dividend


Multi-Event Chain




        







Split Ratio, New Shares (N)




E.g., 4-for-1 split: N=4, D=1. 3-for-2 split: N=3, D=2.







Split Ratio, Old Shares (D)








Pre-Split Close Price ($)




Closing price the day before the ex-date.







Post-Split Open Price ($)




First open price on or after the ex-date. Used to verify continuity.







Post-Split Close Price ($)




Closing price on the ex-date. Used to compute unadjusted return check.







Ex-Date Label (optional)










Calculate Split Adjustment


Reset






        







Dividend Amount per Share ($)




Cash dividend per share paid to shareholders on the record date.







Prior Close Price ($)




Closing price the day before the ex-date.







Ex-Date Open Price ($)




First open price on the ex-date. Should be approximately prior close minus dividend.







Ex-Date Close Price ($)








Ex-Date Label (optional)










Calculate Dividend Adjustment


Reset






        



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.







Split N (new shares)



Split D (old shares)







Split N (new shares)



Split D (old shares)







Split N (new shares)



Split D (old shares)









Current Unadjusted Price ($)




Most recent unadjusted close. Used to show what the fully-adjusted pre-split price would have been.







Calculate Cumulative Factor


Add Split Event


Reset














## 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:



factor = D / N
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:



factor = (C − D) / C
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:



cumulative_factor = factor_1 × factor_2 × … × factor_N
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



- [Corporate Actions and Historical Price Adjustments](https://www.getswoopr.com/trading-technology/market-data-engineering/corporate-actions-and-historical-price-adjustments/)
- [Point-in-Time Storage and Historical Replay](https://www.getswoopr.com/trading-technology/market-data-engineering/point-in-time-storage-and-historical-replay/)
- [Market Data QA and Data Lineage](https://www.getswoopr.com/trading-technology/market-data-engineering/market-data-qa-and-data-lineage/)
- [Market Data Engineering hub](https://www.getswoopr.com/trading-technology/market-data-engineering/)








## 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.












## References



- [SEC: Market Data Infrastructure (Release No. 34-90610)](https://www.sec.gov/rules-regulations/2020/12/market-data-infrastructure)
- [SEC: Division of Trading and Markets](https://www.sec.gov/about/divisions-offices/division-trading-markets)











## Related Reading

- [Market Data Engineering & Feed Quality](https://www.getswoopr.com/trading-technology/market-data-engineering/) the section this guide belongs to
- [Corporate Actions and Historical Price Adjustments](https://www.getswoopr.com/trading-technology/market-data-engineering/corporate-actions-and-historical-price-adjustments/) a companion guide in this cluster
- [Exchange vs. Consolidated Market Data](https://www.getswoopr.com/trading-technology/market-data-engineering/exchange-vs-consolidated-market-data/) a companion guide in this cluster
- [Feed Quality Validator](https://www.getswoopr.com/trading-technology/market-data-engineering/feed-quality-validator/) a companion guide in this cluster
- [Late, Corrected, and Out-of-Order Market Data](https://www.getswoopr.com/trading-technology/market-data-engineering/late-corrected-and-out-of-order-market-data/) a companion guide in this cluster
- [Market Data QA and Data Lineage](https://www.getswoopr.com/trading-technology/market-data-engineering/market-data-qa-and-data-lineage/) a companion guide in this cluster
- [Market Data Timestamps and Clock Synchronization](https://www.getswoopr.com/trading-technology/market-data-engineering/market-data-timestamps-and-clock-synchronization/) a companion guide in this cluster
- [Missing Data, Gaps, and Bad Tick Detection](https://www.getswoopr.com/trading-technology/market-data-engineering/missing-data-gaps-and-bad-tick-detection/) a companion guide in this cluster
- [Point-in-Time Storage and Historical Replay](https://www.getswoopr.com/trading-technology/market-data-engineering/point-in-time-storage-and-historical-replay/) a companion guide in this cluster
- [Real-Time vs. Cleaned Historical Data Differences](https://www.getswoopr.com/trading-technology/market-data-engineering/real-time-vs-cleaned-historical-data-differences/) a companion guide in this cluster
