tradingSystem/docs/三源合议阶段评审_2026-09-14.md

12 KiB
Raw Blame History

三源合议阶段评审2026-09-14

评审对象是《技术面接入与三源合议方案_2026-09-11》落地之后的代码、文档与运行状态。 写法遵守 .claude/output-styles/readable-chinese.md。 读完第一到第六节就知道现状与问题。第七节是结论。 下一阶段怎么做展开在《下一阶段开发方案与规格书_2026-09-14.md》。


一、评审做了什么

  1. 读了方案、进度交接、开发节点记录最近六条、复盘决定台账 001 到 011、总览文档、真实仓部署方案、九月十日的交接文档。
  2. 逐行读了合议的四个纯逻辑模块、装配服务、技术面取数服务。也读了动作引擎与提议服务里的全部接入段落。
  3. 在开发机用上一次会话留下的虚拟环境跑了全量单测。
  4. 在模拟仓 155 只做了只读检查:代码版本、镜像指纹、容器状态、关键开关的实际值、技术面映射、部署之后的提议。没有改任何东西。
  5. 看了两个兄弟仓库的最近提交与台账。一个是选股系统,一个是决策系统。目的是确认跨系统的事项各在什么状态。

二、一句话结论

方案的五个工作包里,工作包一、二、三、五已经做完,并在 155 真机判收。代码质量与护栏纪律达到本项目的标准。

但合议这条链是周五收盘后部署的,今天才是它跑的第一个交易日。台账 006 到 011 要求的复核一个都还没到期。而且系统目前没有留下能做复核的读数。

此外,方案里有一块设计没有落地,就是盘中确认。有一块在另一仓库等审批,就是选股打分。页面有三处收尾。代码有四个小的加固点。

建议下一阶段以「观察、补读数、收尾」为主,不上新的大功能。

三、对照方案的完成度

方案里的条目 内容 状态 真机判收
工作包一 技术面取数落表、相位合成、映射、三个接口、调度位、页面三项 完成 真机见过。映射覆盖、分页拉全、两个真机坑已修并加哨兵
工作包二 三源合议纯逻辑、装配、仓位矩阵、接入下单链路、增持门、质地排序、提议卡合议行 完成 真机见过试算:三只看空候选被跳过、一只等开口。合议行与增持门的实弹还没见过
工作包三 转空自动离场、策略票判据、跟踪止盈 SAR 线、弱基本面紧止盈 完成 真机见过部署与试算。实弹一次都没发生过
工作包四 选股系统打分改质地调整分 未做 在另一仓库,等单独审批
工作包五 台账 006 到 011、README 调度总表、接口契约技术面一节 完成 不适用
第三节的盘中确认 09:45 到 14:30 放量确认、收口当天突破就进候选 未做
工作包一第 6 点里的三处页面 候选栏质地与技术芯片、管理视图持仓总览研究面列、单票抽屉三源合议四芯片 未做

四、真机读数2026-09-14 上午 08:55模拟仓 155只读

运行状态如下。

项目 读数
代码版本 969d189就是远程的最新提交
镜像指纹 与工作树一致d8ee35a4dfed
容器 pms-web 健康pms-worker、pms-beat、pms-ws 都在跑,已运行两天
容器内时间 北京时间,与开发机一致
技术面读数日 20260911也就是上一交易日
技术面行数 4993
技术面映射 08:40:06 重建153 只,全部新鲜,没有错误
映射里的立场分布 看多 5 只,中性 101 只,看空 47 只
部署之后的新提议 零条。评审账本最后四条都是 09-11 上午的,不带合议六键
转空去重集 空,说明还没处理过任何一次翻空

关键开关的实际值如下。

