读取回测结果
语言:简体中文 · English
run_backtest 的默认结果是一个五元素元组:
stats, net_returns, gross_returns, turnover, periods = result
汇总统计
stats 通常包含总收益、年化收益、年化波动、Sharpe、最大回撤和平均换手率等指标。具体字段以当前代码和测试为准,常见读取方式如下:
summary = {
"total_return": stats["total_return"],
"annualized_return": stats["ann_return"],
"annualized_volatility": stats["ann_vol"],
"sharpe": stats["sharpe"],
"max_drawdown": stats["max_drawdown"],
}
如果某个指标没有足够的数据计算,结果可能是 None 或 NaN。读取结果时,应先确认样本长度和指标定义,再比较不同实验。
净收益和毛收益
gross_returns只反映持仓路径带来的收益。net_returns在相同持仓路径上扣除了模型中的交易成本和滑点。- 两者的差异可以帮助判断收益是否被换手和执行假设显著侵蚀。
示例:
cost_drag = gross_returns - net_returns
这里的成本拖累是模型结果,不代表真实成交回报。真实成交需要订单、成交和账户账本等执行证据。
持有期明细
periods 是按持有期组织的字典列表。常见字段包括:
| 字段 | 含义 |
|---|---|
entry_date |
持有期开始日期 |
exit_date |
持有期结束日期 |
net_return |
该持有期净收益 |
gross_return |
该持有期毛收益 |
turnover |
该持有期换手率 |
positions |
该持有期使用的目标持仓 |
不同后端或配置可能附加更多字段。需要完整输出契约时,继续阅读回测输出契约和持仓输出约定。
阅读结果时先问三个问题
- 收益来自持仓路径,还是来自成本和价格假设的遗漏?
- 回测使用的信号、价格和可交易性信息在当时是否已经可用?
- 当前结果属于诊断性研究,还是具备完整执行证据的结果?
回测指标本身不能回答这些问题。需要结合输入数据、配置、持仓产物和执行证据一起检查。