DEV Community

Henry Lin
Henry Lin

Posted on

第 13 课:Freqtrade策略评分体系

第 13 课:策略评分体系

⏱ 课时:1.5 小时
🎯 学习目标:建立科学的策略评估标准
📚 难度:⭐⭐⭐ 策略优化


📖 课程概览

面对众多策略,如何客观评价它们的优劣?本课将教你建立一套科学的策略评分体系,通过量化指标综合评估策略,帮你选出真正优秀的策略。


13.1 收益指标(40% 权重)

收益是策略最直观的表现,但不应是唯一标准。

1. 总收益率(Total Return)

定义:整个回测期间的累计收益。

评分标准(30天回测):

优秀:> 15%     → 10分
良好:10-15%    → 8分
及格:5-10%     → 6分
较差:0-5%      → 4分
亏损:< 0%      → 0分
Enter fullscreen mode Exit fullscreen mode

权重:15%

计算示例

# 策略 A:总收益 18%
score = 10 × 0.15 = 1.5

# 策略 B:总收益 8%
score = 6 × 0.15 = 0.9
Enter fullscreen mode Exit fullscreen mode

2. 年化收益率(Annualized Return)

定义:将回测收益折算成年化收益。

计算公式

年化收益率 = (1 + 总收益率) ^ (365 / 回测天数) - 1
Enter fullscreen mode Exit fullscreen mode

示例

回测30天,收益15%:
年化收益率 = (1.15) ^ (365/30) - 1 = 7.43 = 743%

回测90天,收益15%:
年化收益率 = (1.15) ^ (365/90) - 1 = 0.68 = 68%
Enter fullscreen mode Exit fullscreen mode

评分标准

优秀:> 100%    → 10分
良好:50-100%   → 8分
及格:20-50%    → 6分
较差:0-20%     → 4分
亏损:< 0%      → 0分
Enter fullscreen mode Exit fullscreen mode

权重:10%

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

定义:每笔交易的平均盈利。

评分标准

优秀:> 1.5%    → 10分
良好:1.0-1.5%  → 8分
及格:0.5-1.0%  → 6分
较差:0.2-0.5%  → 4分
很差:< 0.2%    → 2分
Enter fullscreen mode Exit fullscreen mode

权重:15%

重要性

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

13.2 风险指标(30% 权重)

控制风险是长期盈利的关键。

1. 最大回撤(Max Drawdown)

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

评分标准

优秀:< 5%      → 10分
良好:5-10%     → 8分
及格:10-15%    → 6分
较差:15-20%    → 4分
危险:> 20%     → 0分
Enter fullscreen mode Exit fullscreen mode

权重:15%

为什么重要?

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

2. Sharpe Ratio

定义:风险调整后的收益率。

评分标准

优秀:> 3.0     → 10分
良好:2.0-3.0   → 8分
及格:1.0-2.0   → 6分
较差:0.5-1.0   → 4分
很差:< 0.5     → 2分
负值:< 0       → 0分
Enter fullscreen mode Exit fullscreen mode

权重:10%

3. Calmar Ratio

定义:年化收益 / 最大回撤。

计算公式

Calmar Ratio = 年化收益率 / |最大回撤|
Enter fullscreen mode Exit fullscreen mode

示例

策略 A:年化收益 60%,回撤 10%
Calmar = 60 / 10 = 6.0 ✅ 优秀

策略 B:年化收益 80%,回撤 25%
Calmar = 80 / 25 = 3.2 ⚠️ 一般
Enter fullscreen mode Exit fullscreen mode

评分标准

优秀:> 5.0     → 10分
良好:3.0-5.0   → 8分
及格:2.0-3.0   → 6分
较差:1.0-2.0   → 4分
很差:< 1.0     → 2分
Enter fullscreen mode Exit fullscreen mode

权重:5%


13.3 稳定性指标(20% 权重)

稳定性决定了策略能否长期持续盈利。

1. 胜率(Win Rate)

定义:盈利交易占总交易的百分比。

评分标准

