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

6.9 KiB
Raw Blame History

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'

查询方法

-- 某候选是哪策略选的
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=1942026-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 迁移,新建库必跑)