回测诊断

AI 回测没有交易怎么办:FiClaw 零交易结果排查清单

“任务完成”说明运行流程结束,“没有成交”描述的是研究结果;两者不能混为一谈。先放宽阈值让曲线出现,可能掩盖真实错误,也可能把原研究问题改掉。更有效的做法是找到策略在哪一步从有数据变成了没有后续动作。

发布人 FiClaw 产品团队 · 发布于 · 更新于

Read in English

直接回答

回测没有交易时,先确认任务是否完整运行,再按数据覆盖与指标预热、候选股票池、信号、目标持仓、订单和成交的顺序定位断点。零成交可能来自规则未触发,也可能来自数据缺失、代码逻辑或成交限制。用 FiClaw 辅助解释代码和诊断结果时,应先找证据,再决定是否修改策略条件。

阅读要点

  • 把运行失败、运行完成但没有订单、存在订单但没有成交三种情况分开。
  • 逐层核对数量、日期和状态,不用最终净值代替过程证据。
  • 先修复实现问题;若要改变研究规则,应保留原结果并建立新实验。

先确认没有交易究竟指什么

先核对任务结束状态、异常信息和实际处理区间。请求超时、接口报错或只处理了部分日期,不能作为完整的零交易回测解读。没有足够历史数据完成指标预热,也可能导致研究区间内一直没有可用信号。

完整运行后仍需区分:没有产生信号、有信号却没有形成目标持仓、有目标持仓却没有订单,以及订单未成交。各阶段需要不同的证据。不要仅凭收益为零判断没有交易,资金流、费用和净值计算也可能影响展示结果。

  1. 01记录本轮规格、代码版本、参数、日期区间和数据口径,防止排查期间条件不断变化。
  2. 02先选一小段应有数据、可手工核对的区间,定位最早发生差异的日期。
  3. 03以下是建议收集的诊断材料;是否直接可见,应以当前代码与接口输出为准。

沿着六个检查点定位断点

过滤条件很多时,逐层输出数量比只查看最终股票池更有用。例如先确认原始候选是否存在,再确认哪些条件将候选全部排除。若某个接口不提供订单状态或详细日志,应明确记录缺口,必要时通过代码增加诊断输出,不能凭空补写未成交原因。

沿着六个检查点定位断点
检查点需要的证据优先排查
数据与预热实际返回日期、标的数、缺失率、指标有效起点区间不足、字段为空、预热窗口尚未满足
候选股票池每层过滤前后数量及被排除原因过滤条件冲突、历史股票池不可用、字段单位不一致
信号若干日期的输入值、计算值与触发结果排名方向、阈值、空值传播、调仓日判断
目标持仓信号对应的目标数量、权重与当前持仓权重为零、数量取整、资金或持仓约束
订单是否提交、订单时间、状态及返回原因下单分支未执行、参数无效、可用资金不足
成交成交记录、未成交状态与撮合说明无可用价格、交易状态限制或订单条件未满足

可复制的 FiClaw 零交易诊断请求

把本轮结果和配置一起提供给 FiClaw,让诊断围绕已运行的实现展开。下面的请求先固定规则,避免在定位问题之前进入参数优化。

请诊断这次回测为什么没有成交,先不调整策略阈值或优化收益。
请先确认任务是否完整运行,列出实际处理日期与异常。
沿以下顺序检查:数据及预热→候选股票池→信号→目标持仓→订单→成交。对每一步给出可获得的数量、代表日期、代码位置和返回状态。
若过滤后数量变为零,逐条列出过滤前后数量;若有信号但没有订单,检查调仓触发、目标权重、数量取整与资金约束;若订单未成交,引用实际状态或撮合规则,不猜测原因。
最后输出:已证实原因、待确认问题、最小修复建议、需要补充的日志。无法读取的材料明确标注为缺失。修复前保留当前代码和运行配置。

修复时保留原实验,一次验证一个原因

如果是字段名、时间判断或下单分支错误,先做最小修复,用相同规格、股票池、区间和参数重跑,再检查断点是否消失。修复成功的证据应是预期信号或订单行为恢复,而不只是总收益变高。

如果实现正确,但样本区间里确实没有符合规则的机会,应把零交易保留为研究结论。放宽阈值、扩大股票池或改变调仓频率属于新的研究条件,应说明原因并另存结果。交易次数很少时,也应避免从有限样本推导稳定的风险收益判断。

FiClaw 可以辅助生成诊断思路、解释代码和整理下一轮修改。数据是否充分、订单行为是否真实,需要实际记录支持。文末订单与预热文档提供一般方法参考,不说明 FiClaw 的具体引擎、状态名称或默认成交规则。

  1. 01修复前:保存原始结果、异常和检查点输出。
  2. 02修复后:固定其他条件,比较同一日期、同一标的的信号与订单行为。
  3. 03结论中:分开记录实现修正、研究假设修改和仍缺少的证据。

常见问题

回测零交易说明策略风险低吗?

不能这样判断。没有交易意味着缺少实际持仓与成交样本,也可能是数据或实现问题。应先确认运行与信号链路,再解释该规则在本区间没有触发的原因。

可以直接放宽条件,让回测先产生交易吗?

应先确认是否存在数据或代码问题。实现无误后可以研究更宽条件,但这改变了实验假设,需要记录修改理由并保存为新的规格与运行结果,不能覆盖原零交易结果。

FiClaw 会自动提供所有订单和过滤日志吗?

本文给出需要收集的诊断材料,不承诺当前版本直接提供所有字段。可用日志、订单状态和撮合信息以实际代码及回测接口输出为准;缺失证据应明确标注,并考虑增加诊断输出。

方法与产品参考

继续阅读

把研究问题变成可检查的实验

在 FiClaw 中从明确策略规则开始,再核对代码、数据口径与回测结果。