参数 实际值 说明
PMS_DISPATCH_MODE ws 真向模拟 QMT 发委托
PMS_AUTONOMY full 持仓自主动作自动执行
PMS_OPEN_AUTONOMY propose_only 新建仓交人
PMS_TECH_ENABLED 技术面总闸
PMS_CONSENSUS_ROUTE 合议参与分流
PMS_TECH_GATE_INCREASE 持仓增持门
PMS_PLAN_RANK_BY_QUALITY 候选按质地排序
PMS_TECH_EXIT_AUTONOMY full 转空离场自动执行
PMS_STRATEGY_ENABLED 与 09-11 节点写的「未开」不同
PMS_OPEN_REASK_ENABLED 代码默认值就是开
PMS_FUND_REQUIRED 无买方评析不建仓
PMS_TOTAL_SCALE 2,000,000 总规模

两点要特别说明。

第一策略层总开关现在是开的。09-11 收盘后的节点写的是「155 上没开,代码已部署但休眠」。现在读到开,说明 09-11 傍晚之后有人在页面上把它打开了。如果是有意的,那么今天 09:40 那一跳就是工作包三后两部分第一次实弹运行。后两部分指 SAR 止损线刷新与弱基本面紧止盈挂载。

第二,解锁重问的总开关是开的,因为它的代码默认值就是开。也就是说,九月十日交接文档第五节写的「第一段尚未开始」,其实从 09-10 部署起就已经在跑。到今天收盘它就跑满三个交易日,第一段的复核可以做了。

开发机全量单测的结果:三十一批里三十批通过,第二十四批有一例失败。失败原因是那条用例把「今天 09:35」的告警当作已陈旧来断言而我在 09:0x 跑,年龄算成负数。服务器上都是收盘后跑测试,所以从没撞上。这是用例依赖墙上时钟,不是代码问题。

五、代码评审发现

按「先要紧后次要」排。每一条写清楚在哪里、影响什么、建议怎么办。

发现一、设计没有落地的一块:盘中确认

方案第三节最后两段写了盘中确认。方案第六节列了它的三个参数,分别是量比阈值、收口当天突破的开关、确认时段。这三个参数在代码里没有任何读取处,也没有登记。全仓库搜不到。

影响有两条。一,处在收口等待的票只能等到次日 06:30 拉到新读数才可能变成开口。「今天现价站上昨日上轨且放量,当天就视为开口进候选」这一条没有。二,昨天已开口的票不检查现价是否低于当日均价,也不看量比。

技术面对入场时点的盘中判断全部缺失。技术面这一票现在完全是昨夜数据。建议下一阶段补上。规格见规格书的盘中确认包。

发现二、观察读数没有留痕,台账的复核做不了

台账 006 到 011 的「预期」都是量化读数。技术面无读数占比要低于百分之三。每天被等技术面开口拦下的票要在一到十五只之间。转空退出每周零到三条。合议方向与人的判断对不上的要逐只记。

现在这些数只存在于每分钟扫描的返回值与页面即时快照里。它们不落任何表,日报也不含。复核日期到了拿不出数。

这是本次评审认为最该先做的事。规格见规格书的观察读数包。

发现三、转空去重集的清除条件过宽

位置在 app/services/proposal_service.py 第 150 到 154 行。去重集的作用是同一次翻空只处理一次。每轮扫描前,代码把映射里 SAR 方向不是「空」的代码从去重集里去掉。

问题在「不是空」包含了「映射里没有这只票」。某只持仓票某天缺读数,比如停牌,或者决策系统那晚漏算,它会被当成翻多而清出去重集。如果同一轮另有别的票处理了转空离场,清过的集合会被写回。第二天它的读数回来、翻空仍在两天内,会再减一次。

概率低,后果是多减三分之一。建议改成「映射里明确为多」才清除,缺读数保留。改动两行,加两例单测。

发现四、持仓行的择时票没带盘中转多留痕

装配服务给持仓行装配时,转多留痕表恒为空。候选行则从自带的买入信号取时刻。影响只在增持门的方向判断,程度小。规格书的加固包里作为小改动列入。

发现五、方案承诺的一个开关没有登记

