第 13 课:策略评分体系
⏱ 课时:1.5 小时
🎯 学习目标:建立科学的策略评估标准
📚 难度:⭐⭐⭐ 策略优化
📖 课程概览
面对众多策略,如何客观评价它们的优劣?本课将教你建立一套科学的策略评分体系,通过量化指标综合评估策略,帮你选出真正优秀的策略。
13.1 收益指标(40% 权重)
收益是策略最直观的表现,但不应是唯一标准。
1. 总收益率(Total Return)
定义:整个回测期间的累计收益。
评分标准(30天回测):
优秀:> 15% → 10分
良好:10-15% → 8分
及格:5-10% → 6分
较差:0-5% → 4分
亏损:< 0% → 0分
权重:15%
计算示例:
# 策略 A:总收益 18%
score = 10 × 0.15 = 1.5分
# 策略 B:总收益 8%
score = 6 × 0.15 = 0.9分
2. 年化收益率(Annualized Return)
定义:将回测收益折算成年化收益。
计算公式:
年化收益率 = (1 + 总收益率) ^ (365 / 回测天数) - 1
示例:
回测30天,收益15%:
年化收益率 = (1.15) ^ (365/30) - 1 = 7.43 = 743%
回测90天,收益15%:
年化收益率 = (1.15) ^ (365/90) - 1 = 0.68 = 68%
评分标准:
优秀:> 100% → 10分
良好:50-100% → 8分
及格:20-50% → 6分
较差:0-20% → 4分
亏损:< 0% → 0分
权重: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分
权重:15%
重要性:
- 比总收益更能反映策略质量
- 高平均收益 = 高效策略
- 需要结合交易次数综合判断
13.2 风险指标(30% 权重)
控制风险是长期盈利的关键。
1. 最大回撤(Max Drawdown)
定义:资金从最高点到最低点的最大跌幅。
评分标准:
优秀:< 5% → 10分
良好:5-10% → 8分
及格:10-15% → 6分
较差:15-20% → 4分
危险:> 20% → 0分
权重:15%
为什么重要?
回撤 10% → 需要上涨 11.1% 才能回本
回撤 20% → 需要上涨 25% 才能回本
回撤 50% → 需要上涨 100% 才能回本
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分
权重:10%
3. Calmar Ratio
定义:年化收益 / 最大回撤。
计算公式:
Calmar Ratio = 年化收益率 / |最大回撤|
示例:
策略 A:年化收益 60%,回撤 10%
Calmar = 60 / 10 = 6.0 ✅ 优秀
策略 B:年化收益 80%,回撤 25%
Calmar = 80 / 25 = 3.2 ⚠️ 一般
评分标准:
优秀:> 5.0 → 10分
良好:3.0-5.0 → 8分
及格:2.0-3.0 → 6分
较差:1.0-2.0 → 4分
很差:< 1.0 → 2分
权重:5%
13.3 稳定性指标(20% 权重)
稳定性决定了策略能否长期持续盈利。
1. 胜率(Win Rate)
定义:盈利交易占总交易的百分比。
评分标准:
优秀:> 80% → 10分
良好:70-80% → 8分
及格:60-70% → 6分
较差:50-60% → 4分
很差:< 50% → 2分
权重:8%
注意:
- 胜率不是越高越好
- 需要结合盈亏比综合判断
- 40% 胜率 + 3:1 盈亏比 > 80% 胜率 + 1:1 盈亏比
2. 盈亏比(Profit Factor)
定义:总盈利 / 总亏损。
计算公式:
Profit Factor = 总盈利金额 / |总亏损金额|
示例:
总盈利:$1,200
总亏损:$400
Profit Factor = 1,200 / 400 = 3.0
评分标准:
优秀:> 2.5 → 10分
良好:2.0-2.5 → 8分
及格:1.5-2.0 → 6分
较差:1.2-1.5 → 4分
很差:< 1.2 → 2分
亏损:< 1.0 → 0分
权重:7%
3. 收益标准差(Consistency)
定义:各季度收益的波动程度。
计算方法:
# 假设 4 个季度的收益
returns = [8%, 12%, 9%, 11%]
std_dev = np.std(returns) = 1.58%
# 标准差越小,越稳定
评分标准:
优秀:< 3% → 10分
良好:3-5% → 8分
及格:5-8% → 6分
较差:8-12% → 4分
很差:> 12% → 2分
权重:5%
13.4 实用性指标(10% 权重)
实用性决定了策略是否适合实盘交易。
1. 交易频率(Trade Frequency)
评分标准(30天回测):
理想:20-60次 → 10分
可接受:10-20次 → 8分
偏少:5-10次 → 6分
太少:< 5次 → 4分
太多:> 100次 → 4分
超高频:> 150次 → 2分
权重:4%
理由:
- 太少:样本不足,不可信
- 太多:手续费侵蚀利润,过度交易
2. 持仓时间(Avg Holding Time)
评分标准:
理想:2-24小时 → 10分
可接受:1-2小时 → 8分
极短:< 1小时 → 6分(高频风险)
超长:> 48小时 → 6分(隔夜风险)
权重:3%
3. 样本外表现(Out-of-Sample Performance)
定义:测试期表现 / 训练期表现。
评分标准:
优秀:> 90% → 10分
良好:75-90% → 8分
及格:60-75% → 6分
较差:40-60% → 4分
过拟合:< 40% → 0分
权重:3%
计算示例:
训练期收益:20%
测试期收益:17%
样本外得分 = 17 / 20 = 85% → 8分
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
)
策略评分卡模板
指标类别 | 指标 | 实际值 | 单项得分 | 权重 | 加权得分 |
---|---|---|---|---|---|
收益 | 总收益% | 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):不合格,不推荐使用
实际案例评分
案例 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 个策略,为每个策略制作完整的评分卡。
步骤:
- 回测 3 个策略(30天数据)
- 记录所有指标数据
- 使用评分公式计算总分
- 评定等级
评分表格模板(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分)
(填写你的策略)
## ⚠️ 需要优化的策略
(填写需要改进的策略)
📚 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}级")
📌 核心要点总结
- 多维度评估:不要只看收益,风险和稳定性同样重要
- 权重分配:收益 40%、风险 30%、稳定性 20%、实用性 10%
- 样本外验证:必须在测试期验证,避免过拟合
- 综合评级:9分以上才是顶级策略
- 动态调整:根据个人风险偏好调整权重
- 持续监控:评分不是一次性的,需要定期重新评估
➡️ 下一课预告
第 14 课:风险管理与资金管理
在下一课中,我们将学习:
- 仓位管理策略
- 止损和止盈设置
- 资金分配方法
- 风险控制机制
准备工作:
- ✅ 完成至少 3 个策略的评分
- ✅ 选出 1-2 个高分策略
- ✅ 准备模拟交易账户
🎯 学习检验标准:
- ✅ 理解策略评分体系的各项指标
- ✅ 能独立为策略打分和评级
- ✅ 会根据评分选择合适的策略
- ✅ 理解不同权重方案的影响
完成这些任务后,你已经具备了科学评估策略的能力!🎯
Top comments (0)