DEV Community

Henry Lin
Henry Lin

Posted on

第 6 课:freqtrade策略性能分析

第 6 课:策略性能分析

⏱ 课时:2 小时
🎯 学习目标:学会评估策略好坏
📚 难度:⭐⭐ 回测实战


📖 课程概览

回测报告包含大量指标,如何从这些指标中判断策略的好坏?本课将教你深入理解回测报告中的关键指标,建立科学的策略评估体系。


6.1 关键指标解读

总收益 vs 平均收益

总收益(Total Profit)

整个回测期间的累计盈利。

示例

Total profit: 3.64 USDT (0.36%)
Enter fullscreen mode Exit fullscreen mode

解读

  • 1000 USDT 本金,赚了 3.64 USDT
  • 总收益率 0.36%

局限性

  • 不考虑交易次数
  • 不考虑时间长度
  • 不考虑风险

平均每笔收益(Avg Profit per Trade)

每笔交易的平均盈利。

示例

Avg. profit per trade: 0.52%
Enter fullscreen mode Exit fullscreen mode

解读

  • 每笔交易平均赚 0.52%
  • 反映单笔交易质量

重要性

  • ✅ 比总收益更能反映策略质量
  • ✅ 高平均收益 = 高效策略
  • ⚠️ 需结合交易次数综合判断

对比示例

策略 交易次数 总收益 平均收益 评价
策略 A 100 +10% +0.1% ❌ 低效:交易多,收益低
策略 B 10 +10% +1.0% ✅ 高效:交易少,收益高
策略 C 50 +10% +0.2% ⭐ 平衡:适中

结论:策略 B 最优秀,因为用更少的交易达到同样收益。


胜率 vs 盈亏比

这是策略分析中最重要的一对指标。

胜率(Win Rate)

盈利交易占总交易的百分比。

计算公式

胜率 = 盈利交易次数 / 总交易次数 × 100%
Enter fullscreen mode Exit fullscreen mode

示例

Win rate: 85.7% (6 wins / 7 trades)
Enter fullscreen mode Exit fullscreen mode

分类

  • 高胜率:> 70%
  • 中等胜率:50-70%
  • 低胜率:< 50%

盈亏比(Profit Factor / Risk-Reward Ratio)

平均盈利与平均亏损的比率。

计算公式

盈亏比 = 平均盈利 / 平均亏损
Enter fullscreen mode Exit fullscreen mode

示例

  • 平均盈利:+2%
  • 平均亏损:-1%
  • 盈亏比:2:1

胜率与盈亏比的关系

这是一个经典的权衡:

类型 胜率 盈亏比 交易风格 心理压力
高胜率低盈亏比 70-90% 1:1 ~ 1.5:1 频繁小盈利
平衡型 50-70% 1.5:1 ~ 2:1 适中 中等
低胜率高盈亏比 30-50% 3:1 ~ 5:1 偶尔大盈利

盈利模型计算

高胜率低盈亏比策略

胜率:80%,平均盈利:+1%,平均亏损:-1%
期望收益 = 0.80 × 1% + 0.20 × (-1%) = 0.6%
Enter fullscreen mode Exit fullscreen mode

低胜率高盈亏比策略

胜率:40%,平均盈利:+5%,平均亏损:-2%
期望收益 = 0.40 × 5% + 0.60 × (-2%) = 0.8%
Enter fullscreen mode Exit fullscreen mode

结论:低胜率策略收益更高,但需要承受更多连续亏损。

你的策略属于哪种?

判断标准

if 胜率 > 70% and 盈亏比 < 2:
    print("高胜率低盈亏比 - 适合保守投资者")
elif 胜率 < 50% and 盈亏比 > 3:
    print("低胜率高盈亏比 - 适合激进投资者")
else:
    print("平衡型策略 - 适合大多数人")
Enter fullscreen mode Exit fullscreen mode

最大回撤(Max Drawdown)

定义

从资金最高点到最低点的最大跌幅。

计算示例

初始资金:$1,000
最高点:$1,200 (2025-09-15)
最低点:$1,080 (2025-09-22,在最高点之后)

最大回撤 = (1,080 - 1,200) / 1,200 = -10%
Enter fullscreen mode Exit fullscreen mode

回撤分级

回撤幅度 评级 心理承受 恢复难度
< 5% 🟢 优秀 容易接受 很容易
5-10% 🟡 良好 可以接受 容易
10-20% 🟠 警惕 心理压力 需要时间
> 20% 🔴 危险 难以承受 很困难