方案第六节写了 PMS_CONSENSUS_WEAK_CONFIRM含义是只有一方表态时交人。代码里没有这个参数行为写死为交人。要么登记并让合议路由读它要么在方案文档里划掉。建议登记默认开。关掉时单方表态放行。

发现六、单票研究面接口只给了技术面一块

接口是 GET /api/research/{ts_code},位置在 app/web/main.py 第 740 到 756 行。它的基本面、择时、合议三块都是空占位。页面单票抽屉那一节的标题也只写「研究面 · 技术面」。方案要求的是「研究面 · 三源合议」一节四枚芯片,点开能看全文。

发现七、页面还有两处没做

候选栏每行的质地芯片与技术芯片没做,只做了「等技术面开口」处置词。管理视图持仓总览只修了「证据列印两遍」并加了评析报告链接,研究面列没加。

发现八、策略层的网格买入腿不受技术面的门(要拍板)

动作引擎的三道增持门只管常规持仓。挂了交易方案的票,它的加仓腿由策略层管。策略层现在只认两样:决策系统风控预警的暂停买入,以及宏观闸。它不认技术面看空,也不认合议看空。

方案没有要求这一点,所以这不是缺陷,是一个未决的设计问题。要拍板:技术面看空时,策略票的网格低吸要不要也停。

发现九、技术面立场整体偏空,入场会明显收紧

今天 153 只相关票里,技术面看多只有 5 只。按三票多数的规则,技术面这一票绝大多数时候是中性或看空。看多要求 SAR 为多且多空布林线不在空头区,或者 SAR 两天内刚翻多。其余全归中性或看空。

这可能是市场状态,也可能是相位表偏严。台账 006 说阈值不按复盘读数回调,要回台账。建议先用观察读数包的数据看满三个交易日再议,现在不调。

发现十、文档与工作区的四处小事

  1. README 第 173 到 207 行仍写「当前仍是影子模式」「依然没有任何系统会自动下单」。模拟仓从 8 月 3 日起就是 ws 模式,已经发出一百九十六笔真实委托。九月十日交接第九节已经提出,等拍板。安全相关的说法过时,比一般文档过时更危险。
  2. CLAUDE.md 在工作区里是未跟踪状态,没有入库。
  3. 第二十四批那条依赖墙上时钟的用例要改成相对当前时刻构造。
  4. 真实仓 188 的代码停在 51bd6dc落后六十九个提交。差异里有两张新表分别是净值快照表与技术面日表。有两个新调度位分别是 06:30 拉技术面与 15:20 净值快照。还有四十多个新参数。新参数的默认值是按模拟仓定的:转空离场默认自动执行,合议分流默认开。追平部署前必须先有一份「真实仓初始参数清单」。否则一部署就把 full 档位的自动离场带进真实账户。

六、做得好的地方

  1. 每一处接入都守住「开关关掉逐字回旧」,并且先写这条单测再改。第二十九批与第三十批每一组都有这样一例。
  2. 六个合议硬数字键不进送研判白名单,有机器证明,不靠口头。
  3. 「无读数等于弃权,绝不折成看空」贯彻到每一层。相位合成、基本面、择时、合议、增持门、转空离场都是这样。
  4. 两处脱库单测测不到的真机坑都补了哨兵。一处是 upsert 的绑定参数,一处是分页误判最后一页。
  5. 台账 006 到 011 与方案逐条对应。README 调度总表与接口契约同步更新了。
  6. 纯逻辑层零外部依赖。相位表的实现与方案第三节的表逐格对应,读起来能对上。

七、评审结论

进入「观察与收尾」阶段。下一阶段不上新的大功能,做四类事。

  1. 补观察读数与复核工具。
  2. 补盘中确认。
  3. 页面与接口收尾,加四处加固。
  4. 按顺序把已写好的功能分段启用,并为真实仓追平准备清单。

选股打分等审批。真实仓追平等 QMT 侧。具体见《下一阶段开发方案与规格书_2026-09-14.md》。