Strasmore Research
학습 Matt Connor작성자 Matt Connor

가격수익률과 총수익률 차이, 배당의 복리 효과

S&P 500 가격지수와 총수익지수의 차이를 비교하고, 배당 재투자가 20년간 만든 복리 격차와 각 지수의 활용처를 설명합니다.

가격수익률과 총수익률의 차이는 시장 차트에 표시되는 수치와 동일한 포지션을 실제로 보유한 투자자가 얻은 수익의 차이다. 가격수익률은 가격 변동만 반영한다. 총수익률은 모든 배당금을 배당락일의 주가로 재투자해 수익에 포함한다. 이에 따라 각 배당금은 배당을 발생시킨 주식과 함께 복리로 누적된다.

뉴스에서 인용하는 대표적인 S&P 500 지수 수준은 가격지수다. 이에 대응하는 총수익지수는 동일한 기업을 편입하고 배당금을 재투자한다. 1년 동안은 두 지수가 거의 비슷하게 보인다. 그러나 20년이 지나면 두 지수는 전혀 다른 결과를 보여준다. 두 지수 간 격차는 연간 배당수익률만으로 예상되는 수준보다 크다.

가격수익률과 총수익률의 차이는 무엇인가?

가격수익률은 기말 가격을 기초 가격으로 나눈 뒤 일에서 빼서 계산한다. 텔레비전에 표시되는 모든 지수 수준과 지금까지 접한 모든 가격 차트가 보여주는 수치가 여기에 해당한다.

총수익률은 같은 계산을 적용하되, 각 현금 배당금으로 배당락일의 가격에 주식을 추가 매수한다고 가정한다. 펀드 성과표와 펀드가 성과를 비교하는 벤치마크 지수는 이 방식을 사용한다.

가상의 사례를 보면 계산 방식이 명확해진다. 주당 $100에 매수한 주식이 연간 $2의 배당을 지급하고, 1년 뒤 $105에 매도한다고 하자. 가격수익률은 5%다. 총수익률은 약 7%다. 첫해의 차이는 크지 않다. 그러나 복리 효과가 두 개념을 구분하는 핵심이다. 재투자한 $2로 주식 일부를 추가 매수하면, 그 일부 주식도 다음 해에 자체 배당금을 지급한다. 그 결과 두 수익률 계열은 시간이 지날수록 점점 더 빠른 속도로 벌어진다.

데이터를 살펴보기 전에 한 가지 개념을 구분할 필요가 있다. 총수익스왑은 한 당사자가 자산의 전체 경제적 성과를 금융 조달 금리와 교환해 다른 당사자에게 이전하는 파생상품 계약이다. 이름만 아래에서 설명하는 지수 산출 방식과 같을 뿐, 내용은 전혀 다르다. 이 페이지의 나머지 부분에서는 지수와 펀드만 다룬다.

S&P 500에서 격차는 얼마나 큰가?

2005년 말 S&P 500 최대 추종 ETF에 $10,000를 투자하고 2026년 7월 31일까지 보유한 경우다. 첫 번째 선은 배당금이 지급될 때마다 즉시 사용한다. 두 번째 선은 각 배당금을 해당 날짜의 종가로 재투자한다.

조회S&P 500 추종 ETF의 $10,000: 가격 수익률만 반영 vs 배당 재투자, 2006년 말~2026년 7월
모든 수치 뒤에 숨겨진 정확한 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
Run this yourself

가격만 반영한 선은 $59956에서 마감한다. 배당금을 재투자한 선은 $85775에서 마감한다. 배당금은 최종 잔액의 30.1%를 차지하며, 이 중 어느 부분도 가격 차트에는 나타나지 않는다.

차트의 왼쪽 끝에서 많은 투자자가 이 차이를 놓친다. 2007 말 두 선은 각각 $11755와 $11971에 있었고, 배당금은 잔액의 1.8%에 해당했다. 첫해의 작은 격차는 단순한 반올림 오차처럼 쉽게 보인다. 그러나 같은 정도의 차이가 20년 동안 이어지고, 매번 이전 차이 위에 복리로 누적되면 오른쪽 끝의 격차가 만들어진다.

시간이 지날수록 격차가 계속 커지는가?

동일한 펀드와 종료일을 기준으로 시작일만 다섯 가지로 설정했다.

