dividend skills: A股高息股自动筛文档 (同花顺口径/东方财富批量/行业分散)
This commit is contained in:
+102
-14
@@ -10,17 +10,22 @@ trigger: DCA监控、高息扫描、股息率筛选、dividend scan、阶梯买
|
||||
|
||||
```
|
||||
~/.hermes/scripts/
|
||||
├── dividend_alert.py # 股息登记日前一天提醒(A/HK/US三市场,无Token依赖)
|
||||
├── dca_scanner.py # 港股/美股扫描(LongPort API)
|
||||
├── scan_cn.py # A股扫描(LongPort价格+预设股息率)
|
||||
├── dca_monitor.py # 持仓监控(买入信号),支持 --market=us/hk/cn
|
||||
├── dca_positions.json # 持仓配置(含阶梯价位、股息率、派息频率)
|
||||
├── scan_hk.sh # shell包装脚本
|
||||
├── lib/ # 公用库 (2026-08-23+)
|
||||
│ ├── __init__.py
|
||||
│ └── td9.py # 神奇九转 TD Sequential (4 个脚本共享)
|
||||
├── dividend_alert.py # 股息登记日前一天提醒(A/HK/US三市场,无Token依赖)
|
||||
├── cn_dividend_buy_timing.py # A股每日买入时机(11:30 BJT 推送,加权技术指标增强)
|
||||
├── cn_dividend_buy_timing_cron.sh
|
||||
├── dca_scanner.py # 港股/美股周扫描(LongPort API)
|
||||
├── scan_cn.py # A股周扫描(LongPort价格+预设股息率)
|
||||
├── dca_monitor.py # 持仓监控(买入信号),支持 --market=us/hk/cn
|
||||
├── dca_positions.json # 持仓配置(含阶梯价位、股息率、派息频率)
|
||||
├── scan_hk.sh # shell包装脚本
|
||||
├── scan_us.sh
|
||||
├── scan_cn.sh
|
||||
├── dca_monitor_us.sh # DCA美股监控wrapper(解决no_agent参数问题)
|
||||
├── rgti_alert.py # RGTI价格提醒
|
||||
├── rgti_auto_monitor.py # RGTI半自动做T挂单
|
||||
├── dca_monitor_us.sh # DCA美股监控wrapper(解决no_agent参数问题)
|
||||
├── rgti_alert.py # RGTI价格提醒
|
||||
├── rgti_auto_monitor.py # RGTI半自动做T挂单
|
||||
└── rgti_alert_state.json
|
||||
```
|
||||
|
||||
@@ -50,6 +55,11 @@ trigger: DCA监控、高息扫描、股息率筛选、dividend scan、阶梯买
|
||||
- `indicated_Annual_Dividend`: 年化分红
|
||||
- `record_Date`: 登记日(美股登记日通常=除权日)
|
||||
- 优先股/REIT占多数,注意区分
|
||||
- **⚠️ 重要坑 (2026-09-01 用户纠正)**: `indicated_Annual_Dividend` (ann) 是 **Nasdaq 估算的"未来一年总派息额"** (单位 USD, **不是百分比, 不是股息率**)。
|
||||
- **反推频率档位** = `round(ann / dividend_Rate)` ≈ 一年派几次 → 4=季度(Q) / 12=月(M) / 52=周(W) / 2=半年(S) / 1=年(A)
|
||||
- **这个数字不是"连续派了几年"**, 旧列名"连续(估年)" = "一年派几次的档位数字" 是误导, **2026-09-01 已改名为"频率(反推)"**, **"年化"已改名为"估算年派"**
|
||||
- **ann=0 时** = Nasdaq 数据缺失, 频率档位显示 "⚠️数据缺失", 不归入档位
|
||||
- 周派票实测 (SATA ann=$12.85, dividend_Rate=$0.05 → 12.85/0.05=257 ≈ 5 trading days × 52 weeks ≈ 260 ✓ 反推逻辑能识别周派)
|
||||
|
||||
### 实现要点
|
||||
- **proxy处理**:服务器在EDT时区,请求国内API需先 `unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY`,否则Python requests走127.0.0.1:7890代理会报ProxyError
|
||||
@@ -96,12 +106,64 @@ trigger: DCA监控、高息扫描、股息率筛选、dividend scan、阶梯买
|
||||
|
||||
## 用户偏好(关键)
|
||||
|
||||
1. **吃股息为主,不做短线投机**。当用户问"买点"时,默认用股息率/除权日期/分红增长角度分析,而不是技术面支撑阻力。
|
||||
1. **吃股息为主,但入场时机可加技术指标 (2026-08-23 修正)**: 用户原话"高股息扫描的也要结合这个指标(九转)"。**修正**: 之前默认"不做技术面分析"的规则只适用于"分析分红/历史股息率/CAGR"这一类查询。**入场时机判别**(`cn_dividend_buy_timing.py` 的 🟢🟡🔴 决策)可以叠加 TD9 增强(避免在涨势到顶时买入),但仍以股息率 + MA50 + 支撑为底层决策依据,TD9 只是**信号增强层**。
|
||||
2. **时间显示用北京时间(UTC+8)**,不要用服务器EDT时间。
|
||||
3. **输出格式**:emoji标记 + 简洁卡片状,数据密集但视觉清爽,≤500字。
|
||||
|
||||
## 🧙 技术指标增强层:神奇九转 (TD Sequential)
|
||||
|
||||
**仅作用于入场时机判别**, 不替代股息率 / MA50 / 支撑等基础条件。
|
||||
|
||||
### 入场增强规则 (cn_dividend_buy_timing.py)
|
||||
|
||||
| TD9 状态 | 对入场判别的影响 |
|
||||
|---|---|
|
||||
| 买入计数 ≥7 (未完成, 跌势末期) | 🟢今天买 理由加 "+ 🧙九转买 N/9 (跌势末期)" |
|
||||
| 卖出计数 ≥7 (未完成, 涨势末期) | 🟢今天买 理由加 "⚠️🧙九转卖 N/9 (涨势末期,回撤将至)" |
|
||||
| **卖出完成 (done=True, 涨势到顶)** | 🔴不入场 **升级为 🟡等回撤 ★★☆,止损用九转止损价 (第9根收盘)** |
|
||||
| 买入计数 <5 或 无九转信号 | 不影响原判别 |
|
||||
|
||||
### 周扫描输出 (scan_cn.py / dca_scanner.py)
|
||||
|
||||
阶梯入场表后加两行:
|
||||
|
||||
```
|
||||
| 🧙 九转 | 多 九转买… 6/9 | 空 九转卖✓ 11/9 | - 九转… 0/9 |
|
||||
| 🧙 止损 | - | 44.70 | - |
|
||||
```
|
||||
|
||||
### 公用库抽取 (2026-08-23)
|
||||
|
||||
`td9_levels()` 抽到 `~/.hermes/scripts/lib/td9.py`, **4 个脚本共享**:
|
||||
|
||||
```
|
||||
~/.hermes/scripts/lib/td9.py
|
||||
├── td9_levels(closes, current) → dict or None
|
||||
└── td9_summary(td9) → str (短字符串用于表格 cell)
|
||||
```
|
||||
|
||||
**禁止** 在任何脚本里复制 `td9_levels()` 本地实现 — 修改算法只改 `lib/td9.py`, 4 个脚本自动同步。
|
||||
|
||||
详见 `intraday-trading/references/td9-td-sequential.md` (算法 + 单元测试 + 输出格式 + 4 脚本用法)。
|
||||
|
||||
## 关键实现细节
|
||||
|
||||
### `dividend_highfreq.py` — 美股高频派息扫描 (2026-08-26 v1.0 实装 + cron 接入)
|
||||
|
||||
详见 `references/us-dividend-frequency-tier.md` v2 节。设计: `security_list` 拿全 US 市场 → `quote` 批量拿现价 → `dividend` 逐只算频率档位 → yield ≥ 4% 入 SQLite `highfreq_pool` → 按 freq+yield+稳定度推送。**取代了 v1 时期 "Nasdaq 不收周派" 的限制**。
|
||||
|
||||
**实际跑 (2026-08-26)**:
|
||||
- 候选池: security_list US 翻页 5 页 → 244 只 (跳过优先股/WARRANT/WTS)
|
||||
- batch quote 50/批 → 244/244 拿到现价
|
||||
- dividend 逐只 (1-4s/只) → 29 只 yield ≥ 4% 且 cv<0.5 入池
|
||||
- 总耗时 ~6 分钟 (cron 可接受)
|
||||
|
||||
**Cron job**: `b29af10da8d2` ("美股高频派息雷达"), schedule `30 21 * * 1-5` 北京, no_agent + script 模式, deliver origin.
|
||||
|
||||
**v1.0 实战发现的 YieldMax 票** (CRY/BIOY/XEY/TECY/TSYY 全部 yield>50% 但 cv<0.2 = 真实稳定高息, 不是 bug): 推送时**必须**带"文化娱乐参考, 不构成投资建议" disclaimer + cv 列 + ⭐⭐⭐ 评级让用户自己判断风险. 详见 `native-mcp/references/longport-mcp-tools-pitfalls.md` Pitfall 11.
|
||||
|
||||
**lib/td9.py 接口不匹配 bug (2026-08-26 发现, 待修)**: `td9_levels(closes)` 返回 list, 但 `td9_summary(td9)` 期望 dict → 调用就抛 `TypeError: list indices must be integers or slices, not str`. 修复方向: td9_summary 改成 `td9_summary(td9_list, current_price=None)` 接受 list, 或 td9_levels 改成返 dict. **不要绕过** (`td9_levels` 在 4 个脚本共享, 改签名影响面大).
|
||||
|
||||
### Shell包装脚本(必须)
|
||||
Cron的script字段不能带参数。Python脚本需要参数时,用.sh包装:
|
||||
```bash
|
||||
@@ -165,24 +227,50 @@ mREIT:NLY/AGNC/TWO/CIM/NYMT/STWD
|
||||
10. **百度接口港股过滤**:返回数据的 `交易所` 字段,HK=港股、SH/SZ/BJ=A股。注意港股代码前有空格(如 ` 06808`),需要 `strip()`。
|
||||
11. **除权日与登记日关系**:A股登记日=除权日前一交易日。美股登记日通常=除权日当天。
|
||||
12. **百度接口日期格式**:`news_trade_notify_dividend_baidu(date='YYYYMMDD')` 参数是纯数字字符串,不要带横杠。支持查未来日期。
|
||||
13. **🧙 九转公用库禁止复制粘贴 (2026-08-23)**: 4 个扫描脚本 (`cn_dividend_buy_timing.py` / `scan_cn.py` / `dca_scanner.py` / `daily_t_analysis.py`) 都依赖 `~/.hermes/scripts/lib/td9.py`。**禁止** 在脚本里复制 `td9_levels()` 本地实现 — 修改算法只改 `lib/td9.py`, 4 个脚本自动同步。
|
||||
14. **🧙 九转信号增强只用于入场时机, 不替代股息率 (2026-08-23)**: 用户原话"高股息扫描的也要结合九转", **仅限入场时机判别** (`cn_dividend_buy_timing.py` 的 🟢🟡🔴 决策 + 阶梯入场表)。**不要** 把九转叠加到"分析分红历史/CAGR"这一类查询 — 那是基本面分析, 用 AKShare / 东方财富, 不要技术面。
|
||||
15. **🧙 九转单元测试先于集成 (2026-08-23)**: 改 `lib/td9.py` 时先在 `/tmp/test_td9.py` 跑 6 个边界 case (连续14跌/14涨/<13根/平盘/振荡/部分跌),确认算法对了再跑全脚本。4 个集成脚本都拉真实 API + proxychains, 慢且依赖重, 调试算法不要每次都拉行情。
|
||||
16. **⚠️ Nasdaq `indicated_Annual_Dividend` 字段名翻译坑 (2026-09-01 用户纠正)**: 见上文"美股(Nasdaq API)"段, "年化" 不是"年化股息率" 而是"Nasdaq 估算的年度总派息 (USD)", "连续(估年)" 不是"连续派了几年" 而是"反推频率档位的数字"。**列名误导会让用户以为 4.0 = 派了 4 年, 实际 = 一年派 4 次 (季度派)**。已改名为 "估算年派" + "频率(反推)" + 删除 "连续(估年)" 列 (2026-09-01)。
|
||||
|
||||
## 股息分析工作流(用户问"买点"时)
|
||||
|
||||
当用户说"分析XX的买点"时,**先问清楚是吃股息还是做短线**。用户偏好是吃股息,分析框架:
|
||||
当用户说"分析XX的买点"时,**先区分是吃股息分析还是入场时机判别**:
|
||||
|
||||
### 吃股息分析 (历史/分红/CAGR)
|
||||
|
||||
用户原话指向"看分红能力/可持续性"时, 走这条路径:
|
||||
|
||||
### 吃股息分析步骤
|
||||
1. **查分红历史** → `ak.stock_history_dividend_detail(symbol)` 拿历年数据
|
||||
2. **算当前股息率** → 每股分红 / 当前股价
|
||||
3. **算分红增长率** → 5年CAGR、同比变化
|
||||
4. **查除权时间线** → 已除权还是未除权?最近一次除权日即已错过,等下一波
|
||||
5. **查盈利预测** → EPS 看分红可持续性(分红率=每股分红/EPS)
|
||||
6. **查财务健康** → 货币资金、经营现金流(确保有钱分红)
|
||||
7. **避坑**:不要给 MACD/均线/支撑阻力等技术面分析
|
||||
7. **避坑**:不要给 MACD/均线/支撑阻力等纯技术面分析
|
||||
|
||||
### 入场时机判别 (cn_dividend_buy_timing.py)
|
||||
|
||||
用户原话指向"今天能不能买/什么时候买"时, 走 `cn_dividend_buy_timing.py` 流程:
|
||||
|
||||
1. 拉 K 线 50 根 → 算 MA50 / 支撑 / 趋势 / ATR
|
||||
2. 跑 **🧙 九转** (`td9_levels`) 作为信号增强层
|
||||
3. `recommend_entry()` 综合判别 → 🟢今天买 / 🟡等回撤 / 🔴不入场
|
||||
4. **TD9 卖出完成时** → 🔴升级为 🟡等回撤 + 用九转止损价
|
||||
5. **TD9 买入计数 ≥7** → 跌势末期加分提示
|
||||
|
||||
详见上文"🧙 技术指标增强层"小节。
|
||||
|
||||
### 输出格式(吃股息卡片)
|
||||
|
||||
### 输出格式(emoji卡片)
|
||||
```
|
||||
💰 XX年全年分红: XX元/10股 = X.XX元/股
|
||||
📊 当前价格: XX.XX元 (除权后)
|
||||
📊 股息率: X.XX%
|
||||
📈 X年股息CAGR: X.X%/年
|
||||
```
|
||||
|
||||
## 参考资料
|
||||
|
||||
- `references/us-dividend-frequency-tier.md` — 美股频率档位反推实战 (Nasdaq API ann 字段翻译 + YieldMax 高息陷阱)
|
||||
- `references/cn-top8-auto-screen.md` — **A 股 Top N 自动筛 v1-v4** (2026-09-17, 已废) — 财年滚动算法 + 含预案 ≈ 同花顺 7.44% (历史记录, 算法验证路径)
|
||||
- `references/cn-top8-weekly-batch-v5-ths-parallel.md` — **A 股 Top N 自动筛 v5 生产版** (2026-09-19 实装, **当前用这个**) — 东方财富 batch 粗筛 + 同花顺 ths 8 线程并行校验 + JSON 缓存 + 25 秒跑完 Top 8. cron 集成计划 (每周一 + 读缓存). **核心教训**: agent 算法永远追不上同花顺专业团队 → 直接用同花顺接口拿数据 (用户原话 "你一个AI写算法还能比得过专家吗").
|
||||
|
||||
Reference in New Issue
Block a user