一、回测系统概述
什么是回测系统
回测系统,说白了就是一台「时光机」。
你把你的交易策略扔进去,告诉它:「假设我在2018年用这套规则买卖股票,结果会怎样?」
系统就会模拟出那几年的交易过程。赚了多少、亏了多少、最大回撤多大,一目了然。
我个人习惯把回测系统拆成三个核心模块:
- 数据引擎——负责喂历史行情数据
- 策略引擎——执行你的买卖逻辑
- 绩效分析器——算收益、算风险、画曲线
这三个东西缺一不可。我在项目中遇到过有人只写策略逻辑,数据随便拉个CSV就开跑,结果回测结果漂亮得不行,一上实盘就崩。为什么?数据没复权、有未来函数、手续费没算——全是坑。
一句话总结:回测系统就是用历史数据模拟交易,验证你的策略到底行不行。
回测系统的核心价值
有人问我:「回测不就是跑个历史数据吗?能有多大用?」
嗯,这个问题我当年也问过。后来踩了坑才明白,回测的价值远不止「跑个结果」这么简单。
核心价值有三点:
- 验证策略有效性——你的策略在牛熊市里表现如何?回测能给你答案。我见过太多人凭感觉做交易,觉得「这个指标肯定赚钱」,一测才发现年化收益还不如余额宝。
- 发现隐藏风险——比如最大回撤40%,你扛得住吗?回测能提前告诉你。我曾经写过一个趋势跟踪策略,回测收益曲线漂亮得很,结果压力测试发现2015年股灾期间直接腰斩。嗯,这个坑我替你们踩过了。
- 优化参数——均线用20日还是60日?止损设5%还是10%?回测能帮你找到相对合理的区间。但注意,别过度优化,否则就是「过拟合」,实盘会教你做人。
我的建议:回测不是为了证明策略完美,而是为了发现它会在哪里死掉。
回测与实盘的区别
这是新手最容易忽略的部分。回测跑得再好,也不代表实盘能赚钱。为什么?
我列几个关键区别:
| 维度 | 回测 | 实盘 |
|---|---|---|
| 成交价格 | 理想化,假设按收盘价成交 | 有滑点,可能买不到或卖不掉 |
| 交易成本 | 容易忽略或算错 | 佣金、印花税、冲击成本真实存在 |
| 流动性 | 默认无限流动性 | 小盘股可能一卖就砸穿 |
| 心理因素 | 无情绪干扰 | 恐惧、贪婪、犹豫全来了 |
| 未来函数 | 容易不小心用到未来数据 | 不存在这个问题 |
你看,差距不小吧?
我曾经犯过一个低级错误:回测时用了「当日最高价」作为卖出信号,结果实盘根本不可能在最高点卖出。这就是典型的未来函数。从那以后,我写回测代码第一件事就是检查有没有「偷看未来」。
避坑指南:回测结果打八折,才是相对靠谱的实盘预期。如果你回测年化30%,实盘能有20%就算烧高香了。
常见回测框架对比
市面上回测框架不少,我挑几个常用的聊聊。
先看一张对比图:
我个人用得最多的是 Backtrader。为什么?
- 纯Python,改起来方便
- 内置了滑点、手续费、成交量限制等实盘因素
- 社区资源多,遇到问题基本能搜到答案
如果你做国内期货或股票,VNPY 也是个不错的选择。它直接对接了CTP接口,回测完可以无缝切换到实盘。不过代码量确实大,新手容易懵。
Zipline 嘛...我早期用过一段时间,后来Quantopian倒闭了,更新就慢了。但它的数据管道设计思路很值得学习,如果你做研究型回测,可以试试。
我的建议:新手从 Backtrader 入手,跑通一个简单策略再说。别一上来就搞分布式回测、GPU加速,先把基础打牢。
最后说一句:框架只是工具,核心还是你的策略逻辑。别在选框架上纠结太久,先跑起来再说。