조회보유 기간별 가격 수익률 vs 총수익률: S&P 500 추종 ETF, 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('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
Run this yourself

1-year 기간 동안 가격수익률은 18.2%였고 총수익률은 19.5%로, 격차는 1.3%포인트였다. 10-year 기간에서는 244.3%와 304.5%이 대비되며, 격차는 60.2%포인트에 달했다. 20-year 기간 동안 두 수치는 각각 485%와 736.9%로, 격차는 251.9%포인트였다.

곡선은 직선처럼 상승하지 않는다. 잔액이 늘어나는 방식과 같다. 재투자된 배당금이 다음 배당금이 복리로 늘어나는 기반에 더해지기 때문이다.

1년간 배당이 미미해 보이는 이유

동일한 기간을 달력 연도별로 나눠, 주가 변동과 배당 기여도를 각각 제시했다.

조회달력 연도별 S&P 500 추종 ETF: 가격 수익률 vs 배당 재투자로 추가된 포인트
모든 수치 뒤에 숨겨진 정확한 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
Run this yourself

두 시계열을 함께 봐야 한다. 주가선은 양방향으로 크게 움직이는 눈에 띄는 변수다. 배당선은 조용한 변수다. 1.9포인트는 2007에, 0.58포인트는 7월까지의 부분 연도인 2026에 해당하며, 그 사이 어느 시점에도 핵심 수치로 부각되지 않는다. 해당 패널의 어느 한 행도 투자자의 판단을 바꿀 만한 내용은 아니다. 그러나 이 작은 수치가 20개 행에 걸쳐 누적되고 복리로 반영되면, 첫 번째 차트의 두 선 사이 전체 격차를 만든다. 배당을 재투자하는 것은 해당 날짜의 시장 가격으로 자동 매수하는 것과 같다. 이는 달러 코스트 애버리징과 유사한 방식이다. 같은 이유로 S&P 500 배당수익률은 modest한 수치로 보이지만, 장기간에 걸쳐서는 그 수치가 시사하는 것보다 훨씬 큰 영향을 미친다.

가장 큰 격차를 보이는 종목은 무엇인가?

이 격차는 수익률을 반영한다. 주가 1달러당 더 많은 금액을 주주에게 돌려주는 기업일수록 투자자가 재투자할 수 있는 금액도 커진다. 2026년 7월 31일까지 10년간의 수치를 연율화해 비교 가능한 기간으로 맞췄다.

조회10년간 연환산 가격 수익률 vs 총수익률: 대표 기업 7곳, 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 DESC
Run this yourself

VZ는 연간 격차가 가장 큰 종목이다. 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 수익률을 얼마나 높이는가?

2026년 7월 31일에 종료되는 10-year 기간 동안, 여기서 사용한 추적 지표의 가격수익률은 244.3%였고 배당금을 재투자한 총수익률은 304.5%였다. 단일 회계연도 안에서 배당금의 기여도는 훨씬 작으며, 2007에서는 약 1.9포인트다.

내 증권 계좌에는 가격수익률이 표시되는가, 총수익률이 표시되는가?

현금 배당금이 계좌로 입금되므로 계좌 잔액 자체에는 이미 배당금이 반영된다. 그러나 포지션의 수익률 열은 현재 가격과 원가 기준(cost basis)만 비교하는 경우가 많으며, 이는 가격수익률에 해당한다. 재투자 계획에 따라 보유 기간 중 추가 매수가 이뤄지지 않았다면, 두 수치는 수령한 배당금만큼 정확히 차이 난다.

총수익 스왑은 총수익과 같은 것인가?

아니다. 총수익 스왑은 자산의 전체 경제적 손익을 금융비용과 교환하는 양자 간 파생상품 계약이다. 지수에서 말하는 총수익은 성과를 산출하는 기준이다. 두 용어에 같은 표현이 들어가는 이유는 가격과 소득을 합산한다는 동일한 기본 개념을 가리키기 때문이지만, 상품으로서는 서로 관련이 없다.

가격지수와 비교하면 펀드가 더 좋아 보이는 이유는 무엇인가?

펀드가 공시하는 수익률에는 배당금이 포함되지만, 가격지수에는 해당 배당금이 반영되지 않는다. 따라서 이 비교에서는 기준지수의 배당 흐름만큼 펀드가 유리한 출발점에 놓인다. 위의 20-year 기간 동안 그 격차는 251.9포인트다.


여기에 제시된 모든 수치는 일별 종가와 공시된 배당 기록을 바탕으로 저장·버전 관리된 쿼리에서 산출된다. 각 패널을 열어 SQL을 확인하거나, Strasmore terminal에서 관심 있는 ticker를 대상으로 동일한 가격수익률과 총수익률 비교를 실행할 수 있다.

#total return#dividends#s&p 500#index funds#performance