加密量化回测怎么做?数据源、常见陷阱与策略验证

量化交易 · 2026-05-29 · 比特三棱镜编辑部
AI 搜索

漂亮的回测曲线,常常是过拟合的画像。这句话反直觉,却是每一个做加密量化的人迟早会撞上的墙:参数调得越细、指标加得越多,权益曲线就越光滑,实盘却越接近灾难。如果你正在因为回测年化 200% 而准备 ALL IN,请先读完这篇——你的策略大概率在过去赚的,是你今天不会再遇到的市场。

回测到底解决什么问题

回测(Backtest)不是用来"证明策略能赚钱"的,它的真实价值只有三个:

  • 排除明显错的策略——能在历史上稳定亏的,未来基本也不会突然起死回生。
  • 量化预期范围——胜率、盈亏比、最大回撤大致是什么量级,让你心里有数。
  • 暴露策略对市场结构的依赖——比如它在牛市赚 80%、熊市亏 60%,那就不是"全天候策略"。

请把回测当一次体检报告,而不是一份未来收益承诺书。这是和 量化交易 全流程绑在一起的环节,但远不是唯一环节。

数据从哪儿来

加密回测有个隐藏优势——历史数据基本免费且公开。常用来源:

来源 数据类型 备注
Binance / Bybit / OKX 历史 API K 线、Tick、深度快照 主流来源,长周期、跨品种
交易所归档数据集(Tardis、Kaiko) Tick、订单簿、成交流 高精度但要付费
链上数据(Dune、Allium、自建节点) 余额、转账、合约调用 链上策略必备
CryptoCompare、CoinGecko 聚合行情 适合做粗粒度长周期

几个细节决定回测质量

  • K 线 vs Tick:K 线只能近似,做高频或短线必须有 Tick / 订单簿。
  • 时区与时间戳:交易所多用 UTC,本地分析时千万别混用。
  • 品种续约:合约换月、永续资金费会显著影响策略损益。
  • 下架历史:曾经存在但已下架的代币如果不还原,结果就是幸存者偏差

几个绕不开的陷阱

下面这些坑,几乎所有人都掉过至少一次

1. 前视偏差(Look-ahead Bias)

策略用了"在当时根本拿不到的信息"。最经典的是用收盘价作为信号又用同一根 K 线收盘价成交——你事先并不知道收盘价会落在哪儿。修复方式是严格区分"信号根 K"和"执行根 K"。

2. 过拟合(Overfitting)

把参数调到刚好贴合历史曲线,测试集上完美、样本外灾难。判别方式:

  • 样本内外分离:拿一段数据训练,另一段从未碰过的数据测试。
  • 滚动窗口(Walk-Forward):模拟真实"逐月调参",看效果是否稳定。
  • 参数稳定性:把最优参数 ±10% 滑一下,结果应该不至于剧烈劣化。

3. 滑点与手续费忽略

回测里假设"市价单按理论价瞬间成交、零费率",实盘里:

  • 挂单深度不够:你的下单会自己把价格推高 / 推低。
  • **资金费率(永续)**会蚕食长持仓位收益。
  • Maker / Taker 费累积起来可能吃掉一半利润。

保守的做法:手续费按 Taker 算、滑点按 0.05%–0.2% 估、回测利润再打八折当心理预期。

4. 幸存者偏差与数据回填

只回测"今天还活着的币",会高估收益;如果使用的是事后修订过的链上数据(比如错账被修正、重组被回滚),等于"用今天的视角看昨天"。永远使用未经回填的快照数据

5. 流动性幻觉

回测在 BTC 上跑得很好,不代表能搬到一个日成交几十万美元的山寨币上——小币种的滑点和流动性冲击会让策略原地报废。换标的之前,先看交易量分布。

6. 体制变化(Regime Shift)

加密市场每隔一段时间换一种"性格":减半周期、ETF 通过、监管事件都会改变波动结构。一个在 2021 年起作用的均值回归,2024 年可能完全失灵。可以参照 比特币四年减半周期 把数据按周期切分别看。

回测的常见陷阱:前视偏差、过拟合、滑点、幸存者偏差

怎么验证一个策略"看起来真的能用"

通过下面这套流程之后,至少能挡掉 80% 的"自欺欺人":

  1. 样本内 + 样本外:永远留出一段"从来没被参数搜索碰过的数据"做最后检验。
  2. Walk-Forward 分析:每隔 N 个月重新优化一次参数,看历史滚动表现。
  3. 蒙特卡洛重排:随机打乱交易顺序或扰动入场点,看权益曲线是否依然向上。
  4. 多市场迁移:在 BTC 上有效的逻辑,能不能在 ETH、SOL 上同样有效?不能就说明它依赖单一标的的噪声。
  5. 现实摩擦压力测试:把手续费、滑点、资金费率都调大一档,策略还能赚就更可信。
  6. 小资金实盘:跑 4–8 周的纸面交易或最小资金实盘,只看执行偏差和真实滑点,不看绝对收益。

如果上面六关都过了,你才有资格谈"上规模"。

几个工程化的小提醒

  • 回测引擎要事件驱动,不要图省事用向量化(vectorized)跳过订单簿状态——隐性 bug 极多。
  • 日志要完整:每笔交易、每次信号、每次拒单都要可追溯,否则出问题查不出原因。
  • 回测和实盘共用一套订单逻辑,避免"回测一套、实盘另一套"导致结果不一致。
  • 关注 市场基础交易常识——回测的所有假设都是建立在市场微观结构上的。

几个常见提问

  • 回测年化 300% 是不是稳了? 通常意味着过拟合或忽略摩擦,年化越高越要怀疑。
  • 历史多长才够? 至少跨越一次完整的牛熊;加密里最好覆盖两次减半周期
  • 可以只回测最近一年吗? 可以做参考,但只能说明"在最近这种行情里有效",换一种行情大概率失灵。
  • 没编程基础能做回测吗? 可以用现成平台(如 TradingView 的策略测试),但务必读懂它的成交假设。

一份回测者的自检清单

  • 是否区分了信号根 K执行根 K
  • 是否预留了从未参与参数搜索的样本外数据
  • 是否考虑了手续费、滑点、资金费率
  • 是否还原了下架代币与历史快照
  • 是否做过多市场、多周期的稳健性检验
  • 实盘部署前,是否跑过 4 周以上的纸面/小额验证

这一节叫"对自己诚实"

回测里最难的不是技术,是承认自己有可能被结果欺骗。你设计的每一个指标、调过的每一组参数,都带着"希望它赚钱"的偏见——而市场不会照顾这种偏见。一份诚实的回测报告,写出来应该比胜利宣言更像体检单:哪儿有问题、哪儿不知道、哪儿只能赌。这样的策略,反而最经得起实盘的考验。

回测告诉你过去会怎样,实盘才知道现在怎样。