Strasmore Research
สรุปภาวะตลาด Matt Connorโดย Matt Connor · อัปเดตเมื่อ 2026-07-24 · data as of July 24, 2026 · refreshed weekly

รายชื่อหุ้นปันผลรายเดือนใน US ทั้งหมด

รวบรวมหุ้นจดทะเบียนใน US ที่มีการจ่ายเงินปันผลต่อเนื่องสิบถึงสิบสี่ครั้งในช่วงสิบสองเดือนที่ผ่านมา พร้อมตรวจสอบประวัติการจ่ายเงินและอัตราผลตอบแทนปัจจุบัน

หุ้นที่จ่ายเงินปันผลรายเดือนจะจ่ายเงินสดทุกเดือนแทนที่จะเป็นรายไตรมาส ซึ่งรายการหุ้นเหล่านี้มีจำนวนน้อยกว่าที่บทความรวบรวมข้อมูลทั่วไประบุไว้มาก จากการตรวจสอบประวัติการจ่ายเงินแทนการใช้เพียงชื่อเรียกประเภทหุ้น พบว่ามีหุ้นที่จดทะเบียนใน US จำนวน 1553 ตัวที่มีการจ่ายเงินสดต่อเนื่องระหว่างสิบถึงสิบสี่ครั้งในช่วงสิบสองเดือนที่ผ่านมา และมีเพียง 32 เท่านั้นที่มีประวัติพื้นฐานของบริษัทรองรับ ข้อมูลทั้งหมดในหน้านี้เป็นราคาปิดจากเซสชัน Jul 21

รายชื่อหุ้นปันผลรายเดือน

ทุกรายชื่อด้านล่างคือบริษัทจดทะเบียนในสหรัฐฯ ที่มีการจ่ายเงินสดต่อเนื่องสิบถึงสิบสี่ครั้งในช่วงสิบสองเดือนที่ผ่านมา และมีมูลค่าการซื้อขายหุ้นอย่างน้อยหนึ่งล้านดอลลาร์ต่อวัน การจัดลำดับใช้มูลค่าการซื้อขายต่อวันเป็นเกณฑ์

คำสั่งดึงข้อมูลหุ้นปันผลรายเดือน - บริษัทที่มีการจ่ายปันผลทุกเดือน เรียงตามมูลค่าการซื้อขายต่อวัน
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT m.ticker AS ticker,
       round(m.latest_payment, 4) AS monthly_payment_usd,
       round(100 * m.latest_payment * 12 / l.last_close, 2) AS annual_yield_pct,
       round(dateDiff('day', s.streak_start, s.last_ex) / 365.25, 1) AS years_paying_monthly,
       round(l.adv_usd / 1e6, 1) AS avg_daily_traded_musd,
       formatDateTime(l.last_session, '%b %e') AS priced_through
FROM (
    SELECT ticker, argMax(cash_amount, ex_dividend_date) AS latest_payment
    FROM global_markets.stocks_dividends
    WHERE ex_dividend_date > today() - 365
      AND ex_dividend_date <= today()
      AND cash_amount > 0
      AND distribution_type = 'recurring'
      AND ticker NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 400 AND today())
    GROUP BY ticker
    HAVING count() BETWEEN 10 AND 14
       AND argMax(frequency, ex_dividend_date) = 12
) AS m
INNER JOIN (
    SELECT ticker,
           maxIf(ed, gap_days > 70) AS streak_start,
           max(ed) AS last_ex
    FROM (
        SELECT ticker, ex_dividend_date AS ed,
               dateDiff('day',
                        lagInFrame(ex_dividend_date) OVER (PARTITION BY ticker ORDER BY ex_dividend_date),
                        ex_dividend_date) AS gap_days
        FROM (
            SELECT ticker, ex_dividend_date
            FROM global_markets.stocks_dividends
            WHERE distribution_type = 'recurring' AND cash_amount > 0 AND ex_dividend_date <= today()
            GROUP BY ticker, ex_dividend_date
        )
    )
    GROUP BY ticker
) AS s ON s.ticker = m.ticker
INNER JOIN (
    SELECT ticker,
           avg(dollar_vol) AS adv_usd,
           argMax(close_px, d) AS last_close,
           max(d) AS last_session,
           count() AS sessions
    FROM (
        SELECT ticker,
               toDate(toTimeZone(window_start, 'America/New_York')) AS d,
               sum(toFloat64(close) * volume) AS dollar_vol,
               argMax(toFloat64(close), window_start) AS close_px
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= toDateTime(today() - 32)
          AND toDate(toTimeZone(window_start, 'America/New_York')) < today()
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
              + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
          AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
              + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
        GROUP BY ticker, d
    )
    GROUP BY ticker
    HAVING sessions >= 15 AND adv_usd >= 1000000 AND last_close > 0
) AS l ON l.ticker = m.ticker
INNER JOIN (
    SELECT ticker
    FROM global_markets.stocks_ratios
    GROUP BY ticker
    HAVING argMax(market_cap, date) > 0
) AS f ON f.ticker = m.ticker
ORDER BY l.adv_usd DESC
LIMIT 60

