Files
MoFin/docs/MoFin系统状态与数据链路说明.md
T

129 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MoFin 系统状态与数据链路说明(知微须知)
> 更新:2026-08-17(小小莫整理,供知微了解最新系统机制)
> 范围:自选候选管道 / 重评报告 / 淘汰机制 / RR 指标 的当前逻辑与今天的重要修复
---
## 一、核心结论速览
1. **RR(盈亏比)不是质量指标,只是风控保底**——基于 12.3 万笔回测数据:RR 与最终收益 Pearson r≈0.05(几乎无关),分策略/分年规律相反。**RR 阈值已从 2.0 降到 1.0**(只拦"止损距离≥止盈距离"的负期望交易)。
2. **淘汰自选只认"卖出"信号**——数据证明死水3连/RR<2.0 淘汰 60% 误杀(淘汰后 20 日反而涨)。
3. **12 维重评报告的资金流/行业数据源已修复**——此前读到过期缓存/错表导致"暂无数据/待补充"。
4. **全环节记录"依据策略"**——候选→提拔→重评快照都有 strategy_name,可追溯。
---
## 二、RR 指标的正确理解(重要)
### 数据依据(docs/RR分析结论.md
- 样本:123,049 笔回测交易(15 个策略版本)
- **计划 RR**(选股时)= (止盈-买入)/(买入-止损),反映的是**止盈/止损参数比例**,不是选股质量
- 各策略设计 RR 天然不同:b_td1_v3=1.875s2_panic_v2=2.5v_mr 回测中位 2.25v8.1 中位 1.53
- 全局 Pearson r≈0.05;分策略规律相反(v1.0 高RR好、v_mr2 高RR差);分年不稳定(2022 高RR反而亏)
### 当前阈值(已改)
| 位置 | 门槛 | 逻辑 |
|------|------|------|
| promote 进自选 | RR ≥ 1.0 | 保底,防负期望交易 |
| watchlist_auto_exit 每日淘汰 | RR < 1.0 淘汰 | 保底 |
| 超跌类策略(p_oversold/b_td1_v3| 豁免 RR 门槛 | 超跌反弹 RR 天然低 |
---
## 三、淘汰机制(2026-08-17 重构,老莫确认方案A
### 数据依据(docs/淘汰逻辑验证.md)
1126 只死水3连淘汰标的后 20 日实际走势:
- 信号不充分3连:+9.78%,71% 涨 → **严重误杀**
- 弱势持有3连:+9.67%75% 涨 → **严重误杀**
- 观望3连:+1.80%(中性)
- RR<2.0 淘汰:+4.74%44% 涨 → 误杀
- **信号=卖出:-2.2% → 唯一正确**
### 当前逻辑(watchlist_auto_exit.py,每日 8:50 盘前)
```
自动退出条件(二选一):
1. timing_signal 包含 "卖出"
2. rr_ratio > 0 且 < 1.0(保底)
其他情况一律保留(即使长期观望/信号不充分/弱势持有)
```
**关键认知**:"信号不充分/弱势持有"是**启动前的最低位区**(策略在等确认),不是该删的信号。删掉 = 删在启动前夜。
---
## 四、12 维重评报告数据源(2026-08-17 修复)
### 根因与修复
| 问题 | 根因 | 修复 |
|------|------|------|
| 报告"资金流暂无数据" | 读 capital_flow_cache 用 ORDER BY id DESC → 拿到旧行 id=19408-10,仅11只)| 改 WHERE id=1(现在08-1733只)|
| 报告"行业待补充" | 重评读 stock_sectors(仅898只),300668 等6只无记录 | 回退 stock_sectors_em5061只)|
| 资金流采集断档(08-04) | candidates 表缺 source 列,fund_flow_alert 写入静默失败 | 加 candidates.source 列 |
### 当前数据状态
- 资金流缓存:id=108-17 19:24 刷新,覆盖 33 只(holdings + 自选)
- 行业覆盖:stock_sectors_em 5061 只全市场
- **注意**:港股(5位码)无资金流数据(sina API 不支持)——HK 股报告资金面仍可能显示中性
---
## 五、全环节策略来源记录(strategy_name
| 环节 | 落点 | 说明 |
|------|------|------|
| 选股扫描 | candidates.source_strategy | b_td1_v3/accumulation/s2_panic_v2/v_mr 写策略名 |
| 提拔 | holding_strategies.strategy_name | promote 继承候选来源 |
| 重评快照 | strategy_history.strategy_name | snapshot 继承 holding |
| 资金流突变 | candidates.source | = 'fund_flow_positive' |
**查询方法**
```sql
-- 某候选是哪策略选的
SELECT code, source_strategy, rr FROM candidates WHERE code='XXX';
-- 某自选属于哪个策略
SELECT code, strategy_name, rr_ratio FROM holding_strategies WHERE code='XXX';
```
---
## 六、进自选推送(2026-08-17 增强)
promote 提拔进自选后,XMPP 给老莫推送**完整 12 维重评全文**(含策略名、RR、买入区/止损/止盈、交叉分析)。若重评报告未就绪会标注"稍后补推"。
---
## 七、当前运行状态(08-17 收盘)
- active 策略:b_td1trend_down,权重 0.3
- 自选:26 只(RR<1.0 待淘汰:0 只)
- watchlist_auto_exitcron `50 8 * * 1-5`(盘前跑)
- 当日提交:22 个(RR规范/淘汰重构/数据源修复/4环节策略记录)
---
## 八、已知遗留(待处理/注意事项)
### 已修复(今日,共 26 个提交)
- 资金流读取 bugbatch_reassess/candidate_filter/mofin_db 三处读到旧缓存 id=194 → WHERE id=1
- 行业读取缺覆盖(per_stock/batch_reassess/strategy_lifecycle 加 stock_sectors_em 回退)
- sector_snapshots 全表读取(strategy_lifecycle 改最新快照,原 133907 行乱序)
- watchlist 淘汰回注硬编码 v_mr → 用 strategy_name
### 遗留已知问题(minor/info,不阻塞运行)
1. **CREATE TABLE 不含新列**candidates.source/source_strategy、holding_strategies.strategy_name、strategy_history.strategy_name 仅靠 `schema_migrate_20260817.py` ALTER 添加。**新建库/恢复部署时必须先跑迁移脚本**,否则 promote_candidates 会报"无此列"。
2. **三份 mofin_db.py 并存**/home/hmo/MoFin/mofin_db.py、scripts/、deploy/profile-scripts/)——已全部同步修复,但维护时需注意是同一逻辑的多副本(硬链接)。
3. **港股(5位码)无资金流**:sina API 不支持,报告资金面可能显示中性——非 bug,数据源限制。
4. **fund_flow_alert.py:191** 读 capital_flow_cache 用 `ORDER BY updated_at DESC`(非 WHERE id=1)——当前正常(id=1 最新),未来若多行写入有隐患(minor)。
5. **batch_reassess.py:226** 行业读取无 em 回退——仅用于 signal_news 新闻关联匹配,影响小(minor)。
6. **capital_flow_cache 表残留旧行 id=194**2026-08-1011只)——WHERE id=1 已规避,旧行可清理(`DELETE FROM capital_flow_cache WHERE id<>1`)。
7. **存量 candidates 中 14 行 sector/source_strategy='v_mr'**(旧 watchlist 回注遗留)——新逻辑不再产生,存量可保留(promote 会按 actual 策略判断)。
### 重要运维提醒
- **deploy_guard 15 分钟回滚未提交改动**:改生产代码必须立即 `GIT_ALLOW_COMMIT=1 git commit && push`(今天踩过坑,回滚重做了 2 次)。
- 整点写锁问题已修(conn 统一 timeout=30 + busy_timeout),但大表操作仍避开整点调度窗口。
---
*文档位置:/home/hmo/MoFin/docs/ 下(RR分析结论.md / 淘汰逻辑验证.md / 本说明)*
*配套:/home/hmo/MoFin/deploy/profile-scripts/schema_migrate_20260817.pyschema 迁移,新建库必跑)*