一、回测系统概述

什么是回测系统

回测系统,说白了就是一台「时光机」。

你把你的交易策略扔进去,告诉它:「假设我在2018年用这套规则买卖股票,结果会怎样?」

系统就会模拟出那几年的交易过程。赚了多少、亏了多少、最大回撤多大,一目了然。

我个人习惯把回测系统拆成三个核心模块:

  • 数据引擎——负责喂历史行情数据
  • 策略引擎——执行你的买卖逻辑
  • 绩效分析器——算收益、算风险、画曲线

这三个东西缺一不可。我在项目中遇到过有人只写策略逻辑,数据随便拉个CSV就开跑,结果回测结果漂亮得不行,一上实盘就崩。为什么?数据没复权、有未来函数、手续费没算——全是坑。

一句话总结:回测系统就是用历史数据模拟交易,验证你的策略到底行不行。

回测系统的核心价值

有人问我:「回测不就是跑个历史数据吗?能有多大用?」

嗯,这个问题我当年也问过。后来踩了坑才明白,回测的价值远不止「跑个结果」这么简单。

核心价值有三点:

  1. 验证策略有效性——你的策略在牛熊市里表现如何?回测能给你答案。我见过太多人凭感觉做交易,觉得「这个指标肯定赚钱」,一测才发现年化收益还不如余额宝。
  2. 发现隐藏风险——比如最大回撤40%,你扛得住吗?回测能提前告诉你。我曾经写过一个趋势跟踪策略,回测收益曲线漂亮得很,结果压力测试发现2015年股灾期间直接腰斩。嗯,这个坑我替你们踩过了。
  3. 优化参数——均线用20日还是60日?止损设5%还是10%?回测能帮你找到相对合理的区间。但注意,别过度优化,否则就是「过拟合」,实盘会教你做人。

我的建议:回测不是为了证明策略完美,而是为了发现它会在哪里死掉。

回测与实盘的区别

这是新手最容易忽略的部分。回测跑得再好,也不代表实盘能赚钱。为什么?

我列几个关键区别:

维度 回测 实盘
成交价格 理想化,假设按收盘价成交 有滑点,可能买不到或卖不掉
交易成本 容易忽略或算错 佣金、印花税、冲击成本真实存在
流动性 默认无限流动性 小盘股可能一卖就砸穿
心理因素 无情绪干扰 恐惧、贪婪、犹豫全来了
未来函数 容易不小心用到未来数据 不存在这个问题

你看,差距不小吧?

我曾经犯过一个低级错误:回测时用了「当日最高价」作为卖出信号,结果实盘根本不可能在最高点卖出。这就是典型的未来函数。从那以后,我写回测代码第一件事就是检查有没有「偷看未来」。

避坑指南:回测结果打八折,才是相对靠谱的实盘预期。如果你回测年化30%,实盘能有20%就算烧高香了。

常见回测框架对比

市面上回测框架不少,我挑几个常用的聊聊。

先看一张对比图:

常见回测框架对比 Backtrader Python 原生 功能全面 社区活跃 适合个人/小团队 学习曲线中等 数据加载较慢 ⭐ 推荐入门 Zipline Quantopian 出品 数据管道优秀 回测速度快 安装配置复杂 文档更新慢 社区逐渐萎缩 ⭐ 适合研究 VNPY 国内主流 支持实盘 功能强大 学习曲线陡峭 代码量大 适合CTA/期货 ⭐ 适合进阶

我个人用得最多的是 Backtrader。为什么?

  • 纯Python,改起来方便
  • 内置了滑点、手续费、成交量限制等实盘因素
  • 社区资源多,遇到问题基本能搜到答案

如果你做国内期货或股票,VNPY 也是个不错的选择。它直接对接了CTP接口,回测完可以无缝切换到实盘。不过代码量确实大,新手容易懵。

Zipline 嘛...我早期用过一段时间,后来Quantopian倒闭了,更新就慢了。但它的数据管道设计思路很值得学习,如果你做研究型回测,可以试试。

我的建议:新手从 Backtrader 入手,跑通一个简单策略再说。别一上来就搞分布式回测、GPU加速,先把基础打牢。

最后说一句:框架只是工具,核心还是你的策略逻辑。别在选框架上纠结太久,先跑起来再说。


专注资料整理