From e805af09cf4e1575378910d91cf75a81efa0e42b Mon Sep 17 00:00:00 2001 From: xxm Date: Mon, 17 Aug 2026 20:12:18 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20MoFin=E7=B3=BB=E7=BB=9F=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E4=B8=8E=E6=95=B0=E6=8D=AE=E9=93=BE=E8=B7=AF=E8=AF=B4?= =?UTF-8?q?=E6=98=8E(=E7=9F=A5=E5=BE=AE=E9=A1=BB=E7=9F=A5,=E5=90=AB?= =?UTF-8?q?=E5=AE=A1=E8=AE=A1=E9=81=97=E7=95=99=E9=A1=B9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/MoFin系统状态与数据链路说明.md | 129 ++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 docs/MoFin系统状态与数据链路说明.md diff --git a/docs/MoFin系统状态与数据链路说明.md b/docs/MoFin系统状态与数据链路说明.md new file mode 100644 index 00000000..6b738929 --- /dev/null +++ b/docs/MoFin系统状态与数据链路说明.md @@ -0,0 +1,129 @@ +# 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.875,s2_panic_v2=2.5,v_mr 回测中位 2.25,v8.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=194(08-10,仅11只)| 改 WHERE id=1(现在08-17,33只)| +| 报告"行业待补充" | 重评读 stock_sectors(仅898只),300668 等6只无记录 | 回退 stock_sectors_em(5061只)| +| 资金流采集断档(08-04) | candidates 表缺 source 列,fund_flow_alert 写入静默失败 | 加 candidates.source 列 | + +### 当前数据状态 +- 资金流缓存:id=1,08-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_td1(trend_down,权重 0.3) +- 自选:26 只(RR<1.0 待淘汰:0 只) +- watchlist_auto_exit:cron `50 8 * * 1-5`(盘前跑) +- 当日提交:22 个(RR规范/淘汰重构/数据源修复/4环节策略记录) + +--- + +## 八、已知遗留(待处理/注意事项) + +### 已修复(今日,共 26 个提交) +- 资金流读取 bug(batch_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-10,11只)——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.py(schema 迁移,新建库必跑)* \ No newline at end of file