AI 预测市场回测:在没有未来信息泄漏的情况下测试 LLM 策略
一个 AI 生成的策略不等于一份回测。模型、信息边界、决策协议、投资组合状态,以及可成交的实际成交,全都需要在历史时钟上被控制住。
AI 预测市场回测,只用每个历史时间戳当下可获得的信息,来评估一条 LLM 生成的规则或模型决策。一份可信的测试会冻结提示词与市场范围、封锁已结算结果与未来事实、依记录下来的深度重播订单、保留投资组合状态,并报告每一个决策、拒绝与成交。
为什么 AI 回测是一个独立的问题
一条确定性规则可以逐行审查。一个 LLM 却可能随着提示词、模型版本、上下文、工具结果与采样设置而改变推理方式。它也可能知道模拟日期之后才发生的事实,因为它的训练数据或连接的搜索工具超出了历史时钟的范围。一般的交易回测并不会自动控制这些风险。
预测市场让信息泄漏问题格外严重。市场问题与最终结算结果在结算后是公开的,因此一个模型可能看似在预测一个事件,实际上却是在回忆或从更晚的信息推断答案。测试必须同时维持市场时间的完整性与模型时间的完整性。
两种 AI 回测工作流程
DepthFeed 目前公开的工作流程支持第一条路径:请模型提出一个清楚的假设,把它转化为预设或自定义规则,冻结参数,再通过 Backtest Lab 执行。这把构想生成与评估分开,让重播可以重复执行。
模型在循环中重播则需要额外的控制:封闭的信息环境、按顺序的投资组合状态、可长期保存的模型调用记录,以及每个周期的逐点时间数据带。不要把一份跑在已结算市场上的对话记录,描述成这种更严格形式的回测。
| 工作流程 | 冻结的是什么 | 最佳用途 |
|---|---|---|
| AI 生成的规则 | 提示词的输出一次性转化为明确的确定性逻辑 | 测试一个 AI 假设能否在市场数据与执行条件下存活 |
| 模型在循环中重播 | 模型、提示词、工具与逐点时间的上下文,在每次决策时都运行一次 | 评估一个自主的预测者或投资组合智能体 |
建立历史信息边界
最安全的实现方式是使用一个 as-of 边界:来源时间戳小于或等于决策时间。每一个特征、摘要与工具响应都必须继承这个边界。单单一个没有边界限制的便利字段,例如今日市场状态或最终结果标签,就可能让整次运行失效。
- 设定一个决策时间戳,只纳入在该时间点或之前观察到的市场数据行。
- 明确界定任何回顾窗口;绝不使用可能来自未来的「最接近」数据行。
- 排除结算结果、最终价格、更晚的新闻头条与当前的网络搜索。
- 记录呈现给模型的确切市场范围,包括它跳过的合约。
- 为输入数据带加上哈希或版本号,让同一个决策之后能被重建。
- 把缺失的数据报告为缺失,而不是用更晚的观测值去填补。
防止答案泄漏与提示词泄漏
冻结系统提示词、客户指示、模型标识符、采样模式、结构化输出格式与可用工具。移除任何间接透露结果的语言,包括最终市场状态、结算措辞、事后文章摘要,或结算之后才创建的文件名。
对于历史事件问题,即使停用了浏览功能,也要假设预训练模型的记忆可能包含更晚的事实。尽可能使用对截止日期安全的问题,分开评估泄漏控制,并在较新或私下保留的期间比较表现。在众所周知、已结算的事件上取得高分,本身并不能证明具有预测能力。
让决策协议可审计
要求结构化的行动,而不是自由形式的建议。一个有用的决策应包含市场身份、方向、估计概率、置信度、最高进场价、请求的名义金额与简短的论述。服务器端规则接着应依照现金、敞口、置信度、优势与价格限制,决定接受、调整规模或拒绝这个提案。
存储跳过与被拒绝的交易,而不只是成交记录。如果最终报告只包含模型选中的赢家,就没有分母可以计算选择性、覆盖率或失败分析。这份长期记录应该把每一个行动关联到它确切的输入边界与最终的投资组合状态。
依时间顺序重播投资组合
投资组合周期必须依时间顺序运行,因为一个决策会改变下一个决策可用的现金与未平仓敞口。如果需要,可以在单一时间戳内并行化市场发现,但最终要对同一份冻结的数据带,整合出一个投资组合决策。不要让独立的模型调用花掉同一笔现金。
把未平仓头寸、已实现现金与风险限制一路延续下去。接着依类别与场所报告损益,也报告整体损益。这能揭示一个看似聪明的投资组合,是不是其实只是在相关联的合约上反复下同一个方向性重注。
使用可成交的成交,而非模型报出的价格
模型可以陈述一个最高价格;它不应该被允许自行捏造成交结果。加入一个明确定义的执行延迟,找到那个模拟时间点或之后第一份记录下来的订单簿,只走过卖价或买价到限定价格为止。存储 VWAP、成交比例、观察时间,以及使用的那份订单簿。
以保守的方式标记最终投资组合。用中间价标记会假设能不穿越价差、不消耗数量就出清头寸。一个具深度意识的可成交出清方式,更能回答投资组合实际能实现什么;过时或缺失的订单簿应保留为一个明确的失败条件。
实操流程:从一个 LLM 假设到一次重播
从一个有边界的提示词开始:要求模型提出一个可证伪的 Polymarket 或 Kalshi 假设、所需的可观测输入、精确的进场规则、头寸规模、出场或结算行为,以及应该通过测试的条件。禁止盈利宣称,也不要求事后案例。
把回答转化为 Backtest Lab 的预设或自定义规则,且不在看到结果之后更改阈值。选择目标场所与市场家族,使用按时间顺序排列的样本,并比较中间价、固定滑点与记录下来的深度这三种成交假设。检查每一笔交易,并保留一段更晚的保留样本。如果它撑过了测试,就把这条冻结的规则部署到模拟交易,并用建立规则时模型不可能知道的结果来评估它。
区分「预测能力」与「交易表现」的指标
预测质量与交易表现相关,但并不相同。一个校准良好的模型仍可能因为付出的价格已经反映了它的信息而亏损;一个校准不佳的模型也可能靠运气或一次集中的头寸短暂盈利。应该同时报告这两个层次,避免把整个评估简化成一个排行榜标题。
| 问题 | 指标 | 它能抓到的失败 |
|---|---|---|
| 概率预测有用吗? | Brier 分数、对数损失、校准度 | 自信但不准确的预测 |
| 行动在扣除执行成本后仍有盈利吗? | 净损益、ROI、可成交优势 | 预测得好,却买在坏价格 |
| 结果是否集中? | 依场所、类别与时间划分的损益 | 由单一事件或单一市况撑起整个结果 |
| 风险是否受控? | 回撤、敞口、头寸数量 | 盈利其实来自过度集中 |
| 模型是否有选择性? | 交易、跳过与拒绝的比率 | 没有分母的挑选式报告 |
| 这次运行能否重现? | 提示词、模型、数据带与订单簿哈希 | 无法独立重播的结果 |
在不移动标准的情况下比较模型
- 给每个模型相同的冻结市场数据带、工具集、输出格式与投资组合限制。
- 使用相同的决策时间戳、执行延迟、成交引擎与最终标记规则。
- 把供应商故障、无效输出与风控拒绝,与市场亏损分开统计。
- 把 token 用量与模型成本连同表现一起记录;些微的提升可能不值得高出许多的推理成本。
- 重复运行随机性的测试,或在支持的地方使用确定性设置,并报告方差。
- 保持具名模型页面与宣称的信息为最新,因为模型版本与可用性会改变。
把失败分类,而不是隐藏它们
这些结果的意义各不相同。把供应商超时当成一次笃定的跳过,会虚增选择性;丢弃未成交的订单会高估可成交表现;悄悄修补格式错误的模型输出,等于给了某个模型其他模型未必得到的人工协助。评估方式应该在运行之前就定义好每个类别,并机械式地套用。
公布完整的漏斗:符合条件的市场、展示过的市场、提出的行动、跳过、无效输出、护栏拒绝、执行拒绝、部分成交与完成的头寸。有了这个分母,才能区分一个谨慎的模型和一个不可靠的模型。
| 失败类别 | 示例 | 如何报告 |
|---|---|---|
| 信息失败 | 未来事实、结算字段或更晚的报价进入了上下文 | 使该次周期或整次运行失效 |
| 供应商失败 | 超时、速率限制或模型不可用 | 与市场跳过分开计算 |
| 格式失败 | 无效的行动、缺少市场 ID 或无法解析的概率 | 存储原始响应与拒绝记录 |
| 风控拒绝 | 请求的规模超出现金、敞口或价格限制 | 报告为被护栏拒绝的模型提案 |
| 执行拒绝 | 没有及时的订单簿、限价以下没有深度,或零成交 | 保留在交易分母中 |
| 市场亏损 | 有效成交的决策,结算在所选方向的对面 | 正常纳入损益与预测评分 |
最低限度的可重现记录
对每一次运行,都要保留模型供应商与确切的模型版本代号、提示词模板、工具定义、结构化输出格式、采样设置与客户指示。记录历史起讫时间、决策间隔、回顾窗口、场所、类别、起始现金、敞口限制、执行延迟与最终标记方式。
对每一个决策周期,都要保留决策时间戳、数据带版本、数据带的 as-of 时间、符合条件的市场数量、输入哈希、前后的投资组合状态、模型用量与错误状态。对每一笔提议的交易,都要存储它的论述与概率,连同观察到的市场概率、置信度、限价、请求规模、拒绝代码,以及用于任何成交的历史订单簿。
供应商的模型可能在一个稳定的名称背后被更新,所以之后完全重跑一次仍可能出现差异。一份可长期保存的记录无法消除这种平台差异,但能揭示它。在无法使用确定性种子或钉选版本的地方,就多次重复同一项测试,报告跨次运行的离散程度,而不是只呈现一次有利的样本。
- 模型版本代号、供应商、提示词、工具、格式与采样设置。
- 历史边界、市场范围、决策间隔与回顾窗口。
- 投资组合限制、执行延迟、成交引擎与最终标记方式。
- 与每个决策及成交绑定的输入与订单簿哈希。
- Token 用量、模型成本、无效输出与所有拒绝原因。
- 当模型或供应商具有随机性时,重复运行的方差。
在做出 AI 表现宣称之前先做前向测试
一次历史性的 AI 测试,仍然可能受益于模型记忆、研究者对提示词的调优,以及反复的实验。最干净的下一步,是一段锁定的前向模拟期。冻结提示词或提取出的规则,在设置确定之后才开始,用实时显示的订单簿为每一个行动定价,并公布完整的分母。
DepthFeed 模拟交易为确定性规则与外部机器人信号提供了目前可用的前向路径。它使用虚拟现金,不会下真实交易所订单。在任何描述 AI 工作流程的地方,都应该保持这个区别清晰可见。
DepthFeed 目前提供什么
目前,研究者可以使用 AI 模型创建或改进一个明确的策略,在 Backtest Lab 中把这条冻结规则对照记录下来的预测市场订单簿重播,比较三种成交假设,检查风险与个别交易,并把合格的存活策略移到实时模拟交易。历史数据 API 与 MCP 服务器也支持仪表板之外的自定义智能体研究。
DepthFeed 目前并未公开宣传一个自主的模型在循环中回测 API,或实时 AI 交易执行。这个较窄的工作流程是刻意设计、也是可测试的:模型提出构想;记录下来的市场证据负责评估;模拟交易提供前向记录。
Key takeaways
- 01AI 构想生成与 AI 模型在循环中重播是不同的产品,需要不同的证据。
- 02在每一次历史决策时,封锁结算结果、未来数据行、当前搜索与更晚的事实。
- 03在比较结果之前,先冻结模型、提示词、工具、输出格式、市场范围与投资组合限制。
- 04存储跳过、拒绝、模型调用与输入边界,而不只是有盈利的成交。
- 05依时间顺序重播现金与头寸,再依一个明确定义的延迟,对照记录下来的深度执行。
- 06分别报告校准度、损益、风险、集中度、推理成本与可重现性。
- 07在做出任何 AI 表现宣称之前,先用一段锁定的前向模拟期验证。
一个 AI 生成的策略不等于一份回测。模型、信息边界、决策协议、投资组合状态,以及可成交的实际成交,全都需要在历史时钟上被控制住。
免费开始