回测工具可能对同一个交易想法给出不同答案,因为它们可能使用不同的数据、指标时点、订单模拟和成本假设。选择软件时,应问自己能否检查并复现这些选择——而不是比较哪条净值曲线最高。回测是一种历史模型;其输出并不表明某个策略会盈利,也不表明真实交易场所会以同样方式成交。

加密回测软件评估流程一套受控且不偏向任何厂商的回测工具对比流程,会冻结研究设定、统一输入、检查各引擎的时点与成交模型、核对交易台账,并保留版本与局限。假设一致并不等于实盘执行得到验证。比较模型,而非营销曲线01 · 冻结设定市场 · 规则 · 日期保存版本02 · 统一输入UTC · K线 · 资金费率记录缺口03 · 检查引擎信号 · 订单 · 成交成本 · 模糊之处04 · 核对逐笔交易解释差异05 · 保留证据台账 · 指纹局限 · 下一步测试只有在每一处实质性差异都得到解释后,才比较核心指标。历史模拟并不保证交易所实际成交,也不保证未来结果
一套受控且不偏向任何厂商的回测工具对比流程,会冻结研究设定、统一输入、检查各引擎的时点与成交模型、核对交易台账,并保留版本与局限。假设一致并不等于实盘执行得到验证。 教学说明图 · 非实时市场数据

从一套受控测试包开始

在比较功能之前,先写一份简短、固定的研究规格:市场与合约、数据间隔与日期、信号规则、下单时点、仓位大小、手续费与资金费率。保存输入的K线和策略版本。尽可能在每个候选软件中使用相同的文件和设置,并记录任何导致无法完全一致的转换。

领域 测试问题 需保留的证据
数据 能否识别提供方、市场类型、时间戳、时区、缺口和合成行? 来源、获取日期、覆盖范围、原始导出或指纹
信号时点 规则是否基于当时可获得的信息进行评估?其订单最早何时可以成交? 信号时间戳、K线约定、入场时间戳
订单 遇到跳空、部分成交、过期价格,或同时触及止损与目标的K线时会发生什么? 订单事件、成交模型、模糊K线处理规则
成本与合约 手续费档位、买卖价差、滑点、资金费率结算、最小变动价位、保证金和强平假设是否明确? 配置与成本台账;将未知项标记为未建模
可复现性 能否再次运行并检查完全相同的策略、数据和引擎版本? 策略版本、输入指纹、设置、交易台账

缺失值应保持可见。如果资金费率数据不可得,一个默默将其视为零的工具,与一个排除该现金流并加以标注的工具,做出的假设并不相同。在比较结果之前,先确认现货、有到期日合约或永续合约的语义;这些工具并不共享同一套资金费率或保证金模型。

使用四项可能失败的测试

  1. 时点检查: 构造一段简短、可人工检查的K线序列。记录信号何时变得已知,以及引擎使用哪一个下一价格。加入一个跳空,以便观察在所选模型下,止损是在其价位成交,还是以更差的可得价格成交。
  2. 模糊性检查: 加入一根最高价和最低价同时越过止损和目标的K线。仅凭OHLC K线无法揭示哪一个先发生。有用的工具会公开其先后顺序规则,或将结果标记为模糊;它不应悄悄把某一条路径当作已观察到的事实呈现。
  3. 无窥探检查: 冻结一次运行,然后追加后续K线。此前的信号和订单事件不应仅因为加入了未来行而发生偏移;在原样本末端仍持有的仓位之后可能收到退出。若失败,则提示存在前视、数据修订或需要调查的有状态规则。
  4. 重跑与成本检查: 重复相同的冻结输入,然后每次只改变一个假设。验证相同输入的运行可复现,且新增的手续费、资金费率或滑点只进入台账一次。保存两次运行,而不是只保留更有吸引力的那一次。

运行一套小型证伪包

使用少量你已知道有哪些信息可用、以及引擎必须披露什么的样本。目标是在花时间进行大规模策略搜索之前,先暴露假设。

  1. 收盘信号: 让信号依赖某根K线的最终收盘价。记录该收盘价何时可知,以及引擎首次允许的模拟成交。更早的成交需要明确的其他数据或订单机制;仅在K线上加标签并不构成执行证据。
  2. 跳空穿越止损: 将止损设在 $95,并让下一个观察到的价格开盘于 $92。询问该模型能否在止损价位、下一个可得价格,或其他明确规则下成交。当所选行为可见且与其文档化的订单模型一致时,测试通过,而不是当每个工具都打印出相同数字时。
  3. 同一根K线内的止损与目标: 将止损和目标放在该K线的最高价与最低价区间内。仅凭OHLC无法显示哪个价格先出现。工具应披露其假设的顺序,在可得时使用更细的数据,或将结果标记为模糊。
  4. 缺失的持有成本: 移除某一区间的资金费率观测值。检查该运行是保留“未知”、在警告下排除缺失的现金流,还是应用已披露的兜底值。悄悄将缺失数据转换为零费用,会改变问题本身。
  5. 精确重跑: 使用相同保存的数据、规则、引擎版本和设置重新运行。比较交易事件和台账合计。然后追加后续K线,确认此前的已平仓事件不变;在原截止时点仍持有的仓位之后可能收到退出。
