量化交易回测方法
回测是量化策略开发中最重要的环节,用于验证策略在历史数据上的表现。
什么是回测
回测是使用历史数据模拟策略交易过程,评估策略的盈利能力和风险特征。
回测框架
核心组件
- 数据源 - 历史价格、成交量、财务数据等
- 策略逻辑 - 买入/卖出信号生成规则
- 交易引擎 - 模拟订单执行、持仓管理
- 绩效分析 - 计算收益率、风险指标等
回测流程
数据准备 → 策略实现 → 运行回测 → 绩效分析 → 参数优化关键绩效指标
收益指标
| 指标 | 说明 | 计算方式 |
|---|---|---|
| 总收益率 | 策略整体收益 | (最终资金 - 初始资金) / 初始资金 |
| 年化收益率 | 换算为年度收益 | (1 + 总收益率)^(252/交易天数) - 1 |
| 超额收益 | 相对基准的收益 | 策略收益 - 基准收益 |
风险指标
| 指标 | 说明 | 合理范围 |
|---|---|---|
| 最大回撤 | 最大累计亏损幅度 | < 20% |
| 波动率 | 收益率标准差 | 越低越好 |
| 夏普比率 | 风险调整后收益 | > 1 为良好 |
交易指标
- 胜率:盈利交易次数 / 总交易次数
- 盈亏比:平均盈利 / 平均亏损
- 交易频率:日均/月均交易次数
回测常见陷阱
1. 未来函数
使用了回测时点无法获得的数据。
错误示例:
python
# ❌ 使用了收盘价判断当日开盘买入
if close[i] > close[i-1]:
buy_at_open[i+1]正确做法:
python
# ✅ 只使用当时可获得的数据
if close[i-1] > close[i-2]:
buy_at_open[i]2. 幸存者偏差
只使用当前存续的股票数据,忽略了已退市股票。
解决方案: 使用包含退市股票的全量历史数据
3. 过度拟合
策略参数在历史数据上表现完美,但实盘失效。
解决方案:
- 减少参数数量
- 样本外验证
- 参数稳健性测试
4. 忽略交易成本
未考虑手续费、滑点等成本。
建议:
- 设置合理的手续费率(如万 2.5)
- 添加滑点假设(如 0.1%)
回测工具推荐
Python 框架
- Backtrader - 功能强大的开源回测框架
- Zipline - Quantopian 开源的回测引擎
- ** vn.py** - 国内知名的量化交易框架
在线平台
- 聚宽 - 提供 A 股数据和回测环境
- 优矿 - 通联数据旗下的量化平台