O เป็นหุ้นที่จ่ายปันผลรายเดือนที่มีปริมาณการซื้อขายสูงสุดในที่นี้ โดยมีการจ่ายปันผลรายเดือนจำนวน 0.271 และมีการจ่ายปันผลต่อเนื่องมาแล้ว 14 ปี อัตราผลตอบแทนต่อปีอยู่ที่ 5% เมื่อเทียบกับราคาปิด Jul 21 โดยมีมูลค่าการซื้อขายเฉลี่ยต่อเซสชันอยู่ที่ 226.4 ล้านดอลลาร์ ผลการคัดกรองพบทั้งหมด 26 รายชื่อ ทั้งนี้ คอลัมน์อัตราผลตอบแทน (yield) คำนวณจากการนำเงินปันผลล่าสุดมาคูณสิบสองเพื่อทำเป็นค่ารายปีแล้วหารด้วยราคาปิด ดังนั้นค่าจะเปลี่ยนแปลงตามการเคลื่อนไหวของราคาหุ้น และไม่ใช่การคาดการณ์กระแสเงินสดในอีกสิบสองเดือนข้างหน้า

การถือครองหุ้นก่อนวัน ex-dividend คือเงื่อนไขในการได้รับเช็คฉบับถัดไป คุณสามารถตรวจสอบรายชื่อบริษัทที่มีกำหนดขึ้นเครื่องหมาย ex-dividend รายต่อไปได้จากปฏิทิน วัน ex-dividend ที่กำลังจะมาถึง และอ่านรายละเอียดเกี่ยวกับ คำอธิบายเรื่องวัน ex-dividend เพื่อทำความเข้าใจเกี่ยวกับวันตัดสิทธิ์ในการรับปันผล

วิธีการระบุผู้จ่ายปันผลรายเดือน

ข้อมูลฟีดเงินปันผลจะมีป้ายระบุความถี่ แต่การเชื่อถือข้อมูลนี้เพียงอย่างเดียวอาจทำให้ผลลัพธ์ผิดพลาดได้ทั้งสองทาง การทดสอบนี้จะใช้วิธีนับจำนวนครั้งที่ ticker จ่ายเงินจริง จากนั้นจึงกำหนดขอบเขตของจำนวนครั้งดังกล่าว

คำสั่งดึงข้อมูลการจ่ายเงินสดตามรอบของแต่ละ ticker ในช่วง 1 ปีที่ผ่านมา - ตำแหน่งของช่วงการจ่ายรายเดือน
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH payers AS (
    SELECT ticker,
           count() AS payments_12m,
           argMax(frequency, ex_dividend_date) AS freq_flag
    FROM global_markets.stocks_dividends
    WHERE ex_dividend_date > today() - 365
      AND ex_dividend_date <= today()
      AND cash_amount > 0
      AND distribution_type = 'recurring'
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker
),
filers AS (
    SELECT ticker
    FROM global_markets.stocks_ratios
    GROUP BY ticker
    HAVING argMax(market_cap, date) > 0
)
SELECT multiIf(payments_12m = 1, 'One a year',
               payments_12m = 2, 'Two a year',
               payments_12m BETWEEN 3 AND 6, 'Three to six a year',
               payments_12m BETWEEN 7 AND 9, 'Seven to nine a year',
               payments_12m BETWEEN 10 AND 14, 'Ten to fourteen a year',
               payments_12m BETWEEN 15 AND 39, 'Fifteen to thirty-nine a year',
               'Forty or more a year') AS bucket,
       count() AS tickers,
       countIf(freq_flag = 12) AS labelled_monthly,
       countIf(ticker IN (SELECT ticker FROM filers)) AS company_filings
FROM payers
GROUP BY bucket
ORDER BY min(payments_12m)

98 tickers มีการจ่ายเงินสดแบบต่อเนื่องตั้งแต่สี่สิบครั้งขึ้นไปในช่วงหนึ่งปีที่ผ่านมา และอีก 77 tickers มีการจ่ายเงินระหว่างสิบถึงสามสิบเก้าครั้ง กลุ่มนี้คือผู้จ่ายปันผลรายสัปดาห์และรายวัน ซึ่งเป็นกลุ่มที่กำลังเติบโตอย่างรวดเร็วในตลาดกองทุน หากใช้ตัวกรองที่ถามเพียงว่า "สิบครั้งขึ้นไป" จะทำให้กลุ่มเหล่านี้ทั้งหมดถูกรวมเข้ามาในรายการรายเดือน การกำหนดเพดานจำนวนครั้งไว้ที่สิบสี่ครั้งจะช่วยคัดกรองกลุ่มนี้ออกไป

