回测原理与实操指标
回测是把一套明确规则放回历史数据里,模拟如果过去按这套规则执行,会得到什么收益、回撤和交易路径。
它回答的不是“未来一定赚钱吗”,而是三个更实际的问题:
- 这套规则在历史上有没有明显失效区间。
- 最差路径是否超过自己的风险承受能力。
- 规则收益是否足以覆盖交易成本、税费、滑点和执行难度。
回测前先写清规则
不能先看图、调参数,再倒推出规则。第一版只允许回测已经能写成文字的规则。
最低要写清:
- 标的范围:例如沪深300、标普500、纳斯达克100、黄金或组合。
- 资金方式:一次性买入、月定投、估值分批、回撤补仓或再平衡。
- 买入条件:例如固定日期、估值百分位、回撤阈值、仓位偏离。
- 卖出条件:例如再平衡、估值高位、止盈、止损或持有到期。
- 仓位上限:单资产、单主题、权益总仓位和实验仓位上限。
- 成本假设:申购费、赎回费、管理费、交易佣金、买卖价差、QDII 溢价。
- 执行频率:日、周、月、季度,不允许事后挑选最优交易日。
如果这些条件写不清,回测结果只是历史拟合,不是规则验证。
实操步骤
第一版可以用表格完成,不必先做程序化系统。
- 选择基准:同类宽基或原始资产,不和无关资产比较。
- 准备数据:至少包含日期、复权价格或净值、分红、交易成本和可交易状态。
- 固定规则:把买入、卖出、再平衡和资金上限写成不可事后修改的条件。
- 逐期模拟:按历史时间顺序执行,只使用当时已经可见的数据。
- 记录现金流:每次投入、赎回、分红和费用都要有日期和金额。
- 计算指标:收益、风险、路径、交易频率和稳定性分开看。
- 压力复核:单独看熊市、震荡市、牛市末期和快速反弹期。
- 保守折减:把历史结果打折后再进入 IPS,不把最好区间当成预期收益。
核心指标
| 维度 | 指标 | 看什么 | 常见误区 |
|---|---|---|---|
| 收益 | 年化收益率 / CAGR | 历史复合增长速度 | 把短期高年化当成长期可持续 |
| 收益 | 年化保守预期 | 用历史年化打折后的行动预期 | 直接把回测年化写进目标收益 |
| 风险 | 最大回撤 | 从阶段高点到低点的最差跌幅 | 把历史最大回撤当成未来亏损上限 |
| 风险 | 回撤修复时间 | 多久回到前高 | 只看跌幅,不看熬多久 |
| 稳定性 | 正收益年份比例 | 年度层面的持有体验 | 用它替代每笔交易胜率 |
| 交易 | 买入胜率 | 买入后指定持有期盈利的比例 | 胜率高但单次亏损很大 |
| 效率 | 收益/回撤比 | 每承担 1 单位回撤换来多少收益 | 跨资产、跨周期直接比较 |
| 效率 | 夏普比率 | 单位波动对应的超额收益 | 忽略非正态和极端亏损 |
| 执行 | 换手率和交易次数 | 成本、精力和滑点压力 | 回测不扣费用 |
| 稳健性 | 分阶段表现 | 不同市场环境是否都能接受 | 只看全样本平均值 |
年化保守预期
年化保守预期不是回测软件直接给出的指标,而是把历史结果转成行动规则时的折减值。
第一版可以用简单规则:
年化保守预期 = min(历史全样本年化, 最近 5 年年化, 最差完整周期年化) - 安全折减
安全折减不需要精确,但必须存在。权益类和主题类策略至少要考虑估值环境、样本期长度、交易成本、未来收益中枢下降和执行偏差。
使用方式:
- 用于判断这套规则是否值得占用风险预算。
- 不用于承诺收益。
- 不用于提高仓位上限。
买入胜率
买入胜率必须先定义持有期,否则没有意义。
例如:
每次触发买入后,分别统计持有 3 个月、6 个月、1 年、3 年后的正收益比例。
如果规则是长期定投,更应该看“任意起点持有 N 年的正收益比例”,而不是每一笔买入是否赚钱。
胜率的使用边界:
- 高胜率不代表低风险。
- 低胜率不代表规则无效,趋势策略可能靠少数大收益覆盖多次小亏。
- 必须同时看平均盈利、平均亏损、最大单次亏损和最大连续亏损。
收益/回撤比
收益/回撤比常见实现是卡玛比率:
收益/回撤比 = 年化收益率 / 最大回撤绝对值
它比单看年化更接近真实持有体验。两个策略年化相同,最大回撤更小的策略更容易执行。
但它仍然有边界:
- 最大回撤来自历史单一路径,未来可能更差。
- 回撤修复时间不同,持有体验也不同。
- 只适合同类资产、相近周期和相近规则之间比较。
必须排除的回测错误
- 未来函数:使用当时还不知道的数据。
- 幸存者偏差:只用今天还存在、表现还不错的标的。
- 参数过拟合:反复调阈值直到历史结果最好。
- 忽略成本:不扣申购费、赎回费、佣金、滑点、折溢价和税费。
- 忽略限购和流动性:假设每次都能按净值无限买入或卖出。
- 样本太短:只覆盖单一牛市或单一风格占优期。
- 不设基准:策略赚钱但跑输简单持有同类宽基。
现成工具选择
工具选择先看规则复杂度,不要一开始就自建系统。
| 场景 | 工具 | 费用倾向 | 适合做什么 | 主要限制 |
|---|---|---|---|---|
| ETF 和资产配置快速回测 | testfol.io | 免费为主 | ETF 权重、再平衡、组合历史路径 | 偏美股 ETF,国内基金和 QDII 规则覆盖弱 |
| 长期资产配置理解 | Portfolio Charts | 免费为主 | 看不同资产配置的历史收益、最差年份、回撤和可视化结果 | 更适合配置研究,不适合复杂交易规则 |
| 实盘组合记录和复盘 | Portfolio Performance | 开源免费 | 记录交易、分红、费用,计算 TWRR、IRR、资产配置和再平衡 | 不是策略回测器,更适合真实账户复盘 |
| 图表和技术策略 | TradingView | 免费 + 订阅 | Pine Script、技术指标、图表策略测试 | 免费版限制较多,复杂组合和现金流回测不强 |
| 云端量化回测 | QuantConnect | 免费层可用,进阶收费 | 多资产、Python/C#、样本外验证、模拟交易 | 学习成本高,国内基金和 QDII 细节仍需自处理 |
| 本地 Python 回测 | backtrader | 开源免费 | 事件驱动回测、买卖规则、手续费、仓位控制 | 需要写代码,数据质量自己负责 |
| 批量参数和向量化回测 | vectorbt | 免费/开源生态为主,进阶版本另看官网 | 快速测试大量参数、技术指标、组合规则 | 更偏程序员工作流,容易过度参数优化 |
| 回测后绩效报告 | QuantStats | 开源免费 | CAGR、最大回撤、夏普、卡玛、胜率、HTML 报告 | 分析收益序列,不负责完整交易模拟 |
| A 股和国内量化平台 | 聚宽、米筐、BigQuant | 免费注册 + 增值服务 | A 股数据、因子研究、策略回测、模拟交易 | 数据权限、费用和可导出能力需要逐项确认 |
第一版推荐路径:
- 用
testfol.io或Portfolio Charts做资产配置级别回测。 - 用
Portfolio Performance记录自己的真实交易和组合复盘。 - 规则复杂后,再用
backtrader、vectorbt或QuantConnect做程序化回测。 - 输出结果时,用
QuantStats生成指标报告,再手工写入决策日志或 IPS。
国内基金、QDII 和场内 ETF 回测要额外小心。海外工具通常不能准确处理人民币份额、汇率、QDII 限购、场内折溢价、申赎费、跟踪误差和赎回到账时间,只能作为近似历史路径,不应直接作为交易指令。
最低合格结论
一次回测结论必须写成下面这种格式:
规则:
样本期:
基准:
成本假设:
历史年化:
年化保守预期:
最大回撤:
最长回撤修复时间:
买入胜率口径:
收益/回撤比:
最差市场阶段:
是否超过仓位上限:
是否进入 IPS:
结论只能有三类:
- 可进入 IPS:规则清楚,风险可承受,成本后仍有意义。
- 只进入观察清单:结果依赖特定市场环境,或样本不足。
- 放弃:回撤不可承受、收益不能覆盖成本、或明显依赖过拟合。
行动规则
- 回测结果只能支持规则复核,不能直接触发买入。
- 回测前写规则,回测后只允许记录结论,不允许边测边改阈值。
- 如果改了参数,必须重新标记为新规则,并重新记录样本期。
- 正式使用前,至少经过一次样本外验证或小仓位观察期。
- 任何回测策略都必须回到 IPS 的资金层、目标仓位和最大亏损约束。