追踪股息率与预期股息率有何区别
了解追踪股息率如何汇总过去十二个月的实际派息,以及预期股息率为何按最新股息年化,掌握两种筛选器出现差异的原因。
追踪股息率和预期股息率回答的是同一个问题,区别只在分子。追踪股息率通常写作 TTM(过去十二个月),将公司过去一年实际支付的股息加总。预期股息率则取最近一次宣布的股息,并乘以每年的支付次数。两者都除以同一个股价。只要过去十二个月内股息发生过变动,这两种口径就会在同一时点为同一只股票显示不同的数值。
该比率的计算方法属于如何计算股息率。本页讨论的是分子以上的选择:数据源将哪一项股息数据放入分子,以及为什么两个筛选器会在同一个下午为同一 ticker 报出两个不同的股息率。
什么是过去十二个月股息率?
过去十二个月股息率会汇总过去365天内除息日的所有现金股息,再用该总额除以当前价格。除息日是股票开始以不含即将派发股息的价格交易的日期。大多数数据提供商也用除息日来确定股息的时间归属。
过去十二个月数据不包含任何估算。它记录的是已经实际支付的现金,也是衡量持有人已获得股息的合理指标。其缺点正是这一优点的另一面:过去十二个月股息率反映的派息可能已经不存在。一家公司上月调整季度股息后,过去十二个月的计算窗口中仍会包含三笔按旧股息率支付的股息。未来九个月内,这三笔股息仍会继续影响该指标。
什么是远期股息率?
远期股息率将最新宣布的股息年化:用最近一次股息乘以支付频率,再除以相同的股价。若某公司按季度派息,最新宣布的每股股息为 $0.50,则远期股息率对应的年化股息为 $2.00。若某公司按月派息,每股股息为 $0.25,则年化股息为 $3.00。
这是基于单次观察值的预测,前提是下一次派息与上一次相同。它反映的是现金流入的时效。公司提高股息后,新股息率会在第一次更高的股息支付时计入远期数据;而滚动股息率需要经过完整的四个季度,才能完全反映这一变化。
八家大众熟知的派息公司的追踪股息率与预期股息率
下表以同一交易日的近期股价为基准,对八家大型派息公司采用两种方法计算股息率。追踪股息率汇总过去十二个月的经常性现金股息。预期股息率则根据最近一次股息,并结合其申报的派息频率折算成年化数据。
每个数字背后的完整 SQL
WITH last_px AS (
SELECT ticker,
argMax(close, window_start) AS close_price
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('ABBV', 'CVX', 'JNJ', 'KO', 'MCD', 'MSFT', 'PEP', 'PG')
AND window_start >= now() - INTERVAL 10 DAY
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker
),
paid AS (
SELECT ticker,
sum(cash_amount) AS ttm_cash,
count() AS checks_in_window,
argMax(cash_amount, ex_dividend_date) AS latest_cash,
argMax(frequency, ex_dividend_date) AS pay_frequency
FROM global_markets.stocks_dividends
WHERE ticker IN ('ABBV', 'CVX', 'JNJ', 'KO', 'MCD', 'MSFT', 'PEP', 'PG')
AND distribution_type = 'recurring'
AND cash_amount > 0
AND ex_dividend_date > today() - INTERVAL 1 YEAR
AND ex_dividend_date <= today()
GROUP BY ticker
)
SELECT p.ticker AS ticker,
round(toFloat64(d.ttm_cash) / toFloat64(p.close_price) * 100, 2) AS trailing_yield_pct,
round(toFloat64(d.latest_cash) * d.pay_frequency / toFloat64(p.close_price) * 100, 2) AS forward_yield_pct,
round((toFloat64(d.latest_cash) * d.pay_frequency - toFloat64(d.ttm_cash))
/ toFloat64(p.close_price) * 100, 2) AS forward_minus_trailing_pp,
d.checks_in_window AS checks_in_window,
round(toFloat64(p.close_price), 2) AS share_price
FROM last_px AS p
INNER JOIN paid AS d ON p.ticker = d.ticker
ORDER BY forward_minus_trailing_pp DESC各行按两种口径之间的差距排序。顶部一行中,PEP显示的预期股息率为4.24%,追踪股息率为4.12%。底部一行中,MSFT显示的预期股息率为0.78%,追踪股息率为0.77%。公司相同,股价相同,但两种方法都成立。
支票列是差异较不明显的来源。滚动三百六十五天窗口并不等同于四个季度。除息日每年可能相差几天,而如果窗口纳入了第五次股息支付,追踪股息率就会被抬高,即使公司公布的股息率完全没有变化。
股息重置对两种口径的影响
3M 在 2024 年重置了季度股息,同时完成了医疗保健业务的分拆。自那时起,以下 26 个月末数据分别跟踪两种口径,并列出相应的已宣布季度派息。
每个数字背后的完整 SQL
WITH px AS (
SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
max(toDate(toTimeZone(window_start, 'America/New_York'))) AS last_day,
argMax(close, window_start) AS close_price
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MMM'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2024-06-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, cash_amount
FROM global_markets.stocks_dividends
WHERE ticker = 'MMM'
AND distribution_type = 'recurring'
AND frequency = 4
AND cash_amount > 0
AND ex_dividend_date >= toDate('2023-05-01')
)
SELECT formatDateTime(px.month_start, '%Y-%m') AS month,
formatDateTimeInJodaSyntax(px.month_start, 'MMM yyyy') AS month_label,
round(toFloat64(argMax(dv.cash_amount, dv.ex_dividend_date)), 2) AS declared_quarterly_usd,
round(sumIf(toFloat64(dv.cash_amount), dv.ex_dividend_date > px.last_day - INTERVAL 1 YEAR)
/ toFloat64(any(px.close_price)) * 100, 2) AS trailing_yield_pct,
round(toFloat64(argMax(dv.cash_amount, dv.ex_dividend_date)) * 4
/ toFloat64(any(px.close_price)) * 100, 2) AS forward_yield_pct,
round(abs(toFloat64(argMax(dv.cash_amount, dv.ex_dividend_date)) * 4
- sumIf(toFloat64(dv.cash_amount), dv.ex_dividend_date > px.last_day - INTERVAL 1 YEAR))
/ toFloat64(any(px.close_price)) * 100, 2) AS gap_abs_pp
FROM px, dv
WHERE dv.ex_dividend_date <= px.last_day
GROUP BY px.month_start, px.last_day
ORDER BY px.month_start在 Jun 2024,已宣布的派息为 $0.7,而旧派息率下的三次派息仍包含在滚动窗口内。滚动股息率为 5.1%。远期股息率为 2.74%。在同一只股票、同一天,两个分数使用完全相同的股价,但两种口径相差 2.36 个百分点。按滚动股息率排序的筛选结果,当月依据的是 3M 已停止按该派息率支付的现金。两个数字都没有错误;它们回答的是不同的问题。
随后,随着旧派息逐步退出窗口,差距栏在四个季度内收窄。到 Jul 2026,滚动股息率为 1.71%,远期股息率为 1.77%,相差 0.06 个百分点。收敛是常态。只有派息发生变化时,两种口径之间才会出现差距;股息增加和削减涵盖整个市场的此类变化,而3M 的股息记录则逐笔跟踪派息。
按月派息,十二次派息,有时十三次
Realty Income 每年多次小幅上调月度派息,使其远期派息率略高于前一年同期。派息次数一栏统计每次读取时,过去滚动期间实际包含的派息次数。
每个数字背后的完整 SQL
WITH px AS (
SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
max(toDate(toTimeZone(window_start, 'America/New_York'))) AS last_day,
argMax(close, window_start) AS close_price
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'O'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2024-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, cash_amount
FROM global_markets.stocks_dividends
WHERE ticker = 'O'
AND distribution_type = 'recurring'
AND frequency = 12
AND cash_amount > 0
AND ex_dividend_date >= toDate('2023-07-01')
)
SELECT formatDateTime(px.month_start, '%Y-%m') AS month,
formatDateTimeInJodaSyntax(px.month_start, 'MMM yyyy') AS month_label,
round(toFloat64(argMax(dv.cash_amount, dv.ex_dividend_date)), 4) AS declared_monthly_usd,
countIf(dv.ex_dividend_date > px.last_day - INTERVAL 1 YEAR) AS checks_in_window,
round(sumIf(toFloat64(dv.cash_amount), dv.ex_dividend_date > px.last_day - INTERVAL 1 YEAR)
/ toFloat64(any(px.close_price)) * 100, 2) AS trailing_yield_pct,
round(toFloat64(argMax(dv.cash_amount, dv.ex_dividend_date)) * 12
/ toFloat64(any(px.close_price)) * 100, 2) AS forward_yield_pct,
round(abs(toFloat64(argMax(dv.cash_amount, dv.ex_dividend_date)) * 12
- sumIf(toFloat64(dv.cash_amount), dv.ex_dividend_date > px.last_day - INTERVAL 1 YEAR))
/ toFloat64(any(px.close_price)) * 100, 2) AS gap_abs_pp
FROM px, dv
WHERE dv.ex_dividend_date <= px.last_day
GROUP BY px.month_start, px.last_day
ORDER BY px.month_start在 Aug 2024,滚动期间包含 11 次派息,过去派息率为 4.57%,远期派息率为 5.08%。在 Jul 2026,滚动期间包含 13 次派息,按已宣布的每月派息率 $0.271 计算,过去派息率为 5.49%,远期派息率为 5.09%,两者相差 0.4 个百分点。滚动一年如果包含第十三次派息,过去派息率将提高约十二分之一,但股息本身并未变化。按月派息的股票介绍了派息安排,Realty Income 的派息记录列出了每次派息。
市场各处的计算口径相差多大?
一只股票只能说明个别情况。下方区块对所有市值超过10亿美元的美国上市派息公司分别按两种口径计算,并按派息频率分组。
每个数字背后的完整 SQL
WITH universe AS (
SELECT ticker,
argMax(price, date) AS last_price
FROM global_markets.stocks_ratios
WHERE date = (SELECT max(date) FROM global_markets.stocks_ratios)
AND price >= 5
AND market_cap >= 1000000000
GROUP BY ticker
),
paid AS (
SELECT ticker,
sum(cash_amount) AS ttm_cash,
argMax(cash_amount, ex_dividend_date) AS latest_cash,
argMax(frequency, ex_dividend_date) AS pay_frequency
FROM global_markets.stocks_dividends
WHERE distribution_type = 'recurring'
AND cash_amount > 0
AND frequency IN (1, 2, 4, 12)
AND ex_dividend_date > today() - INTERVAL 1 YEAR
AND ex_dividend_date <= today()
GROUP BY ticker
)
SELECT multiIf(d.pay_frequency = 12, 'monthly',
d.pay_frequency = 4, 'quarterly',
d.pay_frequency = 2, 'semi-annual',
'annual') AS schedule,
count() AS payers,
round(quantileDeterministic(0.5)(toFloat64(d.ttm_cash) / toFloat64(u.last_price) * 100,
cityHash64(u.ticker)), 2) AS median_trailing_pct,
round(quantileDeterministic(0.5)(toFloat64(d.latest_cash) * d.pay_frequency / toFloat64(u.last_price) * 100,
cityHash64(u.ticker)), 2) AS median_forward_pct,
round(quantileDeterministic(0.5)(abs(toFloat64(d.latest_cash) * d.pay_frequency - toFloat64(d.ttm_cash))
/ toFloat64(u.last_price) * 100,
cityHash64(u.ticker)), 3) AS median_gap_pp,
round(quantileDeterministic(0.9)(abs(toFloat64(d.latest_cash) * d.pay_frequency - toFloat64(d.ttm_cash))
/ toFloat64(u.last_price) * 100,
cityHash64(u.ticker)), 3) AS p90_gap_pp,
round(100 * countIf(abs(toFloat64(d.latest_cash) * d.pay_frequency - toFloat64(d.ttm_cash))
/ toFloat64(u.last_price) * 100 >= 0.5) / count(), 1) AS pct_gap_over_half_point
FROM universe AS u
INNER JOIN paid AS d ON u.ticker = d.ticker
GROUP BY schedule
ORDER BY payers DESC最大的一组是quarterly派息公司,共有1128家公司。其过去收益率中位数为1.93%,远期收益率中位数为2.03%。按中位数计算,两种口径相差0.03个百分点。分布存在长尾:该组中有8.7%的公司相差至少半个百分点,第九十百分位的差距为0.357个百分点。对于3%的收益率,半个百分点相当于该数值的六分之一。这可能决定筛选器是否显示某家公司。monthly组共有21家公司,中位差距为0.484个百分点。
如果关注的是收益率水平,而非计算方法,什么样的股息收益率算得上理想汇总了市场分布,股息收益率是什么则从这一比率本身讲起。
为什么两个筛选器显示的股息率不同?
- 计算口径不同。一家数据提供商将最近一次股息公告年化,另一家则汇总过去十二个月的股息。这是本页其余内容要解释的分歧。
- 统计窗口不同。对按季度派息的公司,滚动365天可能包含四次或五次派息;对按月派息的公司,可能包含十二次或十三次派息。
- 特别股息。一次性股息会在一年内计入滚动窗口。有些数据提供商将其计入分子,有些则剔除。金额较大的特别股息会大幅改变滚动股息率。
- 计算所用的价格不同。以昨晚收盘价计算的股息率,与以下午2点的价格计算的股息率会不同。
- 公司自有页面。投资者关系网站几乎总是公布已宣布的年度股息率,即远期股息率的分子,但所用价格通常不是实时价格。基金资料页则可能公布30天SEC收益率或分配收益率,这又是另外两种计算口径。
这些数字如何计算
这里的滚动股息率,是将在每次读数截止日前365天内、除息日已确定的经常性现金股息相加,再除以该交易日的收盘价。远期股息率,则将最近一次经常性股息乘以随该股息申报的派息频率,再除以同一价格。非经常性分配不计入两者。价格来自纽约时间常规交易时段的分钟线。计入特别股息,或将不同次数的派息年化的数据提供商,会基于相同的底层记录得出不同数值。
滚动股息率与预期股息率常见问题
什么是 TTM 股息率?
TTM 是过去十二个月(trailing twelve months)的缩写。TTM 股息率将过去一年支付的所有股息相加,再除以当前股价。它衡量的是已经支付的现金,而不是预期股息率。
滚动股息率和预期股息率哪个更好?
没有哪一个绝对正确。滚动股息率衡量股东过去一年实际收到的股息,预期股息率则将当前已宣布的股息率年化。比较已经收到的收入时,应使用滚动股息率;评估公司当前支付的股息率时,应使用预期股息率。
为什么我的经纪商显示的股息率与公司投资者关系页面不同?
投资者关系页面通常公布已宣布的年度股息率。这是预期股息率的分子,而且页面使用的股价往往不是实时价格。经纪商或筛选器可能改为汇总过去十二个月的股息。两个数字在同一时点都可能计算正确。
股息削减会立即反映在滚动股息率中吗?
不会。股息调整后的新水平会在首次支付较低股息时反映在预期股息率中,但会在随后一年内随着每次支付逐步反映在滚动股息率中。在上方的 3M 窗口中,两种计算口径在 2.36 相差 Jun 2024 个百分点,到 0.06 时相差 Jul 2026 个百分点。
上文所有数字均来自对已申报股息记录和实际交易时段价格的存储查询。打开任一面板即可查看 SQL,也可以在 Strasmore 终端上,对您关注的 ticker 运行相同的两项计算。