统计指标词汇表

Backtest.show_stats()qtrade.utils.stats.calculate_stats() 输出 ~25 个指标。本页解释每个指标的含义、计算方式以及粗略的判断标准。

组合回测的按资产细分见 calculate_stats_per_asset(broker) —— 返回这些指标里交易级别那部分,以资产代码为键。

时间 / 净值

指标

含义

Start

首根 bar 的时间戳(取自 equity_history.index[0])。

End

最后一根处理过的 bar(broker.current_time)。

Duration

End - Start,类型为 pd.Timedelta

Start Value

初始净值(通常等于起始现金)。

End Value

回测结束时的净值。

收益

指标

公式

说明

Total Return [%]

(End - Start) / Start × 100

原始值,未年化。

Total Commission Cost[%]

整个回测中支付的所有佣金总和

便于识别被手续费拖死的策略。

Buy & Hold Return [%]

单资产时为 (close[-1] - close[0]) / close[0] × 100;多资产时为各资产的等权平均

需要击败的基准。跑不赢 Buy & Hold 的策略通常不如被动持有。

Return (Ann.) [%]

日收益率的几何平均,按 252(股票)或 365(加密 / 外汇)天年化

复合年增长率(CAGR)。

Volatility (Ann.) [%]

std(daily_returns) × √annual_days × 100

收益率的标准差,按年缩放。

252 / 365 年化因子自动检测:如果净值曲线把周末当作交易日(≥ 60% 的周末 bar 有数据),按 365 天年化;否则按 252。

风险

指标

公式

说明

Max Drawdown [%]

min((equity - cummax(equity)) / cummax(equity)) × 100

最大峰谷跌幅,恒 ≤ 0。

Max Drawdown Duration

最长连续「在峰值之下」的时间段长度

返回 pd.Timedelta。是恢复期最长的回撤,不是最深的那次。

交易统计

指标

说明

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

每笔交易的平均盈亏(账户币种)。正期望值意味着平均而言每笔交易都值得做。

Sharpe Ratio(夏普比率)

mean(daily_returns) / std(daily_returns) × √annual_days

无风险利率默认为 0(如需调整,编辑 stats.py 里的 __calculate_performance_ratios)。粗略判断:

  • < 0:亏损策略。

  • 0–1:勉强;可能只是样本内的噪声。

  • 1–2:扎实。

  • > 2:优秀(通常好得不像真的 —— 检查是否过拟合或未来函数)。

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 优化