目录
- 回测是什么,能解决什么问题
- 外行最容易误读的一句话:「我回测了十年」
- 时间跨度 vs 数据粒度:同一根 K 线里藏着多少故事
- 从日 K 到 Tick:精度越高,故事越接近真实
- 撮合引擎与交易所现实:你的回测里成交得太「乖」了
- 插针、流动性与极端行情:图表上看不见的伤口
- 为什么回测曲线往往比实盘好看
- 其它常见坑:从幸存者偏差到过拟合
- 可以怎么做:让回测更「诚实」
- 小结
回测是什么,能解决什么问题
回测(Backtesting) 指在历史数据上,用固定规则「假装」在过去交易,统计收益、回撤、胜率等指标。它的价值是:在不动真金白银的前提下,快速验证策略逻辑是否自洽、参数是否过于极端、对哪些市场环境敏感。
它不能保证未来表现,只能回答:「若在过去这段数据、在某种成交与费用假设下,这套规则会怎样表现。」
外行最容易误读的一句话:「我回测了十年」
十年听起来很长,心理上容易等价于「样本够大、结论可靠」。但在量化里,「十年」只描述了时间轴的长度,没有描述采样密度与成交假设。
同一段十年:
- 按日 K 回测,大约只有 3,650 根左右 K 线(视交易日略少);
- 按1 分钟 K 回测,同一段历史的 K 线数量大约是日 K 的数百倍;
- 若按 Tick(逐笔成交) 或订单簿事件回放,信息量又比分钟 K 再高几个数量级。
信息量不同,对同一策略的结论可以完全不同。 外行听「十年」很踏实;内行会先问:十年是哪种颗粒度上的十年?
时间跨度 vs 数据粒度:同一根 K 线里藏着多少故事
OHLC 丢掉了什么
常见的 K 线只记录 开高低收(OHLC) 与成交量。你不知道这一段时间里价格走过的路径:是先跌后涨,还是先涨后跌?中间有没有快速扫过你的止损再回来?
对很多策略(尤其是带止损、带网格、带条件单的策略),路径依赖极强:同样的 OHLC,不同路径会导致完全不同的成交与盈亏。
粗粒度回测在做什么隐含假设
用日 K 回测时,往往隐含了类似假设:「我能在开盘价/收盘价/某种理想价位成交」「止损一定按我想的价格触发」等。这些假设在实盘中常常不成立——尤其在波动大、流动性分层明显的品种上。
从日 K 到 Tick:精度越高,故事越接近真实
下面用直觉对比(非绝对,但方向普遍成立):
| 粒度 | 典型用途 | 主要风险 |
|---|---|---|
| 日 K | 粗筛趋势、长周期因子 | 路径未知,止损/网格等容易「过于乐观」 |
| 小时 / 15 分钟 | 中频策略初筛 | 仍可能低估盘中插针与滑点 |
| 1 分钟 | 较多零售级回测的上限 | 分钟 K 内仍可能有剧烈波动未体现 |
| Tick / 订单簿事件 | 高频、窄价差、精细风控 | 数据量大、实现复杂,但更接近真实撮合顺序 |
对波动大、杠杆高、点差与滑点敏感的品种(典型如加密货币永续合约),若策略持仓时间短、挂单密、依赖精确成交顺序,只有日 K 或小时 K 的回测往往严重失真。此时业界会更认真看待 Tick 级或至少 L2 订单簿级 的回测与仿真——否则更像「在地图缩略图上讨论路况」。
注意:Tick 回测也不是「真理」本身:它还依赖历史 Tick 是否完整、是否含撤单与自成交噪声、以及你的撮合模型是否与真实交易所一致。
撮合引擎与交易所现实:你的回测里成交得太「乖」了
回测程序里常见的简化包括:
- 立即成交:挂单一碰价就全成,不考虑排队与部分成交;
- 固定滑点:全市场统一加几个基点,而真实滑点随波动与深度变化;
- 无延迟:信号产生与下单在同一时刻,而实盘有网络、限频与撮合延迟;
- 理想对手盘:永远假设有足够流动性吃掉你的单。
真实交易所的撮合是 价格—时间优先、队列、最小下单单位、Post-Only、Reduce-Only、强平与资金费率等规则共同作用的结果。撮合引擎不一样,同一策略的成交序列就会不一样——这不是小误差,而是系统性偏差。
插针、流动性与极端行情:图表上看不见的伤口
插针(Wick) 指价格短时间刺穿某价位又迅速收回。日 K 上可能只是一根长影线;在分钟或 Tick 上,可能是多次快速扫单。
若回测用粗 K 线:
- 可能低估被针扫掉止损的次数;
- 也可能在不当假设下高估某些「触碰即成交」的网格收益。
此外,还有 流动性枯竭、点差拉宽、无法成交 等情况——历史 K 线未必体现当时的盘口状态。你在回测里「成交了」,实盘可能只是挂在簿上排队。
为什么回测曲线往往比实盘好看
常见原因包括但不限于:
- 费用与资金费率:手续费、Maker/Taker 差异、永续合约资金费率未计入或低估。
- 滑点与冲击成本:尤其大单或薄深度品种。
- 成交假设过于理想:见上一节。
- 前视偏差(Look-ahead Bias):用「未来才知道的信息」做过去决策(例如用全日收盘价信号在开盘就成交)。
- 过拟合:参数在历史段上被调得太贴合噪音,换一段行情就失效。
- 幸存者偏差:只测「现在还活着」的币种或交易对,忽略已退市或归零样本。
因此:回测好是必要不充分条件;实盘是另一套系统(执行、风控、心理与运维)。
其它常见坑:从幸存者偏差到过拟合
- 样本外测试:保留一段从未参与调参的历史做验证。
- 走样本测试(Walk-forward):滚动窗口,看策略是否只在某一两段「碰巧」有效。
- 换市场与换品种:在相关性不同的品种上复现,降低「只适配某一标的」的风险。
- 极端日 stress:单独拉出重大事件日前后,看爆仓、断网、交易所宕机等操作风险(这些往往不在回测里)。
可以怎么做:让回测更「诚实」
- 明确声明粒度:日 / 小时 / 分钟 / Tick,以及是否含订单簿。
- 费用与费率模型:手续费档位、资金费率、是否吃单等,尽量贴近真实账户。
- 成交模型升级:从「收盘价成交」→「下一根开盘价」→「带滑点与延迟」→「事件驱动 + 简撮合」→「近 Tick 仿真」逐级加严。
- 纸交易 / 仿真盘:用实时行情但虚拟资金,专门检验执行层。
- 小资金实盘:在风险可控下验证最后一公里的差异。
目标不是追求「回测曲线难看」,而是追求可解释、可复现、与实盘偏差可预期。
小结
- 「回测了十年」若只有日 K,与「十年 Tick 级仿真」不是同一句话;粒度决定信息量。
- 波动大、杠杆高、挂单密的策略,要特别警惕粗 K 线 + 理想成交带来的乐观偏差。
- 撮合与交易所规则不同,回测与实盘就会分叉;插针与流动性在 K 线摘要里常被低估。
- 回测是推演工具,不是盈利承诺;严谨的做法是逐级加严假设,并用样本外与实盘小资金交叉验证。
Top comments (0)