การใช้ป้ายระบุความถี่เพียงอย่างเดียวก็ไม่มีประสิทธิภาพเช่นกัน โดยมี 71 tickers ที่มีป้ายระบุความถี่เป็นรายเดือนแต่มีการจ่ายเงินเพียงครั้งเดียวในปีที่ผ่านมา และ 182 ของ tickers เหล่านั้นมีการจ่ายเงินระหว่างสามถึงหกครั้ง สำหรับกลุ่มที่มีการจ่ายเงินระหว่างสิบถึงสิบสี่ครั้ง ป้ายระบุความถี่และข้อมูลการจ่ายจริงมีความสอดคล้องกัน 1541 ครั้ง จากทั้งหมด 1553 ครั้ง นี่คือเหตุผลที่หน้านี้จำเป็นต้องใช้ข้อมูลทั้งสองส่วนประกอบกัน

ผู้จ่ายปันผลรายเดือนส่วนใหญ่เป็นกองทุน ไม่ใช่บริษัทที่ดำเนินงาน

นี่คือส่วนที่บทความแบบรายการมักข้ามไป เนื่องจากในฐานข้อมูลไม่มีการระบุประเภทว่าเป็นกองทุน, ETF หรือ REIT ดังนั้นจึงไม่สามารถคัดกรองบริษัทที่ดำเนินงานออกจากรายการผู้จ่ายปันผลรายเดือนโดยใช้ป้ายกำกับได้ สิ่งที่มีคือข้อมูลพื้นฐานของบริษัทซึ่งรายงานมูลค่าหลักทรัพย์ตามราคาตลาด (market capitalization) สำหรับบริษัทที่ดำเนินงานที่อยู่ในฐานข้อมูล ส่วนกองทุนที่จดทะเบียนในตลาดหลักทรัพย์ (exchange-traded funds) และกองทุนปิด (closed-end funds) จะไม่อยู่ในขอบเขตการครอบคลุมนี้ ดังนั้นการมีมูลค่าหลักทรัพย์ตามราคาตลาดจึงเป็นตัวบ่งชี้ถึงบริษัทที่ดำเนินงานในหน้านี้ จากจำนวน 1553 ตัวบ่งชี้ในกลุ่มรายเดือน มี 32 ตัวที่มีข้อมูลดังกล่าว ส่วนที่เหลือไม่มีข้อมูลนี้ โดยส่วนใหญ่เป็นกองทุน exchange-traded, กองทุนปิด และ interval funds รวมถึงยังมีหน่วยลงทุน, trust และผู้ออกหลักทรัพย์ขนาดเล็กที่ฐานข้อมูลเข้าไม่ถึง

กลุ่มน้อยที่มีการรายงานข้อมูลนั้น ส่วนใหญ่เป็น real estate investment trusts, mortgage REITs, business development companies และ royalty trusts นี่คือลักษณะที่แท้จริงของรายได้รายเดือน กล่าวคือ รูปแบบองค์กรที่จ่ายเงินทุกเดือนถูกสร้างขึ้นเพื่อส่งผ่านกระแสเงินสดโดยตรง การหาธุรกิจที่ดำเนินงานทั่วไปที่มีคุณสมบัติเทียบเท่ากับการจ่ายปันผลรายเดือนแบบ แชมป์การเติบโตของเงินปันผลตลอดสองทศวรรษ นั้นแทบไม่มี เนื่องจากธุรกิจทั่วไปมักจ่ายปันผลเป็นรายไตรมาส

อัตราผลตอบแทนของหุ้นที่จ่ายปันผลรายเดือน

อัตราผลตอบแทนของกลุ่มหุ้นที่จ่ายปันผลรายเดือนมีความแตกต่างกันมากกว่าค่าเฉลี่ยของตลาด ข้อมูลชุดนี้แบ่งกลุ่มหุ้นที่จ่ายปันผลรายเดือนทุกตัวที่มีประวัติราคาครบหนึ่งปี และมีการเพิ่มข้อมูลหนึ่งคอลัมน์ที่ตัวกรองอัตราผลตอบแทนทั่วไปไม่มี นั่นคือการเปลี่ยนแปลงของราคาหุ้นในช่วงสิบสองเดือนที่ผ่านมา

