回测和最大回撤不是一回事
回测
用历史数据按时间顺序模拟策略的信号、订单、成交和资金变化。
最大回撤
净值从历史高点下跌到后续低点时,出现过的最大跌幅。
回测引擎是一台交易时光机
按当时已知的数据向前推进,每出现一根新 K 线,策略就判断是否下单,再由模拟账户处理成交和资金。
Cerebro 调度四个核心模块
数据源
加载日线、分钟线或其他已知数据,并检查复权与交易日。
策略
定义开仓、平仓、仓位和策略停止条件。
模拟账户
管理现金、持仓、订单、成交、手续费和滑点。
分析器
输出收益、胜率、回撤、交易次数和其他绩效指标。
一次完整回测的七步
- 01
创建 Cerebro
建立负责调度整个回测的引擎实例。
- 02
加载历史数据
确认数据时间、价格口径和当时是否已经可知。
- 03
加入交易策略
把双均线或其他策略的信号与订单规则交给引擎。
- 04
配置账户与成本
设置初始资金、仓位、手续费、滑点和目标市场约束。
- 05
加入分析器
明确要检查的收益、风险、稳定性与交易统计。
- 06
逐根运行
引擎按时间顺序推进,只允许策略使用当时已经出现的信息。
- 07
读取报告
对照资金曲线、交易记录和风险指标,检查策略是否可信。
双均线如何被引擎执行
先计算快线和慢线,再把交叉信号转成可执行订单。
例如用 10 个交易日的收盘价计算快线,用 30 个交易日计算慢线。快线上穿慢线时形成开仓信号,下穿时形成平仓信号。
发出信号不等于立即成交。订单可能处于已提交、已接受、已成交、已取消等不同状态。回测需要明确使用哪个时点的价格成交,并防止订单重复提交。
不能只看最终收益
收益率
回答账户最后赚了多少,但不能单独证明策略可靠。
最大回撤
检查净值在历史中最深的下跌,判断风险是否可承受。
胜率与盈亏比
胜率高不代表一定赚钱,还要看每次盈利和亏损的相对大小。
交易成本
手续费、税费、滑点与冲击成本会持续侵蚀频繁策略的账面收益。
一条漂亮曲线仍然可能是错的
参数过拟合
9/19 在某段历史上更好,可能只是记住了这一段答案。
未来数据
当时还不知道的成分股、收盘价或财报数据,不能提前进入策略。
市场环境
双均线属于趋势策略,在震荡环境中可能频繁交叉并连续产生小额亏损。
幸存者偏差
只使用今天仍然存在的公司,会忽略历史上退市和失败的样本。
成交假设
信号价格和真实可成交价格不一定相同,还要考虑市场制度与流动性约束。
好的回测不是为了证明自己对
双均线回测引擎
切换 10/30 与 9/19 两组参数,开关交易成本,观察同一份历史样本的收益、回撤、成交和交易记录。
切换参数或成本设置,观察同一份历史样本的结果怎样变化。
随堂自测
全部答对,才算掌握本课最重要的逻辑与边界。
本课总结
- 01回测是验证策略的过程,最大回撤是评估风险的指标。
- 02Backtrader 通过 Cerebro 调度数据、策略、模拟账户和分析器。
- 03事件驱动回测按时间顺序推进,信号、订单和成交是不同状态。
- 04胜率必须和盈亏比、最大回撤、交易次数和成本一起看。
- 05历史最优参数不等于未来答案,要检查过拟合、未来数据、样本偏差和市场环境。
完成这一课
不是看完就算学会。完成实验和自测,才说明你真正走过了这条推理链。
- 完成一次双均线回测实验
- 通过随堂自测
固定合成 K 线教学样本,实验按收盘信号、次日开盘执行,并可切换手续费与滑点。
固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。