优秀:> 80%     → 10分
良好:70-80%    → 8分
及格:60-70%    → 6分
较差:50-60%    → 4分
很差:< 50%     → 2分
Enter fullscreen mode Exit fullscreen mode

权重:8%

注意

  • 胜率不是越高越好
  • 需要结合盈亏比综合判断
  • 40% 胜率 + 3:1 盈亏比 > 80% 胜率 + 1:1 盈亏比

2. 盈亏比(Profit Factor)

定义:总盈利 / 总亏损。

计算公式

Profit Factor = 总盈利金额 / |总亏损金额|
Enter fullscreen mode Exit fullscreen mode

示例

总盈利:$1,200
总亏损:$400
Profit Factor = 1,200 / 400 = 3.0
Enter fullscreen mode Exit fullscreen mode

评分标准

优秀:> 2.5     → 10分
良好:2.0-2.5   → 8分
及格:1.5-2.0   → 6分
较差:1.2-1.5   → 4分
很差:< 1.2     → 2分
亏损:< 1.0     → 0分
Enter fullscreen mode Exit fullscreen mode

权重:7%

3. 收益标准差(Consistency)

定义:各季度收益的波动程度。

计算方法

# 假设 4 个季度的收益
returns = [8%, 12%, 9%, 11%]
std_dev = np.std(returns) = 1.58%

# 标准差越小,越稳定
Enter fullscreen mode Exit fullscreen mode

评分标准

优秀:< 3%      → 10分
良好:3-5%      → 8分
及格:5-8%      → 6分
较差:8-12%     → 4分
很差:> 12%     → 2分
Enter fullscreen mode Exit fullscreen mode

权重:5%


13.4 实用性指标(10% 权重)

实用性决定了策略是否适合实盘交易。

1. 交易频率(Trade Frequency)

评分标准(30天回测):

理想:20-60次  → 10分
可接受:10-20次 → 8分
偏少:5-10次   → 6分
太少:< 5次    → 4分
太多:> 100次  → 4分
超高频:> 150次 → 2分
Enter fullscreen mode Exit fullscreen mode

权重:4%

理由

  • 太少:样本不足,不可信
  • 太多:手续费侵蚀利润,过度交易

2. 持仓时间(Avg Holding Time)

评分标准

理想:2-24小时  → 10分
可接受:1-2小时 → 8分
极短:< 1小时   → 6分(高频风险)
超长:> 48小时  → 6分(隔夜风险)
Enter fullscreen mode Exit fullscreen mode

权重:3%

3. 样本外表现(Out-of-Sample Performance)

定义:测试期表现 / 训练期表现。

评分标准

优秀:> 90%     → 10分
良好:75-90%    → 8分
及格:60-75%    → 6分
较差:40-60%    → 4分
过拟合:< 40%   → 0分
Enter fullscreen mode Exit fullscreen mode

权重:3%

计算示例

训练期收益:20%
测试期收益:17%
样本外得分 = 17 / 20 = 85% → 8分
Enter fullscreen mode Exit fullscreen mode

13.5 综合评分系统

评分公式

总分 = (
    # 收益指标(40%)
    总收益评分 × 0.15 +
    年化收益评分 × 0.10 +
    平均收益评分 × 0.15 +

    # 风险指标(30%)
    最大回撤评分 × 0.15 +
    Sharpe评分 × 0.10 +
    Calmar评分 × 0.05 +

    # 稳定性指标(20%)
    胜率评分 × 0.08 +
    盈亏比评分 × 0.07 +
    收益标准差评分 × 0.05 +

    # 实用性指标(10%)
    交易频率评分 × 0.04 +
    持仓时间评分 × 0.03 +
    样本外表现评分 × 0.03
)
Enter fullscreen mode Exit fullscreen mode

策略评分卡模板