คำสั่งดึงข้อมูลการกระจายของ Yield ของกลุ่มผู้จ่ายปันผลรายเดือนที่มีสภาพคล่องสูง พร้อมค่ามัธยฐานการเปลี่ยนแปลงราคาในรอบ 12 เดือนของแต่ละช่วง
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH monthly AS (
    SELECT ticker, argMax(cash_amount, ex_dividend_date) AS latest_payment
    FROM global_markets.stocks_dividends
    WHERE ex_dividend_date > today() - 365
      AND ex_dividend_date <= today()
      AND cash_amount > 0
      AND distribution_type = 'recurring'
      AND ticker NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 400 AND today())
    GROUP BY ticker
    HAVING count() BETWEEN 10 AND 14
       AND argMax(frequency, ex_dividend_date) = 12
),
filers AS (
    SELECT ticker
    FROM global_markets.stocks_ratios
    GROUP BY ticker
    HAVING argMax(market_cap, date) > 0
),
tape AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           sum(toFloat64(close) * volume) AS dollar_vol,
           argMax(toFloat64(close), window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN (SELECT ticker FROM monthly)
      AND (window_start >= toDateTime(today() - 32)
           OR (window_start >= toDateTime(today() - 378) AND window_start < toDateTime(today() - 358)))
      AND toDate(toTimeZone(window_start, 'America/New_York')) < today()
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
          + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
          + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    GROUP BY ticker, d
),
px AS (
    SELECT ticker,
           avgIf(dollar_vol, d > today() - 32) AS adv_usd,
           argMaxIf(close_px, d, d > today() - 32) AS last_close,
           argMaxIf(close_px, d, d <= today() - 358) AS close_year_ago,
           countIf(d > today() - 32) AS recent_sessions,
           countIf(d <= today() - 358) AS old_sessions
    FROM tape
    GROUP BY ticker
    HAVING recent_sessions >= 15
       AND old_sessions > 0
       AND adv_usd >= 1000000
       AND last_close > 0
       AND close_year_ago > 0
),
named AS (
    SELECT m.ticker AS ticker,
           100 * m.latest_payment * 12 / p.last_close AS yld,
           100 * (p.last_close - p.close_year_ago) / p.close_year_ago AS price_change,
           m.ticker IN (SELECT ticker FROM filers) AS is_filer
    FROM monthly m
    INNER JOIN px p ON p.ticker = m.ticker
)
SELECT multiIf(yld < 3, 'Under 3%',
               yld < 5, 'From 3% to 5%',
               yld < 8, 'From 5% to 8%',
               yld < 12, 'From 8% to 12%',
               'Above 12%') AS bucket,
       count() AS payers,
       round(quantileDeterministic(0.5)(yld, cityHash64(ticker)), 2) AS median_yield_pct,
       round(quantileDeterministic(0.5)(price_change, cityHash64(ticker)), 1) AS median_price_change_12m_pct,
       countIf(is_filer) AS company_filings
FROM named
GROUP BY bucket
ORDER BY median_yield_pct

กลุ่มที่มีจำนวนหุ้นมากที่สุดคือ From 3% to 5% โดยมีหุ้น 289 ราย ในขณะที่กลุ่ม From 5% to 8% มีหุ้น 212 ราย และกลุ่ม Under 3% มีหุ้น 65 ราย ค่ามัธยฐานของอัตราผลตอบแทนเพิ่มขึ้นอย่างชัดเจน จาก 2.46% ในกลุ่มล่างสุด ไปจนถึง 14.35% ในกลุ่มบนสุด

เมื่อพิจารณาคอลัมน์ราคาที่อยู่ข้างกัน ค่ามัธยฐานการเปลี่ยนแปลงของราคาในช่วงสิบสองเดือนอยู่ที่ 0.5% ในกลุ่มอัตราผลตอบแทนต่ำสุด และอยู่ที่ -0.4% ในกลุ่ม From 3% to 5% จากนั้นอยู่ที่ -6.6% ในกลุ่ม Above 12% เนื่องจากอัตราผลตอบแทนคำนวณโดยใช้ราคาเป็นตัวหาร หุ้นจึงสามารถขยับขึ้นไปอยู่ในกลุ่มบนสุดได้โดยที่จำนวนเงินปันผลยังเท่าเดิม อัตราผลตอบแทนที่สูงผิดปกติมักเป็นผลมาจากราคาหุ้นที่ลดลง มากกว่าจะเป็นหลักฐานของการจ่ายปันผลที่สูงเกินจริง อัตราผลตอบแทนเงินปันผลเทียบกับอัตราผลตอบแทนพันธบัตร ระบุเกณฑ์ที่ตัวเลขรายได้สูงต้องผ่านให้ได้

หุ้นที่มีอัตราผลตอบแทนสูงกว่า 12%

หุ้นที่จ่ายปันผลรายเดือนซึ่งให้ผลตอบแทนสูงกว่าประมาณ 12% เป็นกลุ่มที่ควรค่าแก่การพิจารณาอีกครั้ง ต่อไปนี้คือรายชื่อบริษัทที่ผ่านเกณฑ์ดังกล่าว โดยพิจารณาจากราคาหุ้นและเงินปันผลรายเดือนในช่วงหนึ่งปีที่ผ่านมา

