תשואת מחיר לעומת תשואה כוללת: הפער האמיתי
תשואת המחיר של S&P 500 אינה כוללת דיבידנדים. גלו כיצד השקעה מחדש יוצרת פער מצטבר לאורך 20 שנה, ומתי משתמשים בכל גרסה למדידת ביצועים.
תשואת מחיר לעומת תשואה כוללת היא ההבדל בין מה שמציג גרף שוק לבין מה שהרוויח בפועל מי שהחזיק באותה פוזיציה. תשואת המחיר כוללת רק את השינוי במחיר. התשואה הכוללת מוסיפה בחזרה כל דיבידנד, כשהוא מושקע מחדש במחיר ביום האקס. כך כל תשלום יכול להיצבר לצד המניות שהניבו אותו.
רמת ה־S&P 500 המופיעה בכותרות החדשות היא מדד מחיר. מדד התשואה הכוללת המקביל לו מחזיק באותן חברות ומשקיע מחדש את הדיבידנדים. על פני שנה אחת, שני המדדים נראים כמעט זהים. על פני עשרים שנה, הם מתארים תוצאות שונות מאוד, והפער ביניהם גדול מכפי שהתשואה השנתית עשויה לרמוז.
מה ההבדל בין תשואת מחיר לתשואה כוללת?
תשואת מחיר היא מחיר הסיום חלקי מחיר הפתיחה, פחות אחד. כל רמת מדד המצוטטת בטלוויזיה וכל גרף מחיר שגללתם בו אי־פעם מציגים את הנתון הזה.
תשואה כוללת מבצעת את אותו חישוב, אך משתמשת בכל דיבידנד במזומן לרכישת מניות נוספות במחיר ביום האקס-דיבידנד. טבלאות ביצועי קרנות ומדדי הייחוס שלפיהם נמדדות הקרנות משתמשים בגרסה הזו.
דוגמה היפותטית ממחישה את המנגנון. נניח שרכשתם מניה ב-$100, היא משלמת $2 בשנה, ומכרתם אותה שנה לאחר מכן ב-$105. תשואת המחיר היא 5%. התשואה הכוללת היא בערך 7%. השנה הראשונה אינה חריגה. אפקט הריבית דריבית הוא שמצדיק את ההבחנה ואת העמוד הנפרד: הדיבידנד בסך $2, שהושקע מחדש, רוכש חלק ממניה נוספת; החלק הזה מניב דיבידנד משלו בשנה שלאחר מכן, ושתי הסדרות מתרחקות זו מזו בקצב מואץ.
הבהרה אחת לפני הנתונים. Total return swap הוא חוזה נגזר שבו צד אחד מעביר לצד האחר את מלוא הכלכלה של נכס, בתמורה לריבית מימון. הוא חולק שם בלבד, ולא שום דבר אחר, עם מוסכמת המדדים המתוארת להלן. המשך העמוד עוסק במדדים ובקרנות.
מה גודל הפער ב-S&P 500?
השקעה של 10,000 דולר בקרן העוקבת הגדולה ביותר אחר S&P 500 בסוף 2005, והחזקה בה עד 31 ביולי 2026. בשורה הראשונה כל דיבידנד נמשך ביום שבו התקבל. בשורה השנייה כל דיבידנד הושקע מחדש במחיר הסגירה של אותו יום.
ה-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 שורות, אותם מספרים קטנים הם מלוא המרחק בין שני הקווים בתרשים הראשון. השקעה מחדש של דיבידנד היא גם רכישה אוטומטית במחיר השורר באותו יום, קרובת משפחה של מיצוע עלות בדולרים. מאותה סיבה, תשואת הדיבידנד של S&P 500 מוצגת כמספר מתון, אף שבחלונות זמן ארוכים היא משפיעה הרבה יותר מכפי שגודלה מרמז.
אילו מניות מציגות את הפער הגדול ביותר?
הפער עוקב אחר התשואה: חברה שמחזירה למשקיע סכום גדול יותר עבור כל דולר ממחיר המניה מעניקה לו סכום גדול יותר להשקעה מחדש. מדובר בשבע שמות מוכרים לאורך עשר השנים עד 31 ביולי 2026, במונחים שנתיים כדי לאפשר השוואה בין התקופות.
ה-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" או הערה בנוסח "net dividends reinvested" באותיות הקטנות — כולם מציינים שהדיבידנדים נכללים בחישוב.
- כלי תקשורת פיננסיים ומסכי ציטוטים משתמשים בתשואת מחיר. המשפט "מדד S&P 500 ננעל בעלייה של 0.4%" מתאר שינוי במחיר.
- כרטיסיות ביצועים בחשבונות ברוקראז' מציגות בדרך כלל תשואה כוללת, משום שהמזומן אכן התקבל בחשבון. עמודת הרווח של פוזיציה יחידה מציגה לעיתים קרובות את שינוי המחיר ביחס ל-cost basis, וזה אינו אותו נתון.
- בדיקות לאחור ותיאורי אסטרטגיות משתמשים בגרסה שסיפק מקור הנתונים של המחבר. זו הסיבה לרבים מרישומי הביצועים המנופחים בשקט.
אי-ההתאמה החשובה היא הצבת התשואה הכוללת של קרן לצד מדד מחיר. הקרן מקבלת קרדיט על הדיבידנדים שלה, ואילו המדד אינו מקבל קרדיט על הדיבידנדים שלו. כך הקרן מקבלת יתרון פתיחה השווה לכל זרם הדיבידנדים של המדד. בחלון 20-year שמופיע לעיל, טעות ההשוואה הזו שווה ל-251.9 נקודות אחוז, ואף אחת מהן לא נבעה ממנהל הקרן. השוואה על בסיס זהה מציבה תשואה כוללת לצד תשואה כוללת. כיצד נמדדות תשואות חודשיות מציג את אותו חישוב ברמה החודשית, ו-החמצת הימים הטובים ביותר מראה מה קורה לקו המחיר כאשר מוציאים ממנו קומץ ימי מסחר.
כיצד נבנים הנתונים האלה
- המחירים הם מחירי הסגירה היומיים של המסחר הרגיל. הדיבידנדים הם חלוקות מזומן שדווחו, כאשר כל אחד מהם מושקע מחדש במחיר הסגירה בתאריך האקס-דיבידנד שלו. זו המתודולוגיה המקובלת לבניית סדרת תשואה כוללת.
- החלון משתרע מדצמבר 2005 עד 31 ביולי 2026 — התקופה המכוסה בהיסטוריית מחירי ה-intraday שעליה מבוססים הלוחות האלה. חלון ארוך יותר מרחיב את הפער עוד יותר.
- קרן העוקבת אחר המדד משמשת תחליף למדד עצמו, ולכן העמלות וגרירת המזומן כלולות בנתונים האלה. תשואת המחיר בשנה קלנדרית נמדדת מהנעילה הראשונה של השנה ועד לנעילה האחרונה שלה, ולכן היא אינה כוללת את השינוי במושב המסחר הראשון.
שאלות ותשובות: תשואת מחיר לעומת תשואה כוללת
האם S&P 500 הוא מדד מחיר או מדד תשואה כוללת?
המספר המרכזי הוא מדד מחיר: הוא עוקב אחר שווי השוק של מניות המדד ומתעלם מהדיבידנדים שלהן. קיימת גם גרסה של אותו מדד המודדת תשואה כוללת ומשקיעה מחדש את הדיבידנדים. מדדי הייחוס של קרנות משתמשים בדרך כלל בגרסת התשואה הכוללת, ואילו הסיקור החדשותי מצטט בדרך כלל את גרסת המחיר.
עד כמה הדיבידנדים מוסיפים לתשואת S&P 500?
במהלך התקופה בת 10-year שהסתיימה ב־31 ביולי 2026, המוצר העוקב שנבחן כאן הניב 244.3% לפי תשואת המחיר, לעומת 304.5% כאשר הדיבידנדים הושקעו מחדש. בתוך שנה קלנדרית אחת התרומה קטנה בהרבה, כ־1.9 נקודות מתוך 2007.
האם חשבון הברוקראז' שלי מציג תשואת מחיר או תשואה כוללת?
דיבידנדים במזומן נכנסים לחשבון, ולכן היתרה עצמה כבר כוללת אותם. עמודת הרווח של פוזיציה משווה לעיתים קרובות רק בין המחיר הנוכחי לבין בסיס העלות שלך, ולכן היא משקפת תשואת מחיר. שני הנתונים יהיו שונים בדיוק בגובה הדיבידנדים שהתקבלו, אלא אם תוכנית השקעה מחדש רכשה מניות נוספות לאורך הדרך.
האם עסקת total return swap זהה לתשואה כוללת?
לא. total return swap הוא חוזה נגזר דו־צדדי שמחליף את מלוא הכלכלה של נכס תמורת ריבית מימון. תשואה כוללת במובן של מדד היא מוסכמה למדידת ביצועים. הניסוח הדומה מתייחס לאותו רעיון בסיסי של מחיר בתוספת הכנסה, אך מדובר במכשירים שאינם קשורים זה לזה.
מדוע קרן נראית טובה יותר כאשר משווים אותה למדד מחיר?
הנתון שהקרן מפרסמת כולל את הדיבידנדים שלה, ואילו מדד מחיר אינו כולל את הדיבידנדים שלו. ההשוואה מעניקה לקרן יתרון התחלתי בגובה תזרים הדיבידנדים של מדד הייחוס, 251.9 נקודות אחוז במהלך התקופה בת 20-year שצוינה לעיל.
כל נתון כאן מבוסס על שאילתה שמורה ומנוהלת בגרסאות, המשתמשת בשערי סגירה יומיים וברישומי דיבידנדים שהוגשו. פתחו כל חלונית כדי לקרוא את קוד ה־SQL, או הריצו את אותה השוואה בין תשואת מחיר לתשואה כוללת עבור ticker שאתם עוקבים אחריו במסוף Strasmore.