Skip to main content
By Fruit Stand Team · October 20, 2026 · Guides Every end-of-day price feed gives you two closing prices for the same day: close and adjusted_close. They look interchangeable until a stock splits or pays a dividend, and then a chart, a return figure or a backtest built on the wrong one is quietly off. This post covers what each column means, how the adjustment is calculated, and which one to reach for, with SQL you can run against the Historical Stock Prices dataset in Snowflake.

The short answer

If the question involves change over time, use adjusted_close. If it involves the price on a specific day, use close.

What close means

close is the official last price for the trading day (for a mutual fund, the day’s net asset value). It’s a historical fact and it never changes after the day ends. That’s also the problem: when a company does a 4-for-1 split, its close drops by about 75% overnight even though no shareholder lost anything. A return computed straight from close across that date reports a crash that didn’t happen.

What adjusted close means

adjusted_close rewrites history so that every past price is comparable to today’s. Two kinds of events trigger an adjustment: Splits. For an N-for-1 split, every price before the split date is divided by N. A $400 close before a 4-for-1 split becomes $100, in line with how the stock trades afterward. Dividends and distributions. On the ex-dividend date the price falls by roughly the payout, because the cash has left the company. To keep that from showing up as a loss, every earlier price is multiplied by a factor:
So a $1 dividend on a $100 stock multiplies every earlier adjusted price by 0.99. Stack those factors over decades of dividends and splits and the adjusted price of an old trade can be a small fraction of what it traded at, which is expected. Because these factors apply backward, adjusted close history changes every time a split or dividend posts. A value you pulled last month for a date in 2015 may be different today. Any pipeline that stores adjusted prices has to restate history when corporate actions land, not just append new days. Ours refetches a security’s full history whenever a new split or dividend appears, and restates every security twice a week.

Total return from adjusted close

Since dividends are folded into adjusted_close, the ratio of two adjusted prices is the total return, with dividends treated as reinvested:
In SQL, for a 10-year window:
To annualize a multi-year return (CAGR), raise the ratio to the power of 365.25 / days_between:

Price return vs. total return

You can split the two effects by comparing close and adjusted_close over a window with no splits:
  • Price return (end_close / start_close - 1) ignores dividends.
  • Total return (from adjusted_close) includes them.
The gap between the two is roughly the dividend yield over the window, small for growth stocks, large for income funds. For mutual funds that pay sizable year-end capital gains distributions, the NAV can drop sharply in December with no loss to holders, so price returns on fund NAVs can be badly misleading. Always use the adjusted series for funds.

Daily returns and a common mistake

For daily returns, use lag over adjusted prices:
The mistake to avoid: mixing columns, for example a close from one source with an adjusted_close from another, or caching adjusted prices and appending new days without restating old ones. Either one produces jumps on split and ex-dividend dates.

F.A.Q.

The ratio of two adjusted closes is the total return between those dates, assuming dividends are reinvested on the ex-date. A single adjusted close on its own is just a restated price.
A new split or dividend posted after you pulled it. Adjustment is applied backward across the whole history, so every earlier adjusted price moves when a corporate action lands. Raw close never changes.
In the Historical Stock Prices dataset, adjusted_open, adjusted_high and adjusted_low apply the same day’s factor (adjusted_close / close) to the raw prices, so you get a full adjusted OHLC bar alongside the as-traded open, high, low and close. volume is adjusted for splits only. Vendors differ here (some only split-adjust OHLC, some adjust volume, some don’t), so check the docs before mixing sources.
Yes. Mutual funds pass income and capital gains through as distributions, which drop the NAV on the ex-date. Without adjustment, those drops look like losses.
If you want daily open, high, low, close and adjusted close for every US stock, ETF and mutual fund in Snowflake, see the Historical Stock Prices dataset. Questions? Reach out at contact@fruitstand.dev.