指标类别 指标 实际值 单项得分 权重 加权得分
收益 总收益% 18% 10 15% 1.50
年化收益% 120% 10 10% 1.00
平均收益% 1.2% 8 15% 1.20
风险 最大回撤% 6% 8 15% 1.20
Sharpe Ratio 2.8 8 10% 0.80
Calmar Ratio 4.5 8 5% 0.40
稳定性 胜率% 78% 8 8% 0.64
盈亏比 2.3 8 7% 0.56
收益标准差 4% 8 5% 0.40
实用性 交易频率 42次 10 4% 0.40
持仓时间 8小时 10 3% 0.30
样本外% 82% 8 3% 0.24
总分 100% 8.64

评级标准

⭐⭐⭐⭐⭐ S级(9.0-10.0):顶级策略,强烈推荐实盘
⭐⭐⭐⭐   A级(8.0-9.0):优秀策略,推荐实盘
⭐⭐⭐     B级(7.0-8.0):良好策略,可以实盘
⭐⭐       C级(6.0-7.0):及格策略,谨慎实盘
⭐         D级(5.0-6.0):较差策略,需要优化
❌         F级(< 5.0):不合格,不推荐使用
Enter fullscreen mode Exit fullscreen mode

实际案例评分

案例 1:MomentumTrendStrategy

指标 得分 加权
总收益 23.5% 10 1.50
年化收益 153% 10 1.00
平均收益 1.52% 10 1.50
最大回撤 3.2% 10 1.50
Sharpe 3.5 10 1.00
Calmar 8.2 10 0.50
胜率 89.7% 10 0.80
盈亏比 2.8 10 0.70
收益标准差 2.5% 10 0.50
交易频率 68次 8 0.32
持仓时间 6小时 10 0.30
样本外 88% 8 0.24
总分 9.36 ⭐⭐⭐⭐⭐

评级:S级 - 顶级策略

评语

  • ✅ 收益出色(23.5%)
  • ✅ 风险极低(回撤 3.2%)
  • ✅ 稳定性优秀(胜率 90%)
  • ✅ 样本外验证良好
  • 💡 强烈推荐实盘

案例 2:Strategy001

指标 得分 加权
总收益 15.3% 10 1.50
年化收益 92% 8 0.80
平均收益 0.85% 6 0.90
最大回撤 6.8% 8 1.20
Sharpe 2.1 8 0.80
Calmar 3.5 8 0.40
胜率 72.4% 8 0.64
盈亏比 1.8 6 0.42
收益标准差 5.5% 6 0.30
交易频率 127次 6 0.24
持仓时间 4小时 10 0.30
样本外 72% 6 0.18
总分 7.68 ⭐⭐⭐

评级:B级 - 良好策略

评语

  • ✅ 收益良好(15.3%)
  • ✅ 风险可控(回撤 6.8%)
  • ⚠️ 交易频率偏高(127次)
  • ⚠️ 样本外表现一般(72%)
  • 💡 可以实盘,但需要密切监控

💡 实践任务

任务 1:制作策略评分卡

选择 3 个策略,为每个策略制作完整的评分卡。

步骤

  1. 回测 3 个策略(30天数据)
  2. 记录所有指标数据
  3. 使用评分公式计算总分
  4. 评定等级

评分表格模板(Excel 或 Google Sheets):

下载评分卡模板(需自行创建)

任务 2:对比不同权重方案

尝试调整权重,观察对排名的影响:

方案 A:收益优先

  • 收益指标:50%
  • 风险指标:20%
  • 稳定性:20%
  • 实用性:10%

方案 B:风险优先

  • 收益指标:25%
  • 风险指标:45%
  • 稳定性:20%
  • 实用性:10%

方案 C:平衡型(推荐)

  • 收益指标:40%
  • 风险指标:30%
  • 稳定性:20%
  • 实用性:10%

对比三种方案下,你的策略排名是否变化?

任务 3:制作策略推荐清单

根据评分结果,制作推荐清单:

# 我的策略推荐清单

## 🥇 S级策略(9.0-10.0分)
1. **MomentumTrendStrategy** - 9.36分
   - 优点:收益高、风险低、稳定性好
   - 缺点:交易频率略高
   - 推荐仓位:30%

## 🥈 A级策略(8.0-9.0分)
(填写你的策略)

