価格リターンとトータルリターンの違い
S&P 500の価格指数は配当を含みません。価格リターンとトータルリターンの複利差を二十年間で比較し、それぞれの使われ方を解説します。
価格リターンとトータルリターンの違いは、市場チャートが示すものと、同じポジションを保有した投資家が実際に得た収益との差である。価格リターンは価格変動だけを反映する。トータルリターンは、支払われた配当をすべて権利落ち日の価格で再投資して加算する。これにより、各配当金は、その配当を生み出した株式とともに複利で運用される。
ニュースで報じられるS&P 500の水準は、価格指数である。これに対応するトータルリターン指数は同じ企業を組み入れ、配当を再投資する。単一年では、両者はほぼ同じに見える。二十年間では、示す結果は大きく異なる。その差は、年間利回りから想定されるよりも大きい。
価格リターンとトータルリターンの違いとは
価格リターンは、終値を始値で割り、そこから一を引いて算出する。テレビで示されるすべての指数水準や、これまで見てきたすべての価格チャートは、この数値である。
トータルリターンは、同じ計算において、受け取った現金配当を権利落ち日の価格で追加購入に充てる。ファンドの運用成績表や、ファンドの比較対象となるベンチマーク指数は、この方式を使う。
具体例で仕組みを確認する。百ドルで一株を購入し、年間二ドルの配当を受け取り、一年後に百五ドルで売却するとする。価格リターンは五%である。トータルリターンはおよそ七%となる。一年目の差は目立たない。複利効果によって差が広がる点に、この区別の重要性がある。再投資した二ドルで追加の株式を一部購入し、その一部の株式も翌年に配当を生むため、二つの系列は次第に加速度的に乖離する。
データを見る前に、一点だけ区別しておく。トータルリターンスワップは、一方の当事者が資産の経済的価値全体を、金融調達金利と引き換えに相手方へ移転するデリバティブ契約である。以下で扱う指数の計算方式とは、名称が共通するだけで、それ以外に共通点はない。ここからは指数とファンドに話を限定する。
S&P 500では差はどれほど大きいか
2005年末に最大のS&P 500連動商品へ$10,000を投資し、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.years1-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ポイントで、それ以外の期間に見出しとなることはありません。このパネルの一行だけを見ても、見方を変える人はいないでしょう。しかし、同じ小さな数字を積み重ね、複利で運用すると、最初のチャートにある二本の線の差はすべてそこから生じます。配当を再投資することは、その日に成立する価格で自動的に買い付けることでもあり、ドルコスト平均法に近い取引です。S&P 500の配当利回りが控えめな数字に見える一方、その規模が示す以上に長期では重要になるのも同じ理由です。
最も大きな差が出る銘柄はどれか
この差は利回りに連動する。株価一ドル当たりの還元額が大きい企業ほど、保有者が再投資できる金額も大きくなる。比較可能な期間とするため、2026年7月31日までの10年間について、よく知られた7銘柄を年率換算した。
各数値の背後にある正確な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」のサフィックス、または脚注の「純配当を再投資」といった注記は、配当を含むことを示します。
- 金融メディアや株価画面では、プライスリターンが使われます。「S&P 500は0.4%高で引けた」は、株価の変動を示しています。
- 証券会社のパフォーマンス画面では、口座全体について通常、トータルリターンが表示されます。実際に現金が口座へ入金されるためです。一方、単一ポジションの損益欄では、コストベースに対する価格変化が表示されることが多く、同じ数値ではありません。
- バックテストや戦略の解説では、執筆者が利用したデータフィードが提供するバージョンが使われます。目立たない形で実績が過大に見積もられる原因の多くは、ここにあります。
重要なのは、ファンドのトータルリターンをプライス指数と並べて比較する場合です。ファンドには自らの配当が加算される一方、ベンチマークには配当が加算されません。その結果、ファンドには指数の配当総額に相当する先行分が与えられます。上記の20-yearの期間では、この採点ミスは251.9ポイントに相当します。そのうち運用担当者の貢献によるものは一つもありません。適切な比較では、トータルリターン同士を比較します。月次リターンの測定方法では、同じ計算を月次ベースで説明しています。また、最良の日を逃すことでは、一握りのセッションを除いた場合にプライスラインがどうなるかを示しています。
これらの数値の算出方法
- 株価は通常取引時間の毎日の終値です。配当は届け出られた現金分配であり、それぞれ権利落ち日に終値で再投資しています。これはトータルリターン系列を作成する標準的な方法です。
- 期間は2005年12月から2026年7月31日までです。各パネルの基礎となる日中株価履歴がカバーする範囲です。期間を長くすると差はさらに広がります。
- 指数に連動するファンドを指数自体の代わりに使用しているため、手数料とキャッシュドラッグが数値に含まれています。暦年のプライスリターンは、年初の最初の終値から年末の最後の終値までで測定しています。そのため、最初のセッションの値動きは除外されます。
価格リターンとトータルリターンに関するFAQ
S&P 500は価格指数ですか、それともトータルリターン指数ですか?
見出しで使われる数値は価格指数です。構成銘柄の時価を追跡し、配当は考慮しません。同じ指数には、配当を再投資するトータルリターン版もあります。ファンドのベンチマークは通常、トータルリターン版を使います。一方、報道では一般に価格指数が引用されます。
配当はS&P 500のリターンにどの程度寄与しますか?
ここで使用したトラッカーでは、10-yearの期間(2026年7月31日終了)に、価格リターンは244.3%でした。配当を再投資した場合は304.5%でした。単一の暦年における寄与はさらに小さく、2007では約1.9ポイントです。
証券口座には価格リターンとトータルリターンのどちらが表示されますか?
現金配当は口座に入金されるため、口座残高にはすでに反映されています。一方、保有ポジションの損益欄は、現在価格と取得原価を比較しているだけの場合が多く、これは価格リターンです。再投資プランで途中に追加購入していない限り、両者の差は受け取った配当額と一致します。
トータルリターンスワップはトータルリターンと同じものですか?
いいえ。トータルリターンスワップは、資産の経済的価値全体と調達金利を交換する、相対取引のデリバティブ契約です。指数におけるトータルリターンは、パフォーマンスを測る慣行です。共通する表現は、価格とインカムを合わせた概念を指していますが、両者は金融商品として無関係です。
価格指数と比較すると、なぜファンドの成績が良く見えるのですか?
ファンドが公表する数値には配当が含まれますが、価格指数では配当を除外しています。そのため、この比較では、ベンチマークの配当の流れに相当する分だけファンドが有利なスタートを得ます。上記の20-yearの期間では、差は251.9ポイントです。
ここに示したすべての数値は、日次終値と提出済みの配当記録に基づく、保存・バージョン管理されたクエリから取得しています。各パネルを開くとSQLを確認できます。Strasmoreターミナルで、フォローしている銘柄について同じ価格リターンとトータルリターンの比較を実行することもできます。