Dividend Yield ya Portfolio: Wastani Wenye Uzito
Jinsi ya kukokotoa dividend yield ya portfolio kwa kugawa mapato ya kila mwaka kwa market value, na kwa nini wastani wa safu ya yield hupotosha.
Mavuno ya dividend ya portfolio yako ni nambari moja: jumla ya mapato ya kila mwaka ya dividend ambayo holdings zako zimepangwa kulipa, ikigawanywa kwa jumla ya market value ya holdings hizo. Kwa njia nyingine, ni wastani wa yields za kila holding uliopimwa kwa market value, ambapo uzito wa kila holding ni thamani yake ya dola kama sehemu ya jumla. Wastani wa safu ya yield kwenye skrini ya brokerage ni nambari tofauti, na katika portfolio nyingi halisi ndiyo inayopendeza zaidi.
Jinsi ya kukokotoa dividend yield ya portfolio
Kwa kila position, zidisha idadi ya shares kwa dividend ya kila mwaka kwa kila share. Hiyo inatoa mapato ya kila mwaka ya position kwa dola. Jumlisha mapato hayo, gawa kwa jumla ya shares zilizozidishwa kwa bei katika kila position, kisha zidisha kwa 100. Huo ndio ukokotoaji wote, iwe holdings ni nne au forty.
Kuna njia mbili zenye maana sawa za kuiandika:
- Jumla ya mapato ya kila mwaka ikigawanywa kwa jumla ya market value ya portfolio.
- Jumla, katika holdings zote, ya uzito uliozidishwa kwa yield, ambapo uzito ni thamani ya position iliyogawanywa kwa thamani ya portfolio.
Mfumo wa pili unaonyesha kosa la wastani rahisi. Kila holding huonekana katika mifumo yote miwili, lakini katika mfumo sahihi kila moja hubeba uzito wa dola zake badala ya kupata kura moja. Cash unayohesabu kuwa sehemu ya portfolio inapaswa pia kuwa kwenye denominator. Kuiacha nje huongeza yield iliyoonyeshwa bila kuongeza hata senti moja ya mapato. Kwa toleo la hisa moja la hesabu hii, anza na jinsi ya kukokotoa dividend yield.
Kwa nini kukokotoa wastani wa safu ya yield kunazidisha mapato yako
Tofauti kati ya mbinu hizi mbili inaonekana kwa urahisi katika mfano wa hesabu. Script iliyo hapa chini ni Python 3 ya kawaida, bila kuingiza chochote. Mashine yoyote yenye python3 inaweza kuiendesha. Positions hizi tano ni nambari za kubuni zilizorahisishwa, zilizochaguliwa ili kuonyesha athari wazi: jina, idadi ya shares, bei, na dividend ya kila mwaka kwa kila share.
#!/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}%'
)
Iendeshe, kisha utaona mistari miwili mikuu ikitofautiana sana. Portfolio ina $40,000 za hisa na inalipa $1,070 kwa mwaka, ambayo ni weighted yield ya 2.68%. Wastani rahisi wa yield figures tano unaonyesha 4.00%, karibu mara moja na nusu zaidi.
Position E ndiyo inaeleza yote. Ina yield ya 9.00%, iliyo juu zaidi katika portfolio, kwenye hisa zenye thamani ya $1,000. Hiyo ni 2.5% ya thamani ya portfolio na 8.4% ya mapato yake. Katika wastani rahisi inapata kura moja kati ya tano, sawa na position ya $15,000 iliyo karibu nayo. Yield figure huwa na maana tu unapoiambatanisha na dola zilizo nyuma yake.
Uzito unavyoonekana katika holdings halisi
Waolipaji wa dividend wa kaya wana yields zinazotofautiana kwa kiwango kikubwa. Hilo ndilo linalofanya uchaguzi wa uzito kuwa muhimu. Paneli iliyo hapa chini inakokotoa trailing yield ya kila jina kutokana na dividends per share zilizotangazwa katika miezi kumi na miwili iliyopita, zikigawanywa kwa bei ya hivi karibuni ya kufunga kwa siku.
SQL halisi nyuma ya kila namba
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 DESCKatika majina haya ya 10, yenye bei zilizopitia Aug 7, 2026, yields zinaanzia 5.96% katika VZ hadi 0.34% katika AAPL. Portfolio iliyojengwa kwa spread kama hii haitafika karibu na midpoint ya safu hiyo isipokuwa positions ziwe na thamani sawa kwa dola.
Sasa weka majina matano kati yake kwenye portfolio yenye idadi maalumu ya shares, kisha linganisha nambari mbili: sehemu ya kila holding katika market value, na sehemu yake katika mapato ya kila mwaka.
SQL halisi nyuma ya kila namba
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 DESCMfumo kutoka kwenye script unajirudia katika bei halisi za soko. MSFT ndiyo position kubwa zaidi ikiwa na 31.4% ya market value, huku ikitoa 10% ya mapato, kwa yield ya 0.72%. Kwa upande mwingine, VZ ina 5.9% ya thamani na inalipa 15.7% ya mapato, kwa 5.96%. Uzito na sehemu ya mapato hutengana kila yield zinapotofautiana.
Ukikokotoa wastani kwa njia hizo mbili, holdings zilezile tano zinatoa majibu mawili tofauti.
SQL halisi nyuma ya kila namba
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 DESCMstari wa juu, wenye 2.93%, ni figure ya Simple average of the five yields. Mwingine unaonyesha 2.24%. Ni mmoja tu kati yao unaolingana na cash. Zidisha weighted figure kwa market value ya portfolio, nawe utapata mapato ya kila mwaka. Fanya hivyo hivyo kwa wastani rahisi, nawe utapata nambari ambayo hakuna statement itakayowahi kuonyesha. Mwelekeo huu unatokana na muundo: majina yenye yield kubwa yanapokuwa positions ndogo, wastani rahisi huwa juu ya true portfolio yield; na majina yenye yield kubwa yanapokuwa positions kubwa, huwa chini yake.
Yield on cost si portfolio yield
Yield on cost hugawa dividend ya sasa ya kila mwaka kwa bei uliyolipa, si kwa thamani ya position leo. Position iliyonunuliwa kwa $20 na sasa kufanya biashara kwa $80, huku ikiendelea kulipa $1.00 kwa share kwa mwaka, inaonyesha yield on cost ya 5.00% dhidi ya current yield ya 1.25%. Dividend ni dola zilezile. Denominator pekee ndiyo imebadilika.
Nambari zote mbili ni halali, lakini zinajibu maswali tofauti. Current market value katika denominator inakuonyesha portfolio inazalisha yield gani leo. Hiyo ndiyo figure inayoweza kulinganishwa na dividend yield nzuri au Treasury bill. Cost basis katika denominator inakuambia kuhusu ununuzi uliofanya zamani. Tatizo huanza unapochanganya hizi mbili ndani ya jumla moja ya portfolio: current yield kwa ununuzi wa hivi karibuni, na yield on cost kwa holdings ulizomiliki kwa muongo mmoja. Mchanganyiko huo mara kwa mara huongeza mara mbili yield inayoonekana ya portfolio ya mapato, na haulingani na chochote broker anaripoti. Dividend yield traps inaeleza udanganyifu wa kinyume, yaani yield inayoonekana kuwa kubwa baada ya bei kushuka sana.
Trailing au forward inputs hubadilisha jibu
Kila figure hapo juu inategemea ni nambari gani ya dividend inayowekwa kwenye numerator. Trailing yield hujumlisha malipo ya miezi kumi na miwili iliyopita ambayo yalitangazwa kwa kweli. Forward yield huannualize malipo ya hivi karibuni, kwa kawaida kiasi cha mwisho cha kila robo mwaka kikizidishwa kwa four. Nambari hizi mbili hutofautiana kwa jina lolote lililobadilisha payout yake au kulipa special distribution katika mwaka huo. Holding moja kubwa inaweza pia kubadilisha jumla ya portfolio kwa kiasi kinachoonekana. Paneli hizi zinatumia trailing inputs. Trailing vs forward dividend yield inaeleza ni wakati gani kila moja ni chaguo sahihi.
Yield ni rate; cash hufika kwa mafungu
Weighted yield ni rate ya kila mwaka, si ratiba ya malipo. Holdings zilezile tano hulipa katika miezi michache iliyokusanyika kwa karibu, kwa sababu kampuni nyingi za US huenda ex-dividend kila robo mwaka na kutumia kalenda zinazofanana.
SQL halisi nyuma ya kila namba
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 monthCash iliingia katika miezi 12 tofauti katika mwaka uliopita, na wa hivi karibuni ulikuwa Jul 2026 wenye $107.76. Portfolio yield ya asilimia chache haisemi chochote kuhusu mwezi ambao pesa itaingia. Ndiyo sababu mpango wa mapato unaotegemea figure ya kila mwezi unahitaji kalenda pamoja na rate. Kwa kiwango cha soko zima ambacho nambari hizi za portfolio hupimwa nacho, tazama dividend yield ya S&P 500.
Maswali yanayoulizwa mara kwa mara
Ninakokotoaje dividend yield ya portfolio yangu yote?
Jumlisha mapato ya kila mwaka ya dividend ya kila holding, yaani shares zilizozidishwa kwa dividend ya kila mwaka kwa kila share. Kisha jumlisha market value ya kila holding, yaani shares zilizozidishwa kwa bei. Gawa jumla ya mapato kwa jumla ya thamani, kisha zidisha kwa 100. Matokeo ni wastani wa yields za holdings zako uliopimwa kwa market value.
Kwa nini wastani wa yields za holdings zangu ni mkubwa kuliko portfolio yield yangu?
Wastani rahisi huipa kila position kura moja. Portfolio yield huipa kila position kura inayolingana na dola zake. Majina yenye yield kubwa yanapokuwa positions zako ndogo zaidi, wastani rahisi huwa juu ya yield ambayo portfolio inalipa kwa kweli, wakati mwingine kwa karibu nusu zaidi.
Je, cash huhesabiwa katika portfolio dividend yield?
Ukichukulia cash kuwa sehemu ya portfolio, inapaswa kuwa kwenye denominator ikiwa na dividend ya sifuri, na itapunguza yield. Ukiiacha nje, unaripoti yield ya sehemu iliyowekezwa pekee. Njia zote mbili zinafaa mradi utumie njia ileile kila unapopima.
Je, yield on cost ni sawa na yield ya portfolio yangu?
Hapana. Yield on cost hugawa dividend ya leo kwa bei uliyolipa miaka iliyopita, kwa hiyo huongezeka kila hisa inapopanda. Portfolio yield hutumia market value ya sasa. Hiyo ndiyo figure inayohusiana moja kwa moja na mapato yanayotokana na holdings zako za sasa.
Kuongeza hisa moja yenye yield kubwa kunaongeza portfolio yield yangu kwa kiasi kikubwa?
Huongeza tu kulingana na dola zilizowekezwa humo. Hisa yenye yield ya 9% inayoshikiliwa kwa 2.5% ya portfolio huongeza takribani 0.2 percentage points kwenye weighted yield (0.09 ikizidishwa kwa 0.025), bila kujali inavyobadilisha wastani wa safu ya yield.
Kila paneli hapa ina SQL kamili iliyotumika kuizalisha, kwa hiyo uzito unaweza kukaguliwa line by line. Ili kuendesha hesabu hiyo hiyo kwa orodha yako ya majina na idadi ya shares, iombe kwa Kiingereza rahisi kwenye terminal ya Strasmore.