คำสั่งดึงข้อมูลกลุ่มผู้จ่ายปันผลรายเดือนที่มี Yield สูงกว่า 12% - การเคลื่อนไหวของราคาและเงินปันผลที่เป็นปัจจัยเบื้องหลังตัวเลข
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH monthly AS (
    SELECT ticker,
           argMax(cash_amount, ex_dividend_date) AS latest_payment,
           argMin(cash_amount, ex_dividend_date) AS oldest_payment
    FROM global_markets.stocks_dividends
    WHERE ex_dividend_date > today() - 400
      AND ex_dividend_date <= today()
      AND cash_amount > 0
      AND distribution_type = 'recurring'
      AND ticker NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN today() - 400 AND today())
    GROUP BY ticker
    HAVING countIf(ex_dividend_date > today() - 365) BETWEEN 10 AND 14
       AND argMax(frequency, ex_dividend_date) = 12
       AND oldest_payment > 0
),
filers AS (
    SELECT ticker
    FROM global_markets.stocks_ratios
    GROUP BY ticker
    HAVING argMax(market_cap, date) > 0
),
tape AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           sum(toFloat64(close) * volume) AS dollar_vol,
           argMax(toFloat64(close), window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN (SELECT ticker FROM monthly)
      AND (window_start >= toDateTime(today() - 32)
           OR (window_start >= toDateTime(today() - 378) AND window_start < toDateTime(today() - 358)))
      AND toDate(toTimeZone(window_start, 'America/New_York')) < today()
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
          + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
          + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
    GROUP BY ticker, d
),
px AS (
    SELECT ticker,
           avgIf(dollar_vol, d > today() - 32) AS adv_usd,
           argMaxIf(close_px, d, d > today() - 32) AS last_close,
           argMaxIf(close_px, d, d <= today() - 358) AS close_year_ago,
           countIf(d > today() - 32) AS recent_sessions,
           countIf(d <= today() - 358) AS old_sessions
    FROM tape
    GROUP BY ticker
    HAVING recent_sessions >= 15
       AND old_sessions > 0
       AND adv_usd >= 1000000
       AND last_close > 0
       AND close_year_ago > 0
)
SELECT m.ticker AS ticker,
       round(100 * m.latest_payment * 12 / p.last_close, 2) AS annual_yield_pct,
       round(100 * (p.last_close - p.close_year_ago) / p.close_year_ago, 1) AS price_change_12m_pct,
       round(100 * (m.latest_payment - m.oldest_payment) / m.oldest_payment, 1) AS payment_change_12m_pct,
       round(p.adv_usd / 1e6, 1) AS avg_daily_traded_musd
FROM monthly m
INNER JOIN px p ON p.ticker = m.ticker
INNER JOIN filers f ON f.ticker = m.ticker
WHERE 100 * m.latest_payment * 12 / p.last_close >= 12
ORDER BY annual_yield_pct DESC
LIMIT 25

มีหุ้น 9 ที่ผ่านเกณฑ์ดังกล่าว EARN มีอัตราผลตอบแทนต่อปีสูงที่สุดที่ 21.85% โดยราคาหุ้นมีการเปลี่ยนแปลง -26% ในช่วงสิบสองเดือน และเงินปันผลรายเดือนมีการเปลี่ยนแปลง 0% ตามมาด้วย PSEC ที่ระดับ 19.34% โดยราคาหุ้นมีการเปลี่ยนแปลง -36.3% และเงินปันผลมีการเปลี่ยนแปลง -22.2% ทั้งนี้ การลดเงินปันผลและการลดลงของราคาหุ้นมักเกิดขึ้นพร้อมกันในหุ้นตัวเดียวกัน ซึ่งส่งผลให้อัตราผลตอบแทนสูงขึ้นจากทั้งสองปัจจัย

อัตราผลตอบแทนเพียงอย่างเดียวเป็นตัวเลขที่ไม่สมบูรณ์ ซึ่งเป็นเหตุผลที่ การทำความเข้าใจว่าอัตราผลตอบแทนเงินปันผลคืออะไร จึงมีความสำคัญอย่างยิ่ง

เงินปันผลรายเดือนของ Realty Income รายปี

Realty Income เป็นจุดอ้างอิงสำหรับกลุ่มอุตสาหกรรมนี้ และเป็นจุดเริ่มต้นพื้นฐานสำหรับผู้ที่ศึกษาเรื่องเงินปันผลรายเดือน อัตราเงินปันผลรายเดือนที่ประกาศไว้ ซึ่งเป็นยอดจ่ายสูงสุดที่ประกาศในแต่ละปีปฏิทิน แสดงควบคู่ไปกับอัตราการเติบโตเมื่อเทียบกับปีก่อนหน้า และจำนวนครั้งที่มีการปรับขึ้นอัตราดังกล่าวภายในปีนั้น:

