Strasmore Research
Apprendre Matt ConnorPar Matt Connor

Price return ou total return : quel écart réel ?

Price return ou total return : l’indice S&P 500 hors dividendes. Mesurez l’écart de capitalisation sur vingt ans et les usages de chaque version.

La différence entre price return et total return correspond à l’écart entre ce qu’affiche un graphique de marché et ce qu’a effectivement gagné un investisseur détenant la même position. Le price return ne mesure que la variation du cours. Le total return réintègre chaque dividende, réinvesti au cours de l’action à la date ex-dividende, ce qui permet à chaque versement de capitaliser avec les actions qui l’ont généré.

Le niveau de l’S&P 500 mis en avant dans les médias correspond à un indice de prix. Son équivalent en total return détient les mêmes entreprises et réinvestit les dividendes. Sur une seule année, les deux évolutions semblent presque identiques. Sur vingt ans, elles décrivent des résultats très différents, et l’écart entre les deux est supérieur à ce que laisserait penser le rendement annuel.

Quelle est la différence entre le price return et le total return ?

Le price return correspond au cours final divisé par le cours initial, moins un. Chaque niveau d’indice affiché à la télévision et chaque graphique de cours que vous avez consulté correspondent à cette mesure.

Le total return applique le même calcul, mais utilise chaque dividende en numéraire pour acheter davantage de parts au cours de la date ex-dividende. Les tableaux de performance des fonds et les indices de référence auxquels ces fonds sont comparés utilisent cette version.

Un exemple théorique permet de comprendre le mécanisme. Vous achetez une action à 100 dollars. Elle verse 2 dollars par an, puis vous la revendez un an plus tard à 105 dollars. Le price return est de 5 %. Le total return est d’environ 7 %. Cette première année n’a rien d’exceptionnel. C’est la capitalisation qui justifie une page entière : les 2 dollars réinvestis achètent une fraction d’action supplémentaire, cette fraction produit à son tour un dividende l’année suivante, et les deux séries s’écartent à un rythme croissant.

Une précision avant de passer aux données. Un total return swap est un contrat dérivé dans lequel une partie transfère l’intégralité de la performance économique d’un actif en échange d’un taux de financement. Il ne partage avec la convention d’indice présentée ci-dessous que son nom. Le reste de cette page porte sur les indices et les fonds.

Quelle est l’ampleur de l’écart sur le S&P 500 ?

10 000 $ investis dans le plus grand tracker du S&P 500 à la fin de 2005, puis conservés jusqu’au 31 juillet 2026. La première ligne dépense chaque dividende le jour de son versement. La seconde réinvestit chacun d’eux au cours de clôture du jour.

Requête10 000 $ dans un tracker du S&P 500 : cours seuls vs dividendes réinvestis, fin 2006 à juillet 2026
Le SQL exact derrière chaque chiffre
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

La ligne fondée uniquement sur le cours termine à $59956. La ligne avec réinvestissement termine à $85775. Les dividendes représentent 30.1% du solde final, et n’apparaissent pas sur un graphique des cours.

C’est au bord gauche du graphique que le phénomène piège les investisseurs. À la fin de 2007, les deux lignes s’établissaient à $11755 et $11971, les dividendes représentant 1.8% du solde. Un écart aussi faible après la première année peut facilement passer pour un simple effet d’arrondi. Vingt années du même effet d’arrondi, chacune capitalisant sur la précédente, produisent l’écart visible au bord droit.

L’écart continue-t-il de se creuser avec le temps ?

Même fonds, même date de fin, cinq dates de début différentes.

RequêteRendement des cours vs rendement total selon la durée de détention : tracker du S&P 500, périodes se terminant le 31 juillet 2026
Le SQL exact derrière chaque chiffre
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

Sur la période de 1-year, le price return s’est établi à 18.2%, contre un total return de 19.5%, soit un écart de 1.3 points de pourcentage. La période de 10-year sépare 244.3% de 304.5%, soit 60.2 points. Sur la période de 20-year, les deux mesures s’établissent à 485% et 736.9%, soit un écart de 251.9 points de pourcentage.

La courbe ne progresse pas en ligne droite. Elle évolue comme le solde, car chaque dividende réinvesti rejoint la base sur laquelle le suivant capitalise.

Pourquoi une année de dividendes paraît négligeable

Voici chaque année civile de la même période, ventilée entre l’évolution du cours et la contribution du dividende.

RequêteTracker du S&P 500 par année civile : rendement des cours vs points ajoutés par les dividendes réinvestis
Le SQL exact derrière chaque chiffre
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

Lisez les deux séries ensemble. La courbe des cours est la plus visible, avec de fortes variations dans les deux sens. La courbe des dividendes est plus discrète : 1.9 points en 2007, 0.58 points sur l’année partielle jusqu’en juillet 2026, et jamais au premier plan entre ces deux périodes. Aucune ligne prise isolément dans ce panneau ne suffirait à modifier l’analyse. Cumulés et composés sur 20 lignes, ces mêmes petits écarts représentent toute la distance entre les deux courbes du premier graphique. Réinvestir un dividende revient aussi à acheter automatiquement au prix en vigueur ce jour-là, ce qui s’apparente au lissage du prix de revient (« dollar cost averaging »). C’est pour la même raison que le rendement du dividende du S&P 500 paraît modeste, tout en ayant une incidence bien plus importante sur les longues périodes que ne le laisse penser son niveau.

Quelles actions affichent l’écart le plus important ?

L’écart suit le rendement : une entreprise qui reverse davantage pour chaque dollar investi dans le cours offre à son détenteur davantage de capital à réinvestir. Sept valeurs connues sur les dix années allant jusqu’au 31 juillet 2026, avec une annualisation pour rendre les périodes comparables.

