| name | dividend-yield-strategy |
| description | 高股息之家"股息率模式"投资策略。Use when: 实现红利/高股息策略、股息率计算、4进3出选股规则、分红可持续性筛选、红利组合构建与再平衡。 |
| argument-hint | 描述股息率策略相关需求,如选股规则实现、股息率计算、组合构建等 |
| tags | ["vortex","vortex/skill","vortex/strategy-domain"] |
| obsidian_links | ["[[实例策略开发流程]]","[[策略域设计说明书]]","[[用户场景与体验增强设计]]"] |
高股息之家「股息率模式」投资策略
来源:雪球用户「高股息之家」(老杜)系列文章
核心理念:股息率是低估的指示牌,不是为了图高股息本身
一、股息率计算规则
重要提示:股息率计算是整个策略的核心,必须严格按照以下规则执行,才能保证选股和买卖信号的准确性。任何偏离都可能导致策略失效。在使用高股息率策略时,务必确保股息率的计算符合以下规范:不要盲目使用数据源提供的股息率,而是要根据以下规则自行计算。
1.1 基本公式
股息率 = 上年每股分红 / 当前股价
- 上年:最近一个已公布年报的完整会计年度(不一定是"今年减一")
- 每股分红:该年度所有分红之和(年报分红 + 中报分红 + 季报分红),必须汇总全年
- 使用静态股息率,不用 TTM 滚动
- 目的:考察公司该年度完整盈利对应的分红能力
1.2 送转股情形
有送转股(配股/转增)时,需区分除权除息日前后:
| 时点 | 计算方法 |
|---|
| 除权除息日之前 | 正常计算:原每股分红 / 当前股价 |
| 除权除息日之后 | 调整每股分红:分红总额 / (原股数 + 送转股数),股价已自动除权 |
示例(万盛股份 2020 年报方案"10转4股派4元"):
- 除权前:每股分红 = 4元/10股 = 0.4元,股息率 = 0.4/26.97 = 1.48%
- 除权后:每股分红 = 4元/14股 = 0.2857元,股息率 = 0.2857/19.09 = 1.50%
- 分子分母同向变动,股息率变化不大
二、核心进出规则(四进三出)
2.1 选股池构建
全A股高股息率排名
→ 淘汰:连续分红不足 5 年
→ 淘汰:高分红不可持续(一次性收益、变卖资产等)
→ 淘汰:季报亏损
→ 淘汰:季报扣非净利润同比下滑 > 10%
→ 淘汰:ROE 异常(过低或过高需进一步分析)
→ 剩余为候选池
2.2 买卖规则
| 操作 | 条件 |
|---|
| 买入 | 股息率 ≥ 4% |
| 卖出 | 股息率 < 3%,或季报恶化(扣非净利润同比下滑 > 10%) |
2.3 仓位管理
- 随时满仓,不出则不进:只有卖出腾出仓位后才能买入新标的
- 平均分仓:等权配置
- 单只上限:≤ 总仓位的 10%
- 行业上限:≤ 总仓位的 20%
- 建议持仓:10 只以上
2.4 收益空间
股息率从 4% 降至 3%,对应股价涨幅 = 33.33%:
买入价 = 每股分红 / 4% = 0.4 / 0.04 = 10.00 元
卖出价 = 每股分红 / 3% = 0.4 / 0.03 = 13.33 元
涨幅 = 13.33 / 10.00 - 1 = 33.33%
买入条件是股息率 4% 以上,实际安全边际更大。年化收益率目标:15%。
三、六大原则
(一)安全边际原则
高股息率本身即安全边际。若股息率优于无风险利率,股价通常跌无可跌。
- 不做成长股,成长股指标不是核心指标
- 本质是格雷厄姆"捡烟蒂"模式的现代化实践
(二)季报原则
季报扣非净利润如果开始以 10% 以上速度同比负增长,是危险信号。
原因:股价下跌的同时分红也会下降,股息率可能维持表面高位,具有欺骗性。
- 监控指标:扣非净利润同比增速
- 阈值:< -10% 即触发警惕/卖出
(三)不择时原则
股息率 = 分红 / 股价,自带择时功能:
- 牛市顶部:股价高 → 股息率低 → 不满足买入条件 → 自动回避
- 熊市底部:股价低 → 股息率高 → 满足买入条件 → 自动入场
不根据技术形态择时,不根据大盘走势择时。只要符合条件,随时买入。
(四)非长期持股原则
- 不是 Buy & Hold,有一定投机性
- 不关注五年平均股息率
- 根据股息率变化及时调整仓位:低于 3% 即减仓或清仓
- 动态再平衡,非躺平不动
(五)分散投资原则
- 承认无法看清个股,但能把握概率
- 单只股票来年是否保持高分红无法断定(如 2017 年格力电器)
- 一组高息股在短期内大概率保持高分红特性
- 持有 10 只以上,除非极大把握不重仓任何单只
(六)黑匣子原则
把投资当黑匣子,股息率就是那个"开关"。
长年高股息率基本保证了:
- 公司质地没问题
- 赚钱能力没问题
- 现金流没问题
- 经营没问题
- 持续性没问题
- 市盈率市净率不会太高
例外情况用组合方式降低影响。坚持单因子,学习是为了增加判断力,不是搅乱投资框架。
四、十六字诀(心法)
持股守息,等待过激;若无过激,持股守息。
| 概念 | 含义 |
|---|
| 守息 | 以股息为根本出发点和安全垫;股息是最基础的收益和财富增长源泉 |
| 过激 | 价格趋势性上涨,甚至远超内在价值——可遇不可求 |
- 上涨 → 吃差价(四进三出捕获 33%+ 空间)
- 下跌 → 吃股息(股息率更高,持股守息)
- 上涨下跌两相宜 → 反脆弱性
- 股息是源源不断的现金流,可用于买入更多股份(复利效应)
五、估值理论基础(ROE / PB / PE 关系)
5.1 实际投资报酬率
实际投资报酬率 = ROE / PB
银行类比:净资产 100 元,ROE 5%,若以 PB=2(200 元)买入,实际回报 = 5/200 = 2.5%。
5.2 PE 与实际报酬率的关系
PE = PB / ROE = 1 / 实际投资报酬率
5.3 安全标准推导
| 基准 | 收益率 |
|---|
| 一年定期存款 | 1.75% |
| 五年定期存款 | 2.75% |
| 十年期国债 | ~3.28% |
| 投资安全标准 | ≥ 国债收益率 × 2 ≈ 7% |
- 当 ROE/PB ≥ 7% 时,PE ≤ 14.3,即 安全 PE ≤ 15 倍
- 股息率模式风险偏低,要求回报率略大于国债收益率 → 4% 下限的来源
- 高风险个股则要求 ROE/PB ≥ 7%(国债收益率的两倍)
六、策略实现要点
6.1 数据需求
| 数据项 | 用途 | 频率 |
|---|
| 年度分红明细 | 计算每股分红(全年汇总) | 年报发布后更新 |
| 除权除息信息 | 送转股后调整每股分红 | 事件触发 |
| 日收盘价 | 计算实时股息率 | 日频 |
| 季度财报(扣非净利润) | 季报原则筛查 | 季频 |
| 连续分红年数 | 选股池过滤 | 年频 |
| 行业分类 | 行业仓位限制 | 低频 |
6.2 核心计算伪代码
def calc_dividend_yield(stock, date):
"""计算静态股息率"""
report_year = get_latest_annual_report_year(date)
total_dps = sum_all_dividends_in_year(stock, report_year)
if has_ex_rights_after(stock, report_year, date):
total_dps = adjust_for_bonus_shares(total_dps, stock, report_year)
price = get_close_price(stock, date)
return total_dps / price
def screen_universe(date):
"""构建候选池"""
candidates = get_all_a_shares()
candidates = [s for s in candidates if consecutive_dividend_years(s) >= 5]
candidates = [s for s in candidates if not quarterly_deteriorated(s, threshold=-0.10)]
candidates = [s for s in candidates if dividend_sustainable(s)]
candidates.sort(key=lambda s: calc_dividend_yield(s, date), reverse=True)
return candidates
def generate_signals(portfolio, universe, date):
"""生成买卖信号"""
signals = []
for stock in portfolio:
dy = calc_dividend_yield(stock, date)
if dy < 0.03 or quarterly_deteriorated(stock, threshold=-):
signals.append(Signal(stock, ))
sell_count = ( s signals s.action == )
buy_candidates = [s s universe s portfolio]
buy_candidates = [s s buy_candidates calc_dividend_yield(s, date) >= ]
stock buy_candidates[:sell_count]:
signals.append(Signal(stock, ))
signals
6.3 风控检查清单
七、常见问题(来自评论互动)
Q: 连续5年分红需要每年股息率都在4%以上吗?
A: 不需要。只要连续5年有分红即可,不考虑每年股息率高低。
Q: 季报负增长是同比还是环比?
A: 同比(与去年同期比较),看扣非净利润增速。
Q: 4进3出会不会买在高点卖在低点?
A: 有可能。个别标的可能亏损,这就是为什么要做组合——保证整体盈利。系统是"容错"的,不追求百发百中。
Q: 为什么不是5进4出或5进3.5出?
A: A股中股息率稳定 > 5% 的标的较少,4% 是实用的平衡点。
Q: 直接买红利ETF是否更好?
A: 作者另有专文分析,非简单替代关系。
Q: 用静态股息率还是TTM?
A: 静态。"本系统用的是静态股息率,一般不算滚动的。"
八、投资收益增长率公式
8.1 公式定义
投资收益增长率 = ROE × (1 - 分红率) + (分红率 / PB) × ROE
| 项 | 含义 | 经济学解释 |
|---|
| 第一项: ROE × (1 - 分红率) | 内生增长率(g) | 留存收益再投资产生的净资产增长,即公司不靠外部融资、自我滚动的增速 |
| 第二项: (分红率 / PB) × ROE | 分红再投资回报率 | 投资者将分红按当前市价买回股票所获得的增量回报 |
8.2 推导逻辑
1) 内生增长率 g = ROE × 留存率 = ROE × (1 - d) 其中 d = 分红率
2) 股息率 = 每股分红 / 股价 = (EPS × d) / (BPS × PB)
= ROE × d / PB (因为 EPS/BPS = ROE)
3) 分红再投资回报 = 股息率 × ROE/PB 的隐含杠杆
简化: (d / PB) × ROE 即以低于净资产的价格(PB<1)或溢价(PB>1)买回产生的回报差异
4) 投资收益增长率 = g + 分红再投资回报
= ROE × (1 - d) + (d / PB) × ROE
8.3 关键推论
- PB = 1 时: 投资收益增长率 = ROE × (1-d) + d × ROE = ROE → 回归纯 ROE
- PB < 1 时: 第二项放大 → 低估股票的分红再投资效率更高(买的更便宜)
- PB > 1 时: 第二项缩小 → 溢价买入稀释了分红再投资效率
- 分红率 ↑ 而 ROE 不变: 第一项缩小(少留存)、第二项放大(多分红再投) → 取决于 PB
8.4 策略应用
此公式是检验"高股息是否真正创造价值"的核心工具:
- 筛选真价值: 投资收益增长率 > 无风险利率 × 2 才值得持有
- 识别陷阱: 若公司提高分红率(d↑)但 ROE 也在下降,两项都缩小 → 增长率塌缩
- 估值锚定: 与 ROE/PB ≥ 7% 安全标准配合使用
def calc_investment_return_growth(roe: float, payout_ratio: float, pb: float) -> float:
"""
计算投资收益增长率
Parameters
----------
roe : float
净资产收益率 (例如 0.15 表示 15%)
payout_ratio : float
分红率/股利支付率 (例如 0.30 表示 30%)
pb : float
市净率
Returns
-------
float
投资收益增长率
"""
if pb <= 0:
return float('nan')
g_internal = roe * (1 - payout_ratio)
g_reinvest = (payout_ratio / pb) * roe
return g_internal + g_reinvest
九、高股息陷阱识别 — 以白酒行业为例
9.1 陷阱机制
核心矛盾: 当公司通过提高分红率来维持表面高股息率,而非通过盈利增长驱动时,
投资者看到的"高股息"是一种统计幻觉。
陷阱链条:
盈利增速放缓 → 管理层提高分红率(d↑)维持股东回报预期
→ 留存收益减少 → 净资产增速放缓 → BPS增长停滞
→ ROE因分母(净资产)增长慢而表面稳定甚至上升
→ 股息/股价 看似很高,但公司内在价值已停止增长
→ 一旦盈利进一步恶化,分红也将被迫下调 → 戴维斯双杀
9.2 白酒行业的典型特征(2021年后)
| 指标 | 表象 | 实质 |
|---|
| ROE | 维持 25%+ 高位 | 依靠提高分红率压低净资产增速实现,而非盈利能力提升 |
| 分红率 | 从 50% 逐步提升至 70-100% | 留存收益大幅减少,内生增长率 g = ROE×(1-d) 大幅缩水 |
| 股息率 | 4-6% 看似诱人 | 股价持续下跌推高的被动式高股息率,非主动分红增长 |
| 营收 | 增速从 15%+ 降至个位数 | 消费降级 + 库存压力 + 渠道价格倒挂 |
| 净利润 | 仍在增长但增速骤降 | 提价空间收窄,量价齐升逻辑被破坏 |
9.3 用投资收益增长率公式检验
假设某白酒龙头:
情景A (2019年 高速增长期):
ROE = 30%, 分红率 = 51.9%, PB = 10
g = 0.30 × (1 - 0.519) + (0.519 / 10) × 0.30
= 0.1443 + 0.01557 = 15.99%
→ 高增长,第一项主导(内生增长14.4%),PB高但增速够
情景B (2025年 增速放缓期):
ROE = 28%, 分红率 = 75%, PB = 6
g = 0.28 × (1 - 0.75) + (0.75 / 6) × 0.28
= 0.07 + 0.035 = 10.5%
→ 增长率从16%降至10.5%,内生增长率从14.4%骤降至7%
→ 若分红率继续提高至100%: g = 0 + (1/6)×0.28 = 4.67%
→ 几乎全靠分红再投资,公司本身不再增长
9.4 识别高股息陷阱的五个信号
-
分红率趋势性上升,同时营收/净利润增速趋势性下降
- 健康的高分红: 分红率稳定 + 盈利稳定增长
- 陷阱: 分红率补偿盈利下滑
-
ROE 稳定但 ΔROE 的驱动力变化
- 用杜邦分析拆解: ROE = 净利率 × 总资产周转率 × 权益乘数
- 如果 ROE 稳定是因为权益(净资产)因高分红增长慢,而非净利率改善 → 陷阱
-
投资收益增长率逐年下降
- 连续3年投资收益增长率递减,即使股息率在上升 → 价值侵蚀
-
股息率上升主要来自股价下跌而非分红增加
- 对比: 每股分红增速 vs 股价跌幅
- 若股价跌20%、分红不变 → 股息率被动提升25%,这不是价值
-
行业基本面恶化信号
- 库存周转天数上升、应收账款增加、经营现金流下降
- 预收款/合同负债下降(白酒行业的核心领先指标)
- 渠道价格倒挂、经销商缩减
9.5 策略层面的防御措施
def is_dividend_trap(ts_code, ds, date) -> bool:
"""
检测是否为高股息陷阱
Returns True 如果:
1) 分红率连续2年上升 AND 扣非净利润增速连续2年下降
2) 投资收益增长率连续3年递减
"""
periods = get_latest_n_annual_periods(date, n=3)
payout_trend = get_payout_ratio_series(ts_code, periods)
profit_growth_trend = get_deducted_profit_yoy_series(ts_code, periods)
irg_trend = get_investment_return_growth_series(ts_code, periods)
if is_monotone_increasing(payout_trend) and is_monotone_decreasing(profit_growth_trend):
return True
if is_monotone_decreasing(irg_trend) and len(irg_trend) >= 3:
return True
return False
9.6 总结
高股息率本身不构成买入理由。只有当高股息率伴随稳定或增长的内在价值时,
才是真正的安全边际。用投资收益增长率公式验证:
若增长率持续递减,则"高股息"是接飞刀,不是捡便宜。