# 复盘决定台账 这份台账记每一条影响候选单的规则改动:改了什么、依据是哪份读数、预期看到什么、什么时候复核。 复盘周报第八节"台账对表"逐条核对这里的预期有没有兑现。只记决定,不记讨论过程。 新条目追加在最后,不改旧条目;旧条目被推翻时在它下面加一行"撤销于某日,见某条"。 格式:日期、改动、依据、预期、复核日期。 --- ## 001 · 2026-09-02 · 候选卡规则定稿(上线前) - 改动:桥每天出候选单。三条硬门槛(所在环节当日被传导指向;数据日涨幅达到 3%;有券商覆盖、预期空间不低于负容忍线、非 ST 与退市族),一条确认(决策系统吸筹评分为"明确吸筹",评分日龄不超过三十个交易日),三条硬风险(决策系统昨夜信号为 SELL、AVOID 或 DROPPED;传导快照日与计划日不符;吸筹评分为"高位派发")。三门槛全过、无硬风险、确认成立判"候选";只差覆盖或缺确认判"关注";其余"仅展示"。 - 依据:方案 1.8d 纯可交易口径,"已启动且明确吸筹"五日 +2.18、十日 +1.94(103 样本),是唯一两个期限都超过一个百分点的组合;"未动成员"在任何环境都负。 - 预期:候选卡上线后的样本外计划日上,候选单按计划日等权五日超额为正、跑赢过半,且不劣于生产名单。 - 复核日期:上线满二十个计划日后(预计 10 月上旬)。样本不足只写方向。 ## 002 · 2026-09-02 · 两个旋钮保持默认,不在历史样本上挑参数 - 改动:启动阈值 CARD_START_PCT 默认 3(与热点扫描"已动"口径相同),评分日龄 CARD_ACCUM_MAX_AGE 默认 30。 - 依据:3% 是现状口径不是验证过的最优值;1.8d 里涨幅 6% 以上的 24 个样本 +6.41,提示阈值有上调空间,但样本不足百。 - 预期:不调。等样本外读数按涨幅分档后再拍。 - 复核日期:与 001 同批。 ## 003 · 2026-09-02 · 弱势日定义 - 改动:环境标签的"弱势日"定义为决策系统区制快照里八个指数中弱势个数达到三个(桥旋钮 REGIME_WEAK_COUNT=3)。标签只展示与复盘分组,不拦任何票。 - 依据:方案 1.8e,过去五日或十日全池收益对未来没有预测力(相关 −0.28、−0.55),可交易的闸没有定义;决策系统已有带迟滞的区制判断,复用它。 - 预期:按事前标签分组后,弱势日的候选单与生产名单五日超额和命中率都低于非弱势日、方向稳定、弱势日不少于二十个,三条同时满足才标"已验证"。 - 复核日期:线上标签累计满二十个弱势日后。 ## 004 · 2026-09-02 · 复盘主口径 - 改动:复盘周报的主口径按计划日等权(每个计划日先算名单均值,再跨日平均,一天一票);样本加权的三列(带 _w 后缀)只用于与方案第一节的手工读数对账。起点价常规取次日收盘,对账时取信号日收盘。 - 依据:09-02 对账实测,样本加权四档读数与手工逐位一致(−2.04、−0.39、0.00、+0.52),但候选单样本加权 +4.56 而按日等权只有 +0.35,正收益集中在候选多的少数几天。按日等权更保守,不让一天的大名单主导结论。 - 预期:周报第一节两种口径并列,结论以按日等权为准。 - 复核日期:不复核,口径定义。 ## 005 · 2026-09-02 · 历史重建的吸筹口径 - 改动:决策系统结论表只取不晚于数据日的最新一行(生产上与"取最新一行"等价)。 - 依据:复盘重建历史日时若取每票当前最新行,历史日会读到今天的吸筹状态,是前视。 - 预期:候选单历史重建读数只降不升(对账实测:53 样本 +0.20 改为 46 样本 +0.35,方向不变)。 - 复核日期:不复核,口径修正。 ## 006 · 2026-09-02 · PMS 新建仓自主档改"只提议" - 改动:PMS 运行参数 PMS_OPEN_AUTONOMY 从 full 改为 propose_only(155,参数表 pms_runtime_param,updated_by 标 claude)。回退是同样命令设回 full。 - 依据:生产名单(PMS 拿到的强传导前 N)五日超额 −2.02、跑赢 33.9%,是四档最差;候选来源切换要等样本外复盘过线。 - 预期:PMS 新建仓改由人工裁决,自动止血;模拟盘只在 155。 - 复核日期:候选来源切换拍板时(001 复核之后)。 ## 007 · 2026-09-02 · 坏信号集合三处同源 - 改动:坏信号集合 {SELL, AVOID, DROPPED} 在桥内归一到 card.BAD_SIGNALS,pool.py 从它引用;决策系统 pms_advisor.py 与 PMS rule_gate.py 各自写死,三处同改。 - 依据:方案 1.11 三处同源纪律。 - 预期:任何一处改集合时另外两处同一提交内改。 - 复核日期:不复核,纪律。 ## 008 · 2026-09-02 · 池深不变式:PMS 计划深度改回 50 - 改动:PMS 运行参数 PMS_PLAN_TOP_N 从 100 改为 50(155,参数表 pms_runtime_param,updated_by 标 claude),与桥入池的 POOL_TOP=50 对齐。用户拍板选项二。回退是同样方式设回 100。 - 依据:方案 1.11,主榜第 51 到 100 名的强传导票 PMS 能买、却不在决策系统夜间分析池里。用户认为 100 与 50 差别不重要,先对齐。 - 预期:PMS 探针的合格候选数不变(改前基线 41 只,因为强传导档本身不足 50 只);池深不变式恢复成立。历史复盘的交付名单不受影响(有快照的日子名册最多 48 只,没有触及 50)。 - 复核日期:候选来源切换时一并看。 ## 009 · 2026-09-02 · 候选卡与快照上线(155 生产) - 改动:生产桥仓库拉到 117f77b(候选卡、快照、环境标签、复盘脚本、风险名单只读一次、平台注册状态旋钮)。代码是卷挂载,构建、计划、入池脚本即刻用新代码,当日快照从 09-03 起自动落;常驻接口进程要重启桥容器才加载新代码,重启由用户执行(Claude 的重启命令被权限分类器拦下,属红线项不绕过)。入池来源保持档位(POOL_SOURCE=tier)、切片关闭,PMS 行为不变。决策系统接口地址(REGIME_API_URL)待用户写入配置并重建容器后环境标签才有值,之前为"未知"。 - 依据:方案 2.6 执行顺序;上线前核对——一次性容器计划与入池干跑通过、两套单测通过、决策系统接口从 155 可达。 - 预期:每交易日 07:10 起落当日快照(data/plan/plan_<数据日>.json)、接口带生成时刻与代码版本;PMS 探针合格数与改前一致。**样本外计划日从 09-03 起算**,台账 001 的复核样本只认这之后的日子。 - 复核日期:09-11 首份周报核对 09-03 起快照连续性(断一天,那天的候选单就退回重算并带前视,样本外读数从一开始就不干净)。 ## 010 · 2026-09-02 · 复盘口径四条(对"读数都为负"的处置,只在读数层) - 改动:一,"生产名单"改名"强传导交付名单",它是 PMS 拿到的强传导全集(已核实 PMS 的计划快照落在本地筛选之前),与主榜"档位=强传导"分组是同一件事的两个读法,周报里结论只计一次;进评审名单另取 PMS 动作账本的 OPEN 行,不在桥里复现 PMS 的本地筛选。二,无 PMS 快照的日子(07-29、08-24)交付名单当日剔除并注记,不再退化为桥重算。三,汇总表加相对主榜等权、相对同市值桶两列超额,六份名单都算;跑赢比例读它时与全池自身跑赢比例(本期 44.2%)相减,只作读数,不改 001 的"跑赢过半"门槛。四,候选单附逐日表与最大单日样本占比;样本纪律按方案 2.4 只标"可读"与"方向"两档,二十日在计划日不足二十之前不进结论,跌周候选单与关注单只写样本不足。 - 依据:09-02 对抗验证保留项。生产名单相对主榜 −1.63、相对同市值桶 −1.64(复盘常规口径,五日),贝塔解释不掉;环节名单相对主榜 +0.12,定位不负、选票负;候选单最大单日样本占比 40%,读数由一天主导。 - 预期:首份周报(09-11)按此出。历史重建读数定性为"候选卡上线前对旧规则的判决",不据此改任何规则、参数或 PMS 设置。 - 复核日期:不复核,口径定义。 ## 011 · 2026-09-02 · 过渡期人工裁决原则 - 改动:PMS 新建仓提议(来源仍是强传导档)由人裁决,默认拒;只批桥当日计划里判决为"候选"且硬风险为空的票。判决为"关注"的不批(潜在吸筹市值中性后为负,不升格)。环境标签只当背景,不写成裁决规则。每次拒绝在 PMS 里留下理由,被拒绝名单进复盘。看哪些字段见桥仓库 docs/人工裁决看什么_2026-09-02.md。 - 依据:交付名单五日 −1.92、跑赢 33.4%;台账 006 已改只提议;PMS 不读判决字段,人必须另开桥的计划看。 - 预期:过渡期自动跑进执行链路的只剩两份名单(入池的强传导前 50、PMS 的强传导前 50 作提议),其余全是给人看的。人批与人拒的票在复盘里分开算,读出人在环路的价值。 - 复核日期:与 001 同批。撤销条件:见 012 修订后按一致性检查。 ## 012 · 2026-09-03 · 判收标准改为一致性 - 改动:所有规则与切换的判收不再以样本数或收益读数为门槛,只看系统逻辑、实现、设计目标三者是否一致(《主观量化系统方案_2026-09-03》第四节一致性检查表)。001、003、010、011 里"样本外满二十个计划日""过线""跑赢过半"等写法据此修订为"一致性检查通过并经人复核"。复盘读数每周照出,作观察与案例材料。 - 依据:用户 2026-09-03 定调,二十个样本不够,两百个也不够,样本不是核心。 - 预期:每周五周报"台账对表"节逐行核对一致性检查表;不一致即列入下周修正;不存在"停"。 - 复核日期:不复核,口径定义。 ## 013 · 2026-09-03 · "关注"判决细化为"无法判断" - 改动:候选卡的"关注"只保留一种情况:三门槛全过、无硬风险、但确认线(明确吸筹且日龄不超过三十个交易日)缺失或陈旧。"只差覆盖"与"潜在吸筹"归"仅展示"。关注即"系统无法判断",交人裁决;候选自动进建仓方案;仅展示不出提议。 - 依据:方案 3.2;用户要求系统能识别"我无法判断"再由人裁决;潜在吸筹市值中性后为负、不升格(1.8c)。 - 预期:关注数减少;PMS 人工队列只剩关注态与不可用;人批与人拒理由全部落账本。 - 复核日期:随一致性检查表第三行。 ## 014 · 2026-09-03 · 因果论断与研判结论进候选卡(数据基座两张只读视图建成) - 改动:数据基座库新增 v_factor_logic(因果论断,一行一条,客体是环节时展开到成员并标 via_segment)与 v_factor_judgement(研判结论,读评析表 logic_reviews)。选股系统候选卡把因果论断作证据线展示,不进判决。 - 依据:方案 2.1"研究深度"与 3.3 数据基座表。建成日读数:论断 7,083 条;视图链接 1,996 行、724 只票;公司类论断只链上三成三(解析精确层),是后续提升点。 - 预期:候选卡每票理由能看到"谁利好谁、机制、时效、出处";一致性检查表第一行由"否"转"是"。 - 复核日期:随一致性检查表第一、七行。 ## 015 · 2026-09-03 · 四层链路上线,PMS 按判决分流 - 改动:四个系统同日上线。数据基座建成因果论断与研判结论两张只读视图。选股系统的候选卡读因果论断作证据线,关注判决收窄为"系统无法判断",计划环境段加市场四项,接口带池深与判决字段。择时决策系统修复维持路径的吸筹重算、评分加计算时刻与算法版本、区制快照落历史表、清理明文凭据。PMS 读判决五键并按判决分流(候选走自动流程、关注强制人工确认、仅展示不出提议),人工裁决理由必填,信号来源可区分。增持类自主档从全自动改为只提议。 - 依据:《主观量化系统方案_2026-09-03》第三节。强传导五日跑赢三成三、十日两成一,胜率低,所以增持也改只提议。 - 预期:PMS 的合格候选数明显下降(上线当日七十五只强传导全部是仅展示,合格数为零);关掉分流开关合格数回到三十三只,回退路径已实测。当前开关状态:新建仓只提议、增持只提议、按判决分流开启、判决候选自动执行关闭。 - 复核日期:每周五周报按一致性检查表逐行核对。若连续多个交易日候选与关注都是零,要在周报里说明是市场原因还是门槛过严。 ## 016 · 2026-09-03 · 逻辑证伪由系统自己判定,不等券商开口 - 改动(设计决定,实现待排期):逻辑是否仍成立,由系统按券商的行动而非言辞判定,输出三态——逻辑成立、无法判断、逻辑存疑。判据是同一财年的每股收益预测中位数在两个等长窗口间的变化、覆盖机构数的变化、有无方向相反的因果论断、公告事实有无反证。逻辑存疑只出减持提议强制交人裁决,绝不自动卖。系统不判断产业逻辑本身对不对,只判断支撑它的证据还在不在。 - 依据:用户 2026-09-03 指出券商极少明说不看好(恩捷九家机构全是买入或跑赢行业),所以证伪必须自己得出;这与"系统能识别我无法判断"同源。实机验证:等长窗口下 411 只票可算,下修超 5% 的 132 只,覆盖收缩超三成的 25 只,两负同现仅 5 只。两处口径坑已记录:窗口必须等长(不等长会让八成票假显示收缩),每股收益符号翻转时不算变化率而标记扭亏或转亏。 - 预期:能区分杀逻辑与杀估值。恩捷股份的每股收益预测四个月稳定而市盈率预测从 33 倍降到 24 倍,属杀估值,是可容忍的波动而非证伪。这条区分是第三步"容忍短期波动"与死扛之间的边界。 - 复核日期:实现后随一致性检查表新增行核对。 ## 017 · 2026-09-03 · 个股跟踪报告的投递与优先级 - 改动:券商个股跟踪报告投递到研报目录,与深度报告同目录,类型由文档画像推断。优先级从原先的中档提到高档,与行业深度、公司深度并列。 - 依据:用户 2026-09-03 指出跟踪报告是券商在持续跟踪逻辑,是判断逻辑是否仍成立的最直接材料。 - 预期:候选卡上的因果论断不再只有几个月前的深度报告,能反映最近的跟踪意见。 - 复核日期:随文档更新读数每周核对。 ## 018 · 2026-09-03 · 逻辑状态改为双向四态(016 的修订) - 改动:016 的三态是单向的,只能往下判。按用户 2026-09-03 的要求补上"逻辑强化"这一维,定稿为四态:逻辑强化、逻辑成立、无法判断、逻辑存疑。证据分四路——甲路研报因果论断(方向受控必填,行业环节公司三种粒度)、乙路产业研判(用采信倾向这个受控枚举的迁移,不用预期动向自由文本)、丙路券商行动(预测下修与覆盖收缩双条件)、丁路公司级事件(目前不可用)。四态与候选卡三态正交,不合并;收敛规则单调:强化只能改卡内序与文案不能升判决,存疑只能改分流通道不能把仅展示变成可执行。唯一新语义格子是"候选加逻辑存疑",即可交易口径成立而研究证据走弱,处置为强制人工确认。完整定稿见方案第四之五之三节。 - 依据:用户指出产业研判的风险与催化事件应当同时作为证伪与强化的来源。核实发现系统里已有双向判断(产业研判的采信倾向与预期动向),只是不进链路;行业级方向源不在事件层而在因果论断层(事件谓词客体类型受控集只有公司与实体,结构上不可能有行业级催化)。 - 预期:能区分杀逻辑与杀估值;持仓期有跨日的研究证据跟踪;"无法判断"分证据不足与证据矛盾两个子因,动作不同。 - 复核日期:一致性检查表新增第十四行(持仓期逻辑跟踪),每周五对表。 ## 019 · 2026-09-03 · 必须先修的安全问题:卖出侧自动执行短路 - 改动(待实施,排在任何逻辑存疑落地之前):PMS 的自动执行判据是"方向是卖出,或者档位全自动且未强制入队",卖出在或运算左边直接短路了强制入队;研判闸覆盖的动作集也只有买入侧四类,减仓清仓不经闸。修法不是去掉卖出那一项(风控高置信卖出的自动执行是止损设计,要保留),而是按提议来源区分,逻辑存疑触发的减持强制入队。 - 依据:设计里"逻辑存疑绝不自动卖"这条纪律,在现有通道下上线当天就会失效。 - 预期:修完之后,逻辑存疑产出的减持提议一定进人工队列;风控卖出的自动执行不受影响。 - 复核日期:实施时以单测钉住,随一致性检查表第十四行核对。 ## 020 · 2026-09-03 · 上下游业绩传导与产业级驱动跟踪:核实后搁置 - 决定:用户提出的两条新"逻辑强化"来源,核实后都搁置,不进四态设计。跟踪高管表述变化那一类用户已明确不做(采集不到)。 - 依据:第一条(下游业绩带动上游)覆盖撑不起系统性信号——两端能对上 A 股代码的可信供应关系只有 450 条、171 家上游、211 家下游,其中 66 家下游能算业绩修正、15 家上修;真实产业链的下游大量是境外龙头(我们没有它们的盈利预测,用户举的世运电路对特斯拉正落在这一侧);供应关系已停止更新,接进来会恒定落到证据不足。第二条(产业级驱动跟踪)结构对但驱动方是自由文本没有归一,同一个逻辑被打散成七八个驱动方各十几条,无法整体跟踪。 - 更正一处此前的判断:公告来源的供应关系"基本是噪声"是抽样有偏导致的过度概括。随机抽样显示主要噪声是关联方交易(八条里四条),金融往来只占 1.0%,年报与研报来源接近零。 - 重开条件(三条同时满足):供应关系恢复更新;从清洗后的子集随机抽三十条人工读原文,方向准确率有实测读数;清洗后可用配对数够用。 - 复核日期:不主动复核,等三条前置出现再议。 ## 021 · 2026-09-03 · 第一批实施上线,产业研判这一路确定为辅 - 改动:四件事上线完成。选股系统落日频行业观点快照(首跑 11 行,八个产业主题加三个环节评析,自动建表与同日幂等均验证通过)与只读覆盖率读数;PMS 修两处——自动执行的判定改为强制交人在前、方向与档位在后(原写法把卖出方向放在或运算左边,强制交人被整个短路),目标价与止损价接通且到价必定交人。复核另发现并修:同一轮可能同时产出保垫减仓与到价清仓,前者当场执行、后者等人拍板,等人采纳时数量已超过实际持仓会被整条驳回,改为同轮只发一条减持、用户设的目标价优先。 - 依据与实测:覆盖率读数显示产业研判这一路只能覆盖当日档位表 1,187 只票里的 13 只(1.1%),天花板 17 只(1.4%);因果论断那一路覆盖 442 只(37.2%)。 - 由此确定:四态合成以因果论断为主、产业研判为辅;产业研判接进来时必须在卡上明写缺的是哪一路,不能让读的人误以为系统判过了。 - 另记两条待处置:因果论断的披露日明显偏旧(中位 05-05,超过 90 天的占 37.6%),接进判定前必须先有陈旧度标注;被逻辑评析标为疑似误抽的有 213 条,接进判定前要先决定怎么处置。 - 复核日期:连着两个交易日各跑一次覆盖率读数,看是否稳定。 ## 022 · 2026-09-03 · PMS 正式实例测试期间不部署 - 约束:连 192.168.16.98 那侧 QMT 的正式实例,测试期间一律不部署,避免无意产生额外交易。任何涉及 PMS 的上线,动手前先确认三项:下发模式、通道开关、账本表前缀。 - 依据:用户 2026-09-03 明确要求。同日实机核实:155 上只有一个部署目录与一套容器,没有第二个实例;当前这一套下发模式是 shadow(指令只落自己的表不发出去)、通道开关关闭、目标地址是 192.168.18.182、账本表前缀为空、规模两百万。所以 09-03 那次部署不可能影响正式交易。 - 预期:测试期间产生的任何提议与指令都停在模拟盘这一套里。 - 复核日期:每次 PMS 上线前逐项确认。 ## 023 · 2026-09-04 · 论断质量标注:四项只提示不作门槛 - 改动:候选卡加四项论断质量标注——陈旧度、来源集中、疑似误抽条数、未结分歧条数。四项都写进缺失项供人看,另出一个质量画像键供下游用,全部不参与三门槛判决。陈旧线定为 90 个自然日(配置项 LOGIC_STALE_DAYS),一次定死,不按复盘收益读数回调。 - 为什么定 90 天:与吸筹评分的日龄上限可比。那一条是三十个交易日,约合六周多的自然日;研报的更新节奏本来就比资金结构评分慢得多(行业深度按季度、跟踪报告按事件),所以放到大约两个季度这个量级。 - 起因是同一张卡上的双标:吸筹评分超过三十个交易日就判陈旧,而研报论断此前只有"披露日不晚于数据日"这一个上界,永不过期。技术侧证据会过期、研究侧不会,同一张卡上两类证据看着一样新。这是第四之四节第六条那个缺口。 - 一处实现纪律:质量画像必须在按票截断之前算。截断后每票只剩最近三条,"这票一共有几份不同来源"就统计不出来了。单测里专门有一条钉住这件事——把疑似误抽那条造在会被截掉的位置,断言它仍被统计到。 - 09-04 全市场实测(数据日 09-03,3,767 只票):701 只带论断;陈旧度中位 147 天,超过 90 天的 478 只(68%),超过一年的 39 只;372 只带多条论断,其中 82 只(22%)全部出自同一份研报;96 只带疑似误抽标记共 264 条;未结分歧 0 条;按环节展开的论断 857 条。 - 一个要看着的现象:立讯精密 44 条论断里 24 条被标为疑似误抽,超过一半,但因为只提示不作门槛,它照样判为候选。这是有意的——模型的标记不是确定性事实,过滤会让人看不到系统曾经抽到过什么。若后续发现这类票的判决明显失真,再议是否给"过半被标记"单开一条处置。 - 复核日期:四态合成接入甲路时,确认这四项作为可靠度输入的用法与此处一致。 ## 024 · 2026-09-04 · 逻辑状态四态:合成模块落地与首次全市场实测 - 改动:写成纯函数模块 logic_state.py 与离线单测(62 例,不连库),另出一个只读读数脚本 logic_state_coverage.py。本次只写不接进计划装配。 - 四路各自归一成一个信号:向好、平稳、转弱、缺失,另加一个分歧表示这一路自己内部方向相反。分歧不能被压进那四个里的任何一个,因为设计里它是证据矛盾的独立来源。 - 一条设计取舍要记下来:向好判的是"变好了"不是"现在是好的"。所以甲路要求新材料窗口(默认 30 个自然日)里有新的利好论断,乙路要求采信倾向发生迁移;一直偏多的主题归平稳。不这样的话强化会变得到处都是,也就不再说明任何事。平稳仍是有效的非负面证据,撑得住逻辑成立。 - 2026-09-04 首次全市场实测(数据日 09-03,3,767 只票): - 甲路 研报论断:缺失 3,544(94.1%,其中 478 只是有论断但全部超陈旧线)、平稳 210、向好 12、转弱 1,跨期方向翻转 0 只。 - 乙路 产业研判:缺失 3,767(100.0%)。 - 丙路 券商行动:缺失 3,416(90.7%)、平稳 162、转弱 109、向好 80。 - 合成后:无法判断 3,382(89.8%,其中证据不足 3,274、证据矛盾 108)、逻辑成立 384(10.2%)、逻辑存疑 1(0.0%)。 - 实测改了一处设计:丙路加覆盖基数门槛。首跑六只判为逻辑存疑的票里有五只,触发是覆盖机构从三家减到两家——一家机构那两周没发报告就构成 33% 的收缩,机构数这么少时百分比不说明任何事。加基数门槛后(前窗口至少五家)只剩一只,是预测下修 38% 且覆盖从六家减到三家那一只,另外五只降级为无法判断进人工复核,不再出减持提议。基数取 5 的性质是:五家时走掉一家只有 20%、够不着 30% 那条线,必须走掉两家才算。 - 乙路为零的原因查清了,不是脚本没接对:行业观点快照里是八个行业主题加三个环节,当日被传导指向的是十六个更细的环节(交换机、关节总成、固态电解质这一类),两套名字不在一个命名空间,今天交集为零。这印证了台账 021 里"簇键口径要先解决"那一条,也把落地顺序第六步(数据基座接环节簇与概念簇评析)的优先级坐实了——按名字匹配这条路走不通,必须让数据基座对真正出现在传导里的环节做评析。 - 一处措辞取舍:只有一路转弱而没到存疑门槛时,整体记的是无法判断加证据矛盾。这里的"矛盾"指的是走弱的证据与"这条逻辑还成立"这个前提相矛盾,动作是进人工复核清单,与两路方向相反同一处置。 - 复核日期:接进计划装配之前,连着两个交易日各跑一次这个读数,看四态分布是否稳定。 ## 025 · 2026-09-04 · PMS 研究理由两键上线;更正台账 022 记的下发模式 - 改动:PMS 补收判决依据与因果论断两个键上线(代码到 fd74dd1),四个容器重建,全套 652 例在新镜像里通过。实测确认:当日计划主榜加观察共 136 条,136 条全部带判决依据,96 条带因果论断。研究结论第一次真正走到了人眼前。 - **更正台账 022 记的一项事实**:那里写"当前这一套下发模式是 shadow(指令只落自己的表不发出去)、通道开关关闭"。这在 09-04 已经不成立——上线前逐项确认时读到的是直连模式(ws),通道在线,目标地址仍是 192.168.18.182 那侧的模拟 QMT,不是 16.98 正式侧,所以红线没碰,但"只记账不发单"这个理解要改过来。账本表前缀仍是空串。以后每次上线前照旧逐项读,不照抄上一次的读数。 - 部署窗口:09:30 开盘后立刻做的,经用户当场拍板。做之前复查过出口队列为空、无在途指令、无待确认提议;库里有一条 09-03 留下的待发买单(002463.SZ 买 400 股,PROPOSED 状态),它落在库里不受重启影响,重连后由择时循环重新评估。重建后通道即刻恢复在线,心跳 0.9 秒。 - 一处时序要记住:今天的计划是早上 07:10 构建的,而论断质量标注的代码是 09:40 才拉到 155 的,所以那四项提示要等下一次构建才会出现在计划里。下一个交易日是周一 09-07。 - 复核日期:周一 09-07 的计划里确认缺失项带上了论断质量的四项提示。 ## 026 · 2026-09-04 · 关闭启动涨幅线;给人看的文字去掉代码名 - 改动一,启动涨幅线做成整条开关(配置项 CARD_REQUIRE_STARTED),按拍板置 0 关闭。原先只有一个阈值,想不要这条门槛只能把它调成一个很小的负数,那是绕法不是关闭——没有当日行情的票仍会被拦下。 - 这条门槛回答的不是这只票好不好,是今天是不是买点:只在票已经动起来的当天买,不猜底。关掉它等于改成左侧买入。好处是研究结论成立的当天就能进场,不用等市场先认同;代价是要承受不确定的等待,候选数会明显变多。 - 实测对照(数据日 09-03):关之前当日 83 只强传导票**全部**落到仅展示,候选 0 只。关之后判决分布是候选 33 只、关注 1 只、仅展示 102 只,PMS 逐票处置里有 11 只进入建仓流程。新建仓与整体自主档都是只提议,所以这 11 只是待人拍板的提议,不会自动下单。 - 想开回去:把 CARD_REQUIRE_STARTED 设回 1 并重建容器,判决当天即恢复原样。旧配置已备份为 .env.bak-20260904。 - 改动二,给人看的文字里不再出现代码名。起因是页面上出现过「选股系统判为仅展示,不出提议:门槛未过:started」。started 是门槛在代码里的变量名,SELL 是决策系统的枚举值,两者都只该在系统之间传递。判决依据、缺失项、风险这三个字段被 PMS 原样显示给人读,全部改写成完整中文并带上具体数字。新增一条守卫用例,造十五种情形逐个检查这三个字段里一个代码名都没有。 - PMS 那边同改两处:跳过原因只写原因不写判决名;候选一只不剩时的说明不再把计数字典原样打印,改成只念不为零的那几项。 - **一个此前没人发现的事实**:选股系统的计划接口是每次实时重算的,从来不读快照,实测耗时 24 秒;而 PMS 的取数超时是 10 秒。之前一直能过是因为容器热着。09-04 重建容器后立刻暴露,已把 PMS_PLAN_TIMEOUT 从 10 调到 60。这一条要记住:容器重建之后第一次拉计划必然比平时慢。 - 复核日期:下一个交易日(09-07)看候选数与提议数是否稳定在这个量级。 ## 027 · 2026-09-04 · 环节评析首跑五个;模型该用云端,且额度必须调大 - **模型这件事方向是反的**:这个任务本来就配的是云端。它取模型的写法是向路由器要"关系抽取"这个任务的升级档,那一档指向 https://api.deepseek.com 的 deepseek-v4-pro。判定依据是地址指向公网域名,不是配置里的标签,也不是模型名字像什么——内网那台机器上也挂着一个名字很像的本地量化副本,光看名字会认错。 - 结论是**保持云端,不要改本地**。三条理由都有实测:本地那台机器在端点池里标的可用时段是盘后,盘中不进候选;本地默认队列积压 696 条,日志里有进程排了 25 分钟的队;评析的瓶颈是网络等待不是本地算力,放云端不占显卡。 - 一条千万别走的路:改配置把那个基地址指向本地。端点池是按档位名判定的,对这一档一律放行,改完之后评析会在不占槽位、不记账的情况下直接压显卡,池子一点都拦不住。 - **首跑五个环节,四个第一轮就失败**,一个只跑了两轮、自我校验是空的。原因查清了:这个模型是推理型的,它先在内部写一长串推理再写答案,而推理和答案共用同一个输出额度。实测十二次调用的推理长度是 3,647 到 25,535 个字符,而额度只有 8192,推理还没写完就见底,接口返回 finish=length,答案要么是空的要么是半截 JSON。任务重试一次再烧一次额度然后放弃——钱花了,一个结论都没落库。 - 修法是把额度从 8192 提到 32768(单点探过,接口接受),自我校验那一轮从硬写的 2048 提到 8192。这不会让平时的调用变贵:按实际生成的字数计费,额度只是上限。反过来额度太小才真的浪费。 - 顺带把日志说清楚。原先只写"空响应",看不出是额度不够还是模型没话说,而这两种的处置完全不同。 - **修完重跑,五个环节全部落库、全部三轮跑通。** 采信倾向都是偏多;自我校验两个通过、两个未通过、一个是修改前留下的空值。校验确实在挑毛病——固态电解质那条被它抓出"证据只说了自生负极技术和新兴应用,没提固态电池,撑不起固态电解质受益这个推断"。 - 实测耗时:单个环节 235 到 366 秒,输入约 4,000 到 5,700 token,材料 34 到 44 条。 - 一处此前没人知道的事实:**这个任务在今天之前一次都没跑过**。它被路由到一条独立队列,而消费这条队列的容器 09-04 才在配置里定义、从未创建。库里那三条单冒号开头的旧记录是 07-10 的旧格式,与这个任务无关。 - 复核日期:下次投递前先看一眼额度够不够,日志里出现 finish=length 就是又不够了。 ## 028 · 2026-09-04 · 逻辑状态四态接进计划装配,产业研判这一路真正通了 - 改动:四态从"只写不接"变成随每张卡一起算、随计划发给下游。三路输入分别是研报论断、产业研判(读行业观点快照,按环节名对上今日被指向的环节)、券商行动。公司事件那一路无数据源恒出缺失,但照样记名——缺失要让人看得见系统缺的是什么,不能让人以为系统判过了。 - 接口每行新增逻辑状态:状态、子因、每路的来龙去脉与截止日。不发权重也不发判决改动,四态怎么作用于建仓通道是 PMS 那边的事。 - 修了两处此前的口径错误。**第一处,日期**:行业观点快照按计划日落库,行情与论断按数据日取,两者在生产里差一天。原先读数脚本用同一个日期取三样东西,结果是快照首日读到空——台账 024 里"乙路覆盖为零"那个读数,部分就是这个原因造成的。**第二处,传导视图**:候选卡判"所在环节被指向"时认的是两张视图取或,而读数脚本只读了含已启动成员的那张窄的,算出来的产业研判覆盖比卡上真实看到的低。 - 两处取数搬进公用的地方,免得读数脚本和计划各写一套:行业观点快照的当日读取进 judgement.py,券商行动进 sources.py。 - **实测:乙路真的通了。** 当日计划三十行全部带逻辑状态,四态分布是逻辑成立 12 行、无法判断 18 行(其中证据不足 17、证据矛盾 1)。各路可用次数:研报论断 7、产业研判 6、券商行动 9。台账 024 那时产业研判是 0。 - 一个完整的例子(立讯精密,判决候选、逻辑成立):研报论断平稳,3 条论断都在 90 天之内但 30 天内没有新材料;产业研判平稳,采信倾向偏多且与上一版相同;券商行动缺失,两个窗口里能算的机构不足两家;公司事件缺失,无数据源。四路各带自己的截止日。 - 十七例测试,重点钉住四态不改判决:四个状态乘三个判决十二种组合逐个扫过,判决一次都没被动过。这是收敛规则单调性的守卫。 - 复核日期:下一个交易日看四态分布是否稳定,以及产业研判这一路随环节评析铺满而扩大到多少。 ## 029 · 2026-09-04 · 环节评析进定时,产业研判整条链路打通 - 改动:基座机加了每个工作日一次的环节评析定时任务,北京时间 20:30 跑。那台机器整机走世界时,所以定时表里写的是 12:30——这一点必须核实,写错就排到盘中了。旧定时表备份为 ~/crontab.bak-20260904。 - 装完在最简环境下实跑了一次这条命令验证(退出码 0、日志正常写入),不是只看写法对不对。定时表里的 $HOME 第一次装的时候在本地就被展开成了 Mac 的路径,实跑才会发现这类问题。 - 时刻的理由:材料是研报,最新的也是七周前的,属于慢变量,赶不赶当日盘没区别;而早上 06:10 到 07:10 那段是盘前链,不能挤。 - 用户在调度中心加了行业观点快照那条任务并手动触发验证。实测确认打到了:快照表写入时刻从 05:01 走到 05:05,来源地址是 192.168.16.165(调度中心),与我从容器内部那次区分得开;行数仍是 31 行,幂等性确认。 - **至此产业研判这条链路整条通了**:晚上 20:30 基座机评析当日被指向的环节并落库,次日凌晨选股系统落一次行业观点快照收进来,计划里那一路就有值。 - 花费的实测口径(今天全量跑 19 个环节得出,零重试零失败):单个环节固定 3 次云端调用,输入 12,730、输出 16,763,合计约 2.9 万 token。输出比输入还多,因为这是推理型模型,推理过程也计进输出。 - 每天要评几个:近 31 个交易日累计出现过 208 个不同环节,"从没评过的"这个数从起步的每天 14 到 19 个,十天后降到 2 到 6 个,最后十个交易日中位 4 个。但指纹覆盖的是真正进模型的 32 条论断加 12 条事件,而每天新落库的事件是 900 到 1900 条,所以多数环节的事件榜单每天会被刷新、指纹跟着变。现实估算是每天评 20 个左右,约 59 万 token。用户确认这个量级可以接受。 - 一处留待处置:触发密钥跟在网址后面,会明文写进接口的访问日志。不紧急(内网、日志只有本机能读),但与"凭据不入库"是同一性质的问题,做到治理那批时一起改成放在请求头里。 - 复核日期:09-07(周一)看定时有没有自动跑,命令是 tail ~/akg_logs/review_segment.log。 ## 030 · 2026-09-04 · 文案三批上线;发现 exec 会打到一个跑了四周的孤儿容器 - 改动:给人看的文字分三批改完。第一批是选股系统候选卡的四处(预期空间、传导那句、论断出处的 36 位编号、ST 门槛没文案掉进兜底)。第二批是 PMS 后端(规则闸六句、仓位约束六句、资金四句、计划取数两句),并抽了公共的显示层剥前缀函数。第三批是页面(操作日志印函数名、冻结原因漏网、提议卡印判决词、账本把整个字典打出来等九处),并新增一道静态守卫。 - 一条必须守住的纪律:那些大写判据码是承重的,账本靠它取去重键、命令进度靠它做原因聚类。2026-07-29 账本被同一条指令按分钟灌满,病根就是去重键失效。所以码留在句首,只能在显示层剥。后端与前端各一份实现,注释互相指认,改一处必须两处同改。 - 页面此前完全没有测试。新增的守卫检查四件事:枚举字段直出、判据码没剥前缀、把整个对象打给交易员看、翻译兜底裸奔。它实际比人工照清单改更可靠——多抓出四处清单里没有的。运维面板里有意显示原始数据的地方逐条登记放行,每条写明在哪个面板、为什么放行。 - 顺带接上一个此前从没被渲染过的字段:候选卡的缺失项一路从选股系统带到 PMS 前端,页面上一次都没显示过。现在"关注"态终于说得出到底缺什么。 - **发现一个环境问题,与本批改动无关但影响核验可信度**:`docker compose exec pms-web` 打到的不是服务容器,而是一个 2026-08-03 由 `docker compose run` 留下的孤儿容器(容器名 tradingsystem-pms-web-run-a4f4a87e7662),跑了四周、状态 unhealthy、用的是四周前的镜像。它跑的是 scripts/watch.py,不接端口、不影响生产,但会让 exec 做的核验落在旧代码上。 - 识别办法:`docker compose ps -q pms-web` 报的容器 id 与 `docker compose exec -T pms-web hostname` 不一致就是撞上了。核验要紧的读数时用 `docker exec <真实容器 id>` 直接指名。 - 处置:09-04 经用户同意后已清除。清除前逐项确认过四条:compose 自己标着 oneoff=True(一次性命令留下的,不是编排里的服务);脚本开头写明只读不写,实际扫代码零写库零写文件;不接任何端口、没有别的容器把它当依赖;跑了四周累计占用 7 小时 23 分处理器时间做没人看的事。 - 清除后复验通过:exec 与 ps 报的是同一个容器 ac9b9289;四个服务容器都在、通道在线心跳 0.9 秒;那个"依赖装不上"的矛盾消失。 ## 031 · 2026-09-04 · 文案第四批:计划环境标签与周报 - 改动:计划文本的环境标签那行,以及周报的表头、导读段落、两栏口径说明、两处异常原文。 - 环境标签原先印出「环境标签:UNKNOWN,弱势指数 None/8」。三处毛病:UNKNOWN 是枚举值;8 是硬写的分母,而快照里其实带着真实的指数总数(weak_total);None 是取不到时的空值。改成三种情况分开写,三支都实测过。 - 补了一句此前没说的要紧话:这个标签不影响任何一只票买不买,只在事后复盘时用来分组。不写的话,读的人看到"弱势日"会以为下面的名单被压过一轮。 - 周报表头的翻译放在渲染函数里,每张表都受益,不用逐处改。三处不能想当然地译:「比全池多涨几个点」与「跑赢全池的股票占比」都跟全池比,但一个是收益差、一个是只数比例,译成同一个说法会在同一张表里紧挨着撞车;「往后看几个交易日」不能译成持有天数,脚本开头反复写明不建仓、不计成本、不是回测。 - **改正一处事实错误**:导读段落写着"样本纪律三档",而代码里只有两档(可读、方向)。一并把两档的字面改成"够"与"不够,只看方向"。 - 自评与账本那两栏的口径说明里有库表名与枚举值,改成说清算法本身,特别是"为什么这个数不能和上一行直接比大小"——那正是并列这两行时最容易读错的地方。 - 周报没有单测,改完真跑一份人工过目。 - 复核日期:下一次周五出周报时再看一遍表头与导读读不读得通。 ## 032 · 2026-09-04 · 让旁批说得出产业理由(落地顺序第七步) - 改动:主题页的系统旁批此前只会产出同一个形状——前半句"还没涨、还便宜",后半句一个泛泛的风险。根因两条,这次一起改。 - 第一条,喂给模型的六项全是行情口径(热度、定价位置、前瞻市盈率、规则命中、代表公司),一项产业逻辑都没有。现在把两样产业侧材料喂进去:环节的多空对比研判(核心矛盾、供需、市场预期、多空论据),以及成员公司因果论断的方向计数与最近三条的机制原文。 - 第二条,提示词无条件要求"说主要不确定性是什么",所以后半句必定是风险。改成条件式:有空头论据就写,没有就说材料里没有。空头论据在输入里单独占一行且允许为空,让模型看得出到底有没有,不靠它猜。 - 材料缺席时明确写"这个环节还没有做过研判""成员公司没有可用的论断",而不是省略。省略的话模型会拿行情数字硬凑一句产业判断;写明了它才会照要求说"目前只有行情面依据,产业逻辑待补"。 - **修正一处我自己写错的过滤**:起初写的是"自我校验没通过的研判不给"。实测站不住——二十个环节里十个没通过,一律不给等于扔掉一半。而校验挑的是"某条论据撑不住某个推断"这种具体问题(固态电解质那条写的是"证据只说了自生负极技术,没提固态电池,撑不起固态电解质受益这个推断"),不是整份结论作废。改成照给,但把校验意见一起带上并明写"请谨慎引用"。 - **顺带修一个此前没人发现的问题**:三处旁批调用(主题页、热点扫描、传导)的输出额度都写着 4096,而这个档挂的是推理型模型,推理和答案共用同一个额度。近三天日志里有 5 次额度耗尽,全部出在这个 4096 上——热点扫描与传导旁批一直在悄悄失败,失败了还照样付费。三处一起提到 32768。 - 验证:产业侧材料的拼装与旁批本身都用真实数据跑通了。 - **更正一处我自己的误判**:起初报"环节图建不出来、机会环节数全是 0"。那是我查错了——地图的返回结构里没有 segments 这个键,机会环节挂在 layers 里,我的探测脚本找错了地方。链路一直是好的。教训是:结构不确定时先把顶层键打出来,不要按猜的键名取值然后据此下结论。 - 实跑对比(AI算力主题,环节"服务器"): - 改之前的样子(当时样本):"锂离子电池涨幅负 6.4%,目标价空间 74%,市盈率 15 低于链均值,电池龙头具备配置价值;竞争加剧与原材料波动是风险。" - 改之后:"超节点占比提升与 GB200 良率改善推动毛利率上行,token 用量增加及下游采购加大驱动需求,预期上修至盈利改善;但环节整体供需数据不足,匹配存疑。" - 三处差别:前半句从行情数字变成产业机制;风险从"竞争加剧与原材料波动"这种放哪都成立的套话,变成针对材料本身的"供需数据不足,匹配存疑";全句没有复述任何行情数字。 - 复核日期:连着看几天的旁批,确认它不会退回复述行情数字的老样子。