RequêteRendement annualisé des cours vs rendement total sur dix ans : sept valeurs connues, au 31 juillet 2026
Le SQL exact derrière chaque chiffre
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 affiche l’écart annuel le plus important parmi les 7, à 5.46 points de pourcentage par an : -1.51% annualisés sur le seul cours, contre 3.96% avec réinvestissement des dividendes. MSFT se situe à l’autre extrémité, avec un écart de 1.53 points. Deux conclusions s’imposent pour quiconque compare des graphiques. Un graphique de cours sous-estime bien davantage la performance d’une valeur à rendement élevé que celle d’une valeur à faible rendement. De même, tout screener qui classe les valeurs selon la performance du cours pénalise implicitement les valeurs distributrices. C’est le rendement du dividende de chacune de ces valeurs qui détermine l’ampleur de son écart.

Où chaque version est utilisée

  • Les benchmarks et les fiches de fonds indiquent le total return. La mention « Total Return Index », le suffixe « TR » ou une note précisant que les « net dividends [sont] reinvested » dans les mentions en petits caractères signifient que les dividendes sont pris en compte.
  • Les médias financiers et les écrans de cotation utilisent le price return. « Le S&P 500 a clôturé en hausse de 0,4 % » décrit une variation de cours.
  • Les onglets de performance des courtiers affichent généralement le total return pour le compte, puisque les liquidités ont effectivement été créditées. La colonne de gain d’une position isolée montre souvent la variation du cours par rapport au cost basis, ce qui ne correspond pas au même chiffre.
  • Les backtests et les présentations de stratégies utilisent la version fournie par le flux de données de l’auteur. C’est l’origine de nombreux historiques de performance discrètement gonflés.

L’écart déterminant apparaît lorsqu’on compare le total return d’un fonds à un indice de prix. Le fonds bénéficie de ses propres dividendes, tandis que le benchmark ne bénéficie d’aucun des siens. Le fonds part ainsi avec une avance égale à l’intégralité du flux de dividendes de l’indice. Sur la période de 20-year indiquée plus haut, cette erreur de comparaison représente 251.9 points de pourcentage. Aucun ne provient du gérant. Une comparaison homogène met en regard le total return et le total return. Comment sont mesurés les rendements mensuels reprend le même calcul à l’échelle mensuelle, et rater les meilleures séances montre ce qui arrive à la courbe des cours lorsqu’on en retire une poignée de séances.

Comment ces chiffres sont construits
  • Les cours correspondent aux clôtures quotidiennes de la séance régulière. Les dividendes sont les distributions en numéraire publiées. Chacune est réinvestie au cours de clôture de sa date ex-dividende, conformément à la convention standard de construction d’une série en total return.
  • La période va de décembre 2005 au 31 juillet 2026. Elle correspond à la durée couverte par l’historique intraday des cours utilisé pour ces panneaux. Une période plus longue élargit encore l’écart.
  • Un fonds répliquant l’indice sert de référence pour l’indice lui-même. Les frais et le cash drag sont donc intégrés à ces chiffres. Le price return d’une année civile est mesuré entre la première clôture de l’année et la dernière, ce qui exclut la variation de la première séance.

FAQ sur le rendement des cours et le rendement total

Le S&P 500 est-il un indice de cours ou un indice de rendement total ?

Le chiffre mis en avant est un indice de cours : il suit la valeur de marché des composantes et exclut leurs dividendes. Il existe une version en rendement total du même indice, qui réinvestit ces dividendes. Les benchmarks des fonds utilisent généralement la version en rendement total, tandis que les médias citent généralement la version en cours.

Quelle contribution les dividendes apportent-ils au rendement du S&P 500 ?

Sur la période de 10-year se terminant le 31 juillet 2026, le tracker utilisé ici a affiché un rendement de 244.3% sur la base des cours, contre 304.5% avec dividendes réinvestis. Sur une seule année civile, l’écart est bien plus faible, de l’ordre de 1.9 points dans 2007.

Mon compte-titres affiche-t-il le rendement des cours ou le rendement total ?

Les dividendes en espèces sont crédités sur le compte. Le solde les inclut donc déjà. La colonne de gain d’une position compare souvent uniquement le cours actuel avec le cost basis, ce qui correspond à un rendement fondé sur les cours. Les deux mesures diffèrent exactement du montant des dividendes perçus, sauf si un plan de réinvestissement a servi à acheter des actions supplémentaires entre-temps.

Un total return swap est-il la même chose que le rendement total ?

Non. Un total return swap est un contrat dérivé bilatéral qui échange l’ensemble de la performance économique d’un actif contre un taux de financement. Le rendement total, au sens des indices, est une convention de mesure de la performance. Les deux expressions renvoient à la même idée sous-jacente, celle des cours augmentés des revenus, mais elles désignent des instruments sans rapport.

Pourquoi un fonds paraît-il plus performant lorsqu’il est comparé à un indice de cours ?

Le chiffre publié par le fonds inclut ses dividendes, tandis qu’un indice de cours exclut les siens. La comparaison donne ainsi au fonds une avance égale au flux de dividendes du benchmark, soit 251.9 points de pourcentage sur la période de 20-year mentionnée ci-dessus.


Chaque chiffre présenté ici provient d’une requête stockée et versionnée, exécutée sur les cours de clôture quotidiens et les données de dividendes publiées. Ouvrez n’importe quel panneau pour consulter le SQL, ou reproduisez la même comparaison entre rendement fondé sur les cours et rendement total sur un ticker que vous suivez dans le terminal Strasmore.

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