Splits, Dividends and Adjusted Data
A price series is supposed to be a record of what happened. For any instrument that has ever split its shares or paid a dividend, the series in your database is not that record — it is a reconstruction, and somebody made choices while building it. This lesson is about which choices, what each one preserves, what each one destroys, and how to tell which version you are holding.
Two corporate actions, one problem
Section titled “Two corporate actions, one problem”Stock splits
Section titled “Stock splits”A split multiplies the number of shares outstanding and divides the price by the same factor. A holder of 100 shares at 120 becomes a holder of 200 shares at 60. Nothing of economic substance has changed: the position is worth 12,000 before and after.
The price series, however, now contains a 50 per cent overnight fall that never happened. Every percentage-change calculation across that boundary is wrong. Every volatility measure that spans it is wrong. A breakout rule sees a catastrophic gap; a mean-reversion rule sees the opportunity of a lifetime.
AmiBroker describes splits in the notation x->y, meaning that x shares before the
split become y after it. An ordinary split into five pieces is 1->5; a reverse split
that consolidates two shares into one is 2->1.
Cash dividends
Section titled “Cash dividends”A cash dividend transfers value out of the company to shareholders. On the ex-dividend date the share trades without the right to the upcoming payment, and the price adjusts downward by roughly the dividend amount — a two-unit dividend on a hundred-unit share produces, other things equal, a fall of about two units that is not a loss to anyone who held the share.
The gap is smaller than a split’s, which is exactly why it is more dangerous: it is not obviously an artefact. It looks like an ordinary down day, and it recurs every quarter.
Back-adjustment: what it actually computes
Section titled “Back-adjustment: what it actually computes”The standard fix is to rewrite history. Choose a reference point — normally the present — and multiply all earlier prices by whatever factor makes the series continuous across each action.
AmiBroker’s ASCII importer implements exactly this, and reading how it does it is the
clearest available description of the mechanism. When a data file supplies both CLOSE and
ADJCLOSE, the importer:
- computes a factor as
ADJCLOSE / CLOSEfor each bar; - multiplies
OPEN,HIGH,LOWandCLOSEby that factor; - divides
VOLUMEby the same factor.
For a 2-for-1 split, the factor on pre-split bars is 0.5: prices are halved and volume is doubled, restating the earlier history in post-split shares.
One 2-for-1 split, three versions of the same history (synthetic)
| Bar | D−2 | D−1 | Split day | D+1 | D+2 |
|---|---|---|---|---|---|
Unadjusted Close | 118.00 | 120.00 | 61.00 | 62.40 | 61.80 |
Unadjusted Volume | 400,000 | 450,000 | 900,000 | 850,000 | 700,000 |
Adjustment factor | 0.5 | 0.5 | 1.0 | 1.0 | 1.0 |
Adjusted Close | 59.00 | 60.00 | 61.00 | 62.40 | 61.80 |
Adjusted Volume | 800,000 | 900,000 | 900,000 | 850,000 | 700,000 |
Daily % change, unadjusted | — | +1.7 | −49.2 | +2.3 | −1.0 |
Daily % change, adjusted | — | +1.7 | +1.7 | +2.3 | −1.0 |
What adjustment preserves, and what it destroys
Section titled “What adjustment preserves, and what it destroys”Multiplying a contiguous block of history by a constant has a precise effect, and it is worth stating exactly, because most confusion about adjusted data comes from being vague about it.
Preserved: every percentage change within the adjusted block. If Tuesday was 1.7 per cent above Monday before adjustment, it is 1.7 per cent above Monday afterwards. Ratios, returns, and any indicator built purely on ratios are unaffected.
Changed: the single percentage change across the boundary — which is the whole point.
Destroyed: the price levels themselves. After adjustment, the number in the Close
field for a bar five years ago is not a price anyone ever paid or saw quoted. It is a
counterfactual: what that day would have been worth in today’s share terms.
Price return versus total return
Section titled “Price return versus total return”Dividend adjustment does something conceptually larger than split adjustment. A split adjustment restates a unit; a dividend adjustment changes what is being measured.
- A price-return series answers: what did one share cost over time?
- A total-return series answers: what would a holder who reinvested every dividend have ended up with?
Neither is more correct. They answer different questions, and the difference compounds. As pure arithmetic, an instrument paying a steady 3 per cent a year for thirty years would show a total-return series ending about 1.03³⁰ ≈ 2.4 times higher than its price-return series, from dividends alone. The gap is not a rounding detail; for income-oriented instruments it can be most of the story.
What adjustment does to volume and gaps
Section titled “What adjustment does to volume and gaps”Two secondary effects catch people out.
Volume is rescaled too. AmiBroker’s importer divides volume by the adjustment factor, so pre-split volume is restated in post-split shares. That is the arithmetically consistent choice — it keeps price × volume roughly constant — but it means historical volume figures in an adjusted database are not the share counts that were reported at the time. A rule that says “at least one million shares traded” is being applied to a restated number.
Gaps change in absolute terms but not in percentage terms. A two-unit overnight gap in unadjusted data becomes a one-unit gap after a 2-for-1 adjustment. If your gap rule is expressed in currency units, adjustment silently changes its meaning across the whole history. If it is expressed as a percentage, or in multiples of ATR, it does not. That is a strong argument for writing rules in relative terms wherever the choice exists.
Precision: the quiet failure mode
Section titled “Precision: the quiet failure mode”Back-adjustment repeatedly multiplies old prices by factors below one. Over a long history with several splits, the adjusted prices of the earliest bars become very small numbers, and small numbers stored with limited precision lose relative accuracy.
AmiBroker’s documentation is unusually candid about the practical version of this problem.
Historical Yahoo data supplies only two decimal digits in the adjusted-close field, so the
computed factor gets progressively less accurate as the adjusted close approaches zero.
The importer’s $RECALCSPLITS option exists specifically to mitigate it: instead of
trusting the ratio directly, it watches for the ratio changing by more than ten per cent
between consecutive bars, treats that as a split, guesses the true ratio by matching a
simple fraction X/Y with X and Y from 1 to 9, and applies that clean ratio backwards
until the next split is detected. A companion option, $ROUNDADJ, rounds the resulting
adjusted prices to a stated number of decimal places.
What AmiBroker gives you to work with
Section titled “What AmiBroker gives you to work with”Adjusting inside the database
Section titled “Adjusting inside the database”Symbol → Split applies a split to the currently selected symbol. AmiBroker attempts to
guess the date and ratio from the quotations; if it cannot, it asks. Ratios are entered in
the x->y form described earlier.
Choosing what gets imported
Section titled “Choosing what gets imported”If your data arrives as text, the format definition decides which version you get. The importer format that AmiQuote uses for historical downloads ships with a field list along these lines:
$FORMAT Date_DMY,Open,High,Low,Close,Skip,Volume$SEPARATOR ,$AUTOADD 1The Skip field in that sixth position is the adjusted close, and skipping it means the
adjusted close is read and thrown away. The consequence is worth stating explicitly, because
it surprises almost everyone: the default import gives you split-adjusted prices, not
dividend-adjusted prices. To obtain a total-return series you replace Skip with
AdjClose, at which point the importer computes the factor described earlier and applies it
to all four prices and to volume.
$FORMAT Date_DMY,Open,High,Low,Close,AdjClose,VolumeTwo cautions attach to editing that file. First, an upgrade of the downloader may rewrite it, so verify it after every upgrade rather than assuming your edit survived. Second, vendors change their column order: AmiBroker published a corrected format file after one such change swapped the close and adjusted-close columns, and a format definition that no longer matches the file produces prices that are wrong without being obviously wrong.
Keeping both versions at once
Section titled “Keeping both versions at once”There is a neat trick for the common situation where you want adjusted prices for returns
and unadjusted prices for levels. The importer command $RAWCLOSE2OI 1 writes the raw
close, multiplied by 100, into the open-interest field. For equity data that field is
otherwise unused, so you get the unadjusted close carried alongside the adjusted series and
readable from AFL.
Fragment — not a complete formula
// With $RAWCLOSE2OI used at import time, OpenInt carries raw close x 100.RawClose = OpenInt / 100;AdjustedToRawRatio = Close / RawClose;The cost is that you have spent the open-interest field, so do not do this on futures or options data, where it holds something real.
Finding splits that were never applied
Section titled “Finding splits that were never applied”Tools → Database Purify includes a Report possible splits check. It scans for gaps between the previous close and the current open that exceed a percentage threshold you set, estimates a plausible split factor for each, and lists the dates as candidate unadjusted splits. It is a detector, not a repairer — it tells you where to look, and you decide.
That distinction matters. A large overnight gap can be a split, a merger, a reverse split, a currency redenomination, a data error, or genuine news. Only the first two are fixed by applying a ratio.
Which series for which question
Section titled “Which series for which question”| Question you are asking | Series to use | Why |
|---|---|---|
| What return would a holder have earned? | Total return (dividend-adjusted) | Dividends are part of the return; ignoring them understates it |
| Did a price break a specific level? | Unadjusted, or split-adjusted only | The level must be a price that actually existed |
| Is this instrument above its 200-day average? | Either, consistently | The comparison is relative, so adjustment cancels |
| Was daily volatility elevated? | Split-adjusted at least | Unadjusted split gaps contaminate volatility badly |
| Did the stock trade at least a million shares? | Unadjusted volume | Adjusted volume is restated, not reported |
| Comparing a strategy with buy-and-hold | Same convention on both sides | Otherwise the comparison measures the convention |
Splits and dividends both put discontinuities into a price series, and back-adjustment
removes them by rewriting earlier prices. Adjustment preserves every percentage change
except the one it is fixing, and destroys the price levels. Dividend adjustment goes
further and converts a price series into a total-return series, answering a different
question. Volume is rescaled with prices; absolute gap sizes change while percentage gaps
do not; and precision degrades in the deep history of heavily split instruments. AmiBroker
exposes all of these decisions — in the importer’s ADJCLOSE handling, in $RECALCSPLITS
and $ROUNDADJ, in $RAWCLOSE2OI, and in the Database Purify split detector — which means
they are yours to make rather than yours to discover afterwards.
The next lesson turns from deliberate rewriting to accidental damage: the defects that get into a series without anyone intending them.
Check your understanding
Sources for this lesson
5 verified · checked 2026-08-31
- 01AmiBroker User's Guide — Symbol menu§ Splitamibroker.com/guide/m_symbol.html2026-08-31
- 02AmiBroker User's Guide — ASCII importer§ ADJCLOSE, $RECALCSPLITS, $ROUNDADJ, $RAWCLOSE2OIamibroker.com/guide/d_ascii.html2026-08-31
- 03AmiBroker User's Guide — Database Purify window§ Report possible splitsamibroker.com/guide/w_purify.html2026-08-31
- 04AmiBroker Knowledge Base — AmiQuote and free data from Yahooamibroker.com/kb/2007/08/04/amiquote-and-free-data-from-yahoo2026-08-31
- 05AmiBroker Knowledge Base — Wrong close price in Yahoo dataamibroker.com/kb/2017/06/30/wrong-close-price-in-yahoo-data2026-08-31
Every technical claim on this page was checked against the official AmiBroker documentation on the date shown. Where the course disagrees with folklore, the source is how you can tell which one to trust.