పోర్ట్ఫోలియో డివిడెండ్ yield ఎలా లెక్కించాలి
పోర్ట్ఫోలియో డివిడెండ్ yieldను మొత్తం వార్షిక ఆదాయాన్ని market valueతో భాగించి లెక్కించాలి. yield కాలమ్ సగటు ఎందుకు తప్పుదారి పట్టిస్తుందో, సరైన weighted average ఏమిటో తెలుసుకోండి.
మీ పోర్ట్ఫోలియో dividend yield ఒకే సంఖ్య: మీ వద్ద ఉన్న హోల్డింగ్లు సంవత్సరానికి చెల్లించబోయే మొత్తం డివిడెండ్ ఆదాయాన్ని, ఆ హోల్డింగ్ల మొత్తం market valueతో భాగించిన ఫలితం. మరో విధంగా చెప్పాలంటే, ఇది వ్యక్తిగత yieldల market-value-weighted average. ఇందులో ప్రతి హోల్డింగ్కు ఉన్న weight, మొత్తం విలువలో దాని డాలర్ విలువకు సమానం. బ్రోకరేజ్ స్క్రీన్లోని yield కాలమ్ సగటు మాత్రం వేరే సంఖ్య. వాస్తవ పోర్ట్ఫోలియోలలో ఎక్కువగా ఆకర్షణీయంగా కనిపించేది అదే.
పోర్ట్ఫోలియో dividend yieldను ఎలా లెక్కించాలి
ప్రతి position కోసం shares సంఖ్యను ఒక్కో షేరుకు ఉన్న వార్షిక డివిడెండ్తో గుణించండి. దాంతో ఆ position నుంచి వచ్చే వార్షిక ఆదాయం డాలర్లలో లభిస్తుంది. ఈ ఆదాయాలను కలిపి, ప్రతి positionలో shares సంఖ్యను ధరతో గుణించిన విలువల మొత్తంతో భాగించి, 100తో గుణించండి. నాలుగు holdings ఉన్నా, నలభై ఉన్నా లెక్కింపు ఇదే.
దీన్ని సమానమైన రెండు విధాలుగా రాయవచ్చు:
- మొత్తం వార్షిక ఆదాయం ÷ మొత్తం పోర్ట్ఫోలియో market value.
- ప్రతి holdingకు weightను yieldతో గుణించి, అన్ని holdingsపై వచ్చిన మొత్తాన్ని కలపడం. ఇందులో weight = position value ÷ portfolio value.
సాధారణ సగటు ఎక్కడ తప్పుదోవ పట్టిస్తుందో రెండో రూపం చూపిస్తుంది. రెండు విధానాల్లోనూ ప్రతి holding కనిపిస్తుంది. కానీ సరైన విధానంలో ప్రతి holdingకు ఒక్కో ఓటు కాకుండా, దాని డాలర్ విలువకు అనుగుణమైన weight ఉంటుంది. పోర్ట్ఫోలియోలో భాగంగా పరిగణించే cash కూడా denominatorలో ఉండాలి. దాన్ని మినహాయిస్తే ఆదాయం ఒక్క సెంట్ కూడా పెరగకుండా చూపించే yield పెరుగుతుంది. ఒక్క షేరు కోసం చేసే ఈ లెక్కింపుకు dividend yieldను ఎలా లెక్కించాలి చూడండి.
Yield కాలమ్ సగటు మీ ఆదాయాన్ని ఎందుకు ఎక్కువగా చూపిస్తుంది
పని చేసిన ఉదాహరణతో రెండు విధానాల మధ్య తేడా సులభంగా కనిపిస్తుంది. కింది scriptలో ఏదీ import చేయని సాధారణ Python 3 ఉంది. python3 ఉన్న ఏ machineపైనైనా ఇది నడుస్తుంది. ఐదు positions ఊహాత్మక, సులభమైన సంఖ్యలతో ఎంచుకున్నవి. ప్రతి వరుసలో ఒక పేరు, shares సంఖ్య, ధర, ఒక్కో షేరుకు వార్షిక డివిడెండ్ ఉన్నాయి.
#!/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 చెల్లిస్తుంది. దాని weighted yield 2.68%. ఐదు yieldల సాధారణ సగటు 4.00%గా కనిపిస్తుంది. ఇది వాస్తవ మొత్తానికి సుమారు ఒకటిన్నర రెట్లు.
Position E మొత్తం విషయాన్ని స్పష్టంగా చూపిస్తుంది. $1,000 విలువైన స్టాక్పై దాని yield 9.00%. ఇది పుస్తకంలోని అత్యధిక yield. అయితే పోర్ట్ఫోలియో విలువలో దాని వాటా 2.5%, ఆదాయంలో దాని వాటా 8.4% మాత్రమే. సాధారణ సగటులో దీనికి ఐదో వంతు ఓటు లభిస్తుంది. దాని పక్కన ఉన్న $15,000 positionకూ అదే ఓటు ఉంటుంది. Yield సంఖ్య వెనుక ఉన్న డాలర్ విలువను అనుసంధానించినప్పుడే దాని అర్థం స్పష్టమవుతుంది.
వాస్తవ holdingsలో weighting ఎలా కనిపిస్తుంది
గృహ పెట్టుబడిదారులు కలిగి ఉండే dividend-paying షేర్ల yieldలు విస్తృత పరిధిలో ఉంటాయి. అందుకే weighting ఎంపిక ముఖ్యమవుతుంది. కింది panelలో ప్రతి పేరు యొక్క trailing yieldను లెక్కించారు. ఇందుకు గత పన్నెండు నెలల్లో ప్రకటించిన ఒక్కో షేరుకు డివిడెండ్ మొత్తాన్ని, ఇటీవలి 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 పేర్లలో, Aug 7, 2026 ద్వారా ధరలు నిర్ణయించబడినప్పుడు, yieldలు 5.96% వద్ద VZ నుంచి 0.34% వద్ద AAPL వరకు ఉన్నాయి. ఇలాంటి spreadతో నిర్మించిన పోర్ట్ఫోలియో, positions డాలర్ విలువలు సమానంగా లేకపోతే yield కాలమ్ మధ్యస్థానానికి దగ్గరగా ఉండదు.
ఇప్పుడు వాటిలో ఐదింటిని fixed share countsతో ఒక పోర్ట్ఫోలియోలో ఉంచి, రెండు సంఖ్యలను పక్కపక్కన చూడండి: ప్రతి holdingకు market valueలో ఉన్న వాటా, అలాగే వార్షిక ఆదాయంలో ఉన్న వాటా.
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన 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లో కనిపించిన విధానం live pricesలోనూ మళ్లీ కనిపిస్తుంది. MSFT market valueలో 31.4% వాటాతో అతిపెద్ద positionగా ఉంది. ఇది 10% ఆదాయాన్ని అందిస్తుంది. దాని yield 0.72%. మరో చివర VZ విలువలో 5.9% వాటాను కలిగి ఉండి, ఆదాయంలో 15.7% చెల్లిస్తుంది. దాని yield 5.96%. Yieldలు వేర్వేరుగా ఉన్నప్పుడు 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తో గుణిస్తే వార్షిక ఆదాయం తిరిగి లభిస్తుంది. సాధారణ సగటుతో అదే చేస్తే, ఏ statementలోనూ కనిపించని సంఖ్య వస్తుంది. దిశ నిర్మాణాత్మకంగా నిర్ణయించబడుతుంది: అధిక yield ఉన్న పేర్లు చిన్న positionsగా ఉంటే సాధారణ సగటు నిజమైన portfolio yield కంటే ఎక్కువగా ఉంటుంది. అధిక yield ఉన్న పేర్లు పెద్ద positionsగా ఉంటే అది నిజమైన yield కంటే తక్కువగా ఉంటుంది.
Yield on cost, portfolio yield ఒకటే కాదు
Yield on cost ప్రస్తుత వార్షిక డివిడెండ్ను positionకు మీరు చెల్లించిన ధరతో భాగిస్తుంది. ప్రస్తుత position valueతో కాదు. $20కు కొనుగోలు చేసిన ఒక position ఇప్పుడు $80 వద్ద ట్రేడవుతున్నా, ఒక్కో షేరుకు సంవత్సరానికి $1.00 చెల్లిస్తే, దాని yield on cost 5.00%గా ఉంటుంది. ప్రస్తుత yield మాత్రం 1.25%. డివిడెండ్ డాలర్ మొత్తంలో మార్పు లేదు. మారింది denominator మాత్రమే.
రెండు సంఖ్యలూ సరైనవే. కానీ అవి వేర్వేరు ప్రశ్నలకు సమాధానం ఇస్తాయి. Denominatorలో current market valueను ఉపయోగిస్తే, పోర్ట్ఫోలియో ప్రస్తుతం ఎంత yield ఇస్తుందో తెలుస్తుంది. ఇది మంచి dividend yieldతో లేదా Treasury billతో పోల్చగల సంఖ్య. Denominatorలో cost basisను ఉపయోగిస్తే, గతంలో చేసిన కొనుగోలు గురించి సమాచారం లభిస్తుంది. సమస్య ఎప్పుడు మొదలవుతుందంటే, ఒకే portfolio totalలో రెండింటినీ కలిపినప్పుడు: ఇటీవలి కొనుగోళ్లకు current yield, పది సంవత్సరాలుగా ఉంచిన వాటికి yield on cost. ఈ మిశ్రమం income portfolio యొక్క కనిపించే yieldను తరచుగా రెండింతలు చేస్తుంది. కానీ బ్రోకర్ నివేదించే ఏ సంఖ్యతోనూ అది సరిపోదు. Dividend yield traps దీనికి విరుద్ధమైన భ్రమను వివరిస్తుంది. అంటే ధర భారీగా పడిపోయిన తర్వాత yield ఎక్కువగా కనిపించడం.
Trailing లేదా forward inputs సమాధానాన్ని మారుస్తాయి
పై ప్రతి సంఖ్య numeratorలో ఉపయోగించే డివిడెండ్ మొత్తంపై ఆధారపడి ఉంటుంది. Trailing yield గత పన్నెండు నెలల్లో వాస్తవంగా ప్రకటించిన చెల్లింపుల మొత్తాన్ని కలుపుతుంది. Forward yield ఇటీవలి చెల్లింపును వార్షికీకరిస్తుంది. సాధారణంగా తాజా త్రైమాసిక మొత్తాన్ని నాలుగుతో గుణిస్తారు. ఒక కంపెనీ payoutను మార్చినా లేదా సంవత్సరంలో ప్రత్యేక distribution చెల్లించినా ఈ రెండు సంఖ్యలు వేర్వేరుగా ఉంటాయి. పెద్ద holding ఒక్కటే portfolio totalను గణనీయంగా మార్చవచ్చు. ఇక్కడి panelsలో trailing inputs ఉపయోగించాం. Trailing vs forward dividend yieldలో ఏ సందర్భంలో ఏది సరైన ఎంపికో వివరించాం.
Yield ఒక రేటు; cash విడతలుగా వస్తుంది
Weighted yield ఒక వార్షిక రేటు. అది చెల్లింపుల షెడ్యూల్ కాదు. ఈ ఐదు positions కొన్ని సమూహంగా ఉన్న నెలల్లో చెల్లింపులు చేస్తాయి. దీనికి కారణం, చాలా US కంపెనీలు త్రైమాసికంగా ex-dividend అవడం, వాటి క్యాలెండర్లు ఒకే విధంగా ఉండటం.
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన 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 ద్వారా డబ్బు ఏ నెలలో వస్తుందో తెలియదు. అందుకే నెలవారీ సంఖ్యపై ఆధారపడే income planకు రేటుతో పాటు క్యాలెండర్ కూడా అవసరం. ఈ portfolio సంఖ్యలను పోల్చే market-wide స్థాయి కోసం S&P 500 dividend yield చూడండి.
తరచుగా అడిగే ప్రశ్నలు
నా మొత్తం పోర్ట్ఫోలియో dividend yieldను ఎలా లెక్కించాలి?
ప్రతి holding నుంచి వచ్చే వార్షిక డివిడెండ్ ఆదాయాన్ని కలపండి. అంటే shares సంఖ్యను ఒక్కో షేరుకు ఉన్న వార్షిక డివిడెండ్తో గుణించాలి. తరువాత ప్రతి holding market valueను కలపండి. అంటే shares సంఖ్యను ధరతో గుణించాలి. మొత్తం ఆదాయాన్ని మొత్తం విలువతో భాగించి, 100తో గుణించండి. వచ్చిన ఫలితం మీ holdings yieldల market-value-weighted average.
నా holdings yieldల సగటు, నా portfolio yield కంటే ఎందుకు ఎక్కువగా ఉంది?
సాధారణ సగటులో ప్రతి positionకు ఒక్క ఓటు ఉంటుంది. Portfolio yieldలో ప్రతి positionకు దాని డాలర్ విలువకు అనుగుణంగా ఓటు ఉంటుంది. అత్యధిక yield ఉన్న పేర్లు మీ చిన్న positionsగా ఉన్నప్పుడు, సాధారణ సగటు పోర్ట్ఫోలియో వాస్తవంగా చెల్లించే yield కంటే ఎక్కువగా ఉంటుంది. కొన్నిసార్లు ఇది సుమారు సగం మేర ఎక్కువగా కనిపిస్తుంది.
Portfolio dividend yieldలో cashను లెక్కించాలా?
Cashను పోర్ట్ఫోలియోలో భాగంగా పరిగణిస్తే, దాన్ని zero dividendతో denominatorలో చేర్చాలి. దాంతో yield తగ్గుతుంది. Cashను మినహాయిస్తే, పెట్టుబడి పెట్టిన భాగం yield మాత్రమే నివేదించబడుతుంది. మీరు ప్రతి సారి ఒకే విధానాన్ని ఉపయోగిస్తే, రెండు పద్ధతుల్లో ఏదైనా సరైనదే.
Yield on cost, నా portfolio yieldతో సమానమా?
కాదు. Yield on cost ఈరోజు డివిడెండ్ను మీరు సంవత్సరాల క్రితం చెల్లించిన ధరతో భాగిస్తుంది. అందువల్ల స్టాక్ ధర పెరిగినప్పుడు అది పెరుగుతుంది. Portfolio yield ప్రస్తుత market valueను ఉపయోగిస్తుంది. మీ ప్రస్తుత holdings సృష్టించే ఆదాయంతో అనుసంధానమయ్యే సంఖ్య ఇదే.
ఒక high-yield stockను చేరిస్తే నా portfolio yield ఎంత పెరుగుతుంది?
ఆ స్టాక్లో పెట్టిన డాలర్ విలువకు అనుగుణంగా మాత్రమే పెరుగుతుంది. 9% yield ఇచ్చే స్టాక్ పోర్ట్ఫోలియోలో 2.5% వాటాతో ఉంటే, weighted yieldకు సుమారు 0.2 percentage points జోడిస్తుంది. ఇది (0.09 × 0.025)కు సమానం. Yield కాలమ్ సగటుపై దాని ప్రభావం ఎలా ఉన్నా, ఈ లెక్క మారదు.
ఇక్కడి ప్రతి panelను రూపొందించిన ఖచ్చితమైన SQLను కలిగి ఉంది. అందువల్ల weightingను ప్రతి పంక్తి స్థాయిలో పరిశీలించవచ్చు. మీ పేర్లు, share counts జాబితాపై ఇదే లెక్కింపును అమలు చేయాలంటే, Strasmore terminalలో సాధారణ Englishలో అడగండి.