为什么回撤很重要?

恢复所需涨幅

回撤 10% → 需要上涨 11.1% 才能回本
回撤 20% → 需要上涨 25% 才能回本
回撤 50% → 需要上涨 100% 才能回本
Enter fullscreen mode Exit fullscreen mode

结论:回撤越大,恢复越难,风险越高。

回撤期(Drawdown Duration)

从最高点跌到最低点,再恢复到最高点的时间。

示例

2025-09-15: 资金最高 $1,200
2025-09-22: 跌至最低 $1,080(回撤期开始)
2025-10-10: 恢复到 $1,200(回撤期结束)

回撤期:25 天
Enter fullscreen mode Exit fullscreen mode

长回撤期的影响

  • 资金长时间无法增长
  • 心理压力增大
  • 可能错过其他机会

Sharpe Ratio / Sortino Ratio

Sharpe Ratio(夏普比率)

风险调整后的收益率,衡量每承担 1 单位风险获得多少超额收益。

计算公式

Sharpe Ratio = (策略收益 - 无风险收益) / 收益标准差
Enter fullscreen mode Exit fullscreen mode

解读标准

Sharpe > 3.0   🟢 优秀 - 极佳的风险收益比
Sharpe 2.0-3.0 🟡 良好 - 可接受的风险收益比
Sharpe 1.0-2.0 🟠 一般 - 风险略高
Sharpe < 1.0   🔴 差 - 风险过高
Sharpe < 0     ⛔ 亏损 - 还不如无风险投资
Enter fullscreen mode Exit fullscreen mode

示例对比

策略 A: 收益 10%, 标准差 5%, Sharpe = 2.0
策略 B: 收益 15%, 标准差 10%, Sharpe = 1.5

结论: 策略 A 更优秀(风险调整后收益更高)
Enter fullscreen mode Exit fullscreen mode

Sortino Ratio(索提诺比率)

只考虑下行风险的 Sharpe Ratio(更合理)。

区别

  • Sharpe:惩罚所有波动(包括向上波动)
  • Sortino:只惩罚向下波动(更符合投资者关注点)

解读

Sortino > Sharpe → 策略向上波动多于向下波动(好事)
Sortino ≈ Sharpe → 策略上下波动对称
Sortino < Sharpe → 策略向下波动更剧烈(坏事)
Enter fullscreen mode Exit fullscreen mode

6.2 交易次数分析

交易频率的影响

交易次数 频率 优点 缺点
> 100/月 超高频 充分利用资金 手续费高,滑点大
30-100/月 高频 机会多 手续费显著
10-30/月 中频 平衡 ✅ 需要耐心
< 10/月 低频 信号质量高 资金利用率低

手续费成本计算

手续费模型

# Binance 现货交易手续费(无优惠)
maker_fee = 0.1%  # 挂单手续费
taker_fee = 0.1%  # 吃单手续费

# 一次完整交易(买入 + 卖出)
round_trip_fee = 0.1% + 0.1% = 0.2%
Enter fullscreen mode Exit fullscreen mode

手续费对收益的影响

案例 1:高频策略

交易次数:100 次/月
平均每笔收益:+0.5%
手续费:0.2% × 100 = 20%

净收益 = 50% - 20% = 30%(手续费吃掉 40% 利润)
Enter fullscreen mode Exit fullscreen mode

案例 2:低频策略

交易次数:10 次/月
平均每笔收益:+2%
手续费:0.2% × 10 = 2%

净收益 = 20% - 2% = 18%(手续费只吃掉 10% 利润)
Enter fullscreen mode Exit fullscreen mode

盈亏平衡点

要想盈利,平均每笔收益必须超过手续费:

最低盈利要求 > 0.2%(一次完整交易)

如果平均收益 0.5%:
净收益 = 0.5% - 0.2% = 0.3%(可接受)

如果平均收益 0.3%:
净收益 = 0.3% - 0.2% = 0.1%(勉强)

如果平均收益 0.15%:
净收益 = 0.15% - 0.2% = -0.05%(亏损!)
Enter fullscreen mode Exit fullscreen mode

过度交易的风险

过度交易的信号

  • ✅ 交易次数 > 100/月(5m 时间框架)
  • ✅ 平均每笔收益 < 0.3%
  • ✅ 手续费占总收益 > 30%
  • ✅ 大量小盈小亏交易

