محاسبه بازده سود تقسیمی پرتفوی با میانگین وزنی
بازده سود تقسیمی پرتفوی از تقسیم کل درآمد سالانه بر ارزش بازار بهدست میآید؛ میانگین ساده ستون بازده گمراهکننده است. فرمول درست را با مثال بیاموزید.
بازده سود تقسیمی پرتفوی شما یک عدد است: کل درآمد سالانه سود تقسیمی که قرار است داراییهایتان پرداخت کنند، تقسیم بر ارزش بازار کل آن داراییها. به بیان دیگر، این رقم میانگین بازدههای تکتک داراییها با وزندهی بر اساس ارزش بازار است؛ وزن هر دارایی، ارزش دلاری آن بهعنوان سهمی از کل پرتفوی است. میانگین ستون بازده در صفحه کارگزاری عدد دیگری است و در بیشتر پرتفویهای واقعی، همان عدد اغراقآمیزتر خواهد بود.
نحوه محاسبه بازده سود تقسیمی پرتفوی
برای هر موقعیت، تعداد سهام را در سود تقسیمی سالانه هر سهم ضرب کنید. حاصل، درآمد سالانه آن موقعیت به دلار است. این درآمدها را با هم جمع کنید، حاصل را بر مجموع تعداد سهام ضربدر قیمت در همه موقعیتها تقسیم کنید و در 100 ضرب کنید. کل محاسبه همین است؛ چه پرتفوی چهار دارایی داشته باشد و چه 40 دارایی.
این فرمول را میتوان به دو شکل معادل نوشت:
- درآمد سالانه کل تقسیم بر ارزش بازار کل پرتفوی.
- مجموع حاصلضرب وزن هر دارایی در بازده آن، که در آن وزن برابر است با ارزش موقعیت تقسیم بر ارزش پرتفوی.
شکل دوم نشان میدهد میانگین ساده کجا دچار خطا میشود. همه داراییها در هر دو روش حضور دارند، اما در روش درست، هر دارایی به اندازه ارزش دلاری خود وزن میگیرد، نه اینکه هرکدام فقط یک رأی داشته باشند. وجه نقدی که آن را جزو پرتفوی حساب میکنید، باید در مخرج نیز لحاظ شود. حذف وجه نقد، بازده نمایشدادهشده را بدون افزودن حتی یک سنت درآمد افزایش میدهد. برای نسخه مربوط به یک سهم از این محاسبه، به نحوه محاسبه بازده سود تقسیمی مراجعه کنید.
چرا میانگین ستون بازده، درآمد شما را بیشتر از واقعیت نشان میدهد
تفاوت میان دو روش در یک مثال محاسباتی روشنتر دیده میشود. اسکریپت زیر با Python 3 خالص و بدون واردکردن هیچ کتابخانهای نوشته شده است. این اسکریپت روی هر دستگاهی که python3 داشته باشد اجرا میشود. پنج موقعیت این مثال فرضی و اعداد آنها گرد شدهاند تا اثر تفاوت بهوضوح دیده شود: نام سهم، تعداد سهام، قیمت و سود تقسیمی سالانه هر سهم.
#!/usr/bin/env python3
# each row: (name, shares, price, annual dividend per share)
holdings = [
('A', 200, 50.00, 1.50),
('B', 150, 100.00, 2.00),
('C', 100, 80.00, 0.80),
('D', 300, 20.00, 1.00),
('E', 100, 10.00, 0.90),
]
total_value = sum(sh * px for _, sh, px, _ in holdings)
total_income = sum(sh * dps for _, sh, _, dps in holdings)
naive = sum(100 * dps / px for _, _, px, dps in holdings) / len(holdings)
print(f'market value : ${total_value:,.2f}')
print(f'annual income : ${total_income:,.2f}')
print(f'portfolio yield : {100 * total_income / total_value:.2f}%')
print(f'average of yields : {naive:.2f}%')
for name, sh, px, dps in holdings:
value = sh * px
income = sh * dps
print(
f'{name} weight {100 * value / total_value:5.1f}%'
f' yield {100 * dps / px:5.2f}%'
f' income ${income:8,.2f}'
f' share of income {100 * income / total_income:5.1f}%'
)
اسکریپت را اجرا کنید؛ دو خط اصلی نتیجه بهطور محسوسی با یکدیگر تفاوت دارند. ارزش سهام پرتفوی 40٬000 دلار است و سالانه 1٬070 دلار درآمد ایجاد میکند؛ بنابراین بازده وزنی آن 2٫68٪ است. میانگین ساده پنج بازده، 4٫00٪ را نشان میدهد؛ یعنی تقریباً یکونیم برابر رقم واقعی.
موقعیت E تمام ماجرا را توضیح میدهد. این موقعیت با ارزش سهام 1٬000 دلار، بازده 9٫00٪ دارد که بالاترین بازده در پرتفوی است. این سهم 2٫5٪ از ارزش پرتفوی و 8٫4٪ از درآمد آن را تشکیل میدهد. اما در میانگین ساده، یکپنجم وزن را میگیرد؛ درست به اندازه موقعیت 15٬000 دلاری کناری خود. رقم بازده تنها زمانی معنا پیدا میکند که دلارهای پشت آن را نیز در نظر بگیرید.
وزندهی در میان داراییهای واقعی چگونه است
سهمهای سودده خانوارها در دامنه وسیعی از بازدهها قرار دارند و همین موضوع انتخاب روش وزندهی را مهم میکند. پنل زیر بازده دنبالهدار هر سهم را از تقسیم سود تقسیمی هر سهم اعلامشده طی 12 ماه گذشته بر جدیدترین قیمت پایانی روزانه محاسبه میکند.
کد دقیق SQL پشت هر عدد
WITH
last_px AS
(
SELECT
ticker,
toFloat64(argMax(close, date)) AS px,
formatDateTime(max(date), '%b %e, %Y') AS priced_through
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'HD', 'KO', 'PG', 'PEP', 'JNJ', 'XOM', 'CVX', 'VZ')
AND date >= today() - 30
GROUP BY ticker
),
ttm_dps AS
(
SELECT
ticker,
sum(amount) AS dps
FROM
(
SELECT
ticker,
id,
toFloat64(any(cash_amount)) AS amount
FROM global_markets.stocks_dividends
WHERE ticker IN ('AAPL', 'MSFT', 'HD', 'KO', 'PG', 'PEP', 'JNJ', 'XOM', 'CVX', 'VZ')
AND ex_dividend_date > today() - 365
AND ex_dividend_date <= today()
GROUP BY ticker, id
)
GROUP BY ticker
)
SELECT
p.ticker AS symbol,
round(d.dps, 2) AS ttm_dividend_usd,
round(100 * d.dps / p.px, 2) AS yield_pct,
p.priced_through AS priced_through
FROM last_px AS p
INNER JOIN ttm_dps AS d ON d.ticker = p.ticker
ORDER BY yield_pct DESCدر میان این 10 سهم، که قیمتگذاری آنها تا Aug 7, 2026 انجام شده است، بازدهها از 5.96% در VZ تا 0.34% در AAPL متغیر است. پرتفویی که از چنین ترکیبی ساخته شود، مگر آنکه موقعیتها از نظر دلاری برابر باشند، به میانگین ستون بازده نزدیک نخواهد بود.
اکنون پنج سهم از این مجموعه را با تعداد سهام ثابت در یک پرتفوی قرار دهید و دو عدد را در کنار هم بخوانید: سهم هر دارایی از ارزش بازار و سهم آن از درآمد سالانه.
کد دقیق SQL پشت هر عدد
WITH
positions AS
(
SELECT
tupleElement(p, 1) AS ticker,
toFloat64(tupleElement(p, 2)) AS shares
FROM
(
SELECT arrayJoin([('MSFT', 30.), ('PG', 60.), ('XOM', 80.), ('KO', 100.), ('VZ', 60.)]) AS p
)
),
last_px AS
(
SELECT
ticker,
toFloat64(argMax(close, date)) AS px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('MSFT', 'PG', 'XOM', 'KO', 'VZ')
AND date >= today() - 30
GROUP BY ticker
),
ttm_dps AS
(
SELECT
ticker,
sum(amount) AS dps
FROM
(
SELECT
ticker,
id,
toFloat64(any(cash_amount)) AS amount
FROM global_markets.stocks_dividends
WHERE ticker IN ('MSFT', 'PG', 'XOM', 'KO', 'VZ')
AND ex_dividend_date > today() - 365
AND ex_dividend_date <= today()
GROUP BY ticker, id
)
GROUP BY ticker
),
holding AS
(
SELECT
pos.ticker AS ticker,
pos.shares * lp.px AS value_usd,
pos.shares * d.dps AS income_usd
FROM positions AS pos
INNER JOIN last_px AS lp ON lp.ticker = pos.ticker
INNER JOIN ttm_dps AS d ON d.ticker = pos.ticker
)
SELECT
h.ticker AS symbol,
round(100 * h.value_usd / t.total_value, 1) AS weight_pct,
round(100 * h.income_usd / t.total_income, 1) AS income_share_pct,
round(100 * h.income_usd / h.value_usd, 2) AS yield_pct
FROM holding AS h
CROSS JOIN
(
SELECT
sum(value_usd) AS total_value,
sum(income_usd) AS total_income
FROM holding
) AS t
ORDER BY weight_pct DESCالگوی مشاهدهشده در اسکریپت، در قیمتهای زنده نیز تکرار میشود. MSFT بزرگترین موقعیت است و 31.4% از ارزش بازار را تشکیل میدهد، در حالی که 10% از درآمد را تأمین میکند و بازده آن 0.72% است. در سوی دیگر، VZ تنها 5.9% از ارزش پرتفوی را در اختیار دارد و 15.7% از درآمد را پرداخت میکند؛ بازده آن 5.96% است. هرگاه بازدهها متفاوت باشند، وزن و سهم از درآمد نیز از یکدیگر فاصله میگیرند.
همین پنج دارایی، بسته به روش میانگینگیری، دو پاسخ متفاوت به دست میدهند.
کد دقیق SQL پشت هر عدد
WITH
positions AS
(
SELECT
tupleElement(p, 1) AS ticker,
toFloat64(tupleElement(p, 2)) AS shares
FROM
(
SELECT arrayJoin([('MSFT', 30.), ('PG', 60.), ('XOM', 80.), ('KO', 100.), ('VZ', 60.)]) AS p
)
),
last_px AS
(
SELECT
ticker,
toFloat64(argMax(close, date)) AS px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('MSFT', 'PG', 'XOM', 'KO', 'VZ')
AND date >= today() - 30
GROUP BY ticker
),
ttm_dps AS
(
SELECT
ticker,
sum(amount) AS dps
FROM
(
SELECT
ticker,
id,
toFloat64(any(cash_amount)) AS amount
FROM global_markets.stocks_dividends
WHERE ticker IN ('MSFT', 'PG', 'XOM', 'KO', 'VZ')
AND ex_dividend_date > today() - 365
AND ex_dividend_date <= today()
GROUP BY ticker, id
)
GROUP BY ticker
),
holding AS
(
SELECT
pos.shares * lp.px AS value_usd,
pos.shares * d.dps AS income_usd
FROM positions AS pos
INNER JOIN last_px AS lp ON lp.ticker = pos.ticker
INNER JOIN ttm_dps AS d ON d.ticker = pos.ticker
)
SELECT
tupleElement(m, 1) AS method,
round(tupleElement(m, 2), 2) AS yield_pct
FROM
(
SELECT arrayJoin([
('Market-value weighted portfolio yield', weighted_yield),
('Simple average of the five yields', naive_yield)
]) AS m
FROM
(
SELECT
100 * sum(income_usd) / sum(value_usd) AS weighted_yield,
avg(100 * income_usd / value_usd) AS naive_yield
FROM holding
)
)
ORDER BY yield_pct DESCخط بالاتر، یعنی 2.93%، رقم Simple average of the five yields است. رقم دیگر 2.24% را نشان میدهد. تنها یکی از این دو رقم با وجه نقد واقعی مطابقت دارد. رقم وزنی را در ارزش بازار پرتفوی ضرب کنید تا درآمد سالانه به دست آید. اگر همین کار را با میانگین ساده انجام دهید، به عددی میرسید که هیچ صورتحسابی هرگز نشان نخواهد داد. جهت این اختلاف ساختاری است: وقتی سهمهای با بازده بالاتر، موقعیتهای کوچکتری هستند، میانگین ساده بالاتر از بازده واقعی پرتفوی قرار میگیرد؛ و وقتی سهمهای پربازده موقعیتهای بزرگتری هستند، میانگین ساده پایینتر از آن قرار میگیرد.
بازده بر مبنای بهای تمامشده، بازده پرتفوی نیست
بازده بر مبنای بهای تمامشده، سود تقسیمی سالانه فعلی را بر قیمتی تقسیم میکند که برای سهم پرداختهاید، نه بر ارزشی که موقعیت امروز دارد. موقعیتی را در نظر بگیرید که با قیمت 20 دلار خریداری شده و اکنون با قیمت 80 دلار معامله میشود و همچنان سالانه 1٫00 دلار به ازای هر سهم سود میپردازد. بازده بر مبنای بهای تمامشده 5٫00٪ است، در حالی که بازده فعلی 1٫25٪ خواهد بود. مبلغ دلاری سود تقسیمی تغییری نکرده است؛ فقط مخرج کسر تغییر کرده است.
هر دو عدد معتبرند و به پرسشهای متفاوتی پاسخ میدهند. قرار دادن ارزش بازار فعلی در مخرج به شما میگوید پرتفوی امروز چه بازدهی دارد؛ رقمی که با یک بازده سود تقسیمی مناسب یا با بازده اوراق خزانه قابل مقایسه است. قرار دادن بهای تمامشده در مخرج، اطلاعاتی درباره خریدی میدهد که در گذشته انجام دادهاید. مشکل زمانی آغاز میشود که این دو معیار در یک جمع پرتفوی با هم ترکیب شوند: بازده فعلی برای خریدهای جدید و بازده بر مبنای بهای تمامشده برای داراییهایی که یک دهه نگهداری شدهاند. این ترکیب معمولاً بازده ظاهری یک پرتفوی درآمدی را دو برابر نشان میدهد و با هیچیک از ارقام گزارششده توسط کارگزار مطابقت ندارد. تلههای بازده سود تقسیمی توهم معکوس را بررسی میکند؛ یعنی بازدهی که پس از افت شدید قیمت، بالا به نظر میرسد.
ورودیهای دنبالهدار یا پیشنگر، نتیجه را تغییر میدهند
هر رقم بالا به این بستگی دارد که کدام عدد مربوط به سود تقسیمی در صورت کسر قرار گیرد. بازده دنبالهدار، پرداختهای سود تقسیمی اعلامشده طی 12 ماه گذشته را جمع میکند. بازده پیشنگر، آخرین پرداخت را بهصورت سالانه محاسبه میکند؛ معمولاً با ضرب آخرین مبلغ فصلی در چهار. این دو رقم درباره هر سهمی که پرداخت خود را تغییر داده یا طی سال سود تقسیمی ویژه پرداخت کرده باشد، با یکدیگر تفاوت دارند. حتی یک موقعیت بزرگ میتواند بهتنهایی رقم کل پرتفوی را بهطور معناداری جابهجا کند. پنلهای این مطلب از ورودیهای دنبالهدار استفاده میکنند. بازده سود تقسیمی دنبالهدار در برابر پیشنگر توضیح میدهد که هرکدام چه زمانی انتخاب مناسبی است.
بازده یک نرخ است؛ وجه نقد بهصورت مبالغ مقطعی دریافت میشود
بازده وزنی یک نرخ سالانه است، نه برنامه پرداخت. همین پنج موقعیت، پرداختهای خود را در چند ماه متمرکز انجام میدهند؛ زیرا بیشتر شرکتهای آمریکایی هر فصل در تاریخ بدون سود معامله میشوند و تقویم پرداختهایشان نیز مشابه است.
کد دقیق SQL پشت هر عدد
WITH
positions AS
(
SELECT
tupleElement(p, 1) AS ticker,
toFloat64(tupleElement(p, 2)) AS shares
FROM
(
SELECT arrayJoin([('MSFT', 30.), ('PG', 60.), ('XOM', 80.), ('KO', 100.), ('VZ', 60.)]) AS p
)
),
payments AS
(
SELECT
ticker,
id,
any(ex_dividend_date) AS ex_date,
toFloat64(any(cash_amount)) AS amount
FROM global_markets.stocks_dividends
WHERE ticker IN ('MSFT', 'PG', 'XOM', 'KO', 'VZ')
AND ex_dividend_date > today() - 365
AND ex_dividend_date <= today()
GROUP BY ticker, id
)
SELECT
formatDateTime(toStartOfMonth(pay.ex_date), '%Y-%m') AS month,
formatDateTime(toStartOfMonth(pay.ex_date), '%b %Y') AS month_label,
round(sum(pos.shares * pay.amount), 2) AS income_usd
FROM payments AS pay
INNER JOIN positions AS pos ON pos.ticker = pay.ticker
GROUP BY month, month_label
ORDER BY monthوجه نقد طی سال گذشته در 12 ماه مجزا دریافت شد که جدیدترین آنها Jul 2026 بود و مبلغ آن به $107.76 رسید. بازده چنددرصدی پرتفوی درباره اینکه وجه نقد در کدام ماه دریافت میشود، چیزی نمیگوید. به همین دلیل، برنامه درآمدی مبتنی بر رقم ماهانه باید در کنار نرخ بازده، تقویم پرداخت را نیز در نظر بگیرد. برای سطح بازار که این ارقام پرتفوی با آن مقایسه میشوند، به بازده سود تقسیمی S&P 500 مراجعه کنید.
پرسشهای متداول
چگونه بازده سود تقسیمی کل پرتفوی خود را محاسبه کنم؟
درآمد سالانه سود تقسیمی هر دارایی را جمع کنید؛ یعنی تعداد سهام را در سود تقسیمی سالانه هر سهم ضرب کنید. سپس ارزش بازار هر دارایی را نیز جمع کنید؛ یعنی تعداد سهام را در قیمت ضرب کنید. درآمد کل را بر ارزش کل تقسیم و در 100 ضرب کنید. حاصل، میانگین بازده داراییهای شما با وزندهی بر اساس ارزش بازار است.
چرا میانگین بازده داراییهایم از بازده پرتفوی بیشتر است؟
میانگین ساده به هر موقعیت یک رأی میدهد. بازده پرتفوی به هر موقعیت متناسب با ارزش دلاری آن رأی میدهد. وقتی سهمهای با بالاترین بازده، کوچکترین موقعیتهای شما باشند، میانگین ساده بالاتر از بازده واقعی پرتفوی قرار میگیرد و گاهی تا یکونیم برابر آن میشود.
آیا وجه نقد در بازده سود تقسیمی پرتفوی محاسبه میشود؟
اگر وجه نقد را جزو پرتفوی میدانید، باید آن را با سود تقسیمی صفر در مخرج قرار دهید؛ در این صورت بازده کاهش مییابد. حذف وجه نقد، بازده فقط بخش سرمایهگذاریشده را نشان میدهد. هر دو روش قابل قبولاند، مشروط بر اینکه در هر بار اندازهگیری از یک روش ثابت استفاده کنید.
آیا بازده بر مبنای بهای تمامشده با بازده پرتفوی من یکسان است؟
خیر. بازده بر مبنای بهای تمامشده، سود تقسیمی امروز را بر قیمتی تقسیم میکند که سالها پیش پرداخت کردهاید؛ بنابراین با افزایش قیمت سهم، این بازده نیز بیشتر میشود. بازده پرتفوی از ارزش بازار فعلی استفاده میکند؛ همان رقمی که به درآمد ایجادشده توسط داراییهای فعلی شما مربوط است.
آیا افزودن یک سهم با بازده بالا، بازده پرتفوی من را بهطور محسوسی افزایش میدهد؟
فقط به نسبت ارزش دلاری آن موقعیت. سهمی با بازده 9٪ که 2٫5٪ پرتفوی را تشکیل میدهد، تقریباً 0٫2 واحد درصد به بازده وزنی اضافه میکند؛ یعنی حاصلضرب 0٫09 در 0٫025. این موضوع مستقل از تأثیر آن سهم بر میانگین ستون بازده است.
هر پنل این مطلب، SQL دقیق تولیدکننده خود را دربر دارد؛ بنابراین وزندهی را میتوان خطبهخط بررسی کرد. برای اجرای همین محاسبه روی فهرست نمادها و تعداد سهام خود، درخواستتان را به زبان ساده در پایانه Strasmore مطرح کنید.