पोर्टफोलिओ dividend yield कसा मोजावा
पोर्टफोलिओ dividend yield काढण्यासाठी एकूण वार्षिक incomeला market valueने भागा. Yield columnची साधी सरासरी दिशाभूल का करते आणि योग्य weighted average कसा वापरावा ते जाणून घ्या.
तुमच्या पोर्टफोलिओचा dividend yield ही एकच संख्या असते: तुमच्या holdingsकडून मिळणारे अपेक्षित एकूण वार्षिक dividend income, त्या holdingsच्या एकूण market valueने भागलेले. दुसऱ्या पद्धतीने सांगायचे तर, हा प्रत्येक holdingच्या yieldचा market-value-weighted average असतो. प्रत्येक holdingचे weight म्हणजे त्याची dollar value एकूण पोर्टफोलिओ valueचा किती भाग आहे ते. Brokerage screenवरील yield columnची साधी सरासरी वेगळी संख्या असते आणि बहुतेक वास्तविक पोर्टफोलिओमध्ये तीच आकर्षक दिसणारी संख्या असते.
पोर्टफोलिओ dividend yield कसा मोजावा
प्रत्येक positionसाठी sharesना प्रति-share वार्षिक dividendने गुणा. त्यामुळे त्या positionचे dollarsमधील वार्षिक income मिळते. सर्व positionsचे income एकत्र करा. त्यानंतर प्रत्येक positionमधील shares × price यांची बेरीज करून मिळणाऱ्या एकूण रकमेने भागा आणि 100ने गुणा. चार holdings असोत किंवा चाळीस, संपूर्ण गणना एवढीच आहे.
हे दोन समान पद्धतींनी लिहिता येते:
- एकूण वार्षिक income ÷ पोर्टफोलिओची एकूण market value.
- सर्व holdingsसाठी weight × yield यांची बेरीज; येथे weight म्हणजे position value ÷ पोर्टफोलिओ value.
दुसऱ्या मांडणीत साधी सरासरी कुठे चुकते हे दिसते. दोन्ही पद्धतींमध्ये प्रत्येक holdingचा समावेश असतो. मात्र योग्य पद्धतीत प्रत्येक holdingला समान मत न देता त्याच्या dollar valueनुसार weight दिले जाते. पोर्टफोलिओचा भाग म्हणून मोजलेली cash रक्कमही denominatorमध्ये असली पाहिजे. ती वगळल्यास incomeमध्ये एकही cent वाढत नाही, पण दाखवलेला yield वाढतो. एकाच stockसाठीची हीच गणना समजून घेण्यासाठी dividend yield कसा मोजावा पाहा.
Yield columnची सरासरी तुमचे income का जास्त दाखवते
दोन्ही पद्धतींमधील फरक worked exampleमधून सर्वात स्पष्ट दिसतो. खालील script साधा Python 3 code आहे आणि त्यात काहीही import केलेले नाही. python3 असलेले कोणतेही machine तो चालवू शकते. पाच positions काल्पनिक, गोल आकड्यांमध्ये दिल्या आहेत, जेणेकरून परिणाम स्पष्ट दिसेल: name, share count, 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}%'
)
तो चालवल्यावर दोन मुख्य ओळींमध्ये मोठा फरक दिसतो. पोर्टफोलिओमध्ये $40,000चे stock आहे आणि त्यातून वर्षाला $1,070 income मिळते; weighted yield 2.68% आहे. पाच yieldsची साधी सरासरी 4.00% दाखवते, म्हणजे सुमारे दीडपट जास्त.
Position Eमुळे संपूर्ण फरक स्पष्ट होतो. तिचा yield 9.00% आहे, जो पोर्टफोलिओतील सर्वाधिक आहे, पण तिच्याकडे फक्त $1,000चे stock आहे. ते पोर्टफोलिओच्या valueपैकी 2.5% आणि incomeपैकी 8.4% आहे. साध्या सरासरीत तिला एक-पंचमांश मत मिळते. शेजारी असलेल्या $15,000च्या positionलाही तेवढेच मत मिळते. Yieldचा अर्थ तेवढाच स्पष्ट होतो, जेव्हा त्यामागे असलेली dollar valueही पाहिली जाते.
वास्तविक holdingsमध्ये weighting कसे दिसते
घरगुती पोर्टफोलिओतील dividend-paying stocksचे yields मोठ्या श्रेणीत असतात. त्यामुळे weightingची निवड महत्त्वाची ठरते. खालील panelमध्ये प्रत्येक nameचा trailing yield मोजला आहे. त्यासाठी मागील बारा महिन्यांत जाहीर झालेल्या प्रति-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 DESC10 namesमध्ये, Aug 7, 2026च्या किमतींवर, yields 5.96% ते 0.34% दरम्यान आहेत; 5.96%ला VZ आणि 0.34%ला AAPL. अशा विविध yieldsच्या मिश्रणातून तयार केलेला पोर्टफोलिओ columnच्या मध्यबिंदूच्या जवळच असेल असे नाही. Positionsची dollar values समान असतील तरच तो तिथे येऊ शकतो.
आता त्यांपैकी पाच stocks निश्चित share countsसह पोर्टफोलिओमध्ये घ्या आणि दोन संख्या शेजारीशेजारी पाहा: प्रत्येक holdingचा market valueमधील हिस्सा आणि वार्षिक 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 DESCLive pricesवरील परिणाम scriptमधील patternसारखाच आहे. MSFT ही market valueच्या 31.4% हिस्स्यासह सर्वात मोठी position आहे. ती incomeच्या 10% हिस्स्याचा पुरवठा करते आणि तिचा yield 0.72% आहे. दुसऱ्या टोकाला, VZकडे valueचा 5.9% हिस्सा आहे आणि ती incomeच्या 15.7% हिस्स्याचे payment करते; तिचा yield 5.96% आहे. Yields वेगळे असतील तेव्हा weight आणि income share वेगळे होतात.
एकाच पाच holdingsची दोन्ही पद्धतींनी सरासरी काढल्यास दोन वेगवेगळी उत्तरे मिळतात.
प्रत्येक आकड्यामागील अचूक 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 DESC2.93%वरील उंच रेषा ही Simple average of the five yields संख्या आहे. दुसरी 2.24% दाखवते. यांपैकी केवळ एक संख्या प्रत्यक्ष cashशी संबंधित आहे. Weighted figureला पोर्टफोलिओच्या market valueने गुणल्यास वार्षिक income परत मिळते. साध्या सरासरीसाठी हीच गणना केली तर कोणत्याही statementमध्ये न दिसणारी संख्या मिळते. दिशा रचनात्मक असते: उच्च-yield names छोट्या positions असतील तर साधी सरासरी खऱ्या portfolio yieldपेक्षा जास्त असते; उच्च-yield names मोठ्या positions असतील तर ती कमी असते.
Yield on cost हा portfolio yield नाही
Yield on costमध्ये current annual dividendला तुम्ही दिलेल्या खरेदी किमतीने भागले जाते. आजच्या position valueने नाही. $20ला खरेदी केलेली position आता $80वर trade होत असेल आणि तिचा वार्षिक dividend प्रति share $1.00 असेल, तर yield on cost 5.00% दिसतो. Current yield मात्र 1.25% असतो. Dividendची dollar रक्कम समान आहे. फक्त denominator बदलला आहे.
दोन्ही संख्या योग्य आहेत आणि त्या वेगवेगळ्या प्रश्नांची उत्तरे देतात. Denominatorमध्ये current market value वापरल्यास आज पोर्टफोलिओ किती yield देतो हे कळते. हीच संख्या चांगला dividend yield किंवा Treasury billशी तुलना करता येते. Denominatorमध्ये cost basis वापरल्यास भूतकाळातील खरेदीबद्दल माहिती मिळते. अडचण तेव्हा सुरू होते, जेव्हा एकाच portfolio totalमध्ये दोन्ही मिसळले जातात: अलीकडे घेतलेल्या holdingsसाठी current yield आणि दशकभर ठेवलेल्या holdingsसाठी yield on cost. अशा मिश्रणामुळे income portfolioचा दिसणारा yield अनेकदा दुप्पट होतो आणि brokerच्या कोणत्याही reportशी जुळत नाही. Dividend yield trapsमध्ये याच्या उलट्या भ्रमाचे वर्णन आहे: किंमत मोठ्या प्रमाणात घसरल्यानंतर दिसणारा उच्च yield.
Trailing किंवा forward inputsमुळे उत्तर बदलते
वरील प्रत्येक figure numeratorमध्ये कोणती dividend number वापरली आहे यावर अवलंबून असते. Trailing yieldमध्ये प्रत्यक्षात जाहीर झालेल्या मागील बारा महिन्यांतील paymentsची बेरीज केली जाते. Forward yieldमध्ये सर्वात अलीकडील paymentचे annualization केले जाते. सामान्यतः यासाठी शेवटची quarterly रक्कम चारने गुणली जाते. एखाद्या nameने payout बदलला असेल किंवा वर्षात special distribution दिले असेल तर हे दोन्ही आकडे वेगळे असतात. एक मोठी holdingदेखील संपूर्ण portfolio totalमध्ये लक्षणीय बदल करू शकते. येथील panelsमध्ये trailing inputs वापरले आहेत. प्रत्येक पद्धत कधी वापरावी हे Trailing vs forward dividend yieldमध्ये स्पष्ट केले आहे.
Yield हा दर आहे; cash एकत्रित paymentsमध्ये येतो
Weighted yield हा वार्षिक दर आहे. तो payment schedule नाही. हीच पाच positions वर्षभरातील काही ठरावीक महिन्यांत clustered payments देतात. कारण बहुतेक US कंपन्या quarterly ex-dividend होतात आणि त्यांचे 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 monthमागील वर्षात cash 12 वेगवेगळ्या महिन्यांत मिळाला. त्यांपैकी सर्वात अलीकडील महिना Jul 2026 होता आणि त्यात $107.76 मिळाले. काही टक्के portfolio yieldवरून पैसे कोणत्या महिन्यात मिळतील हे कळत नाही. म्हणून monthly figureवर आधारित income planमध्ये rateसोबत calendarही आवश्यक असतो. या portfolio numbersची तुलना ज्या व्यापक बाजारातील पातळीशी केली जाते, त्यासाठी S&P 500 dividend yield पाहा.
वारंवार विचारले जाणारे प्रश्न
माझ्या संपूर्ण पोर्टफोलिओचा dividend yield कसा मोजू?
प्रत्येक holdingचे वार्षिक dividend income जोडा. म्हणजे sharesना प्रति-share वार्षिक dividendने गुणा. त्यानंतर प्रत्येक holdingची market value जोडा. म्हणजे sharesना priceने गुणा. एकूण incomeला एकूण valueने भागा आणि 100ने गुणा. मिळणारा परिणाम हा तुमच्या holdingsच्या yieldsचा market-value-weighted average असतो.
माझ्या holdingsच्या yieldsची सरासरी portfolio yieldपेक्षा जास्त का आहे?
साधी सरासरी प्रत्येक positionला एक मत देते. Portfolio yield प्रत्येक positionला तिच्या dollar valueच्या प्रमाणात मत देते. सर्वाधिक yield असलेले names तुमच्या सर्वात छोट्या positions असतील तर साधी सरासरी प्रत्यक्ष पोर्टफोलिओ देत असलेल्या yieldपेक्षा जास्त येते. काही वेळा ती सुमारे दीडपट असू शकते.
Portfolio dividend yieldमध्ये cash मोजावी का?
Cashचा पोर्टफोलिओचा भाग म्हणून विचार करत असाल तर ती zero dividendसह denominatorमध्ये असली पाहिजे. त्यामुळे yield कमी होतो. Cash वगळल्यास केवळ invested sleeveचा yield दाखवला जातो. दोन्हीपैकी कोणतीही पद्धत वापरता येते, पण प्रत्येक वेळी एकच पद्धत वापरणे आवश्यक आहे.
Yield on cost आणि माझ्या portfolio yieldमध्ये फरक नाही का?
फरक आहे. Yield on costमध्ये आजच्या dividendला अनेक वर्षांपूर्वी दिलेल्या खरेदी किमतीने भागले जाते. त्यामुळे stockची किंमत वाढली की तो वाढतो. Portfolio yieldमध्ये current market value वापरली जाते. हीच संख्या तुमच्या सध्याच्या holdingsमधून मिळणाऱ्या incomeशी संबंधित असते.
एक high-yield stock जोडल्यास portfolio yield मोठ्या प्रमाणात वाढतो का?
तो त्यातील dollar valueच्या प्रमाणातच वाढतो. पोर्टफोलिओच्या 2.5% valueइतका 9% yield देणारा stock weighted yieldमध्ये सुमारे 0.2 percentage pointsची भर घालतो (0.09 × 0.025). Yield columnच्या सरासरीवर त्याचा परिणाम काहीही असो.
येथील प्रत्येक panelमध्ये ते तयार करणारा अचूक SQL दिलेला आहे. त्यामुळे weighting line by line तपासता येते. तुमच्या स्वतःच्या names आणि share countsवर हीच गणना चालवण्यासाठी Strasmore terminalवर plain Englishमध्ये विनंती करा.