价格回报与总回报差距有多大?
价格回报不含股息,标普500 headline指数与总回报的差距如何?查看二十年复利对比,以及两种口径分别适用于哪些场景。
价格回报与总回报的区别,在于市场图表展示的结果,与实际持有同一头寸所获得的收益并不相同。价格回报只计算价格本身的变动。总回报则将所有股息按除息日的价格再投资,使每笔分配都能与产生该股息的股票一同复利增长。
新闻中引用的标普500指数点位是价格指数。对应的总回报指数持有相同的公司,并将股息重新投入市场。观察单个年度时,两者几乎没有差别。拉长至二十年,两者反映的结果会明显不同,二者之间的差距也会大于年化收益率所显示的水平。
价格回报与总回报有何区别?
价格回报是期末价格除以期初价格,再减去一。电视上公布的每一个指数点位,以及您浏览过的每一张价格走势图,都是这个数字。
总回报采用相同计算方式,但会假设每笔现金股息都在除息日按当日价格买入更多股份。基金业绩表,以及基金据此进行比较的基准指数,都采用这一口径。
举个假设例子可以更直观地说明计算过程。以100美元买入一股股票,该股票每年派发2美元股息;一年后以105美元卖出。价格回报为5%。总回报约为7%。第一年的差异并不显著。真正拉开差距的是复利效应,这也是总回报值得单独讨论的原因:再投资的2美元可以买入一小部分额外股份;这部分股份在下一年也会获得股息;随着时间推移,两条回报曲线会以越来越快的速度分离。
在介绍数据前,先澄清一个容易混淆的概念。总回报互换是一种衍生品合约,一方将某项资产的全部经济收益转让给另一方,以换取融资利率。它与下文所说的指数口径只有名称相同,其他并无关联。本页其余内容仅讨论指数和基金。
标普500的差距有多大?
2005年底将$10,000投入规模最大的标普500跟踪基金,并持有至2026年7月31日。第一条线在每次收到股息的当天将其花掉。第二条线则按当天收盘价将每次股息再投资。
每个数字背后的完整 SQL
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2005-12-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
),
base AS (
SELECT argMax(close, d) AS start_px
FROM daily
WHERE d <= toDate('2005-12-31')
),
year_end AS (
SELECT toYear(d) AS year,
argMax(close, d) AS close,
max(d) AS last_day
FROM daily
WHERE d >= toDate('2006-01-01')
GROUP BY year
),
reinvest AS (
SELECT dv.ex_dividend_date AS d,
log(1 + toFloat64(dv.cash_amount) / dl.close) AS log_growth
FROM global_markets.stocks_dividends AS dv
INNER JOIN daily AS dl ON dl.d = dv.ex_dividend_date
WHERE dv.ticker = 'SPY'
AND dv.cash_amount > 0
AND dv.ex_dividend_date >= toDate('2006-01-01')
AND dv.ex_dividend_date <= toDate('2026-07-31')
)
SELECT ye.year AS year,
round(10000 * ye.close / any(b.start_px)) AS price_only_usd,
round(10000 * ye.close / any(b.start_px) * exp(sum(ri.log_growth))) AS reinvested_usd,
round(100 * (1 - exp(-sum(ri.log_growth))), 1) AS dividend_share_pct
FROM year_end AS ye, reinvest AS ri, base AS b
WHERE ri.d <= ye.last_day
GROUP BY ye.year, ye.close
ORDER BY year仅计算价格的曲线最终为$59956。将股息再投资的曲线最终为$85775。股息占最终余额的30.1%,而价格走势图不会显示这部分收益。
图表左侧正是最容易让人误判的地方。到2007年底,两条曲线分别为$11755和$11971,股息占余额的1.8%。第一年的差距如此之小,很容易被视为四舍五入造成的细节。二十年里,这个看似微小的差距不断重复,并在每次基础上继续复利,最终形成了图表右侧的差距。
差距会随时间推移不断扩大吗?
同一只基金、相同的结束日期、五个不同的起始日期。
每个数字背后的完整 SQL
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2006-07-31')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
),
spans AS (
SELECT y AS years,
concat(toString(y), '-year') AS horizon,
subtractYears(toDate('2026-07-31'), y) AS start_date
FROM (SELECT arrayJoin([1, 3, 5, 10, 20]) AS y)
),
divs AS (
SELECT dv.ex_dividend_date AS d,
log(1 + toFloat64(dv.cash_amount) / dl.close) AS log_growth
FROM global_markets.stocks_dividends AS dv
INNER JOIN daily AS dl ON dl.d = dv.ex_dividend_date
WHERE dv.ticker = 'SPY'
AND dv.cash_amount > 0
AND dv.ex_dividend_date <= toDate('2026-07-31')
),
endpoints AS (
SELECT s.horizon AS horizon,
s.years AS years,
argMin(dl.close, dl.d) AS start_px,
argMax(dl.close, dl.d) AS end_px
FROM spans AS s, daily AS dl
WHERE dl.d >= s.start_date
GROUP BY s.horizon, s.years
),
reinvest AS (
SELECT s.years AS years,
exp(sum(dvs.log_growth)) AS factor
FROM spans AS s, divs AS dvs
WHERE dvs.d > s.start_date
GROUP BY s.years
)
SELECT e.horizon AS horizon,
round(100 * (e.end_px / e.start_px - 1), 1) AS price_return_pct,
round(100 * (e.end_px / e.start_px * r.factor - 1), 1) AS total_return_pct,
round(100 * (e.end_px / e.start_px) * (r.factor - 1), 1) AS dividend_points_pct
FROM endpoints AS e
INNER JOIN reinvest AS r ON e.years = r.years
ORDER BY e.years在 1-year 期间,价格回报为 18.2%,总回报为 19.5%,相差 1.3 个百分点。10-year 期间的两个数值分别为 244.3% 和 304.5%,相差 60.2 个百分点。在 20-year 期间,两项数据分别为 485% 和 736.9%,相差 251.9 个百分点。
这条曲线并非直线上升。它的上升方式与账户余额相似,因为每次再投资的股息都会计入本金,并成为下一次复利的基础。
为什么一年的股息看起来微不足道
以下列出了同一时间窗口涵盖的每个日历年,并将价格变动与股息贡献分开显示。
每个数字背后的完整 SQL
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2006-01-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
),
yearly AS (
SELECT toYear(d) AS year,
argMin(close, d) AS first_px,
argMax(close, d) AS last_px
FROM daily
GROUP BY year
),
divs AS (
SELECT toYear(dv.ex_dividend_date) AS year,
exp(sum(log(1 + toFloat64(dv.cash_amount) / dl.close))) AS factor
FROM global_markets.stocks_dividends AS dv
INNER JOIN daily AS dl ON dl.d = dv.ex_dividend_date
WHERE dv.ticker = 'SPY'
AND dv.cash_amount > 0
GROUP BY year
)
SELECT y.year AS year,
round(100 * (y.last_px / y.first_px - 1), 1) AS price_return_pct,
round(100 * (y.last_px / y.first_px) * (d.factor - 1), 2) AS dividend_points_pct
FROM yearly AS y
INNER JOIN divs AS d ON y.year = d.year
ORDER BY year将两条序列放在一起看。价格线更醒目,双向大幅波动。股息线则较为平缓:在 1.9 中为 2007 个百分点,在截至七月的部分年度中为 0.58 个百分点,2026,其余年份也从未成为焦点。该面板中的任何单独一行,都不会改变任何人的判断。将这些小幅数字在 20 行中累积并复利计算后,它们正是第一张图中两条曲线之间的全部差距。将股息再投资,也等于在当天 prevailing 的价格买入,这与美元成本平均法十分接近。这也是为什么标普500股息率看起来只是一个温和的数字,但在较长时间窗口内,其影响远超数字本身所暗示的程度。
哪些股票显示出最宽的差距?
差距与收益率同步变化:公司每一美元股价返还的金额越高,持有者可再投资的资金就越多。以下列出七个投资者熟悉的名称,统计截至2026年7月31日的十年表现,并按年化处理,以便比较不同期限。
每个数字背后的完整 SQL
WITH daily AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'KO', 'JNJ', 'XOM', 'PG', 'VZ', 'MSFT')
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2016-08-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker, d
),
px AS (
SELECT ticker,
argMin(close, d) AS start_px,
argMax(close, d) AS end_px
FROM daily
GROUP BY ticker
),
divs AS (
SELECT dv.ticker AS ticker,
exp(sum(log(1 + toFloat64(dv.cash_amount) / dl.close))) AS factor
FROM global_markets.stocks_dividends AS dv
INNER JOIN daily AS dl ON dl.ticker = dv.ticker AND dl.d = dv.ex_dividend_date
WHERE dv.ticker IN ('SPY', 'KO', 'JNJ', 'XOM', 'PG', 'VZ', 'MSFT')
AND dv.cash_amount > 0
AND dv.ex_dividend_date >= toDate('2016-08-01')
AND dv.ex_dividend_date <= toDate('2026-07-31')
GROUP BY dv.ticker
)
SELECT px.ticker AS ticker,
round(100 * (pow(px.end_px / px.start_px, 0.1) - 1), 2) AS price_cagr_pct,
round(100 * (pow(px.end_px / px.start_px * divs.factor, 0.1) - 1), 2) AS total_cagr_pct,
round(100 * (pow(px.end_px / px.start_px * divs.factor, 0.1)
- pow(px.end_px / px.start_px, 0.1)), 2) AS dividend_points_pct
FROM px
INNER JOIN divs ON px.ticker = divs.ticker
ORDER BY dividend_points_pct DESCVZ的年度差距在7家公司中最宽,达到每年5.46个百分点:仅按股价计算的年化收益率为-1.51%,而将股息再投资后的年化收益率为3.96%。MSFT的差距最窄,仅为1.53个百分点。比较图表时需要注意两点。对于高分红股票,股价图低估其表现的程度远高于低分红股票;任何按股价表现排序的筛选工具,都会在无形中压低分红股票的排名。这些股票背后的股息收益率决定了差距的大小。
各版本的使用场景
- 基准指数和基金事实表会引用总回报。“Total Return Index”、后缀“TR”,或脚注中的“净股息再投资”,都表示已计入股息。
- 财经媒体和行情页面使用价格回报。“标普500指数收涨0.4%”指的是价格变动。
- 券商的账户绩效页面通常采用总回报,因为现金分配确实已进入账户。单个持仓的收益栏则常以成本基础为基准显示价格变动,两者并不是同一个数值。
- 回测和策略报告使用的版本取决于作者所用数据源,因此许多看似不经意间被夸大的历史业绩记录都由此产生。
真正重要的误差,是将基金的总回报与价格指数放在一起比较。基金计入了自身股息,而基准指数却没有计入自身股息,相当于让基金获得了等于该指数全部股息流的领先优势。在上文的20-year区间内,这一计分错误相当于251.9个百分点,而且其中没有任何一点来自基金经理。可比的比较方式,是将总回报与总回报进行对照。月度回报如何计算以月度为单位展示相同的计算过程;错过最佳交易日则说明,当若干个交易日从价格曲线中被剔除后,会产生什么结果。
这些数字的计算方式
- 价格采用每日常规交易时段收盘价。股息采用已申报的现金分配,并按除息日收盘价逐笔再投资。这是构建总回报序列的标准做法。
- 区间为2005年12月至2026年7月31日,涵盖这些面板背后盘中价格历史所覆盖的时段。区间越长,差距通常越大。
- 以跟踪该指数的基金代表指数本身,因此费用和现金拖累已包含在这些数字中。日历年价格回报按年初第一个收盘价至年末最后一个收盘价计算,因此不计入首个交易日的涨跌。
价格回报与总回报常见问题
标普500指数是价格指数还是总回报指数?
首页显示的数值是价格指数:它跟踪成分股的市值,不计入股息。同一指数也有总回报版本,该版本会将股息再投资。基金基准通常使用总回报版本,而新闻报道通常引用价格指数版本。
股息为标普500指数回报贡献了多少?
在截至2026年7月31日的 10-year 期间,本文使用的跟踪工具价格回报为 244.3%;将股息再投资后的回报为 304.5%。在单个日历年内,股息贡献要小得多,约为 1.9 个百分点,占 2007。
我的券商账户显示的是价格回报还是总回报?
现金股息会存入账户,因此账户余额本身已经包含股息。持仓的收益栏通常只比较当前价格与您的成本基础,这属于价格回报。除非股息再投资计划在此期间买入了更多股份,否则两者的差额正好等于已收到的股息。
总回报互换与总回报是一回事吗?
不是。总回报互换是双边衍生品合约,以融资利率交换某项资产的全部经济收益。指数语境中的总回报是一种业绩计算口径。两者使用相同的表述,是因为都指向价格加收入这一基本概念;但作为金融工具,两者并无关联。
为什么基金与价格指数比较时看起来表现更好?
基金公布的回报包含其股息,而价格指数不包含自身的股息。这种比较相当于让基金获得一项先发优势,优势大小等于基准股息流在上述 20-year 期间贡献的 251.9 个百分点。
这里的每个数据均来自基于日收盘价和已申报股息记录的存储版本化查询。打开任意面板即可查看 SQL,也可以在 Strasmore terminal 上,对您关注的 ticker 运行同样的价格回报与总回报比较。