docs: spec §4.2 AST 防换皮措辞对齐实现——方言内重实现(120 行 Python ast)+软硬口径独立声明+工厂看板落点确认 [nas]

This commit is contained in:
2026-10-10 11:16:18 +08:00
parent bfd08561fc
commit 73bddca583
@@ -80,10 +80,11 @@ F 环是「管道」与「飞轮」的分界:归因发现→可能=衰减触
- **t 统计量+正 IC 天数占比**进月度批评报告与因子详情(t=mean/(std/√n)、正 IC 占比=正点数/总点数;QuantaAlpha 论文 A.5 同款报告纪律,其开源代码亦无——抄论文不抄代码);
- **逐年 IC**:报告/工厂看板按年聚合(月度点 groupby year;日度化后点更密判读力自然上来);
- **小样本诚实注记**:月度点仅 12 个时 t 判读弱(95% 置信需 t>2.2,小样本难达)——本弹药与日度化配套,点数上量后判读力自然上来;判定动作不因此自动化(宪法:阈值叫人、处置人选)。
- **AST 防换皮(2026-10-10 补丁,QuantaAlpha `factors/coder/factor_ast.py` 移植;业务问题=换皮因子虚增池数/稀释合成层权重/重复评估)**:
- 移植其 597 行纯 Python 零依赖实现:表达式→语法树→最大公共子树匹配,含交换律识别(`a+b`≡`b+a`);
- 接入点=版本注册表:**注册新因子时**对既有因子池做结构比对,高相似=**提示非硬拒**(「疑似换皮:与 fXX 最大公共子树占比 X%」,人决定收不收)——judgement 永远人做,硬拒违反人工卡点宪法;
- 方言适配:parse_expression 按我们分解器白名单算子集适配;
- **AST 防换皮(2026-10-10 补丁,QuantaAlpha `factors/coder/factor_ast.py` 算法思想方言内重实现;业务问题=换皮因子虚增池数/稀释合成层权重/重复评估)**:
- 算法思想方言内重实现(120 行,Python ast,零新依赖):表达式→语法树→最大公共子树匹配,含交换律识别(`a+b`≡`b+a`)+UnaryOp/Call keywords 显式编码;**软提示占比口径(公共子树节点数/较小表达式节点数)与 factor_guard 硬门绝对节点数口径(`_DUP_SUBTREE_MIN=8`)相互独立,不抽公共 canonical**;
- 接入点=版本注册表:**注册新因子时**(仅建条落盘,幂等重注册不重写)对既有因子池做结构比对,高相似=**提示非硬拒**(「疑似换皮:与 fXX 最大公共子树占比 X%」,registry 每条存前 5,人决定收不收)——judgement 永远人做,硬拒违反人工卡点宪法;
- 方言适配:直接用 Python ast(与 factor_guard 白名单同方言,注册表达式必然可解析),不移植其 qlib 式解析器;
- 工厂看板逐年展示落点=列表 `icFullT`(全期合成 t,月报 factor_stats.tAll)+详情 `icStats.byYear`(逐年)——2026-10-10 已兑现;
- 不抄 RD-Agent 的 prompt 软门(「请勿生成重复因子」——LLM 自觉防不住换皮,业界反例)。
### §4.3 晋级闸门