คำสั่งดึงข้อมูลอัตราปันผลรายเดือนที่ประกาศโดย Realty Income ตามปีปฏิทิน, ส่วนต่างที่เพิ่มขึ้นจากปีก่อนหน้า และการปรับขึ้นในแต่ละปี
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH steps AS (
    SELECT ed, amt,
           lagInFrame(amt) OVER (ORDER BY ed ASC) AS prior_amt
    FROM (
        SELECT ex_dividend_date AS ed, max(cash_amount) AS amt
        FROM global_markets.stocks_dividends
        WHERE ticker = 'O'
          AND distribution_type = 'recurring'
          AND cash_amount > 0
          AND ex_dividend_date >= '2013-01-01'
          AND ex_dividend_date < toStartOfYear(today())
        GROUP BY ed
    )
),
yearly AS (
    SELECT toYear(ed) AS year,
           max(amt) AS monthly_rate,
           countIf(prior_amt > 0 AND amt > prior_amt) AS raise_count
    FROM steps
    GROUP BY year
),
seq AS (
    SELECT year, monthly_rate, raise_count,
           lagInFrame(monthly_rate) OVER (ORDER BY year ASC) AS prior_rate
    FROM yearly
),
panel AS (
    SELECT year, monthly_rate, raise_count,
           100 * (monthly_rate - prior_rate) / prior_rate AS raise_pct
    FROM seq
    WHERE prior_rate > 0 AND year >= 2014
)
SELECT year,
       round(monthly_rate, 4) AS monthly_payment_usd,
       round(raise_pct, 2) AS annual_raise_pct,
       raise_count,
       round(min(raise_pct) OVER (), 2) AS smallest_annual_raise_pct
FROM panel
ORDER BY year

อัตราเงินปันผลรายเดือนเพิ่มขึ้นจาก $0.1834 ใน 2014 เป็น $0.27 ใน 2025 โดยมีการปรับขึ้นรายปีที่น้อยที่สุดในกลุ่มข้อมูลคือ 0.69% ส่งผลให้อัตราเงินปันผลมีการปรับตัวเพิ่มขึ้นในทุกปีที่แสดง อัตราการเติบโตอยู่ที่ 2.47% ในปีเต็มล่าสุด และอยู่ที่ 0.69% ใน 2014 โดยจำนวนครั้งที่ปรับขึ้นแสดงให้เห็นถึงแนวทางการปรับอัตราดังกล่าว คือมีการปรับขึ้นแยกกัน 6 ครั้ง ภายในปี 2025 เพียงปีเดียว ผู้จ่ายปันผลรายเดือนมักปรับอัตราขึ้นทีละน้อยหลายครั้งต่อปี แทนที่จะปรับขึ้นครั้งเดียวในอัตราที่สูง ข้อมูลรายละเอียดทั้งหมดสามารถดูได้ที่หน้า เงินปันผลของ Realty Income

ระยะเวลาการบันทึกข้อมูลการจ่ายเงินรายเดือนย้อนหลัง

สถิติความต่อเนื่องทั้งหมดในหน้านี้ วัดจากประวัติการจ่ายเงินปันผล ไม่ใช่จากปีที่บริษัทเริ่มจ่ายเงินรายเดือนครั้งแรก ซึ่งข้อมูลชุดนี้มีระยะเวลาบันทึกสั้นกว่ากลุ่มบริษัทที่จ่ายเงินรายเดือนมาอย่างยาวนานที่สุด เมื่อนับจำนวนหุ้นที่มีวันขึ้นเครื่องหมาย ex-date ซ้ำกันสิบถึงสิบสี่ครั้งในแต่ละปีปฏิทินที่เสร็จสมบูรณ์:

คำสั่งดึงข้อมูลกลุ่มผู้จ่ายปันผลรายเดือนตามประวัติการจ่ายปันผล แบ่งตามปีปฏิทินที่เสร็จสิ้น
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH per_year AS (
    SELECT ticker,
           toYear(ex_dividend_date) AS year,
           count(DISTINCT ex_dividend_date) AS payments
    FROM global_markets.stocks_dividends
    WHERE distribution_type = 'recurring'
      AND cash_amount > 0
      AND ex_dividend_date >= '2005-01-01'
      AND ex_dividend_date < toStartOfYear(today())
    GROUP BY ticker, year
)
SELECT year,
       countIf(payments BETWEEN 10 AND 14) AS monthly_payers,
       round(100 * countIf(payments BETWEEN 10 AND 14) / count(), 2) AS monthly_share_pct
FROM per_year
GROUP BY year
ORDER BY year