## 🥉 B级策略(7.0-8.0分)
(填写你的策略)

## ⚠️ 需要优化的策略
(填写需要改进的策略)
Enter fullscreen mode Exit fullscreen mode

📚 Python 自动化评分脚本

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
策略自动评分工具
"""

import numpy as np

class StrategyScorer:
    def __init__(self):
        self.weights = {
            'total_return': 0.15,
            'annual_return': 0.10,
            'avg_profit': 0.15,
            'max_drawdown': 0.15,
            'sharpe': 0.10,
            'calmar': 0.05,
            'win_rate': 0.08,
            'profit_factor': 0.07,
            'consistency': 0.05,
            'trade_freq': 0.04,
            'holding_time': 0.03,
            'out_of_sample': 0.03
        }

    def score_total_return(self, value):
        """总收益评分"""
        if value > 15: return 10
        if value > 10: return 8
        if value > 5: return 6
        if value > 0: return 4
        return 0

    def score_max_drawdown(self, value):
        """最大回撤评分(负值)"""
        value = abs(value)
        if value < 5: return 10
        if value < 10: return 8
        if value < 15: return 6
        if value < 20: return 4
        return 0

    def score_sharpe(self, value):
        """Sharpe Ratio 评分"""
        if value > 3.0: return 10
        if value > 2.0: return 8
        if value > 1.0: return 6
        if value > 0.5: return 4
        if value > 0: return 2
        return 0

    def score_win_rate(self, value):
        """胜率评分"""
        if value > 80: return 10
        if value > 70: return 8
        if value > 60: return 6
        if value > 50: return 4
        return 2

    def calculate_total_score(self, metrics):
        """计算总分"""
        scores = {
            'total_return': self.score_total_return(metrics['total_return']),
            'max_drawdown': self.score_max_drawdown(metrics['max_drawdown']),
            'sharpe': self.score_sharpe(metrics['sharpe']),
            'win_rate': self.score_win_rate(metrics['win_rate']),
            # 添加其他指标的评分...
        }

        total = 0
        for key, score in scores.items():
            if key in self.weights:
                total += score * self.weights[key]

        return total

    def get_grade(self, score):
        """获取评级"""
        if score >= 9.0: return 'S'
        if score >= 8.0: return 'A'
        if score >= 7.0: return 'B'
        if score >= 6.0: return 'C'
        if score >= 5.0: return 'D'
        return 'F'

# 使用示例
scorer = StrategyScorer()

strategy_metrics = {
    'total_return': 18.5,
    'max_drawdown': -6.2,
    'sharpe': 2.8,
    'win_rate': 75.5,
    # ... 其他指标
}

score = scorer.calculate_total_score(strategy_metrics)
grade = scorer.get_grade(score)

print(f"策略评分: {score:.2f}")
print(f"策略评级: {grade}")
Enter fullscreen mode Exit fullscreen mode

📌 核心要点总结

  1. 多维度评估:不要只看收益,风险和稳定性同样重要
  2. 权重分配:收益 40%、风险 30%、稳定性 20%、实用性 10%
  3. 样本外验证:必须在测试期验证,避免过拟合
  4. 综合评级:9分以上才是顶级策略
  5. 动态调整:根据个人风险偏好调整权重
  6. 持续监控:评分不是一次性的,需要定期重新评估

➡️ 下一课预告

第 14 课:风险管理与资金管理

在下一课中,我们将学习:

  • 仓位管理策略
  • 止损和止盈设置
  • 资金分配方法
  • 风险控制机制

准备工作

  • ✅ 完成至少 3 个策略的评分
  • ✅ 选出 1-2 个高分策略
  • ✅ 准备模拟交易账户

🎯 学习检验标准

  • ✅ 理解策略评分体系的各项指标
  • ✅ 能独立为策略打分和评级
  • ✅ 会根据评分选择合适的策略
  • ✅ 理解不同权重方案的影响

完成这些任务后,你已经具备了科学评估策略的能力!🎯

Top comments (0)