Strasmore Research
Edukasi Matt ConnorOleh Matt Connor · Diperbarui 2026-08-08 · data as of August 8, 2026 · refreshed weekly

Dividend Yield Portofolio: Rata-Rata Tertimbang

Cara menghitung dividend yield portofolio dengan membagi total pendapatan tahunan dan nilai pasar, serta mengapa rata-rata kolom yield dapat menyesatkan.

Imbal hasil dividen portofolio Anda adalah satu angka: total pendapatan dividen tahunan yang akan dibayarkan oleh seluruh kepemilikan, dibagi total nilai pasar kepemilikan tersebut. Dengan kata lain, angka ini merupakan rata-rata yield individual yang dibobot berdasarkan nilai pasar, dengan bobot setiap kepemilikan berupa nilai dolarnya sebagai bagian dari total portofolio. Rata-rata kolom yield pada layar broker menghasilkan angka yang berbeda. Dalam sebagian besar portofolio nyata, angka tersebut adalah yang tampak lebih tinggi.

Cara menghitung dividend yield portofolio

Untuk setiap posisi, kalikan jumlah saham dengan dividen tahunan per saham. Hasilnya adalah pendapatan tahunan posisi tersebut dalam dolar. Jumlahkan seluruh pendapatan itu. Kemudian bagi dengan total hasil perkalian jumlah saham dan harga pada semua posisi, lalu kalikan dengan 100. Itulah seluruh perhitungannya, baik untuk four holdings maupun forty.

Ada two cara yang setara untuk menuliskannya:

  • Total pendapatan tahunan dibagi total nilai pasar portofolio.
  • Jumlah, untuk seluruh kepemilikan, dari bobot dikalikan yield. Bobot adalah nilai posisi dibagi nilai portofolio.

Bentuk kedua menunjukkan letak kesalahan rata-rata sederhana. Setiap kepemilikan muncul dalam kedua versi, tetapi dalam versi yang benar, setiap kepemilikan dibobot berdasarkan nilai dolarnya, bukan memperoleh satu suara yang sama. Jika Anda menghitung cash sebagai bagian dari portofolio, cash juga harus masuk ke penyebut. Mengeluarkannya akan menaikkan yield yang tercetak tanpa menambah pendapatan sedikit pun. Untuk versi perhitungan satu saham, lihat cara menghitung dividend yield.

Mengapa merata-ratakan kolom yield melebih-lebihkan pendapatan Anda

Perbedaan antara kedua metode paling mudah dilihat melalui contoh perhitungan. Script di bawah ini adalah Python 3 standar tanpa import apa pun. Script ini dapat dijalankan pada mesin apa pun yang memiliki python3. Kelima posisi tersebut menggunakan angka bulat hipotetis agar dampaknya terlihat jelas: nama, jumlah saham, harga, dan dividen tahunan per saham.

#!/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}%'
    )

Jalankan script tersebut. Dua angka utama akan menunjukkan perbedaan yang besar. Portofolio ini memiliki saham senilai $40,000 dan membayar $1,070 per tahun, atau weighted yield sebesar 2.68%. Rata-rata sederhana dari lima angka yield menghasilkan 4.00%, sekitar one and a half kali lebih tinggi.

Position E menjelaskan seluruh perbedaan tersebut. Yield-nya 9.00%, yang tertinggi dalam portofolio, tetapi nilai sahamnya hanya $1,000. Posisi itu mencakup 2.5% dari nilai portofolio dan menyumbang 8.4% dari pendapatan. Dalam rata-rata sederhana, posisinya memperoleh one fifth suara, sama seperti posisi senilai $15,000 di sebelahnya. Angka yield baru bermakna setelah Anda mengaitkannya dengan nilai dolar yang mendasarinya.

Seperti apa pembobotan pada kepemilikan nyata

Saham pembayar dividen dalam portofolio rumah tangga memiliki rentang yield yang lebar. Karena itu, pilihan metode pembobotan menjadi penting. Panel di bawah menghitung trailing yield setiap saham dari total dividen per saham yang diumumkan selama twelve months terakhir, dibagi harga penutupan harian terbaru.