ข้อมูลระบุว่ามีผู้จ่ายเงินรายเดือนจำนวน 60 รายใน 2011 และ 135 รายใน 2012 จากนั้นมีจำนวน 730 รายใน 2013 และ 1481 รายใน 2025 คอลัมน์สัดส่วนหุ้นแสดงให้เห็นความแตกต่างระหว่างการเติบโตตามลำดับขั้นกับอัตราการเติบโตทั่วไป โดยจำนวนผู้จ่ายเงินรายเดือนเพิ่มขึ้นจาก 1.44% ของผู้จ่ายเงินแบบต่อเนื่องทั้งหมด เป็น 10.2% ทั้งนี้ บริษัทที่จ่ายเงินรายเดือนมานานก่อนช่วงเวลาดังกล่าว ไม่สามารถแสดงจำนวนปีที่จ่ายต่อเนื่องในหน้านี้ได้มากกว่าระยะเวลาที่มีการบันทึกข้อมูลไว้

เกณฑ์การวัดผลของรายการนี้

คำอธิบายเงื่อนไขและข้อกำหนดต่างๆ อย่างชัดเจน

  • ความถี่ (Cadence). Ticker จะถูกจัดอยู่ในกลุ่มรายเดือน หากมีการบันทึกการจ่ายเงินสดแบบต่อเนื่องระหว่างสิบถึงสิบสี่ครั้งในช่วง 365 วันที่ผ่านมา และมีป้ายระบุความถี่ล่าสุดเป็นรายเดือน เงื่อนไขทั้งสองส่วนมีความสำคัญ โดยเกณฑ์ขั้นต่ำช่วยรองรับกรณีที่มีข้อมูลขาดหายไปบางส่วน และเกณฑ์ขั้นสูงช่วยคัดกรองกลุ่มที่จ่ายรายสัปดาห์และรายวันออกไป
  • ประเภทการจ่ายเงิน (Payment type). นับเฉพาะการจ่ายเงินที่ข้อมูลระบุว่าเป็นแบบต่อเนื่องเท่านั้น การจ่ายเงินพิเศษ (Special), การจ่ายเงินเพิ่มเติม (Supplemental) และการจ่ายเงินที่ไม่สม่ำเสมอ (Irregular) จะถูกยกเว้นจากการทดสอบความถี่และไม่นำมาคำนวณอัตราผลตอบแทน (Yield)
  • ความต่อเนื่อง (Streak). จำนวนปีที่มีการจ่ายเงินรายเดือนอย่างต่อเนื่อง นับจากวันที่ขึ้นเครื่องหมาย ex-date ของการจ่ายเงินแบบต่อเนื่องที่ไม่มีช่วงว่างเกินกว่าเจ็ดสิบวัน เนื่องจากข้อมูลอาจขาดหายไปในบางเดือนที่บริษัทมีการจ่ายเงินจริง การกำหนดให้ต้องมีข้อมูลครบสิบสองครั้งต่อปีจะทำให้ค่าความต่อเนื่องต่ำกว่าความเป็นจริง ในขณะที่การเปลี่ยนไปใช้เกณฑ์รายไตรมาสจะทำให้เกิดช่วงว่างเกือบสามเดือนและทำให้ความต่อเนื่องสิ้นสุดลงอย่างถูกต้อง ข้อมูลที่บันทึกไว้จะเป็นตัวกำหนดเพดานสูงสุด ดังที่แสดงในแผงข้อมูลด้านบน
  • เกณฑ์สภาพคล่องขั้นต่ำ (Liquidity floor). ต้องมีมูลค่าการซื้อขายหุ้นเฉลี่ยไม่ต่ำกว่าหนึ่งล้านดอลลาร์ต่อวัน โดยต้องมีจำนวนอย่างน้อยสิบห้าเซสชันในช่วงเวลาทำการปกติภายในเดือนที่ผ่านมา หากต่ำกว่านี้ ส่วนต่างราคาเสนอซื้อเสนอขาย (Spreads) จะทำให้ค่าอัตราผลตอบแทนไม่มีนัยสำคัญในทางปฏิบัติ
  • การกำหนดราคา (Pricing). อัตราผลตอบแทนคำนวณจากราคาปิดล่าสุดของเซสชันที่เสร็จสมบูรณ์แล้ว (COMPLETED session) โดยจะไม่รวมเซสชันที่กำลังดำเนินอยู่ขณะที่หน้าเว็บนี้ถูกสร้างขึ้น ดังนั้นวันที่ที่แสดงอาจล่าช้ากว่าวันที่ปัจจุบันหนึ่งถึงสองวัน
  • การคัดกรองบริษัท (Company filter). รายการหลักจะแสดงเฉพาะ Ticker ที่มีข้อมูลพื้นฐานของบริษัท (Company-fundamentals) เท่านั้น ส่วนแผงการกระจายอัตราผลตอบแทนจะรวมผู้จ่ายเงินรายเดือนทุกราย รวมถึงกองทุนด้วย
  • การยกเว้น (Exclusions). ผลิตภัณฑ์ที่มีอัตราทด (Leveraged) และผลิตภัณฑ์ที่มีทิศทางตรงกันข้าม (Inverse) ที่จดทะเบียนในตลาดหลักทรัพย์จะถูกคัดออก รวมถึง Ticker ใดๆ ที่มีการแตกหุ้น (Stock split) ในรอบปีที่ผ่านมา (เนื่องจากการแตกหุ้นทำให้ราคาเปลี่ยนแปลงหลอกตาและทำให้การเปรียบเทียบราคาต่อหุ้นผิดเพี้ยน) และสัญลักษณ์หุ้นที่ถูกใช้ซ้ำโดยผู้ออกหลักทรัพย์สองรายจะถูกยกเว้นในทุกกรณี
  • สิ่งที่ไม่รวมอยู่ในข้อมูลนี้. ข้อมูลนี้ไม่มีอัตราค่าใช้จ่ายของกองทุน (Expense ratios) และลักษณะทางภาษีของการจ่ายเงิน (การคืนเงินต้นเทียบกับรายได้) กองทุนรายเดือนที่มีอัตราผลตอบแทนสูงหลายแห่งจ่ายคืนในรูปแบบของเงินต้นแทนที่จะเป็นกำไร ซึ่งข้อมูลดังกล่าวจะไม่แสดงในอัตราผลตอบแทน

