End-of-day data for stocks has, among others, two values that you shouldn’t confuse with each other: close and adjusted close. The close is the actual price a stock traded at when the market closed. The adjusted close is that price corrected for splits and dividends that happened later, so that prices from different dates can be compared directly.
Use close when you need the price someone actually paid on a given day. Use adjusted close when you calculate returns, compare prices over time, or backtest a strategy.
This guide explains both adjustments with real Apple data from the EODHD API. On August 31, 2020, Apple’s close dropped from 499.23 to 129.04 because of a 4-for-1 split, while its adjusted close, as of November 4, 2026, moved smoothly from 120.9557 to 125.0575. The Python script at the end rebuilds Apple’s adjusted close from raw closes, splits and dividends, and matches the API’s value on every trading day from January 2020 to November 2026.
Quick jump:
Close vs adjusted close at a glance
| Close | Adjusted close | |
|---|---|---|
| What it is | The last traded price of the day | The close corrected for later splits and dividends |
| Changes after the fact | No | Yes, every time a new split or dividend happens |
| Use it for | The price on a specific date, order levels, valuation on that date | Returns, charts over long periods, backtests |
| On the most recent day | Equal to adjusted close | Equal to close |
EODHD recalculates the adjusted close backwards: when a new split or dividend happens, all the adjusted prices before it change, while the prices after it stay the same.
All adjusted values in this guide are as of November 4, 2026. Apple goes ex-dividend again on November 12, 2026, so every adjusted close before that date will become slightly lower after it, while the close values stay the same.
How to get your EODHD API key
1. Use the “demo” API key to test our data from a limited set of tickers without registering:
AAPL.US | TSLA.US | VTI.US | AMZN.US | BTC-USD | EUR-USD
Real-Time Data and all of the APIs (except Bulk) are included without API calls limitations with these tickers and the demo key.
2. Register to get your free API key (limited to 20 API calls per day) with access to:
End-Of-Day Historical Data with only the past year for any ticker, and the List of tickers per Exchange.
3. To unlock your API key, we recommend to choose the subscription plan which covers your needs.
All the examples in this guide use Apple and run with the demo key. The end-of-day endpoint returns both values in each row: close and adjusted_close.
Split adjustments explained
A stock split increases the number of shares and lowers the price of each one in the same proportion, so the company’s market value doesn’t change. In a 4-for-1 split, every share becomes four, and each new share is worth a quarter of the old one. A reverse split does the opposite, for example two shares merging into one worth twice as much.
Without an adjustment, a split looks like a crash in the price chart. These are Apple’s prices around its 4-for-1 split on August 31, 2020, from the EODHD end-of-day API, as of November 4, 2026:
import requests
url = "https://eodhd.com/api/eod/AAPL.US"
params = {"api_token": "demo", "fmt": "json", "from": "2020-08-26", "to": "2020-09-01"}
for row in requests.get(url, params=params, timeout=60).json():
print(row["date"], row["close"], row["adjusted_close"])
2020-08-26 506.09 122.6177
2020-08-27 500.04 121.1519
2020-08-28 499.23 120.9557
2020-08-31 129.04 125.0575
2020-09-01 134.18 130.0389
The close falls by about three quarters overnight, while the adjusted close shows the real move: a rise from 120.9557 to 125.0575. A return calculated on the raw close would show a 74% loss that never happened.
The splits endpoint lists every split with its ratio. For Apple, it returned four since 2000: 2-for-1 in June 2000, 2-for-1 in February 2005, 7-for-1 in June 2014 and 4-for-1 in August 2020.
Dividend adjustments explained
When a stock goes ex-dividend, its price usually drops by about the amount of the dividend, because new buyers no longer receive that payment. The adjustment removes that drop from the history, so the chart reflects the total return of holding the stock.
For each ex-dividend date, the adjustment factor for all earlier prices is:
factor = (close on the day before the ex-date – dividend) / close on the day before the ex-date
Apple paid a dividend of $0.27 with an ex-date of August 10, 2026. Its close on August 7 was 313.33, so the factor is (313.33 – 0.27) / 313.33 = 0.999138. These are the prices around that date, as of November 4, 2026:
date close adjusted_close ratio
2026-08-05 311.00 310.7320 0.999138
2026-08-06 312.41 312.1408 0.999138
2026-08-07 313.33 313.0600 0.999138
2026-08-10 308.26 308.2600 1.000000
2026-08-11 304.91 304.9100 1.000000
Before the ex-date, every adjusted close equals the close times 0.999138. From the ex-date on, close and adjusted close are equal, because no later dividend had gone ex as of November 4, 2026. When the next dividend goes ex, its factor will multiply all these earlier values too.
Rebuilding the adjusted close in Python
EODHD adjusts prices for both splits and dividends with the Chicago Booth adjustment method, and keeps four decimal places. To show how it works, this script rebuilds the adjusted close from the raw closes, the splits endpoint and the dividends endpoint, then compares it with the API’s adjusted_close:
import os
import sys
import pandas as pd
import requests
API_KEY = os.environ.get("EODHD_API_KEY", "demo")
BASE = "https://eodhd.com/api"
def get(path, **params):
resp = requests.get(f"{BASE}/{path}", params={"api_token": API_KEY, "fmt": "json", **params}, timeout=60)
resp.raise_for_status()
return resp.json()
ticker, start, end = sys.argv[1:4]
prices = pd.DataFrame(get(f"eod/{ticker}", **{"from": start, "to": end})).set_index("date")
splits = get(f"splits/{ticker}", **{"from": start, "to": end})
dividends = get(f"div/{ticker}", **{"from": start, "to": end})
# One adjustment factor per event, applied to every close before the event date
events = []
for s in splits:
new, old = (float(x) for x in s["split"].split("/"))
events.append((s["date"], old / new))
for d in dividends:
prev_close = prices.loc[prices.index < d["date"], "close"].iloc[-1]
events.append((d["date"], (prev_close - d["unadjustedValue"]) / prev_close))
factor = pd.Series(1.0, index=prices.index)
for date, f in events:
factor[factor.index < date] *= f
prices["rebuilt"] = (prices["close"] * factor).round(4)
prices["diff"] = (prices["rebuilt"] - prices["adjusted_close"]).round(4)
print(f"{len(prices)} trading days, {len(splits)} split(s), {len(dividends)} dividends")
print(f"Largest absolute difference: {prices['diff'].abs().max():.4f}")
print(prices.loc["2020-08-26":"2020-09-01", ["close", "adjusted_close", "rebuilt"]].to_string())
print(prices.loc[[prices.index[0], prices.index[-1]], ["close", "adjusted_close", "rebuilt"]].to_string())
Run with python rebuild_adjusted_close.py AAPL.US 2020-01-01 2026-11-04 and the demo key, with data as of November 4, 2026:
1720 trading days, 1 split(s), 27 dividends
Largest absolute difference: 0.0000
close adjusted_close rebuilt
date
2020-08-26 506.09 122.6177 122.6177
2020-08-27 500.04 121.1519 121.1519
2020-08-28 499.23 120.9557 120.9557
2020-08-31 129.04 125.0575 125.0575
2020-09-01 134.18 130.0389 130.0389
close adjusted_close rebuilt
date
2020-01-02 300.35 72.2715 72.2715
2026-11-04 349.51 349.5100 349.5100
Over 1,720 trading days, one split and 27 dividends, the rebuilt value matched the API’s adjusted close on every day. The first row shows how large the combined effect can be: Apple’s raw close on January 2, 2020 was 300.35, and its adjusted close, as of November 4, 2026, was 72.2715.
The rebuild only covers events inside the requested range. To rebuild an older period, request the events from that start date up to today, because every later split and dividend also changes earlier adjusted prices.
When to use close and when to use adjusted close
Use adjusted close for:
- returns over any period that contains a split or a dividend
- long-term charts and performance comparisons between stocks
- backtests, so that splits don’t trigger false signals and the return includes dividends
Use close for:
- the price someone actually paid or received on a given date
- valuation ratios on a specific date, such as the P/E on that day, together with the share count of that date
- order levels, stop prices and anything that has to match what the exchange printed
Some strategies need both: signals on adjusted prices and order sizes on raw prices. The EODHD end-of-day endpoint returns both in the same row, and the EODHD Excel add-on also adds adjusted open, high and low columns.
Conclusion
The close tells you what a stock cost on a given day. The adjusted close tells you how its value changed over time, with splits and dividends taken out of the picture. Apple’s 2020 split shows why the difference matters: the raw close fell 74% overnight, while the adjusted close rose about 3.4%.
With the EODHD end-of-day, splits and dividends endpoints, you get both values and the events behind the adjustment, and can rebuild it yourself as shown above. Try the examples with the demo key on AAPL.US.
For more on the end-of-day data, see the End-of-Day Historical Data API documentation.
FAQs
Q: What is adjusted close?
The adjusted close is a stock’s closing price corrected for splits and dividends that happened after that day. It makes prices from different dates directly comparable, which is why analysts use it for returns and backtests.
Q: What is the difference between close and adjusted close?
The close is the actual last traded price of the day and never changes. The adjusted close changes every time a new split or dividend happens, so past values change while the most recent one equals the close.
Q: Why is the adjusted close lower than the close?
Because the adjustment takes later dividends and splits out of earlier prices. For Apple, the adjusted close on January 2, 2020 was 72.2715 (as of November 4, 2026) against a close of 300.35, mostly because of the 4-for-1 split in August 2020.
Q: Should I use close or adjusted close for backtesting?
Use adjusted close for signals and returns, so that splits don’t look like crashes and the return includes dividends. Use the raw close when you need the actual traded price, for example to size orders.
Q: Is “Adj Close” the same as adjusted close?
Yes, “Adj Close” is the common abbreviation. Different data sources can use different adjustment methods, especially for dividends, so check the method before you combine data from two sources.