QueryDividend yield 12 bulan terakhir di antara sepuluh saham pembayar dividen rumah tangga
SQL tepat di balik setiap angka
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
Run this yourself

Di antara 10 nama ini, yang dihargai hingga Aug 7, 2026, yield berkisar dari 5.96% sebesar VZ hingga 0.34% sebesar AAPL. Portofolio yang dibangun dari rentang seperti ini tidak akan berada di sekitar titik tengah kolom, kecuali nilai setiap posisi kebetulan sama dalam dolar.

Sekarang masukkan five di antaranya ke dalam portofolio dengan jumlah saham tetap. Kemudian bandingkan two angka: porsi setiap kepemilikan terhadap nilai pasar dan porsi kepemilikan tersebut terhadap pendapatan tahunan.

QueryPortofolio lima saham: porsi nilai dibandingkan porsi pendapatan
SQL tepat di balik setiap angka
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
Run this yourself

Pola dari script tersebut kembali terlihat pada harga aktual. MSFT adalah posisi terbesar, dengan 31.4% dari nilai pasar, sementara menyumbang 10% dari pendapatan dengan yield 0.72%. Di sisi lain, VZ hanya mencakup 5.9% dari nilai dan membayar 15.7% dari pendapatan, dengan yield 5.96%. Bobot dan porsi pendapatan akan berbeda setiap kali yield tidak sama.

Jika dihitung dengan kedua metode, lima kepemilikan yang sama menghasilkan two jawaban berbeda.

QueryDua rata-rata dari lima kepemilikan yang sama
SQL tepat di balik setiap angka
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
Run this yourself

Angka yang lebih tinggi, yaitu 2.93%, adalah angka Simple average of the five yields. Angka lainnya tercatat sebesar 2.24%. Hanya one di antaranya yang sesuai dengan cash. Kalikan angka berbobot dengan nilai pasar portofolio untuk mendapatkan kembali pendapatan tahunan. Lakukan hal yang sama pada rata-rata sederhana, dan Anda memperoleh angka yang tidak akan pernah muncul pada laporan mana pun. Arahnya bersifat struktural: ketika saham dengan yield lebih tinggi merupakan posisi yang lebih kecil, rata-rata sederhana berada di atas yield portofolio yang sebenarnya. Ketika saham dengan yield tinggi merupakan posisi besar, rata-rata sederhana berada di bawahnya.

Yield on cost bukan yield portofolio

Yield on cost membagi dividen tahunan saat ini dengan harga yang Anda bayarkan, bukan dengan nilai posisi saat ini. Posisi yang dibeli seharga $20 dan kini diperdagangkan pada $80, dengan dividen tahunan tetap $1.00 per saham, menunjukkan yield on cost sebesar 5.00% dibandingkan current yield sebesar 1.25%. Nilai dividennya dalam dolar sama. Hanya penyebutnya yang berubah.

Kedua angka tersebut sah dan menjawab pertanyaan yang berbeda. Nilai pasar saat ini sebagai penyebut menunjukkan yield portofolio hari ini. Angka ini dapat dibandingkan dengan dividend yield yang baik atau dengan Treasury bill. Cost basis sebagai penyebut memberi informasi tentang pembelian yang Anda lakukan pada masa lalu. Masalah muncul ketika kedua metode dicampur dalam satu total portofolio: current yield untuk pembelian terbaru, dan yield on cost untuk posisi yang telah dimiliki selama satu dekade. Campuran ini secara rutin menggandakan yield yang tampak dari portofolio pendapatan dan tidak sesuai dengan angka yang dilaporkan broker. Dividend yield traps membahas ilusi yang berlawanan, yaitu yield yang tampak tinggi setelah penurunan harga yang tajam.

Input trailing atau forward mengubah hasil

