पोर्टफोलियो dividend yield कैसे निकालें
पोर्टफोलियो dividend yield निकालने के लिए कुल वार्षिक income को कुल market value से विभाजित करें। साधारण yield average भ्रामक हो सकता है, इसलिए market-value weighting अपनाएँ।
आपके पोर्टफोलियो का dividend yield एक ही संख्या है: आपकी holdings से मिलने वाली कुल वार्षिक dividend income को उन holdings के कुल market value से विभाजित करने पर जो परिणाम आता है। दूसरे तरीके से कहें तो यह individual yields का market-value-weighted average है। इसमें हर holding का weight, पूरे पोर्टफोलियो में उसके dollar value का हिस्सा होता है। Brokerage screen पर yield column का साधारण average अलग संख्या होता है। अधिकांश वास्तविक पोर्टफोलियो में वही आकर्षक दिखने वाली संख्या होती है।
पोर्टफोलियो dividend yield की गणना कैसे करें
हर position के लिए shares को प्रति share वार्षिक dividend से गुणा करें। इससे उस position की वार्षिक income dollars में मिलती है। इन incomes को जोड़ें। फिर हर position में shares को price से गुणा करके मिले values का कुल योग निकालें। कुल income को कुल value से विभाजित करें और 100 से गुणा करें। चार holdings हों या चालीस, पूरी गणना यही है।
इसे लिखने के दो समान तरीके हैं:
- कुल वार्षिक income को पोर्टफोलियो के कुल market value से विभाजित करना।
- सभी holdings के लिए weight को yield से गुणा करके उनका योग। यहां weight, position value को पोर्टफोलियो value से विभाजित करने पर मिलता है।
दूसरा रूप दिखाता है कि साधारण average कहां गलत होता है। दोनों तरीकों में हर holding शामिल होती है। लेकिन सही तरीके में हर holding को एक समान vote नहीं, बल्कि उसके dollars के अनुपात में weight मिलता है। यदि आप cash को पोर्टफोलियो का हिस्सा मानते हैं, तो उसे denominator में शामिल करें। Cash को छोड़ने से income में एक cent भी जोड़े बिना दिखने वाला yield बढ़ जाता है। केवल एक stock की गणना के लिए dividend yield की गणना कैसे करें देखें।
Yield column का average आपकी income को अधिक क्यों दिखाता है
दोनों तरीकों का अंतर एक worked example में सबसे आसानी से दिखता है। नीचे दिया गया script plain Python 3 है और इसमें कुछ भी import नहीं किया गया है। python3 वाले किसी भी machine पर यह चल जाएगा। पांचों positions काल्पनिक round numbers हैं, जिन्हें प्रभाव स्पष्ट करने के लिए चुना गया है: नाम, shares की संख्या, price और प्रति share वार्षिक dividend।
#!/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}%'
)
इसे चलाने पर दोनों headline lines में स्पष्ट अंतर दिखता है। पोर्टफोलियो में $40,000 के stocks हैं और उनसे सालाना $1,070 मिलते हैं। Weighted yield 2.68% है। पांच yields का simple average 4.00% दिखाता है, जो लगभग डेढ़ गुना है।
Position E पूरी बात स्पष्ट करती है। $1,000 के stock पर इसका yield 9.00% है, जो पोर्टफोलियो में सबसे अधिक है। यह पोर्टफोलियो value का 2.5% और income का 8.4% है। Simple average में इसे एक-पांचवां vote मिलता है। यही vote उसके पास वाली $15,000 की position को भी मिलता है। Yield figure तभी अर्थपूर्ण होता है जब उसके पीछे की dollar value भी देखी जाए।
वास्तविक holdings में weighting कैसी दिखती है
Household dividend-paying stocks के yields काफी अलग-अलग होते हैं। इसी वजह से weighting का चुनाव महत्वपूर्ण हो जाता है। नीचे का panel हर नाम का trailing yield निकालता है। इसके लिए पिछले twelve months में घोषित प्रति share dividends को सबसे हाल के daily close से विभाजित किया गया है।
हर आंकड़े के पीछे का पूरा 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 names में, जिनकी prices Aug 7, 2026 के जरिए ली गई हैं, yields 5.96% से VZ तक हैं और 0.34% से AAPL तक गिरते हैं। इस तरह के spread से बना पोर्टफोलियो column के midpoint के आसपास नहीं होगा, जब तक positions dollar value में लगभग समान न हों।
अब इनमें से पांच को fixed share counts वाले पोर्टफोलियो में रखें। फिर दो numbers को साथ-साथ देखें: market value में हर holding का हिस्सा और annual income में उसका हिस्सा।
हर आंकड़े के पीछे का पूरा 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 DESCScript में दिखा pattern live prices पर भी दोहरता है। MSFT market value की 31.4% के साथ सबसे बड़ी position है। यह 10% income देती है और इसका yield 0.72% है। दूसरी ओर, VZ का value में हिस्सा 5.9% है और यह income का 15.7% देती है। इसका yield 5.96% है। Yields अलग होने पर weight और income share अलग हो जाते हैं।
इन पांच holdings का दो तरीकों से average निकालने पर दो अलग answers मिलते हैं।
हर आंकड़े के पीछे का पूरा 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ऊंची line, 2.93% पर, Simple average of the five yields figure है। दूसरी line 2.24% दिखाती है। इनमें केवल एक cash income से संबंधित है। Weighted figure को पोर्टफोलियो के market value से गुणा करने पर annual income मिलती है। Simple average के साथ यही करने पर ऐसा number मिलता है जो किसी statement में कभी नहीं दिखेगा। दिशा संरचनात्मक है। जब अधिक yield वाली names छोटी positions होती हैं, तो simple average वास्तविक portfolio yield से ऊपर रहता है। जब अधिक yield वाली names बड़ी positions होती हैं, तो simple average उससे नीचे रहता है।
Yield on cost, portfolio yield नहीं है
Yield on cost, current annual dividend को उस price से विभाजित करता है जो आपने भुगतान की थी। यह position के आज के value से विभाजित नहीं होता। $20 पर खरीदी गई position यदि अब $80 पर trade कर रही हो और प्रति share सालाना $1.00 दे रही हो, तो उसका yield on cost 5.00% होगा। Current yield 1.25% होगा। Dividend की dollar राशि समान है। केवल denominator बदला है।
दोनों numbers वैध हैं, लेकिन वे अलग सवालों के जवाब देते हैं। Denominator में current market value यह बताती है कि पोर्टफोलियो आज कितना yield दे रहा है। यही figure एक अच्छा dividend yield या Treasury bill से तुलना योग्य है। Denominator में cost basis आपको अतीत में की गई खरीद के बारे में बताता है। समस्या तब शुरू होती है जब एक ही portfolio total में दोनों को मिला दिया जाता है: हाल की purchases पर current yield और एक दशक से रखी holdings पर yield on cost। ऐसा मिश्रण income portfolio का apparent yield नियमित रूप से दोगुना दिखाता है और broker की किसी report से मेल नहीं खाता। Dividend yield traps इसका उलटा भ्रम समझाता है: price में तेज गिरावट के बाद ऊंचा दिखने वाला yield।
Trailing या forward inputs से answer बदलता है
ऊपर की हर figure इस बात पर निर्भर करती है कि numerator में कौन-सी dividend number डाली गई है। Trailing yield में पिछले twelve months में वास्तव में घोषित payments का योग लिया जाता है। Forward yield सबसे हाल के payment को annualize करता है। आमतौर पर इसमें latest quarterly amount को four से गुणा किया जाता है। जिस name ने payout बदला हो या साल के दौरान special distribution दिया हो, वहां दोनों अलग होंगे। एक बड़ी holding अकेले ही portfolio total को काफी बदल सकती है। यहां के panels trailing inputs का उपयोग करते हैं। Trailing बनाम forward dividend yield बताता है कि इनमें से कौन-सा विकल्प कब सही है।
Yield एक rate है, cash एक साथ आने वाली राशियों में मिलता है
Weighted yield एक annual rate है। यह payment schedule नहीं है। यही पांच positions कुछ ही clustered months में payments देती हैं। अधिकांश US companies quarterly ex-dividend होती हैं और उनके payment calendars मिलते-जुलते होते हैं।
हर आंकड़े के पीछे का पूरा 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 monthTrailing year में cash 12 अलग-अलग months में आया। इनमें सबसे हाल का month Jul 2026 था, जिसमें $107.76 मिले। कुछ प्रतिशत का portfolio yield यह नहीं बताता कि पैसा किस month में आएगा। इसलिए monthly income पर आधारित plan में rate के साथ calendar भी देखना चाहिए। इन portfolio numbers की market-wide तुलना के लिए S&P 500 dividend yield देखें।
अक्सर पूछे जाने वाले प्रश्न
मैं अपने पूरे पोर्टफोलियो का dividend yield कैसे निकालूं?
हर holding की annual dividend income जोड़ें। इसके लिए shares को प्रति share annual dividend से गुणा करें। फिर हर holding का market value जोड़ें। इसके लिए shares को price से गुणा करें। Total income को total value से विभाजित करें और 100 से गुणा करें। परिणाम आपकी holdings के yields का market-value-weighted average होगा।
मेरी holdings के yields का average मेरे portfolio yield से अधिक क्यों है?
Simple average हर position को एक vote देता है। Portfolio yield हर position को उसके dollars के अनुपात में vote देता है। जब सबसे अधिक yield वाली names आपकी सबसे छोटी positions होती हैं, तो simple average उस yield से ऊपर रहता है जो पोर्टफोलियो वास्तव में देता है। अंतर कभी-कभी आधे से भी अधिक हो सकता है।
क्या cash को portfolio dividend yield में शामिल किया जाता है?
यदि आप cash को पोर्टफोलियो का हिस्सा मानते हैं, तो उसे zero dividend के साथ denominator में शामिल करें। इससे yield कम होता है। उसे बाहर रखने पर केवल invested sleeve का yield मिलता है। दोनों conventions सही हैं, बशर्ते हर बार एक ही convention लागू करें।
क्या yield on cost मेरे portfolio yield के समान है?
नहीं। Yield on cost आज के dividend को उस price से विभाजित करता है जो आपने वर्षों पहले चुकाई थी। इसलिए stock price बढ़ने पर यह बढ़ता है। Portfolio yield current market value का उपयोग करता है। यही वह figure है जो आपकी मौजूदा holdings से मिलने वाली income से जुड़ता है।
क्या एक high-yield stock जोड़ने से मेरा portfolio yield काफी बढ़ता है?
केवल उसमें लगाए गए dollars के अनुपात में। यदि 9% yield वाली holding पोर्टफोलियो का 2.5% है, तो वह weighted yield में लगभग 0.2 percentage points जोड़ती है। गणना 0.09 को 0.025 से गुणा करके होती है। Yield column के average पर इसका प्रभाव अलग हो सकता है।
यहां दिए गए हर panel में उसे बनाने वाली exact SQL मौजूद है। इसलिए weighting को line by line verify किया जा सकता है। अपने names और share counts की list पर यही calculation चलाने के लिए Strasmore terminal पर plain English में अनुरोध करें।