用于检验回测软件假设的五项小测试五项受控测试分别考察收盘信号时点、止损跳空、一根K线同时触及止损与目标的模糊情形、缺失的资金费率,以及在加入后续K线后的精确重跑。预期结果是可见且有记录的软件行为,而不是一个通用评分,也不保证实盘执行结果。五项小测试,让隐藏假设变得可见01 · 收盘信号何时可知?首次模拟成交?不使用更早数据02 · 止损跳空止损 $95下一开盘价 $92说明成交规则03 · 两者均触及最高价越过目标最低价越过止损展示顺序限制04 · 缺失持仓成本资金费率缺失未知项保持可见绝不静默记为零05 · 重跑冻结版本对比事件两者都保留通过意味着模型的行为可被检视,且契合研究问题
五项受控测试分别考察收盘信号时点、止损跳空、一根K线同时触及止损与目标的模糊情形、缺失的资金费率,以及在加入后续K线后的精确重跑。预期结果是可见且有记录的软件行为,而不是一个通用评分,也不保证实盘执行结果。 教学说明图 · 非实时市场数据

保留每项测试的输入文件、预期行为、观察到的输出、版本和决定。将结果记录为已验证、可配置、有限或未记录。不要将这些标签平均成一个产品评分:未记录的跳空成交规则无法被精美的图表所抵消。同样,一项玩具测试失败,是提示你去复现并理解差异,而不是证明整个产品不可用。

订单模拟是一种软件选择,而不是一种名为“真实”的普遍属性。TradingView 当前的 Pine Script v6 文档描述了一个经纪商模拟器,它从图表数据成交,并在历史K线上假设一条K线内价格路径;其 Bar Magnifier 在可得时可使用更低时间周期的K线。QuantConnect 当前的成交模型文档称其预置回测成交模型假设完全成交,并描述了过期价格行为。这些是特定平台的示例,并非排名。它们说明了为什么你应阅读所考虑的确切产品、版本和设置对应的模型。

先比较证据,再比较评分

如果两个工具出现分歧,比较交易台账中第一行不同的记录:信号时间、订单时间、成交价格、数量、手续费、资金费率或退出原因。在看总体收益之前,先检查数据和执行假设。当引擎实现不同规则时,匹配的输入并不要求结果完全相同;目标是解释差异,并判断每个模型是否适合该问题。

如何追踪两个回测引擎之间的差异受控对比会固定相同的数据与规则版本,比较两份交易流水,定位第一个出现差异的事件,并在记录哪种模型更契合研究问题之前,核查相关的数据、时点、成交或成本假设。输出不同并不代表产品排名,也不证明实盘执行结果。当两个回测结果不一致时,追踪第一处差异01 · 固定输入相同K线 + 规则相同日期 + 成本保存版本02 · 比较流水引擎 A · 事件引擎 B · 事件保留两份输出03 · 追踪该行信号 · 订单 · 成交仓位大小 · 手续费 · 平仓找出最早的不一致04 · 解释模型数据 · 时点 · 成交成本 · 局限契合研究问题一个被解释清楚的模型差异,比一张头条收益率排行榜更有用
受控对比会固定相同的数据与规则版本,比较两份交易流水,定位第一个出现差异的事件,并在记录哪种模型更契合研究问题之前,核查相关的数据、时点、成交或成本假设。输出不同并不代表产品排名,也不证明实盘执行结果。 教学说明图 · 非实时市场数据

留出期只有在看到它之后所做的决定被记录下来时才有帮助。反复针对同一份“未触碰”的数据进行调优,会把它变成另一个研究样本。Probability of Backtest Overfitting 论文讨论了为什么简单的留出法可能无法捕捉反复的策略选择。保留一份变更日志,既记录被丢弃的变体,也记录保留的变体;不要将某个软件最强的运行结果当作独立证据。

最后,查看当前供应商条款中的安全性、数据导出、账户权限、定价和保留政策。只读的公开市场连接、假设性的模拟订单和已签署的实盘订单是不同的能力。绝不要仅仅为了查看图表或回放历史数据而提供签名密钥。

SuperQuant 的引擎运行每小时回测,其独立的模拟交易流程为手动操作;内置的样本历史数据为合成数据。其成交和保证金计算为简化模型,未经过交易所认证,也不提交实盘订单。这些边界描述的是本产品,并非声称其更优越。使用回测教程、成本指南和数据质量指南来检查相关假设。本指南仅供教育用途,不构成产品背书或投资建议。