证伪官印
FALSIFIER · FACTOR AUDIT COURT
证伪官
用 AI 做出一个新的选股因子,已经越来越容易。
但它值不值得相信?如果不采用,这次研究还能留下什么?
LIBRARY 101 PRECEDENTS · GROWING · FROZEN a6f6347 · 2026-10-18
案件 · BENCH-A09-gaprev · 内部对抗基准
一笔不存在的暴跌
sz.002437 · 2016-05-24 → 06-17 · 真实行情(17个交易日)|价格线为收盘价,标注为隔夜跳空source: falsifier-data/panel
口径:折线为收盘价 · 跳空 % = 今开/昨收 − 1 —— -67.5% 与 -1.6% 是隔夜跳空,不是从收盘折线上量出的
隔夜跳空 -67.5%?
不。真实跳空 -1.6%。
这不是崩盘,是一次高送转除权——股本扩大,价格除权下来而已。该因子(隔夜跳空反转)直接读未复权价,每个除权日在它眼里都是暴跌信号——代码能正常运行,但研究对象已经变了。
FACTOR AUDIT COURT · 判决
不予采纳(REJECT)
判决书 2026-09-08 真实归档 · 审计过程逐步留痕 · 法医定性原文见第 04 页
这就是它没有通过审查的原因——判决上的每一句,都要有查出来的证据。
取证 · FORENSICS
这个错误为什么会影响选股研究
同一天的两种真相 · 40 个「幻影跳空日」(今开/昨收 · A09 实际口径)红=原始 绿=复权 · 复核
346 / 400 股
存在复权因子跳变(2,296 个股票日)——价格线里藏着悬崖的股票
40 天
≥50% 的幻影隔夜跳空(-20%口径 320 天)——从未发生过的崩盘
50 / 119 截面
按原始口径算出的因子排名被口径扭曲:与复权口径秩相关 <0.99,最低 0.81
数字出处,当庭交代:本页数字为基于同一真实面板的后续复核(口径事先固定,明细可逐条重算);当时判决书的法医定性原文——「…凭空 -50%,属于硬伤」。同一次庭审 P1 前视审查 = 通过:受控接口内未检出越界读取——这是口径问题,不是前视问题,判决书里两者写法不同。
审查的意义,不只是指出「未复权价」——而是指向因子的实际计算与研究判断:知道哪一环出了偏差,才能修正它。
全貌 · THE THROUGH-LINE
整套工作,如何连在一起
STEP 1
因子研究 / AI 生成
手写,或大模型批量产出
→
→
STEP 3 · 证伪官
独立证据审计
入库前,只核证据真不真
→
→
STEP 5
研究 / 交易使用
进组合的因子有案可查
判决不是终点——判决书 · 判例卡 · 边界卡 · 残差 · 追踪,挂在同一条线上
查清楚
接过代码与研究材料 · 独立取证
给出有依据的审查结论(判决书)
→
留下来
判决书 · 判例卡 · 研究边界卡
每次审判自动归档 · 进团队档案
→
用得上
开庭先查判例 · 残差复核 · 庭后追踪
喂给下一轮研究,少踩旧坑
↺ 下一轮研究,从上一轮留下的记录出发
先查清楚,再把经验留下来——让它在下一次研究中,真正用得上。
智能体 · AGENT AT WORK
四条真实调查轨迹:模型选路,规则护栏
案① BENCH-A09-gaprev法医 FAIL 后没有立刻休庭——继续取齐安慰剂与功效,判决书成为完整验尸报告,而非死因摘要
inspect_factor→audit_declaration→audit_forensics ·FAIL→run_backtest→audit_lookahead ·PASS→audit_placebo ·FAIL→audit_power→给出结论
案② A_earnings_growth前视 FAIL 后模型主动申请修复版;规则引擎拦下失去意义的统计检验,模型接受改道、提前终止——终止理由是模型自己写的
…→audit_lookahead ·FAIL→propose_repair→run_backtest→audit_placebo 被拦截→audit_power 被拦截→提前终止
「前视审查已判定 FAIL……研究员应首先采用修正版因子。」——前半是规则的拦截回执,后半是模型的收手决定(轨迹存档 agent_A_earnings_growth.json)
案③ D_llm_newsinspect 发现因子链路含语言模型——自动追加默认流程之外的权重污染检验(权重在模型里,数据层查不到)
inspect_factor→audit_declaration→audit_lookahead→audit_contamination ·追加→run_backtest→audit_placebo→audit_power→给出结论
案④ submitted:0074没读证据文件就想核对申报,被规则引擎拦下;模型转身先读文档与历史,再发起申报修正——护栏改变模型行为
audit_declaration 被拦→inspect_documents→inspect_history→audit_declaration→propose_declaration_correction→audit_multiplicity 被拦→audit_placebo→audit_multiplicity→…→给出结论
LLM 自主选择(查什么 / 何时停)
检察官裁定(FAIL)
规则引擎拦截(guard)
通过(PASS)
36 案实录 · 调查路径因案而异 · 判决永远出自固定规则
模型负责选路——查什么,取决于这个因子是什么、上一份证据说了什么;拦与判,规则说了算。
机制 · INDEPENDENT RE-CHECK
倒带复算:检查历史研究有没有越过时间边界
①
成熟 PIT 回测
历史运行原则上只能用当时可得的信息——已有工程实践,本就应做到,不是我们的发明
②
证伪官独立复核
代码不动,放进受控数据环境重复执行、对照输出、检查实际取数记录,结合执行契约定性,并保留审计证据
通俗地说:2024-03-31 发出买入信号,4-20 才披露的数据当时就不能用——回测平台保证这一点;我们补的是「拿别人的代码独立查一遍、留下证据」这一环。
同一个历史日 · 两种数据环境(示意图)SCHEMATIC
两次输出不同 ≠ 未来函数——须看访问记录与复现
视野依赖 ≠ 原回测违规——先警示,复现确认才定性
输出变化 ≠ 收益真被污染——不作业绩断言
定性三要件:访问记录 · 接口契约 · 复现证据
我们不发明回测平台——补的是「独立复核 + 留下审计证据」这一环。
沉淀 · PRECEDENT & BOUNDARY
踩过的坑,变成下一轮研究的信息
判例卡 · 真实归档case: volvol60_n : e27883078866 : REJECT
命中
P7_increment · 同族换皮 —— 审判内拒绝
结论原文
「与已放行因子 vol60_n 月收益相关 0.86(≥0.85),属同族换皮,组合无增量信息」
状态归因
vol_sensitive —— 高波动月夏普 0.60 / 低波动月 1.58
下一次研究:新候选提交 → 开庭前毫秒级查判例库——源码相同直接引用先例(仅供参考,判决仍独立做出);同类风险优先检查。101 条判例 = 本系统历次真实审判自动归档。
研究边界卡 · 从死因谱自动生成随每案刷新 · 不靠人写
规则一
同族换皮已证伪 40 个(占指控 14%):与参照系相关 ≥0.85 不再受理;0.5–0.85 须以正交残差夏普自证增量
规则二
高频死因:P8 经济逻辑 ×71(占 25%)——此类构造生成端就地自检
规则三
状态敏感因子族已记录 18 个:新变体须先备高波动子样本存活证据
真实闭环:挖矿 Agent 生成新因子前先读边界卡——9 轮实录 49 个候选,20 个在生成端被拦,不再浪费完整审判。
禁区说「别挖」——判例说「这里以前塌过,先看塌的原因」。
复用 · RESIDUAL & FOLLOW-UP
被拒的可能还有价值;通过的也要复查
残差复核 · 扣掉重复,看剩下的
与已有因子 A 重叠 · 扣掉
剩余独立信号(残差)
OLS 正交化剔除对残差再检验
真实案例volvol60_n(波动率的波动)
审判内
与已放行 vol60_n 相关 0.864 → P7 同族换皮,拒绝
残差复核
扣掉重叠后残差夏普 0.761 → 立为「边缘线索」:值得下一步研究
19 案证据类死因全部排查:2 条线索(均为边缘级)。不是放行——是下一轮调查的线索;构造性致命伤(前视/安慰剂)不在寻访范围。
庭后追踪 · 采纳因子持续复查(确定性规则)
8 案采纳因子按固定规则复查(近 6 月表现 vs 全样本):存续率 62%——判决管入库,复查管后来;已失效者移交复核,法庭也接受审计。
追踪覆盖面板历史月度序列(2016–2025 真实 A 股面板),面板更新后重算即滚动;暂未接入实时行情自动盯盘——如实标注。
拒绝不是终点,通过也不是免检牌。
验证与成本 · PROOF & COST
从真实案件到运行验证:证伪官已经证明了什么
证明一 · 真实案件的取证与复核
判决书当庭证据:「凭空 −50%,属于硬伤」——同一交易日的原始/复权双口径对照 〔原始运行〕
全库同病灶:40 天幻影跳空 · 346/400 股 · 2,296 股票日 〔后续复核 · 口径事先固定〕
同庭 P1 前视审查=通过——口径问题与前视问题分开定性
证明二 · 沉淀已被真实使用
判例库 101 条自动归档 · 开庭前检索先例 〔线上 /api 实测〕
研究边界卡:挖矿 9 轮 49 候选 · 20 个生成端拦截
残差侦探 2 条边缘线索 · 庭后追踪 8 案 5 存活/2 衰退/1 失效
证明三 · 资源结构清楚
一份审计 70.1 秒 · 9 次模型调用 · 26,702 token 〔历史个案实测〕
本地 Qwen3-8B(80 亿参数)· 无外部 API 账单
判决层纯 CPU 零模型 · GPU 仅用于调查层
补充证据 · 历史对抗基准:v1 版 10-01 开庭,预期拒绝案 13/13 全部拒绝(含 A09 口径案)——历史样本结果,不是当前版本整体检出率。
验证边界:已知误判 1 例(A07,已修复,23 项定向回归通过)· 已知漏检 2 例(B06/B08,在案可查)· 封版代码未全量重跑——版本与口径明细见问答材料。
可用
卷宗回放 · 判决书查阅 · 判例检索 · 边界卡 / 追踪 / 残差——下一页现场演示
不可用
GPU 实时开庭——环境待恢复,不承诺今天做不到的事
机构价值 · INSTITUTIONAL VALUE
让因子入库更有依据,让研究经验留在团队
入库前发现研究风险,审查后沉淀可复用的证据与经验。
审查依据提升因子入库审查的可靠性
研究员 · DEVELOP
完成因子开发与回测
研究想法落地为代码与回测结果
→
证伪官 · INDEPENDENT AUDIT
入库前独立审查
数据口径与前视风险
统计可信度
与已有因子的重复程度
→
交付 · DELIVERABLE
证据 · 结论 · 后续建议
有依据、可追溯的审查记录——不是一个简单的 PASS / FAIL
→
研究负责人 · DECIDE
入库决策
凭审查记录决定采纳、退回修改或继续验证
研究积累让研究经验成为团队可复用的资产
↺ 这些经验回流到下一轮因子开发——同样的坑不重踩,值得验证的方向不丢失。
下一步 · 机构试点路径历史因子试审→效果与成本评估→探索机构流程接入
证伪官印
让一次研究的结束,
成为下一次研究的起点。
哪些结论值得相信 · 哪些问题该记住 · 哪些方向值得走下去。
判例库 101 条 · 发明专利申请已受理 202611401780X · zhengweiguan.caixuntong.cn · 13 / 13
痞老板
华南理工大学·智云扬
合作联系 · 微信 a2556425380