回测告诉不了你的事
回测用固定的设置,在过去的价格上把策略重放一遍,报告当时会发生什么。它是投入真钱之前能拿到的最好证据,也很容易被过度解读。问题早已为人熟知,而且大多出自同一个根源:过去只有一条路径,策略可以被拟合到这条路径上,而不是拟合到任何会重复的东西上。
过拟合
给一个策略足够多的参数、足够多的尝试次数,总有某个组合会在任意一段历史上表现出色,纯属巧合。搜索的参数越多、历史越短,最好的结果就越可能是运气。过拟合的参数,在挑选它的那段数据上看起来像是本事,到了下一段就垮了。
值得留意的迹象:
- 参数异常精确,比如 37 根 K 线的均线配 2.13 的通道,而附近的整数参数表现差得多。
- 结果靠一两笔交易撑起来。
- 收益远高于同一标的上的其他任何结果。
样本内与样本外
标准的防范方法是把历史切成两段。在前一段(样本内)挑选参数,再在它从没见过的后一段(样本外)上评判一次。只有后一个数字能说明一点关于未来的事。
在日线上,A9 的搜索正是这样做的:在前 70% 的历史上调参,再在后 30% 上评分一次。每晚的入选名单也这样做,并且把每个自然年分开展示,一个幸运的年份冒充不了长期战绩。
代币化股票的小时线和更细的 K 线更难处理,因为这些代币大多只有几个月的历史。几个月的 30% 太薄,单靠它判断不了什么,所以这些排名按最近一整段区间评分,并检查留出的末段没有和其余部分相矛盾,主要依靠下面这些关卡来把关。
自动调参和入选名单设下的关卡
在小时线和更细的 K 线上,你按下「自动调参」时,A9 在你的标的和区间上运行和每晚入选名单相同的流程;在日线上,运行的是上面说的 70/30 搜索。在更细的 K 线上,一组参数只有通过下面所有关卡才会给你:
- 至少完成三次往返交易。一笔按市价估值的未平仓位只是个案,不是战绩。
- 收益为正,并且跑赢同一区间的直接持有。
- 收益至少和最大回撤一样大(网格只需一半,因为它会在买入的回调中持有库存)。
- 真正的择时。把策略的进出场模式在时间轴上平移 149 种方式,真实的进出场与价格的契合度,必须胜过大多数平移后的副本。一个只是因为大部分时间空仓才显得好看的策略,过不了这一关。
- 邻居稳定。把每个参数分别上下偏移 20%,这些「邻居」的典型结果也必须过同样的关卡。只有一个参数点那么宽的尖峰,在这里会垮掉。
- 结果特别突出时,会把区间的终点提前一到七天再跑一遍。如果收益只存在于最后几天,就淘汰。
如果没有任何参数过关,自动调参会直说,而不是给你一个最不差的参数。这个结果本身也是信息。
日线在哪里切
日线总得在某个时刻结束。币安在 UTC 0 点结束;欧易在 UTC 16:00,也就是香港的午夜。两者没有对错之分,而这个选择会影响结果。在 2026 年 XRP 的同一组小时价格上测得:10/30 的均线交叉,在 0 点切分时收益 -13.6%,在 16:00 切分时 +18.5%。
所以入选名单上的日线候选,会在六个时刻各切分一次(从 0 点起每四小时一次)重跑,必须在典型切法下赚钱,并且在多数切法下赚钱。一个只在六种切法中的一种下成立的结果,找到的是边界,而不是优势。
模拟里漏掉了什么
- 手续费按交易所的标准等级收取:欧易现货挂单 0.08%、吃单 0.10%,永续合约 0.02% 和 0.05%。你的账户可能付得更少,但永远不会是零。
- 成交按 K 线里的价格计算。回测不模拟订单对市场的冲击,所以入选名单在每个结果旁标出容量:典型 K 线成交额的 10%,超过这个规模,订单就开始推动价格。
- 永续合约的资金费不计入,杠杆按 1 倍建模。
- K 线精度。网格的挂单在价格碰到价格线时就会成交,但回测只看得到每根 K 线的开、高、低、收。同一个网格、同样三个月的 XSOXL,在 15 分钟线上是 +7.8%,5 分钟线 +11.7%,小时线 +11.4%,1 分钟线 +8.1%。所以 A9 用 1 分钟线回测网格,也就是实盘网格运行的 K 线。
一份简短的清单
- 结果是不是来自自动调参?它的邻居赚了多少?
- 它建立在多少次往返交易之上?
- 它有没有跑赢同一区间的买入持有?
- 如果是真金白银,你能不能扛过它的最大回撤?
- 历史够不够长,有没有包含一段和当前不一样的行情?
然后从小金额或模拟开始,几周后把实盘记录和回测对照一下。