Setiap angka di atas bergantung pada angka dividen yang digunakan sebagai pembilang. Trailing yield menjumlahkan pembayaran selama twelve months terakhir yang benar-benar telah diumumkan. Forward yield mengannualisasi pembayaran terbaru, biasanya jumlah quarterly terbaru dikalikan four. Kedua metode menghasilkan angka berbeda untuk saham yang mengubah payout atau membayar special distribution selama tahun berjalan. Satu posisi besar saja dapat mengubah total portofolio secara berarti. Panel di sini menggunakan input trailing. Trailing vs forward dividend yield menjelaskan kapan setiap metode menjadi pilihan yang tepat.

Yield adalah tingkat, sedangkan cash diterima secara berkala

Weighted yield adalah tingkat tahunan, bukan jadwal pembayaran. Kelima posisi yang sama membayar dividen dalam beberapa bulan yang berdekatan. Sebagian besar perusahaan AS memasuki ex-dividend date setiap quarter dan memiliki jadwal yang serupa.

QueryPendapatan dividen dari portofolio lima saham, berdasarkan bulan
SQL tepat di balik setiap angka
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
Run this yourself

Cash diterima dalam 12 bulan berbeda selama trailing year. Pembayaran terbaru terjadi pada Jul 2026 sebesar $107.76. Portfolio yield sebesar beberapa persen tidak menjelaskan pada bulan apa cash tersebut diterima. Karena itu, rencana pendapatan yang menggunakan angka bulanan memerlukan kalender selain rate. Untuk level pasar secara keseluruhan yang menjadi pembanding angka portofolio ini, lihat dividend yield S&P 500.

FAQ

Bagaimana cara menghitung dividend yield seluruh portofolio saya?

Jumlahkan pendapatan dividen tahunan setiap kepemilikan, yaitu jumlah saham dikalikan dividen tahunan per saham. Kemudian jumlahkan nilai pasar setiap kepemilikan, yaitu jumlah saham dikalikan harga. Bagi total pendapatan dengan total nilai, lalu kalikan dengan 100. Hasilnya adalah rata-rata yield kepemilikan yang dibobot berdasarkan nilai pasar.

Mengapa rata-rata yield kepemilikan saya lebih tinggi daripada yield portofolio?

Rata-rata sederhana memberikan satu suara kepada setiap posisi. Portfolio yield memberikan suara yang sebanding dengan nilai dolarnya. Ketika saham dengan yield tertinggi merupakan posisi terkecil, rata-rata sederhana berada di atas yield yang sebenarnya dibayarkan portofolio, terkadang hingga half again as much.

Apakah cash dihitung dalam portfolio dividend yield?

Jika Anda menganggap cash sebagai bagian dari portofolio, cash masuk ke dalam penyebut dengan dividen sebesar zero, sehingga menurunkan yield. Mengeluarkannya berarti melaporkan yield dari bagian portofolio yang diinvestasikan saja. Kedua metode dapat digunakan selama Anda menerapkan metode yang sama setiap kali melakukan pengukuran.

Apakah yield on cost sama dengan yield portofolio saya?

Tidak. Yield on cost membagi dividen saat ini dengan harga yang Anda bayarkan bertahun-tahun lalu. Karena itu, angkanya meningkat ketika harga saham naik. Portfolio yield menggunakan nilai pasar saat ini. Angka inilah yang terkait langsung dengan pendapatan yang dihasilkan oleh kepemilikan Anda saat ini.

Apakah menambahkan satu saham dengan yield tinggi akan banyak menaikkan portfolio yield?

Hanya sebanding dengan nilai dolar posisi tersebut. Saham dengan yield 9% yang mencakup 2.5% portofolio menambah sekitar 0.2 percentage points pada weighted yield (0.09 dikalikan 0.025), terlepas dari dampaknya terhadap rata-rata kolom yield.


Setiap panel di sini memuat SQL yang menghasilkan angka tersebut secara persis. Karena itu, pembobotannya dapat diaudit baris demi baris. Untuk menjalankan perhitungan yang sama pada daftar nama dan jumlah saham Anda sendiri, minta perhitungannya dalam bahasa biasa melalui terminal Strasmore.

#dividend yield#portfolio#weighted average#income#calculation