后果

  • 手续费侵蚀利润
  • 滑点损失增加
  • 策略过拟合风险
  • 交易所风控风险

6.3 退出原因统计

Freqtrade 回测报告会显示每笔交易的退出原因:

退出原因类型

退出原因 说明 理想占比
roi ROI 止盈退出 30-50%
exit_signal 卖出信号触发 20-40%
trailing_stop_loss 跟踪止损 10-20%
stop_loss 固定止损 < 20%
force_exit 强制平仓(回测结束) 0-5%

退出原因分析

示例报告

EXIT REASON STATS
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Exit Reason          ┃ Exits  ┃ Wins      ┃ Avg Profit % ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ roi                  │     45 │        45 │         2.1% │
│ exit_signal          │     28 │        25 │         0.8% │
│ trailing_stop_loss   │     15 │        15 │         3.5% │
│ stop_loss            │     12 │         0 │        -5.0% │
└──────────────────────┴────────┴───────────┴──────────────┘
Enter fullscreen mode Exit fullscreen mode

解读

ROI 止盈(45 次,100% 胜率)

  • ✅ 策略能够快速达到止盈目标
  • ✅ 平均 2.1% 收益,效果良好
  • 占比 45%,说明策略趋势把握准确

退出信号(28 次,89% 胜率)

  • ✅ 大部分退出信号是盈利的
  • ⚠️ 3 次亏损退出,可能是信号过早
  • 平均 0.8% 收益,低于 ROI

跟踪止损(15 次,100% 胜率)

  • ✅ 全部盈利,说明跟踪止损设置合理
  • ✅ 平均 3.5% 收益,最高的退出方式
  • 成功锁定了大部分利润

固定止损(12 次,0% 胜率)

  • ❌ 全部亏损,平均 -5%
  • ⚠️ 占比 12%,可以接受
  • 如果占比 > 30%,需要调整策略

问题诊断

问题 1:止损占比过高(> 30%)

原因

  • 止损设置过紧
  • 入场时机不佳
  • 市场波动过大

解决方案

  • 放宽止损范围(如 -5% → -7%)
  • 增加入场确认条件
  • 启用跟踪止损

问题 2:强制退出占比高(> 10%)

原因

  • 策略持仓时间过长
  • 缺少明确的退出信号
  • ROI 设置过高

解决方案

  • 添加退出信号
  • 调整 ROI 梯度
  • 设置最大持仓时间

问题 3:ROI 占比过低(< 20%)

原因

  • ROI 设置过高,难以达到
  • 策略捕捉不到大趋势
  • 退出信号过早触发

解决方案

  • 降低 ROI 目标
  • 优化入场时机
  • 调整退出信号逻辑

6.4 持仓时间分析

平均持仓时间

示例

Avg. holding time: 4h 35m
Enter fullscreen mode Exit fullscreen mode

分类

  • < 1h:超短线
  • 1-6h:短线
  • 6-24h:日内
  • > 24h:波段

持仓时间与收益的关系

理想曲线

收益 ↑
    │     ┌──────────  (ROI 止盈区)
    │    ╱
    │   ╱
    │  ╱
    │ ╱
────┼──────────────────→ 持仓时间
    │
    │ (盈利增长)
Enter fullscreen mode Exit fullscreen mode

问题曲线 1:时间拖累

收益 ↑
    │  ┌───┐
    │ ╱     ╲
    │╱       ╲___  (利润回吐)
────┼───────────────→ 持仓时间
Enter fullscreen mode Exit fullscreen mode

问题:持仓过久,利润回吐
解决:缩短 ROI 梯度时间

问题曲线 2:过早退出

收益 ↑
    │
    │ │ │ │ │  (频繁小盈利)
────┼─┴─┴─┴─┴───────→ 持仓时间
Enter fullscreen mode Exit fullscreen mode

问题:未能捕捉大趋势
解决:放宽退出条件,使用跟踪止损

持仓时间分布

理想分布

┏━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┓
┃ Duration   ┃ Trades ┃ Avg Profit ┃
┡━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━┩
│ < 1h       │     15 │       0.5% │
│ 1-4h       │     40 │       1.2% │
│ 4-12h      │     30 │       2.5% │
│ > 12h      │     15 │       3.8% │
└────────────┴────────┴────────────┘
Enter fullscreen mode Exit fullscreen mode

