AI 生成交易策略如何验收
AI 生成交易策略最危险的错误往往能运行却不符合原意。本文给出从原始提示、结构化规则到代码测试与人工接受的质量评测方法,重点检查模糊词、未来数据、单位、成本、样本外、权限与事后解释,并提供可复制的错误分类与修订差异表。Bastix 只能生成 Beta 研究骨架,没有统一回测或自动下单。
AI生成交易策略最常见的问题不是代码报错,而是代码能运行,却把“最近”“放量”“风险高”等模糊词偷偷变成了未经用户确认的参数,或者在计算中使用未来数据、忽略成本,再用流畅解释掩盖差异。验收应从原始提示与生成物的一致性开始,收益结果只能排在后面。
本页与 Bastix 的自然语言功能页分工明确:功能页说明产品如何把描述整理成研究骨架;本页提供一套与具体产品无关的错误测试、修订和接受方法。
每次生成必须保存六样东西
- 原始提示词和用户补充说明;
- 模型、产品、版本、日期和参数;
- 第一次原始输出,不做润色;
- 自动测试、人工复核和失败日志;
- 修改前后差异与修改理由;
- 最终接受、拒绝或仅供研究的责任人和日期。
只保存最终代码,会抹掉模型最初误解和人工做了什么,也无法判断下一次版本升级是否复发。
七类错误要分开记录
| 错误类型 | 例子 | 检测方法 | 处理 |
|---|---|---|---|
| 目标错位 | 用户要“观察”,输出写成“买入” | 对照原始动词与外部动作 | 退回并禁止账户动作 |
| 定义缺失 | “放量”被默认成 20 日均量的 1.5 倍 | 找出所有未由用户提供的阈值 | 标记待确认,不自动补参 |
| 时间穿越 | 当日收盘信号按当日收盘成交,或使用未来披露财务 | 检查每个字段可得时点与数组索引 | 修正信号/执行时序,重跑全部测试 |
| 口径错误 | 元、万元与亿元混算;累计值当单季值 | 单位测试与已知样本手算 | 数据契约未通过前停止 |
| 现实约束遗漏 | 默认零费用、可无限成交、停牌可交易 | 对照成本与交易规则清单 | 加入约束和压力测试 |
| 选择偏差 | 生成很多参数,只展示最好结果 | 记录候选数与完整结果 | 冻结搜索预算并做样本外检验 |
| 解释洗白 | 先得到结果,再生成一个看似合理的原因 | 要求支持、反对和未知证据同时出现 | 将解释降为假设,不写成因果 |
一个教学反例:怎样发现“意思被改了”
以下是编辑构造的验收练习,不是任何模型或 Bastix 的真实运行记录。
原始输入:
观察最近放量且价格走强的标的,遇到风险公告时暂停,先用于研究,不交易。
不合格生成物可能写成:
当今日成交量大于 20 日均量 1.5 倍、收盘价高于 20 日均线时买入;
若新闻情绪分低于 0 则卖出。它至少增加了五项用户没有提供的决定:20 日窗口、1.5 倍阈值、用收盘价定义“走强”、把风险公告换成新闻情绪、把研究观察改成买卖动作。
合格修订不是寻找“更好的参数”,而是把未知项退回:
- 今日成交量 > 20 日均量 × 1.5
+ 放量口径:待用户指定窗口、比较基准和阈值
- 收盘价 > 20 日均线
+ 价格走强口径:待用户指定价格字段、窗口和判断规则
- 新闻情绪分 < 0 时卖出
+ 研究截止日前存在用户指定类型的风险公告时,暂停该标的并列出原文
- action: buy_or_sell
+ action: research_only这份差异表没有创造策略,只恢复了用户原意和未知状态。
七项验收测试
语义一致性
把输出中的每个名词、阈值、时间窗和动作映射回原始输入。无法映射的项目必须标记“模型新增”,由用户接受或删除。
时间截止测试
给出一个明确研究截止时间,并放入一条截止时间之后才披露的材料。生成规则必须排除未来材料。代码审查要特别检查负索引、窗口居中、全样本归一化和 shift 方向。
缺失与冲突测试
删除一个必要字段,再提供两份相互冲突的来源。合格结果应停止受影响规则、保留冲突并要求复核,不能从模型常识补数。
单位与边界测试
分别输入元/万元、百分数/小数、累计/单季、复权/不复权;使用 0、负值、极大值和空值。所有转换应显式发生并留下测试结果。
代码与规则对照
由第二位复核人把自然语言规则翻译成手算样本,再与代码逐行比较。代码可运行、测试覆盖率高,也不能替代业务规则一致性。
重复生成一致性
在固定模型版本和参数下运行至少三次,记录结构、默认参数、错误类型和拒绝率。如果同一输入经常产生不同阈值或动作,应将生成物限制为草案,而不是稳定规则。
权限与停止测试
确认生成物只产生研究骨架、代码草稿或沙箱记录。任何外部工具、券商账户、文件写入和消息发送都要单独列权限、确认方式和失败出口。
“可解释”至少要覆盖七层
生成物的解释必须让复核人逐项回到目标、数据、规则、节点、证据、不确定性和权限。只有一段自然语言理由不算可解释。
| 层级 | 最低证据 | 反例 |
|---|---|---|
| 目标 | 可证伪问题和停止条件 | “寻找好股票” |
| 数据 | 字段、来源、单位、时间 | “使用最新数据” |
| 规则 | 条件、阈值、优先级 | “趋势较强” |
| 节点 | 工具输入输出与读写性质 | “AI 自动执行” |
| 证据 | 支持、反对和原始材料 | 只展示结论 |
| 不确定性 | 缺失、冲突、模型假设 | 把未知写成 0 |
| 权限 | 修改、暂停、外部影响与责任人 | 默认所有动作都人工确认 |
解释清楚不等于规则正确,更不等于因果成立。它只让错误更容易被找到。
AI 辅助量化的额外风险
AI 生成代码会放大已有的量化风险:它可以快速产生大量候选,增加数据窥探;可以把最终修订数据当作历史可得数据;可以生成表面合理但单位错误的特征;还可能只总结最佳结果。Lo 与 MacKinlay 的数据窥探研究和 Bailey 等人的回测过拟合研究说明,反复搜索和选择会使历史结果夸大。
NIST 生成式 AI 风险管理框架强调按目标和风险容忍度治理、测量和管理生成式 AI 风险。对应到策略生成,就是保留版本与原始输出、设计失败测试、限定用途并设置人工责任,而不是把“由 AI 生成”当作质量认证。
Bastix 的能力边界
Bastix 可把自然语言整理成结构化研究与策略骨架,但该能力为 Beta,不等于生成可直接执行的交易算法。TAP 可以承接研究、观察与整理任务;平台没有现成统一回测引擎,也没有内置券商连接或真实下单。1
因此在 Bastix 中,生成物首先应进入“待复核”,而不是进入资金环节。需要历史检验时,用户须在受限代码工具中自行组织计算,按交易策略回测协议保存数据与结果。
下一步可拿一条不涉及真实账户的研究描述,故意加入一个模糊词、一个未来日期和一个缺失字段,完整保存首次输出、错误分类、修订差异与拒绝理由。没有这组记录,就不能声称生成质量已验证。想把生成的策略骨架放进更完整的量化研究流程,可参考量化交易研究指南。
事实脚注
Footnotes
-
Bastix《公开产品事实登记》0.1.0(取证日期 2026-08-14):自然语言策略结构化为 beta;TAP 为 production,但无人值守任务只做研究、观察与整理;回测引擎、券商连接与真实下单为 unsupported;不存在覆盖全部动作的统一审计或人工确认绝对承诺。 ↩