加密量化回测怎么做?数据源、常见陷阱与策略验证
漂亮的回测曲线,常常是过拟合的画像。这句话反直觉,却是每一个做加密量化的人迟早会撞上的墙:参数调得越细、指标加得越多,权益曲线就越光滑,实盘却越接近灾难。如果你正在因为回测年化 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% 的"自欺欺人":
- 样本内 + 样本外:永远留出一段"从来没被参数搜索碰过的数据"做最后检验。
- Walk-Forward 分析:每隔 N 个月重新优化一次参数,看历史滚动表现。
- 蒙特卡洛重排:随机打乱交易顺序或扰动入场点,看权益曲线是否依然向上。
- 多市场迁移:在 BTC 上有效的逻辑,能不能在 ETH、SOL 上同样有效?不能就说明它依赖单一标的的噪声。
- 现实摩擦压力测试:把手续费、滑点、资金费率都调大一档,策略还能赚就更可信。
- 小资金实盘:跑 4–8 周的纸面交易或最小资金实盘,只看执行偏差和真实滑点,不看绝对收益。
如果上面六关都过了,你才有资格谈"上规模"。
几个工程化的小提醒
- 回测引擎要事件驱动,不要图省事用向量化(vectorized)跳过订单簿状态——隐性 bug 极多。
- 日志要完整:每笔交易、每次信号、每次拒单都要可追溯,否则出问题查不出原因。
- 回测和实盘共用一套订单逻辑,避免"回测一套、实盘另一套"导致结果不一致。
- 关注 市场基础 与 交易常识——回测的所有假设都是建立在市场微观结构上的。
几个常见提问
- 回测年化 300% 是不是稳了? 通常意味着过拟合或忽略摩擦,年化越高越要怀疑。
- 历史多长才够? 至少跨越一次完整的牛熊;加密里最好覆盖两次减半周期。
- 可以只回测最近一年吗? 可以做参考,但只能说明"在最近这种行情里有效",换一种行情大概率失灵。
- 没编程基础能做回测吗? 可以用现成平台(如 TradingView 的策略测试),但务必读懂它的成交假设。
一份回测者的自检清单
- 是否区分了信号根 K 和执行根 K?
- 是否预留了从未参与参数搜索的样本外数据?
- 是否考虑了手续费、滑点、资金费率?
- 是否还原了下架代币与历史快照?
- 是否做过多市场、多周期的稳健性检验?
- 实盘部署前,是否跑过 4 周以上的纸面/小额验证?
这一节叫"对自己诚实"
回测里最难的不是技术,是承认自己有可能被结果欺骗。你设计的每一个指标、调过的每一组参数,都带着"希望它赚钱"的偏见——而市场不会照顾这种偏见。一份诚实的回测报告,写出来应该比胜利宣言更像体检单:哪儿有问题、哪儿不知道、哪儿只能赌。这样的策略,反而最经得起实盘的考验。
回测告诉你过去会怎样,实盘才知道现在怎样。