分析

  • 持仓时间越长,收益越高(正常)
  • 大部分交易在 1-4h(策略主战场)
  • 少量长线交易贡献高收益

隔夜风险

如果策略持仓超过 24 小时,需要考虑:

风险因素

  • 美股收盘影响
  • 亚洲开盘波动
  • 突发新闻事件
  • 周末缺口

应对措施

# 避免隔夜持仓(高级功能)
def custom_exit(self, pair, trade, current_time, **kwargs):
    # 如果持仓超过 20 小时,强制退出
    if (current_time - trade.open_date_utc).seconds > 72000:
        return 'holding_too_long'
Enter fullscreen mode Exit fullscreen mode

💡 实践任务

任务 1:回测三个策略

# 回测 Strategy001
freqtrade backtesting -c config.json --strategy Strategy001 --timerange 20250901-20250930

# 回测 Strategy002
freqtrade backtesting -c config.json --strategy Strategy002 --timerange 20250901-20250930

# 回测 Strategy003
freqtrade backtesting -c config.json --strategy Strategy003 --timerange 20250901-20250930
Enter fullscreen mode Exit fullscreen mode

任务 2:制作策略对比表格

创建 Excel 或 Google Sheets,记录以下指标:

指标 Strategy001 Strategy002 Strategy003
交易次数 ? ? ?
胜率 ? ? ?
总收益 % ? ? ?
平均收益 % ? ? ?
最大回撤 % ? ? ?
Sharpe Ratio ? ? ?
ROI 退出占比 ? ? ?
止损退出占比 ? ? ?
平均持仓时间 ? ? ?

任务 3:分析每个策略的优缺点

Strategy001

  • 优点:
  • 缺点:
  • 适合市场:

Strategy002

  • 优点:
  • 缺点:
  • 适合市场:

Strategy003

  • 优点:
  • 缺点:
  • 适合市场:

任务 4:选出最佳策略

根据以下标准选出你认为最好的策略:

评分标准(100 分制):

  • 总收益(30 分)
  • 胜率(20 分)
  • 最大回撤(20 分)
  • Sharpe Ratio(15 分)
  • 交易次数合理性(15 分)

我的选择:___________
理由:___________


📚 知识检查

基础问题

  1. 胜率 80%,平均盈利 1%,平均亏损 -1%,期望收益是多少?
  2. 最大回撤 20%,需要上涨多少才能回本?
  3. Sharpe Ratio > 3.0 表示什么?
  4. ROI 退出占比高说明什么?

答案

  1. 0.6%(0.80 × 1% + 0.20 × -1%)
  2. 25%(1 / (1 - 0.20) - 1)
  3. 优秀的风险收益比,策略质量很高
  4. 策略能够快速达到止盈目标,趋势把握准确

进阶问题

  1. 一个策略胜率 40%,平均盈利 5%,平均亏损 -1%,这个策略好吗?
  2. 如果两个策略收益相同,但一个回撤 5%,另一个回撤 15%,你选哪个?
  3. Sharpe Ratio 为负数意味着什么?

思考题

  1. 为什么平均每笔收益比总收益更重要?
  2. 高胜率策略一定好吗?
  3. 如何判断一个策略是否过度交易?

🔗 参考资料

配套文档

推荐阅读


📌 核心要点总结

  1. 平均每笔收益 > 总收益:更能反映策略质量
  2. 胜率和盈亏比需要平衡:不要只看胜率
  3. 最大回撤 < 10%:风险可控的标准
  4. Sharpe Ratio > 2.0:优秀策略的门槛
  5. 退出原因统计:诊断策略问题的关键
  6. 手续费成本:高频策略的最大敌人

➡️ 下一课预告

第 7 课:多时间框架回测

在下一课中,我们将:

  • 测试同一策略在不同时间框架的表现
  • 理解时间框架对策略的影响
  • 找出最适合策略的时间框架
  • 学习时间框架选择的原则

准备工作

  • ✅ 下载 BTC/USDT 多个时间框架数据(5m, 15m, 1h, 1d)
  • ✅ 选定一个策略用于测试
  • ✅ 准备记录不同时间框架的测试结果

🎯 学习检验标准

  • ✅ 能独立解读回测报告的所有关键指标
  • ✅ 能对比多个策略并选出最优
  • ✅ 理解胜率和盈亏比的权衡关系
  • ✅ 能根据退出原因统计诊断问题

完成这些任务后,你已经具备了策略分析的专业能力!🎯

Top comments (0)