无数据泄漏的 LLM 交易回测¶
TraderHarness 把历史污染当作环境边界来处理,而不是提示词层面的口头约定。
基本概念¶
时点掩码(Point-in-time masking):任何暴露给 Agent 的数值,在离开环境之前都要先过模拟时钟的过滤。日线严格早于当前交易日,5 分钟线截断到当前子窗口,基本面记录的发布日期不得晚于当前日期。
日期匿名化:把 Agent 看到的绝对日历日期替换为相对模拟当前的偏移量。今天是 D+0,前一个自然日是 D-1。一天内的时刻保持可见。
实体掩码:真实 A 股代码与已知公司别名到中性假名之间的确定性、全运行范围双射。代码在兼容的板块分组内打散,使涨跌停规则在匿名化后依然成立。
三阶段交易循环:一个有边界的交易日——禁止下单的盘前研究、渐进揭示的 09:30–10:00 开盘窗口、渐进揭示的 14:30–15:00 尾盘窗口。
掩码覆盖范围¶
掩码作用于:
- 日线与盘中 K 线;
- 选股筛查、基本面、估值、公告与政策新闻;
- 账户与自选股视图;
- Python 沙箱中
traderharness_api返回的 DataFrame; - 模型回复、推理字段、工具参数与委员会备忘录;
- 跨日记忆、落盘轨迹、回放盒带、对比结果与轨迹导出。
Agent 通过工具回传的伪代码会在内部解析还原后再撮合;账户视图再经同一正向映射渲染,Agent 全程无需接触真实代码。
同一条历史公告,两种身份:左侧是仅限环境的原始记录(真实日期 + 真实公司),右侧是 Agent 可见的视图(相对日期 D-9 + 伪身份 公司-600731)。
工件审计¶
traderharness audit result.json replay.jsonl export.parquet
审计器检查已知真实公司别名、六位 A 股代码泄漏、绝对 ISO/中文日期以及月-日形式。v1.0 发布验收中对一段序列化的一个月期 DeepSeek 轨迹做了审计,在最终出口修复之后未检出任何真实实体别名或绝对日期。
这个结论的含义是窄的:它验证的是已知的词法与日历出口契约。它无法证明模型不能从独特的财务模式、产品、高管或事件推断出某家知名公司。要发布可公开的评测结果,请报告掩码配置与种子、保留审计输出,并在语义重识别影响重大时对比遮罩与未遮罩运行。
执行层泄漏¶
如果撮合引擎允许模型先看完整个盘中窗口、再回头选择更早的优惠价格,信息掩码就失去了意义。TraderHarness 先揭示每个开盘/尾盘子窗口、再给出该窗口的合格成交,并让每一笔订单都经过 TradingBus.place_order()。因此动作序列不可能选中决策时刻不可见的价格。