首页/回测/什么是回测

什么是回测?完整指南

回测是把交易策略的规则应用到历史价格数据上,模拟它在过去会有怎样的表现,从而在投入真实资金之前评估策略的过程。可信的回测在每个时间点只使用当时可得的数据,真实地建模交易成本,并用从未参与优化的样本外数据进行验证。

回测是系统化交易的基础。任何专业量化基金在把资金投入一个策略之前,都会把规则放到多年的历史数据上运行,以了解这种方法在过去会有怎样的表现。本指南解释回测是什么、如何运作,以及让大多数业余回测失效的错误。

核心思想

交易策略就是一套规则。条件 A 成立时买入。B 发生时卖出。按规则 C 确定仓位大小。回测把这些规则应用到一个历史数据集上——一段来自过去的价格、成交量和其他市场数据序列——并模拟如果你在那段时期严格遵循这些规则会发生什么。

结果是一份模拟的业绩记录:一系列带有入场价、出场价和持仓时长的假设交易。由此你可以计算总收益、夏普比率、最大回撤和胜率等绩效指标。这些指标帮助你在冒真实资金风险之前,判断这个策略是否有价值。

关键词是模拟。回测不是交易,而是交易的模型。模拟的质量取决于历史数据的质量、交易成本假设的真实程度,以及是否存在制造虚假优势的编码错误。

为什么回测很重要

没有回测,要在部署前评估一个策略,要么靠实盘交易(代价高昂——你在用真实资金交学费),要么靠主观看图(“这个形态看起来通常有效”)。两者都不严谨。

回测可以让你:

  • 了解策略在不同市场状态下的表现
  • 估计预期回撤,以便规划仓位大小,并为亏损期的心理现实做好准备
  • 客观比较相互竞争的策略变体
  • 识别参数敏感性——策略只在某个特定参数值下有效,还是在一个范围内都有效?
  • 在逻辑错误造成损失之前发现它们

机构量化基金在配置资金之前,会花数月时间对策略进行回测和压力测试。跳过这一步的散户交易者处于系统性劣势。

回测如何运作

回测的机制遵循以下顺序:

  1. 加载历史数据。测试期内各资产的 OHLCV(开盘价、最高价、最低价、收盘价、成交量)K线。
  2. 计算指标。计算各种衍生信号——移动平均线、RSI、成交量均值——在每个时间点只使用当时可得的数据(不前视)。
  3. 生成信号。在每根K线上判断入场或出场条件是否满足。
  4. 模拟执行。信号触发时,以符合实际的价格记录入场(通常是下一根K线的开盘价,或收盘价加滑点模型),并扣除佣金。
  5. 跟踪组合状态。在每根K线上维护现金余额和持仓价值。
  6. 计算绩效指标。最后把所有交易汇总成统计摘要。

关键局限:前视偏差

当你的回测使用了在做出交易决策时本不可能获得的信息时,就会产生前视偏差。这是回测看起来很好、实盘却失败的最常见原因。

前视偏差的常见来源:

  • 用今天的收盘价生成信号,然后以今天的收盘价执行(你不可能同时做到这两件事)
  • 使用拆股复权或分红复权的历史价格,却不考虑这些调整在何时才会被知晓
  • 先在整个数据集上计算指标,再逐根遍历K线(第 100 根K线上的指标值包含了第 101–500 根K线的数据)
  • 对基本面数据(盈利、分析师预期修正)使用提交备案日期,而不是公告日期

过拟合:更隐蔽的问题

即使回测实现得完全正确,过拟合——也称曲线拟合(curve-fitting)——仍然是一个重大风险。如果你在同一数据集上测试足够多的参数组合,其中一些纯粹出于偶然就会产生出色的结果。危险在于把这种随机拟合误认为真正的优势。

标准的解决办法是样本外(out-of-sample)测试:把历史数据分成训练期(用于优化参数)和测试期(在策略最终确定之前完全不碰)。只有测试期的结果才可信。如果两个时期的表现相近,说明策略具有泛化能力,可能是稳健的。如果样本外时期表现大幅落后,说明策略对训练数据过拟合了。

需要评估的关键指标

回测报告的不应只有总收益。最重要的指标有:

  • CAGR(复合年增长率):年化收益——在不同长度的时期之间比总收益更有意义
  • 夏普比率:CAGR 除以年化波动率——衡量风险调整后收益
  • 最大回撤:期间从峰值到谷底的最大亏损——决定你在心理上能否现实地承受这个策略
  • 卡玛比率(Calmar Ratio):CAGR / 最大回撤——便于比较不同策略的回撤效率
  • 胜率和盈利因子:交易盈利的频率,以及盈利交易能否压过亏损交易

如何开始

传统回测需要编程知识——用 Python 搭配 pandas 和 backtrader,或在 TradingView 中使用 Pine Script。但 AI 驱动的工具改变了这一点。QuantPrompt 让你用日常语言描述策略,无需编写代码即可运行完整的历史回测。这大大降低了系统化测试的门槛,让懂市场但不是软件工程师的交易者也能使用。

无论使用哪种工具,纪律都比平台更重要:使用足够的历史数据,进行样本外测试,真实地建模交易成本,并且在断定一个策略具有真正优势之前,始终把结果与买入并持有(buy-and-hold)基准进行比较。

常见问题

参考资料