Bẫy dividend yield: Cách nhận biết sớm
Dividend yield cao có thể do giá cổ phiếu giảm mạnh. Xem nhóm yield cao nhất diễn biến ra sao sau đó và bốn phép kiểm tra giúp phát hiện bẫy sớm.
Bẫy dividend yield là trường hợp tỷ suất cổ tức cao hình thành do giá cổ phiếu giảm, thay vì do doanh nghiệp chi trả cổ tức hào phóng. Yield được tính bằng cổ tức hằng năm trên mỗi cổ phiếu chia cho giá cổ phiếu. Vì vậy, một cổ phiếu mất một nửa giá trị sẽ có yield hiển thị tăng gấp đôi, dù doanh nghiệp không phải chi thêm một đồng nào cho khoản cổ tức.
Các mã đứng đầu mọi bộ lọc yield thường là những mã đã bị thị trường chiết khấu mạnh. Một tỷ lệ đáng kể trong số đó sẽ giảm hoặc ngừng chi trả cổ tức trong năm tiếp theo. Trang này đo lường tỷ lệ đó và trình bày bốn phép kiểm tra giúp phân biệt một cổ phiếu trả cổ tức có mức định giá rẻ với một doanh nghiệp đang suy yếu.
Vì sao yield cổ tức cao nhất thường đi kèm với mức giá giảm mạnh nhất
Yield có hai thành phần biến động theo những cách hoàn toàn khác nhau. Tử số là mức cổ tức hằng năm, do hội đồng quản trị quyết định vài lần mỗi năm và không thay đổi giữa các lần quyết định đó. Mẫu số là giá cổ phiếu, biến động từng giây khi thị trường mở cửa. Chỉ một trong hai thành phần có thể thay đổi nhanh. Vì vậy, gần như mọi đợt tăng mạnh của yield đều phản ánh diễn biến giá hơn là thay đổi trong mức chi trả.
Dưới đây là sự phân tách đó, được đo trên một nhóm cổ phiếu cố định. Nhóm này gồm mọi cổ phiếu niêm yết tại Mỹ đóng cửa trên mức $5 vào ngày 30 tháng 6 năm 2025 và đã trả cổ tức tiền mặt định kỳ theo quý trong mười hai tháng trước đó. Các cổ phiếu được xếp vào từng nhóm theo forward yield công bố tại ngày đó: khoản chi trả theo quý gần nhất nhân bốn, chia cho giá đóng cửa. Sau đó, bảng dữ liệu xem xét ngược lại để đo mức biến động của từng thành phần trong phân số trong mười hai tháng trước ngày nói trên.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH px_base AS (
SELECT ticker,
argMax(toFloat64(close), window_start) AS price
FROM global_markets.delayed_stocks_minute_aggs
WHERE toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2025-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker
HAVING price >= 5
),
px_prior AS (
SELECT ticker,
argMax(toFloat64(close), window_start) AS price
FROM global_markets.delayed_stocks_minute_aggs
WHERE toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2024-06-28')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker
HAVING price > 0
),
rate_base AS (
SELECT ticker,
argMax(toFloat64(cash_amount) * frequency, ex_dividend_date) AS annual_rate
FROM global_markets.stocks_dividends
WHERE distribution_type = 'recurring'
AND frequency = 4
AND cash_amount > 0
AND ex_dividend_date > toDate('2024-06-30')
AND ex_dividend_date <= toDate('2025-06-30')
GROUP BY ticker
),
rate_prior AS (
SELECT ticker,
argMax(toFloat64(cash_amount) * frequency, ex_dividend_date) AS annual_rate
FROM global_markets.stocks_dividends
WHERE distribution_type = 'recurring'
AND frequency = 4
AND cash_amount > 0
AND ex_dividend_date > toDate('2023-06-30')
AND ex_dividend_date <= toDate('2024-06-28')
GROUP BY ticker
)
SELECT multiIf(100 * rb.annual_rate / b.price >= 8, '8% and up',
100 * rb.annual_rate / b.price >= 6, '6-8%',
100 * rb.annual_rate / b.price >= 4, '4-6%',
100 * rb.annual_rate / b.price >= 2, '2-4%',
'under 2%') AS yield_band,
count() AS names,
round(quantileDeterministic(0.5)(100 * rb.annual_rate / b.price, cityHash64(b.ticker)), 2) AS median_yield_pct,
round(quantileDeterministic(0.5)(100 * (b.price / p.price - 1), cityHash64(b.ticker)), 1) AS median_price_change_pct,
round(quantileDeterministic(0.5)(100 * (rb.annual_rate / rp.annual_rate - 1), cityHash64(b.ticker)), 1) AS median_dividend_change_pct
FROM px_base AS b
INNER JOIN px_prior AS p ON b.ticker = p.ticker
INNER JOIN rate_base AS rb ON b.ticker = rb.ticker
INNER JOIN rate_prior AS rp ON b.ticker = rp.ticker
GROUP BY yield_band
ORDER BY median_yield_pctBậc thang chỉ đi theo một hướng. Các cổ phiếu trong nhóm 8% and up có yield trung vị là 9.69%, cùng mức biến động giá trung vị -2.4% trong năm trước đó. Nhóm under 2% ghi nhận 11.9% trong cùng giai đoạn. Phía chi trả hầu như không tạo ra khác biệt giữa hai nhóm: mức cổ tức thường niên hóa trung vị thay đổi 0% ở nhóm cao nhất, so với 5.5% ở nhóm thấp nhất. Về cơ bản, sắp xếp danh sách theo yield cũng là sắp xếp theo mức giảm giá trong mười hai tháng. Bộ lọc các cổ phiếu có yield cổ tức cao nhất cho thấy phiên bản cập nhật của danh sách đó. Trang này tập trung vào những yếu tố nằm bên dưới trang đầu tiên của danh sách.
Điều gì xảy ra với các mã có yield cao nhất trong mười hai tháng tiếp theo
Cùng nhóm cổ phiếu, cùng ngày quan sát, nhưng lần này nhìn về phía trước. Với mỗi nhóm, bảng so sánh tỷ lệ phân phối hằng năm của khoản chi trả định kỳ gần nhất trước ngày 30 tháng 6 năm 2025 với khoản chi trả định kỳ gần nhất trong mười hai tháng sau đó. Mức giảm hơn 1% được tính là cắt giảm. Nếu không có bất kỳ khoản cổ tức tiền mặt định kỳ nào trong mười hai tháng đó, mã này được tính là đã ngừng chi trả. Với mã thay đổi lịch chi trả, phép so sánh sử dụng tỷ lệ phân phối hằng năm, nên việc chuyển từ chi trả hằng quý sang hằng tháng không bị tính sai.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH px_base AS (
SELECT ticker,
argMax(toFloat64(close), window_start) AS price
FROM global_markets.delayed_stocks_minute_aggs
WHERE toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2025-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker
HAVING price >= 5
),
rate_before AS (
SELECT ticker,
argMax(toFloat64(cash_amount) * frequency, ex_dividend_date) AS annual_rate
FROM global_markets.stocks_dividends
WHERE distribution_type = 'recurring'
AND frequency = 4
AND cash_amount > 0
AND ex_dividend_date > toDate('2024-06-30')
AND ex_dividend_date <= toDate('2025-06-30')
GROUP BY ticker
),
rate_after AS (
SELECT ticker,
argMax(toFloat64(cash_amount) * frequency, ex_dividend_date) AS annual_rate
FROM global_markets.stocks_dividends
WHERE distribution_type = 'recurring'
AND frequency > 0
AND cash_amount > 0
AND ex_dividend_date > toDate('2025-06-30')
AND ex_dividend_date <= toDate('2026-06-30')
GROUP BY ticker
)
SELECT multiIf(100 * b.annual_rate / p.price >= 8, '8% and up',
100 * b.annual_rate / p.price >= 6, '6-8%',
100 * b.annual_rate / p.price >= 4, '4-6%',
100 * b.annual_rate / p.price >= 2, '2-4%',
'under 2%') AS yield_band,
count() AS payers,
round(quantileDeterministic(0.5)(100 * b.annual_rate / p.price, cityHash64(p.ticker)), 2) AS median_yield_pct,
round(100 * countIf(ifNull(a.annual_rate, 0) = 0) / count(), 1) AS pct_stopped_paying,
round(100 * countIf(ifNull(a.annual_rate, 0) > 0 AND a.annual_rate < b.annual_rate * 0.99) / count(), 1) AS pct_reduced_rate,
round(100 * countIf(ifNull(a.annual_rate, 0) = 0 OR a.annual_rate < b.annual_rate * 0.99) / count(), 1) AS pct_reduced_or_stopped,
round(100 * countIf(ifNull(a.annual_rate, 0) >= b.annual_rate * 0.99) / count(), 1) AS pct_maintained_or_raised
FROM px_base AS p
INNER JOIN rate_before AS b ON p.ticker = b.ticker
LEFT JOIN rate_after AS a ON p.ticker = a.ticker
GROUP BY yield_band
ORDER BY median_yield_pctTrong số 330 mã thuộc nhóm 8% and up vào ngày 30 tháng 6 năm 2025, 36.4% mã đã giảm tỷ lệ phân phối hằng năm hoặc không thực hiện khoản chi trả định kỳ nào trong mười hai tháng tiếp theo. Con số này gồm 28.8% mã giảm và 7.6% mã ngừng chi trả. Nhóm under 2%, gồm 1369 mã, ghi nhận tỷ lệ 23.4%. Trên toàn bộ 5 nhóm, tỷ lệ này tăng theo yield.
Hãy đọc nửa còn lại của cùng bảng trước khi đưa ra kết luận: 63.6% mã trong nhóm cao nhất giữ nguyên hoặc tăng tỷ lệ chi trả. Yield cao phản ánh tỷ lệ xảy ra, không phải phán quyết đối với bất kỳ công ty riêng lẻ nào. Điều mà nhóm này cho thấy là xác suất cơ sở mà nhà đầu tư phải đối mặt khi mua các mã đứng đầu bảng sàng lọc, cũng như mức độ phân tán kết quả lớn hơn ở nhóm đó. Cơ chế hội đồng quản trị thực sự áp dụng khi dòng tiền trở nên eo hẹp được trình bày trong việc cắt giảm cổ tức.
Kiểm tra một: tỷ lệ chi trả còn dư địa hay không
Tỷ lệ chi trả được tính bằng cổ tức trên mỗi cổ phiếu chia cho lợi nhuận trên mỗi cổ phiếu. Khi dưới 100%, lợi nhuận được báo cáo đủ trang trải cổ tức và vẫn còn dư. Khi vượt 100%, công ty đang phân phối nhiều hơn số lợi nhuận tạo ra, bằng nguồn tiền mặt sẵn có, tiền thu từ bán tài sản hoặc vốn vay. Sắp xếp các cổ phiếu đang chi trả cổ tức hôm nay theo từng nhóm yield cho thấy hai chỉ số này biến động gắn chặt với nhau đến mức nào.
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT multiIf(dividend_yield * 100 >= 8, '8% and up',
dividend_yield * 100 >= 6, '6-8%',
dividend_yield * 100 >= 4, '4-6%',
dividend_yield * 100 >= 2, '2-4%',
'under 2%') AS yield_band,
count() AS payers,
round(quantileDeterministic(0.5)(dividend_yield * 100, cityHash64(ticker)), 2) AS median_yield_pct,
round(quantileDeterministicIf(0.5)(dividend_yield * price / earnings_per_share * 100,
cityHash64(ticker), earnings_per_share > 0), 1) AS median_payout_ratio_pct,
round(100 * countIf(earnings_per_share > 0 AND dividend_yield * price > earnings_per_share)
/ countIf(earnings_per_share > 0), 1) AS pct_paying_over_earnings,
round(100 * countIf(earnings_per_share <= 0) / count(), 1) AS pct_no_positive_eps
FROM global_markets.stocks_ratios
WHERE date = (SELECT max(date) FROM global_markets.stocks_ratios)
AND price >= 5
AND market_cap >= 1000000000
AND dividend_yield > 0
AND earnings_per_share IS NOT NULL
GROUP BY yield_band
HAVING countIf(earnings_per_share > 0) > 0
ORDER BY median_yield_pctTỷ lệ chi trả trung vị tăng qua từng nhóm, từ 21.5% ở nhóm under 2% lên 160.6% ở nhóm 8% and up. Tỷ lệ các công ty phân phối nhiều hơn số lợi nhuận tạo ra cũng đi theo xu hướng này: 2.6% ở nhóm thấp nhất so với 80.4% ở nhóm cao nhất. Ngoài ra, 23.3% số công ty thuộc nhóm cao nhất không ghi nhận lợi nhuận dương trên mỗi cổ phiếu, so với 9.6% ở nhóm thấp nhất. Phần tính toán đầy đủ, bao gồm cả những trường hợp tỷ lệ trên 100% là bình thường, được trình bày trong hướng dẫn về tỷ lệ chi trả.
Kiểm tra thứ hai: yield có cao hơn nhiều so với biên độ của chính công ty không
Yield chỉ có ý nghĩa khi được so sánh với một mốc tham chiếu. Median của thị trường trả lời một câu hỏi, được trình bày trong thế nào là yield cổ tức tốt, còn biên độ của chính công ty trong năm năm qua trả lời câu hỏi cụ thể hơn: cổ phiếu này đã từng chi trả nhiều đến mức đó chưa. Conagra Brands, công ty thực phẩm đóng gói, theo dõi diễn biến này theo từng tháng trong năm năm qua.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH px AS (
SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
argMax(toFloat64(close), window_start) AS price,
max(toDate(toTimeZone(window_start, 'America/New_York'))) AS last_day
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'CAG'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2021-08-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY month_start
),
dv AS (
SELECT ex_dividend_date, toFloat64(cash_amount) AS cash_amount
FROM global_markets.stocks_dividends
WHERE ticker = 'CAG'
AND distribution_type = 'recurring'
AND frequency = 4
AND cash_amount > 0
AND ex_dividend_date >= toDate('2021-01-01')
)
SELECT formatDateTime(px.month_start, '%Y-%m') AS month,
formatDateTimeInJodaSyntax(px.month_start, 'MMMM yyyy') AS month_label,
round(any(px.price), 2) AS price_usd,
round(argMax(dv.cash_amount, dv.ex_dividend_date) * 4, 2) AS annual_dividend_usd,
round(argMax(dv.cash_amount, dv.ex_dividend_date) * 4 / any(px.price) * 100, 2) AS dividend_yield_pct
FROM px, dv
WHERE dv.ex_dividend_date <= px.last_day
GROUP BY px.month_start
ORDER BY px.month_startHãy đọc cả ba cột cùng nhau trong 60 tháng. Mức cổ tức thường niên tăng từ $1.25 mỗi cổ phiếu vào August 2021 lên $0.7 vào July 2026. Giá cổ phiếu tăng từ $33.11 lên $14.52 trong cùng giai đoạn. Yield, được tính bằng tỷ lệ giữa hai con số này, tăng từ 3.78% lên 4.82%. Lịch chi trả không giải thích được mức thay đổi đó. Một screener sắp xếp theo yield chỉ cho thấy kết quả của mẫu số mà không cho thấy quá trình hình thành con số này.
Đó là toàn bộ phép chẩn đoán trong một biểu đồ. Khi yield cao gấp nhiều lần mức thông thường của chính cổ phiếu trong năm năm qua, câu hỏi đáng đặt ra là thị trường đang định giá điều gì đã thay đổi trong hoạt động kinh doanh, chứ không phải tỷ lệ này hiện trông hấp dẫn đến đâu.
Hai bước kiểm tra bổ sung trước khi lọc
Bước kiểm tra thứ ba là dòng tiền. Cổ tức được chi trả bằng tiền mặt, trong khi lợi nhuận là chỉ tiêu kế toán sau khi đã tính các khoản chi phí không dùng tiền mặt. Tỷ lệ chi trả dưới 100% lợi nhuận vẫn có thể cao hơn 100% dòng tiền tự do mà doanh nghiệp thực tế tạo ra. Khoản chi trả được tài trợ từ bảng cân đối kế toán cũng có dư địa duy trì ngắn hơn khoản được tài trợ từ hoạt động kinh doanh. Hãy so sánh tổng cổ tức hằng năm với dòng tiền từ hoạt động kinh doanh sau khi trừ chi tiêu vốn trong nhiều năm, thay vì chỉ xem một năm.
Bước kiểm tra thứ tư là trung vị của nhóm công ty cùng ngành. Yield thường tập trung theo ngành: các công ty tiện ích chịu quản lý, quỹ đầu tư bất động sản và partnership chuyển dòng thu nhập thường chi trả cao hơn nhiều lần so với một công ty phần mềm; cấu trúc của chúng giải thích cho mức này. REIT phải phân phối phần lớn thu nhập chịu thuế để duy trì quy chế thuế. Tuy nhiên, trong cùng một ngành, yield cao gấp đôi trung vị của nhóm so sánh là một ngoại lệ rõ rệt. Nhóm so sánh là chuẩn tham chiếu công bằng duy nhất trong trường hợp này. Một điểm cuối cùng cần lưu ý: màn hình lọc hiển thị trailing yield cộng các khoản chi trả đã thực hiện, nên có thể cho thấy một mức cổ tức đã bị cắt từ nhiều tháng trước. Sự khác biệt được trình bày trong so sánh dividend yield trailing và forward, còn phép tính cơ bản nằm trong dividend yield đo lường điều gì.
Câu hỏi thường gặp về bẫy lợi suất cổ tức
Bẫy lợi suất cổ tức là gì?
Đó là trường hợp lợi suất cổ tức cao lên do giá cổ phiếu giảm, không phải do khoản chi trả tăng. Dấu hiệu nằm ở chính tỷ lệ này: trong mười hai tháng trước ngày 30 tháng 6 năm 2025, nhóm 8% and up ghi nhận mức thay đổi giá trung vị là -2.4%, trong khi tỷ lệ cổ tức trung vị thay đổi 0%.
Lợi suất cổ tức cao có nghĩa là sắp bị cắt giảm không?
Không có một mức lợi suất nào có thể dự báo chắc chắn điều đó, nhưng tỷ lệ cơ sở khác biệt rõ rệt giữa các nhóm. Trong mười hai tháng sau ngày 30 tháng 6 năm 2025, 36.4% trong nhóm 8% and up đã giảm hoặc dừng chi trả, so với 23.4% trong nhóm under 2%. 63.6% còn lại của nhóm cao nhất giữ nguyên hoặc tăng khoản chi trả.
Tỷ lệ chi trả bao nhiêu là quá cao?
Với một công ty hoạt động thông thường, tỷ lệ trên 100% có nghĩa là cổ tức vượt quá lợi nhuận được báo cáo. Tại dữ liệu gần nhất, bên chi trả trung vị trong nhóm 8% and up có tỷ lệ 160.6%, và 80.4% trong nhóm này đã chi trả nhiều hơn lợi nhuận tạo ra. REIT và các công ty hợp danh thường xuyên vượt 100% khi tính trên lợi nhuận, nên được đánh giá dựa trên dòng tiền.
Làm thế nào để kiểm tra cổ tức trước khi tin vào lợi suất?
Bốn chỉ báo bao quát phần lớn vấn đề: tỷ lệ chi trả so với lợi nhuận, tổng cổ tức phải trả so với dòng tiền tự do, lợi suất hiện tại so với biên độ nhiều năm của chính công ty, và lợi suất so với trung vị của các doanh nghiệp cùng ngành. Mỗi chỉ báo đều là một phép so sánh. Chỉ nhìn vào lợi suất được công bố thì không có phép so sánh nào trong số này.
Mọi số liệu ở trên đều lấy từ một truy vấn được lưu trữ và lập phiên bản, dựa trên hồ sơ cổ tức đã công bố và giá đóng cửa thực tế. Bạn có thể mở SQL của bất kỳ bảng nào hoặc tự chạy cùng bộ lọc trên terminal Strasmore.
Phương pháp và lưu ý về dữ liệu
- Nhóm được cố định tại ngày 30 tháng 6 năm 2025: gồm mọi cổ phiếu niêm yết tại Mỹ đóng cửa trên mức 5 USD trong ngày đó và có ít nhất một khoản cổ tức tiền mặt định kỳ theo quý trong mười hai tháng trước đó. Toàn bộ cổ tức đặc biệt và các khoản phân phối một lần đều bị loại trừ.
- Lợi suất trong các bảng nhóm là lợi suất kỳ hạn: khoản chi trả định kỳ theo quý mới nhất nhân bốn, chia cho giá đóng cửa trong ngày đó. Bảng tỷ lệ chi trả sử dụng lợi suất cuối kỳ của bảng tỷ lệ, được tính bằng tổng các khoản chi trả trong mười hai tháng gần nhất.
- “Giảm” có nghĩa là mức chi trả thường niên hóa cho lần chi trả định kỳ tiếp theo thấp hơn hơn 1% so với mức đang áp dụng tại ngày xác lập nhóm. “Dừng” có nghĩa là không có khoản cổ tức tiền mặt định kỳ nào có ngày giao dịch không hưởng quyền trong mười hai tháng tiếp theo.
- Quy mô các nhóm dao động từ 1369 mã trong nhóm under 2% đến 330 mã trong nhóm 8% and up. Vì vậy, tỷ lệ phần trăm của nhóm cao nhất được tính trên ít công ty hơn nhiều so với nhóm thấp nhất.
- Các giá trị trung vị sử dụng các phân vị xác định theo ticker, nên hai lần hiển thị của cùng một thống kê không thể sai lệch.