User 2026-07-30 反馈: - 脚本名 lottery_te_ma.py → lottery_特码.py (中文, 更直观) - 同步 SKILL.md 引用 (description + scripts 段) - version 1.2.5 → 1.2.6
125 lines
6.1 KiB
Markdown
125 lines
6.1 KiB
Markdown
---
|
|
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 仓库下") |