--- name: cn-dividend-buy-timing-pool description: "Manual HIGH_DIVIDEND_POOL list (17 A-share blue chips) + 综合评分公式 `score = annual_yield + stability_bonus` where stability_bonus = (stability - 2) * 2.0. 用户 2026-07-29 反馈纯 yield 排序把 招商银行/伊利股份/长江电力 挤出去, 加 stability bonus 后这 3 票稳定进 top 15. 脚本: ~/.hermes/scripts/cn_dividend_buy_timing.py (cron 任务待接入). stability 字段: 3=连续5年+稳定, 2=连续3年, 1=波动." version: 1.0.0 type: reference --- # A 股高息股买入时机 — 候选池 + 综合评分 **用户原话** (2026-07-29): - 招商银行 (5% 股息率) 和 伊利股份 (4%) 没被选出来 — 因为纯按 yield 排序进不去 top 8 - "全仓, 分红稳定" — 关注分红稳定性 ## 设计 — 综合评分 (yield + stability bonus) ```python score = annual_yield + stability_bonus stability_bonus = (stability - 2) * 2.0 # stab=3 → +2%, stab=2 → 0, stab=1 → -2% ``` | stability | 含义 | bonus | |-----------|------|-------| | 3 | 连续 5 年+ 稳定 (银行/公用事业/必选消费龙头) | +2.0% | | 2 | 连续 3 年 (通信/化工) | 0 | | 1 | 波动 (矿/小盘) | -2.0% | ## 17 票手动池 (用户 review) ```python HIGH_DIVIDEND_POOL = [ # ---- 高息 ≥5.5% + 稳定(stability≥2) ---- {'sym': '600188.SH', 'name': '兖矿能源', 'annual_yield': 7.0, 'stability': 2}, {'sym': '601288.SH', 'name': '农业银行', 'annual_yield': 6.5, 'stability': 3}, {'sym': '601398.SH', 'name': '工商银行', 'annual_yield': 6.5, 'stability': 3}, {'sym': '601088.SH', 'name': '中国神华', 'annual_yield': 6.5, 'stability': 3}, {'sym': '600023.SH', 'name': '浙能电力', 'annual_yield': 6.5, 'stability': 3}, {'sym': '600585.SH', 'name': '海螺水泥', 'annual_yield': 6.5, 'stability': 3}, {'sym': '601006.SH', 'name': '大秦铁路', 'annual_yield': 6.5, 'stability': 3}, {'sym': '601225.SH', 'name': '陕西煤业', 'annual_yield': 6.5, 'stability': 2}, {'sym': '601939.SH', 'name': '建设银行', 'annual_yield': 6.0, 'stability': 3}, {'sym': '601658.SH', 'name': '邮储银行', 'annual_yield': 6.0, 'stability': 3}, {'sym': '600015.SH', 'name': '华夏银行', 'annual_yield': 5.5, 'stability': 3}, {'sym': '600028.SH', 'name': '中国石化', 'annual_yield': 5.5, 'stability': 3}, # ---- 稳定大盘 (stability=3 单独加权) ---- {'sym': '600036.SH', 'name': '招商银行', 'annual_yield': 5.0, 'stability': 3}, # 银行龙头 PB 低 {'sym': '600887.SH', 'name': '伊利股份', 'annual_yield': 4.0, 'stability': 3}, # 消费/必选龙头 {'sym': '600900.SH', 'name': '长江电力', 'annual_yield': 4.5, 'stability': 3}, {'sym': '601728.SH', 'name': '中国电信', 'annual_yield': 5.0, 'stability': 2}, {'sym': '600050.SH', 'name': '中国联通', 'annual_yield': 5.0, 'stability': 2}, ] ``` ## 时机判别 (3 类) ```python def recommend_entry(div_yield, current, ma50, support, atr_pct, trend): if div_yield >= 6.0: if current < ma50 and current <= support * 1.02 and "偏弱" not in trend and "📉空头" not in trend: return ("🟢今天买", 3, current, support * 0.97, "高息 + 价 < 均线 + 贴近支撑") elif current < ma50: return ("🟡等回撤", 2, ma50 * 0.98, current * 0.97, "高息 + 价 < 均线—等跌稳") elif current <= ma50 * 1.03: return ("🟡等回撤", 2, ma50, current * 0.97, "高息 + 价贴近均线") else: return ("🔴不入场", 1, ma50, current * 0.93, "高息但价远高于均线") elif div_yield >= 5.0: if current < ma50 * 1.05: return ("🟡等回撤", 2, ma50 * 0.98, current * 0.95, "中等股息率") else: return ("🔴不入场", 1, ma50, ma50 * 0.95, "中等股息率但价已偏贵") else: return ("🔴不入场", 0, current, current * 0.95, "股息率<5%不达预期") ``` ## 仓位 (8000 元小资金) ```python # 单票建议 4000 元(一半仓, 留 4000 备用) lots = int(4000 // current // 100) * 100 # A 股一手 100 股 lots = max(lots, 100) # 至少一手 ``` ## 实际效果 (2026-07-29 测试) **综合评分倒序 top 15:** | 名次 | 股票 | annual_yield | stability | score | |------|------|--------------|-----------|-------| | 1 | 农业银行 | 6.5% | 3 | 8.5 | | 2 | 工商银行 | 6.5% | 3 | 8.5 | | 3 | 中国神华 | 6.5% | 3 | 8.5 | | 4 | 浙能电力 | 6.5% | 3 | 8.5 | | 5 | 海螺水泥 | 6.5% | 3 | 8.5 | | 6 | 大秦铁路 | 6.5% | 3 | 8.5 | | 7 | 建设银行 | 6.0% | 3 | 8.0 | | 8 | 邮储银行 | 6.0% | 3 | 8.0 | | 9 | 华夏银行 | 5.5% | 3 | 7.5 | | 10 | 中国石化 | 5.5% | 3 | 7.5 | | 11 | 兖矿能源 | 7.0% | 2 | 7.0 | | 12 | **招商银行** | 5.0% | 3 | **7.0** (纯 yield 排序排第 13, 加上后进 #12) | | 13 | 陕西煤业 | 6.5% | 2 | 6.5 | | 14 | **长江电力** | 4.5% | 3 | **6.5** (纯 yield 排第 16, 加上后进 #14) | | 15 | **伊利股份** | 4.0% | 3 | **6.0** (纯 yield 排第 17, 加上后进 #15) | **关键验证** (用户原话):"招商银行怎么没选出来。还有伊利股份" — 加 stability bonus 后 3 票全部稳定进 top 15。 ## 为什么不直接用 akshare 拉高息池 试过 `ak.stock_dividend_yield_em` → **不存在**。`stock_history_dividend` 只能拉单只, 不能批量筛。 **手动维护池**的 trade-off: - ✅ 17 票全是用户 review 过的 (大盘蓝筹稳定) - ✅ 包含 招商/伊利/长江电力 这类稳定但 yield 略低的票 - ❌ 没法自动更新 (季度 review 一次就够) ## cron 接入 (待用户确认) 建议 `0 11 * * 1-5` 每天 11:00 北京 (开盘前 30 min), 与 `789a7710b1cf` (dividend_alert) 同步。 ## 文件位置 - **脚本**: `~/.hermes/scripts/cn_dividend_buy_timing.py` (cron 脚本, 不在 skill repo) - **wrapper**: `~/.herclaw/.hermes/scripts/cn_dividend_buy_timing_cron.sh` - **git 仓库**: Hermes-Scripts (commit `fdacf52`) - **规则**: skill 的脚本在 `skills/.../scripts/`, cron 的脚本在 `~/.hermes/scripts/` (用户原话 2026-07-29 "如果是定时任务的就放在 Scripts 仓库下")