FAQ

หุ้นตัวใดบ้างที่มีการจ่ายเงินปันผลทุกเดือน?

จากการตรวจสอบประวัติการจ่ายเงินปันผลย้อนหลังสิบสองเดือน พบว่ามีหุ้นที่จดทะเบียนในสหรัฐฯ จำนวน 1553 ตัวที่มีการจ่ายปันผลรายเดือน แต่มีเพียง 32 เท่านั้นที่มีข้อมูลพื้นฐานของบริษัทรองรับ ส่วนที่เหลือเกือบทั้งหมดเป็นกองทุน โดยหุ้นที่มีปริมาณการซื้อขายสูงสุดในกลุ่มนี้คือ O และรายชื่อหุ้นที่มีสภาพคล่องต่ำสุดมีจำนวนถึง 26

หุ้นปันผลรายเดือนมีความปลอดภัยหรือไม่?

การจ่ายปันผลรายเดือนไม่ได้เป็นเครื่องยืนยันถึงความปลอดภัยของเงินลงทุน กลุ่มหุ้นเหล่านี้มักเป็น mortgage REITs และกองทุนที่สร้างรายได้จาก option ซึ่งการจ่ายปันผลจะผันแปรตามสภาวะสินเชื่อและอัตราดอกเบี้ย จากข้อมูลหุ้นที่จ่ายปันผลรายเดือนในที่นี้ พบว่าค่ามัธยฐานของการเปลี่ยนแปลงราคาในรอบสิบสองเดือนอยู่ที่ -6.6% สำหรับหุ้นที่มีอัตราผลตอบแทนสูงกว่า 12% เทียบกับ 0.5% สำหรับหุ้นที่มีอัตราผลตอบแทนต่ำกว่า 3%

หุ้นปันผลรายเดือนที่มีอัตราผลตอบแทนสูงสุดคือตัวใด?

ในกลุ่มบริษัทที่มีการจดทะเบียนและมีสภาพคล่องเพียงพอ EARN มีอัตราผลตอบแทนต่อปีสูงที่สุดที่ 21.85% ณ ราคาปิดเมื่อสิ้นสุดวันที่ Jul 21 โดยราคาหุ้นมีการเปลี่ยนแปลง -26% ในช่วงสิบสองเดือนที่ผ่านมา ซึ่งเป็นปัจจัยหลักที่ทำให้เกิดอัตราผลตอบแทนในระดับเลขสองหลัก

วิธีการคำนวณอัตราผลตอบแทนรายเดือนในหน้านี้คืออะไร?

คำนวณโดยนำเงินปันผลรายเดือนล่าสุดที่ประกาศไว้คูณด้วยสิบสอง แล้วหารด้วยราคาปิดของวันทำการล่าสุด วิธีนี้เป็นการคำนวณอัตราผลตอบแทนแบบปรับเป็นรายปี (annualized) แทนที่จะเป็นการรวมยอดเงินสดจากสิบสองเดือนที่ผ่านมา ดังนั้น หากบริษัทมีการประกาศเพิ่มเงินปันผลในช่วงกลางปี ค่าที่แสดงในหน้านี้จะสูงกว่าอัตราผลตอบแทนย้อนหลัง


ตารางทั้งหมดข้างต้นมาจากการดึงข้อมูลผ่านคำสั่ง SQL ที่มีการบันทึกเวอร์ชันไว้ โดยอ้างอิงจากข้อมูลการประกาศจ่ายเงินปันผลและข้อมูลราคาแบบรายนาที คุณสามารถขยายคำสั่ง SQL ภายใต้แผงควบคุมใดก็ได้ หรือสร้างตัวกรองหุ้นที่จ่ายปันผลรายเดือนด้วยตนเองบน terminal ของ Strasmore