统计指标词汇表¶
Backtest.show_stats() 和 qtrade.utils.stats.calculate_stats() 输出 ~25 个指标。本页解释每个指标的含义、计算方式以及粗略的判断标准。
组合回测的按资产细分见 calculate_stats_per_asset(broker) —— 返回这些指标里交易级别那部分,以资产代码为键。
时间 / 净值¶
指标 |
含义 |
|---|---|
Start |
首根 bar 的时间戳(取自 |
End |
最后一根处理过的 bar( |
Duration |
|
Start Value |
初始净值(通常等于起始现金)。 |
End Value |
回测结束时的净值。 |
收益¶
指标 |
公式 |
说明 |
|---|---|---|
Total Return [%] |
|
原始值,未年化。 |
Total Commission Cost[%] |
整个回测中支付的所有佣金总和 |
便于识别被手续费拖死的策略。 |
Buy & Hold Return [%] |
单资产时为 |
需要击败的基准。跑不赢 Buy & Hold 的策略通常不如被动持有。 |
Return (Ann.) [%] |
日收益率的几何平均,按 252(股票)或 365(加密 / 外汇)天年化 |
复合年增长率(CAGR)。 |
Volatility (Ann.) [%] |
|
收益率的标准差,按年缩放。 |
252 / 365 年化因子自动检测:如果净值曲线把周末当作交易日(≥ 60% 的周末 bar 有数据),按 365 天年化;否则按 252。
风险¶
指标 |
公式 |
说明 |
|---|---|---|
Max Drawdown [%] |
|
最大峰谷跌幅,恒 ≤ 0。 |
Max Drawdown Duration |
最长连续「在峰值之下」的时间段长度 |
返回 |
交易统计¶
指标 |
说明 |
|---|---|
Total Trades |
所有资产已平仓交易总数。 |
Win Rate [%] |
盈利交易占已平仓交易的百分比。 |
Best Trade [%] |
单笔最大盈利(账户币种,不是百分比)。标签写「[%]」是历史遗留 —— 实际是绝对盈亏值。 |
Worst Trade [%] |
同上,但取最负盈亏。 |
Avg Winning Trade [%] |
盈利交易的平均盈利。 |
Avg Losing Trade [%] |
亏损交易的平均盈亏(负值)。 |
Avg Winning Trade Duration |
盈利交易的平均持仓时长。 |
Avg Losing Trade Duration |
亏损交易的平均持仓时长。 |
如果「赢家持仓时间更长」,说明你有「让利润奔跑,及时止损」的模式。反过来则是过早砍掉赢家。
绩效比率¶
这些把收益和风险压缩成一个单一数字。不同比率惩罚的对象不一样。
Profit Factor(盈亏比)¶
sum(wins) / sum(|losses|)
越高越好。> 1 说明净盈利。> 2 比较少见且优秀。无亏损交易时为 NaN。
Expectancy(期望值)¶
(sum(wins) - sum(|losses|)) / total_trades
每笔交易的平均盈亏(账户币种)。正期望值意味着平均而言每笔交易都值得做。
Sortino Ratio(索提诺比率)¶
mean(daily_returns) / std(daily_returns[< 0]) × √annual_days
和 Sharpe 类似,但只惩罚下行波动。收益分布非对称的策略(多数趋势跟随)在这里比 Sharpe 表现更好。
Calmar Ratio(卡玛比率)¶
abs(annualized_return) / abs(max_drawdown)
每单位最坏回撤换来多少年化收益。> 1 算不错(年收益超过最大回撤)。
Omega Ratio(Omega 比率)¶
sum(returns > threshold) / |sum(returns < threshold)|
阈值为 0(即所有日收益样本中,盈利之和除以亏损之和)。捕捉收益的完整分布,而非均值 / 标准差摘要。> 1 即为正。
对统计结果的合理性检查¶
在为回测结果兴奋之前先验证几件事:
总交易数合理 —— 个位数的交易数可能偶然产生 Sharpe = 5。你需要足够多的交易让指标在统计上有意义。
Total Return > Buy & Hold —— 跑赢 B&H 是底线。纯多头策略输给 B&H 说明你的择时帮倒忙。
胜率 × 均赢 > (1 − 胜率) × |均亏| —— 基本期望值条件。不满足说明策略结构性亏损。
信任
optimize结果前先跑walk_forward_optimize—— 样本内 Sharpe 基本都偏高。详见 Walk-forward 优化。