第 15 课:Freqtrade策略组合与分散
⏱ 课时:1.5 小时
🎯 学习目标:学会构建策略组合
📚 难度:⭐⭐⭐ 策略优化
📖 课程概览
"不要把所有鸡蛋放在一个篮子里"——这个投资原则同样适用于量化交易。本课将教你如何构建多策略投资组合,通过策略分散降低风险,提高收益的稳定性。
15.1 为什么要组合策略?
单一策略的风险
案例:只用趋势策略
2025 Q1(牛市):+25% ✅
2025 Q2(震荡市):-8% ❌
2025 Q3(牛市):+18% ✅
2025 Q4(熊市):-12% ❌
年度总收益:+23% - 20% = +19.1%
最大回撤:-12%
收益波动大,体验差
案例:使用策略组合
策略组合:
- 50% 趋势策略
- 30% 均值回归策略
- 20% 突破策略
2025 Q1(牛市):
趋势:+25% → 贡献 +12.5%
均值回归:+5% → 贡献 +1.5%
突破:+15% → 贡献 +3%
组合:+17% ✅
2025 Q2(震荡市):
趋势:-8% → 贡献 -4%
均值回归:+18% → 贡献 +5.4%
突破:+2% → 贡献 +0.4%
组合:+1.8% ✅(避免了亏损!)
年度总收益:+20.5%
最大回撤:-3.5%(大幅降低!)
收益更稳定,体验好
组合策略的优势
-
降低回撤
- 单一策略回撤 -12%
- 组合策略回撤 -3.5%
- 减少 71% 的回撤!
-
平滑收益曲线
- 单季度不会大起大落
- 心理压力小
- 更容易坚持
-
适应不同市况
- 牛市有趋势策略
- 震荡市有均值回归
- 熊市有保守策略
-
增加交易机会
- 单一策略信号少时,其他策略补充
- 提高资金利用率
15.2 策略相关性分析
什么是策略相关性?
定义:两个策略收益的同步程度。
相关性系数:
+1.0:完全正相关(同涨同跌)
0.0:无相关
-1.0:完全负相关(此涨彼跌)
相关性对组合的影响
高相关性组合(❌ 不推荐):
策略 A:趋势策略(EMA交叉)
策略 B:趋势策略(MACD)
相关性:0.95
Q1 表现:
策略 A:+20%
策略 B:+18%
组合:+19%
Q2 表现:
策略 A:-10%
策略 B:-9%
组合:-9.5%(未起到分散作用!)
低相关性组合(✅ 推荐):
策略 A:趋势策略
策略 B:均值回归策略
相关性:0.25
Q1 表现:
策略 A:+20%
策略 B:+5%
组合:+12.5%
Q2 表现:
策略 A:-10%
策略 B:+15%
组合:+2.5%(成功对冲!)
如何计算策略相关性
方法 1:季度收益相关性
import numpy as np
from scipy.stats import pearsonr
# 策略 A 和 B 的季度收益
returns_A = [20, -10, 15, -5] # Q1-Q4
returns_B = [5, 15, 8, 12]
# 计算相关性
correlation, p_value = pearsonr(returns_A, returns_B)
print(f"相关性: {correlation:.2f}")
方法 2:每日收益相关性
# 假设有每日收益数据
daily_returns_A = [0.5, -0.3, 1.2, ...] # 90 天
daily_returns_B = [0.2, 0.8, -0.5, ...]
correlation = np.corrcoef(daily_returns_A, daily_returns_B)[0, 1]
相关性指导原则
| 相关性 | 分散效果 | 建议 |
|---|---|---|
| > 0.8 | 很差 | ❌ 避免组合 |
| 0.5-0.8 | 一般 | ⚠️ 谨慎组合 |
| 0.2-0.5 | 良好 | ✅ 推荐组合 |
| -0.2-0.2 | 优秀 | ✅ 理想组合 |
| < -0.2 | 极好 | ⭐ 最佳组合 |
15.3 多策略分配资金
1. 等权重分配(最简单)
原理:每个策略分配相同资金。
配置:
总资金:$10,000
策略数:3
策略 A:$3,333
策略 B:$3,333
策略 C:$3,334
优点:
- ✅ 简单直接
- ✅ 无需计算
缺点:
- ❌ 未考虑策略质量差异
- ❌ 未考虑风险差异
适用:策略表现相近时
2. 按评分分配(推荐)
原理:根据策略评分分配资金。
计算方法:
策略 A:评分 9.0
策略 B:评分 8.0
策略 C:评分 7.0
总分:24.0
策略 A 分配比例 = 9.0 / 24.0 = 37.5%
策略 B 分配比例 = 8.0 / 24.0 = 33.3%
策略 C 分配比例 = 7.0 / 24.0 = 29.2%
总资金 $10,000:
策略 A:$3,750
策略 B:$3,333
策略 C:$2,917
优点:
- ✅ 表现好的策略获得更多资金
- ✅ 合理优化整体收益
缺点:
- ⚠️ 评分可能过时
- ⚠️ 需要定期调整
3. 风险平价分配(高级)
原理:让每个策略贡献相同的风险。
计算方法:
策略 A:波动率 10%,评分 9.0
策略 B:波动率 15%,评分 8.0
策略 C:波动率 20%,评分 7.0
# 风险贡献 = 资金分配 × 波动率
# 目标:使每个策略的风险贡献相等
假设目标组合波动率为 12%
策略 A 分配 = 12% / 10% = 1.2 倍基础仓位
策略 B 分配 = 12% / 15% = 0.8 倍基础仓位
策略 C 分配 = 12% / 20% = 0.6 倍基础仓位
标准化后:
策略 A:46.2%
策略 B:30.8%
策略 C:23.0%
优点:
- ✅ 风险均衡
- ✅ 专业化配置
缺点:
- ❌ 计算复杂
- ❌ 需要波动率数据
- ❌ 不适合新手
4. 核心-卫星配置(实用)
原理:核心资产求稳,卫星资产求高收益。
配置:
总资金:$10,000
核心资产(70%):$7,000
├─ 高分策略 A(S级):$4,000(40%)
└─ 高分策略 B(A级):$3,000(30%)
卫星资产(30%):$3,000
├─ 测试策略 C(B级):$1,500(15%)
├─ 测试策略 D(B级):$1,000(10%)
└─ 实验策略 E(C级):$500(5%)
优点:
- ✅ 平衡收益和风险
- ✅ 核心资产保护本金
- ✅ 卫星资产追求超额收益
- ✅ 允许尝试新策略
适用:
- 有经验的交易者
- 资金 > $10,000
- 想要探索新策略
15.4 策略组合构建实战
步骤 1:选择候选策略
标准:
- ✅ 评分 > 7.0
- ✅ 样本外验证通过
- ✅ 不同策略类型
候选策略池:
1. MomentumTrendStrategy(趋势,S级,9.36分)
2. MeanReversionStrategy(均值回归,A级,8.52分)
3. BreakoutTrendStrategy(突破,A级,8.18分)
4. ADXTrendStrategy(趋势,B级,7.85分)
5. GridTradingStrategy(网格,B级,7.42分)
步骤 2:相关性分析
测试相关性:
# 回测所有策略,记录每日/每周收益
freqtrade backtesting -c config.json --strategy MomentumTrendStrategy --timerange 20250101-20250930
freqtrade backtesting -c config.json --strategy MeanReversionStrategy --timerange 20250101-20250930
# ...
# 分析相关性(需要导出数据后用 Python 分析)
相关性矩阵:
| Momentum | MeanRev | Breakout | ADX | Grid
Momentum | 1.00 | 0.25 | 0.72 | 0.85 | 0.15
MeanReversion | 0.25 | 1.00 | 0.30 | 0.22 | 0.68
Breakout | 0.72 | 0.30 | 1.00 | 0.68 | 0.28
ADX | 0.85 | 0.22 | 0.68 | 1.00 | 0.18
Grid | 0.15 | 0.68 | 0.28 | 0.18 | 1.00
分析结论:
- ❌ Momentum 和 ADX 高度相关(0.85)→ 不要同时选
- ✅ Momentum 和 MeanReversion 低相关(0.25)→ 好组合
- ✅ Momentum 和 Grid 低相关(0.15)→ 好组合
步骤 3:构建投资组合
方案 A:保守型(推荐新手)
总资金:$10,000
核心(80%):
├─ MomentumTrendStrategy:$5,000(50%)
└─ MeanReversionStrategy:$3,000(30%)
测试(20%):
└─ BreakoutTrendStrategy:$2,000(20%)
预期表现:
- 年化收益:60-80%
- 最大回撤:5-8%
- Sharpe Ratio:2.5-3.0
方案 B:平衡型(推荐进阶)
总资金:$10,000
核心(60%):
├─ MomentumTrendStrategy:$3,000(30%)
└─ MeanReversionStrategy:$3,000(30%)
成长(30%):
├─ BreakoutTrendStrategy:$2,000(20%)
└─ ADXTrendStrategy:$1,000(10%)
实验(10%):
└─ GridTradingStrategy:$1,000(10%)
预期表现:
- 年化收益:80-120%
- 最大回撤:8-12%
- Sharpe Ratio:2.0-2.5
方案 C:激进型(经验者)
总资金:$10,000
均衡配置:
├─ MomentumTrendStrategy:$2,500(25%)
├─ MeanReversionStrategy:$2,000(20%)
├─ BreakoutTrendStrategy:$2,000(20%)
├─ ADXTrendStrategy:$1,500(15%)
├─ GridTradingStrategy:$1,500(15%)
└─ 其他策略:$500(5%)
预期表现:
- 年化收益:100-150%
- 最大回撤:12-18%
- Sharpe Ratio:1.5-2.0
步骤 4:回测验证组合
单独测试每个策略:
freqtrade backtesting -c config_momentum.json --strategy MomentumTrendStrategy --timerange 20250101-20250930
freqtrade backtesting -c config_meanrev.json --strategy MeanReversionStrategy --timerange 20250101-20250930
模拟组合表现:
# 计算组合收益
momentum_return = 0.23 # 23%
meanrev_return = 0.15 # 15%
# 50% + 30% 配置
portfolio_return = (0.23 × 0.50) + (0.15 × 0.30) = 0.16 = 16%
# 计算组合回撤(简化)
momentum_drawdown = 0.05 # 5%
meanrev_drawdown = 0.03 # 3%
# 假设不完全同步(相关性 0.25)
portfolio_drawdown ≈ 0.04 = 4%(介于两者之间)
步骤 5:动态再平衡
为什么需要再平衡?
初始配置(2025-01-01):
策略 A:$5,000(50%)
策略 B:$5,000(50%)
3 个月后(2025-03-31):
策略 A:$6,500(增长 30%)→ 占比 54.2%
策略 B:$5,500(增长 10%)→ 占比 45.8%
偏离目标配置!需要再平衡。
再平衡方法:
方法 1:定期再平衡(推荐)
频率:每月 1 号
操作:将资金调整回目标比例
示例:
总资金:$12,000
目标:A=50%, B=50%
操作:
从策略 A 撤出:$6,500 - $6,000 = $500
投入策略 B:$5,500 + $500 = $6,000
方法 2:阈值再平衡
触发条件:偏离目标 > 10%
示例:
目标:A=50%, B=50%
实际:A=55%, B=45%
偏离:5%(未触发)
实际:A=62%, B=38%
偏离:12%(触发再平衡)
方法 3:不再平衡(让利润奔跑)
理念:表现好的策略给更多资金
优点:
- ✅ 顺势而为
- ✅ 减少交易成本
缺点:
- ❌ 风险集中
- ❌ 可能错过均值回归机会
💡 实践任务
任务 1:构建你的策略组合
根据前面学习的内容,构建你的投资组合:
# 我的策略投资组合
## 总资金
$_______
## 风险偏好
☐ 保守型 ☐ 平衡型 ☐ 激进型
## 策略配置
### 核心资产(____%)
1. ___________ 策略:$_______ (___%)
- 评分:_____
- 适用市况:_____
2. ___________ 策略:$_______ (___%)
- 评分:_____
- 适用市况:_____
### 成长/卫星资产(____%)
3. ___________ 策略:$_______ (___%)
- 评分:_____
- 适用市况:_____
4. ___________ 策略:$_______ (___%)
- 评分:_____
- 适用市况:_____
## 预期目标
- 年化收益目标:_____%
- 可接受最大回撤:_____%
- 目标 Sharpe Ratio:_____
## 再平衡计划
- 频率:☐ 每月 ☐ 每季度 ☐ 偏离>10%时
- 下次再平衡日期:_____
任务 2:计算策略相关性
选择 2-3 个策略,回测相同时间段,计算它们的相关性:
# 导出每个策略的每日收益
# 使用 numpy 或 pandas 计算相关性
import numpy as np
strategy1_returns = [...] # 策略 1 的每日收益
strategy2_returns = [...] # 策略 2 的每日收益
correlation = np.corrcoef(strategy1_returns, strategy2_returns)[0, 1]
print(f"相关性: {correlation:.2f}")
# 判断
if correlation > 0.7:
print("⚠️ 高度相关,不适合组合")
elif 0.2 < correlation < 0.7:
print("✅ 适度相关,可以组合")
else:
print("⭐ 低相关或负相关,理想组合")
任务 3:模拟组合回测
计算你的策略组合的预期表现:
# 假设有 3 个策略
strategies = {
'MomentumTrend': {'return': 0.23, 'drawdown': 0.05, 'sharpe': 3.5, 'weight': 0.50},
'MeanReversion': {'return': 0.15, 'drawdown': 0.03, 'sharpe': 2.8, 'weight': 0.30},
'Breakout': {'return': 0.18, 'drawdown': 0.06, 'sharpe': 2.5, 'weight': 0.20}
}
# 计算组合收益(加权平均)
portfolio_return = sum(s['return'] * s['weight'] for s in strategies.values())
print(f"组合预期收益: {portfolio_return:.1%}")
# 计算组合风险(简化,假设相关性 0.3)
portfolio_risk = sum(s['drawdown'] * s['weight'] for s in strategies.values()) * 0.8
print(f"组合预期回撤: {portfolio_risk:.1%}")
# 估算 Sharpe
portfolio_sharpe = sum(s['sharpe'] * s['weight'] for s in strategies.values())
print(f"组合预期 Sharpe: {portfolio_sharpe:.2f}")
📚 策略组合最佳实践
1. 黄金组合模板
趋势 + 均值回归(最经典)
60% 趋势策略(牛市/熊市表现好)
40% 均值回归策略(震荡市表现好)
相关性:0.2-0.4(理想)
适用:所有市况
风险:中低
推荐度:⭐⭐⭐⭐⭐
趋势 + 突破 + 均值回归(全能型)
40% 趋势策略
30% 突破策略
30% 均值回归策略
相关性:0.3-0.5
适用:所有市况
风险:中
推荐度:⭐⭐⭐⭐
2. 策略数量建议
| 账户资金 | 推荐策略数 | 理由 |
|---|---|---|
| < $5,000 | 1-2 个 | 资金太少,分散效果不明显 |
| $5,000-$20,000 | 2-3 个 | 适度分散,易于管理 |
| $20,000-$50,000 | 3-5 个 | 充分分散,风险可控 |
| > $50,000 | 5-10 个 | 专业级分散,建议组合管理 |
3. 常见错误
错误 1:过度分散
❌ 10 个策略,每个 10%
结果:管理复杂,收益被平均化,失去优势
✅ 3-5 个高质量策略,重点配置
错误 2:同类策略组合
❌ 3 个趋势策略组合
结果:相关性高(0.8+),未起到分散作用
✅ 趋势 + 均值回归 + 突破,不同类型组合
错误 3:忽略再平衡
❌ 设置好组合后从不调整
结果:配置漂移,风险失控
✅ 定期再平衡(每月或每季度)
📌 核心要点总结
- 策略组合降低风险:回撤可减少 50-70%
- 选择低相关性策略:相关性 < 0.5 最佳
- 核心-卫星配置:70% 核心 + 30% 卫星
- 定期再平衡:每月或偏离 > 10% 时
- 策略数量适中:3-5 个最合适
- 趋势 + 均值回归:最经典的组合
🎉 第三部分总结
恭喜!你已完成第三部分:策略优化(第 11-15 课)
你学到了:
- ✅ 第 11 课:使用 Hyperopt 优化策略参数
- ✅ 第 12 课:深入分析不同策略类型
- ✅ 第 13 课:建立科学的策略评分体系
- ✅ 第 14 课:掌握风险和资金管理方法
- ✅ 第 15 课:构建多策略投资组合
下一部分预告:
第四部分:实时信号与模拟交易(第 16-20 课)
在第四部分中,你将学习:
- 第 16 课:实时信号监控
- 第 17 课:Telegram 通知配置
- 第 18 课:Web UI 与 API 使用
- 第 19 课:可视化分析工具
- 第 20 课:模拟交易验证
准备工作:
- ✅ 完成策略组合设计
- ✅ 准备进入模拟交易阶段
- ✅ 确保有稳定的网络环境
🎯 学习检验标准:
- ✅ 理解策略组合的重要性
- ✅ 会分析策略相关性
- ✅ 能构建合理的投资组合
- ✅ 掌握再平衡方法
完成第三部分后,你已经具备了策略优化的完整能力!准备进入实盘前的最后阶段——实时信号监控和模拟交易! 🚀🎊
Top comments (0)