每日击球区日报:五因子股息策略评分,覆盖多行业高股息标的,推送至华为负一屏
---
name: stock-batting-zone
description: "每日击球区日报:五因子股息策略评分,覆盖多行业高股息标的,推送至华为负一屏"
version: 1.0.0
license: MIT
tags:
- stock
- dividend
- investing
- A股
- 股息
---
# 击球区日报 (Stock Batting Zone)
每日 A 股收盘后,对高股息标的进行五因子综合评分,生成击球意愿排名,推送至华为负一屏。
## 五因子评分公式
```
击球意愿 = 股息率(30%) + PE低估(15%) + PB低估(15%) + ROE(20%) + 安全性(20%)
```
各因子 0-100 分:
| 因子 | 权重 | 计算规则 |
|---|---|---|
| 股息率 | 30% | 甜蜜区 3-6% 线性映射;6-8% 递减;>8% 封顶 80 |
| PE 低估 | 15% | 100 - PE百分位(越低越便宜) |
| PB 低估 | 15% | 100 - PB百分位(越低越便宜) |
| ROE | 20% | 线性映射,25% = 100分 |
| 安全性 | 20% | 非银行:分红覆盖率(FCFF/总分红);银行:派息率(分红/EPS) |
### 安全性评分细则
**非银行(分红覆盖率 = FCFF / 总分红):**
- ≥2x → 100 分(安全)
- 1.5x~2x → 80 分
- 1x~1.5x → 60 分(基本安全)
- 0.5x~1x → 30 分
- <0.5x → 10 分(⚠️ 需关注)
**银行(派息率 = 分红 / EPS):**
- <30% → 100 分(安全)
- 30%~50% → 70 分(适中)
- 50%~70% → 40 分
- >70% → 20 分
## 数据源
| 数据 | 来源 | 接口 |
|---|---|---|
| 实时行情 | 新浪财经 | `hq.sinajs.cn` |
| PE/PB 百分位 | 小乐财报 | `leetab.com/stock/{code}/pe\|pb` |
| ROE/EPS/FCFF | 东方财富 | `RPT_F10_FINANCE_MAINFINADATA` (年报) |
| 除息日 | 东方财富 | `RPT_SHAREBONUS_DET` |
| 交易日判断 | chinese_calendar | `is_workday()` |
## 当前标的(5行业5股)
| 股票 | 行业 | 代码 | 年度分红/股 | 类型 |
|---|---|---|---|---|
| 长江电力 | 电力 | sh600900 | 1.00 | 非银行 |
| 伊利股份 | 食品饮料 | sh600887 | 1.38 | 非银行 |
| 格力电器 | 家电 | sz000651 | 3.00 | 非银行 |
| 中国移动 | 通信 | sh600941 | 4.7037 | 非银行 |
| 建设银行 | 银行 | sh601939 | 0.3887 | 银行 |
## 定时任务
- **频率**: 每日 16:00(A股收盘后)
- **跳过**: 非交易日(chinese_calendar 判断)
- **推送**: 通过 `today-task` 技能推送至华为负一屏
- **模式**: agent mode(cron `agentTurn`)
## 使用方式
### 手动运行
```bash
# 正常运行(推送至负一屏)
python scripts/daily_batting.py
# 仅测试(不推送)
python scripts/daily_batting.py --dry-run
```
### 添加新标的
编辑 `scripts/daily_batting.py` 中的 `STOCKS` 列表:
```python
{
"code": "sh601088", # 新浪代码
"name": "中国神华", # 名称
"api_code": "601088", # 东方财富代码
"annual_div": 5.20, # 年度分红合计(中期+末期)
"leetab_code": "sh601088", # 小乐财报代码
"ex_div_date": None, # 除息日(可选)
"is_bank": False, # 是否银行股
"total_shares_billion": 198.7, # 总股本(亿股),用于算分红覆盖率
}
```
同时在 `DEFAULT_PE_PB` 中添加默认 PE/PB 分位数据。
## 选股策略
优先选择:
1. **股息率 3-6%**(甜蜜区)
2. **PE/PB 百分位低**(估值便宜)
3. **ROE > 10%**(盈利能力强)
4. **分红覆盖率 ≥ 1x**(分红可持续)
5. **不同行业分散**(避免行业集中风险)
## 注意事项
- 年度分红 = **中期分红 + 末期分红合计**(不是仅年末)
- 银行股无 FCFF,用**派息率**替代分红覆盖率
- 数据源可能偶尔不可用,脚本有默认值兜底
- 卡片内容 < 5000 字符(负一屏限制)
- 仅供研究参考,不构成投资建议
## 相关文件
- `scripts/daily_batting.py` — 主脚本
- `today-task` 技能 — 负一屏推送
- Cron ID: `b5e8deb5-0c20-4998-9c70-d31a80f09aeb`
don't have the plugin yet? install it then click "run inline in claude" again.