DEV Community

Henry Lin
Henry Lin

Posted on

第 15 课:Freqtrade策略组合与分散

第 15 课:Freqtrade策略组合与分散

⏱ 课时:1.5 小时
🎯 学习目标:学会构建策略组合
📚 难度:⭐⭐⭐ 策略优化


📖 课程概览

"不要把所有鸡蛋放在一个篮子里"——这个投资原则同样适用于量化交易。本课将教你如何构建多策略投资组合,通过策略分散降低风险,提高收益的稳定性。


15.1 为什么要组合策略?

单一策略的风险

案例:只用趋势策略

2025 Q1(牛市):+25% ✅
2025 Q2(震荡市):-8% ❌
2025 Q3(牛市):+18% ✅
2025 Q4(熊市):-12% ❌

年度总收益:+23% -  20% = +19.1%
最大回撤:-12%
收益波动大,体验差
Enter fullscreen mode Exit fullscreen mode

案例:使用策略组合

策略组合:
  - 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%(大幅降低!)
收益更稳定,体验好
Enter fullscreen mode Exit fullscreen mode

组合策略的优势

  1. 降低回撤

    • 单一策略回撤 -12%
    • 组合策略回撤 -3.5%
    • 减少 71% 的回撤!
  2. 平滑收益曲线

    • 单季度不会大起大落
    • 心理压力小
    • 更容易坚持
  3. 适应不同市况

    • 牛市有趋势策略
    • 震荡市有均值回归
    • 熊市有保守策略
  4. 增加交易机会

    • 单一策略信号少时,其他策略补充
    • 提高资金利用率

15.2 策略相关性分析

什么是策略相关性?

定义:两个策略收益的同步程度。

相关性系数

+1.0:完全正相关(同涨同跌)
0.0:无相关
-1.0:完全负相关(此涨彼跌)
Enter fullscreen mode Exit fullscreen mode

相关性对组合的影响

高相关性组合(❌ 不推荐)

策略 A:趋势策略(EMA交叉)
策略 B:趋势策略(MACD)
相关性:0.95

Q1 表现:
  策略 A:+20%
  策略 B:+18%
  组合:+19%

Q2 表现:
  策略 A:-10%
  策略 B:-9%
  组合:-9.5%(未起到分散作用!)
Enter fullscreen mode Exit fullscreen mode

低相关性组合(✅ 推荐)

策略 A:趋势策略
策略 B:均值回归策略
相关性:0.25

Q1 表现:
  策略 A:+20%
  策略 B:+5%
  组合:+12.5%

Q2 表现:
  策略 A:-10%
  策略 B:+15%
  组合:+2.5%(成功对冲!)
Enter fullscreen mode Exit fullscreen mode

如何计算策略相关性

方法 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}")
Enter fullscreen mode Exit fullscreen mode

方法 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]
Enter fullscreen mode Exit fullscreen mode

相关性指导原则

相关性 分散效果 建议
> 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
Enter fullscreen mode Exit fullscreen mode

优点

  • ✅ 简单直接
  • ✅ 无需计算

缺点

  • ❌ 未考虑策略质量差异
  • ❌ 未考虑风险差异

适用:策略表现相近时


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
Enter fullscreen mode Exit fullscreen mode

优点

  • ✅ 表现好的策略获得更多资金
  • ✅ 合理优化整体收益

缺点

  • ⚠️ 评分可能过时
  • ⚠️ 需要定期调整

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%
Enter fullscreen mode Exit fullscreen mode

优点

  • ✅ 风险均衡
  • ✅ 专业化配置

缺点

  • ❌ 计算复杂
  • ❌ 需要波动率数据
  • ❌ 不适合新手

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%)
Enter fullscreen mode Exit fullscreen mode

优点

  • ✅ 平衡收益和风险
  • ✅ 核心资产保护本金
  • ✅ 卫星资产追求超额收益
  • ✅ 允许尝试新策略

适用

  • 有经验的交易者
  • 资金 > $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分)
Enter fullscreen mode Exit fullscreen mode

步骤 2:相关性分析

测试相关性

# 回测所有策略,记录每日/每周收益
freqtrade backtesting -c config.json --strategy MomentumTrendStrategy --timerange 20250101-20250930
freqtrade backtesting -c config.json --strategy MeanReversionStrategy --timerange 20250101-20250930
# ...

# 分析相关性(需要导出数据后用 Python 分析)
Enter fullscreen mode Exit fullscreen mode

相关性矩阵

                 | 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
Enter fullscreen mode Exit fullscreen mode

分析结论

  • ❌ 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
Enter fullscreen mode Exit fullscreen mode

方案 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
Enter fullscreen mode Exit fullscreen mode

方案 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
Enter fullscreen mode Exit fullscreen mode

步骤 4:回测验证组合

单独测试每个策略

freqtrade backtesting -c config_momentum.json --strategy MomentumTrendStrategy --timerange 20250101-20250930
freqtrade backtesting -c config_meanrev.json --strategy MeanReversionStrategy --timerange 20250101-20250930
Enter fullscreen mode Exit fullscreen mode

模拟组合表现

# 计算组合收益
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%介于两者之间
Enter fullscreen mode Exit fullscreen mode

步骤 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%

偏离目标配置!需要再平衡。
Enter fullscreen mode Exit fullscreen mode

再平衡方法

方法 1:定期再平衡(推荐)

频率:每月 1 号
操作:将资金调整回目标比例

示例:
  总资金:$12,000
  目标:A=50%, B=50%

  操作:
    从策略 A 撤出:$6,500 - $6,000 = $500
    投入策略 B:$5,500 + $500 = $6,000
Enter fullscreen mode Exit fullscreen mode

方法 2:阈值再平衡

触发条件:偏离目标 > 10%

示例:
  目标:A=50%, B=50%
  实际:A=55%, B=45%
  偏离:5%(未触发)

  实际:A=62%, B=38%
  偏离:12%(触发再平衡)
Enter fullscreen mode Exit fullscreen mode

方法 3:不再平衡(让利润奔跑)

理念:表现好的策略给更多资金

优点:
  - ✅ 顺势而为
  - ✅ 减少交易成本

缺点:
  - ❌ 风险集中
  - ❌ 可能错过均值回归机会
Enter fullscreen mode Exit fullscreen mode

💡 实践任务

任务 1:构建你的策略组合

根据前面学习的内容,构建你的投资组合:

# 我的策略投资组合

## 总资金
$_______

## 风险偏好
☐ 保守型  ☐ 平衡型  ☐ 激进型

## 策略配置

### 核心资产(____%)
1. ___________ 策略:$_______ (___%)
   - 评分:_____
   - 适用市况:_____

2. ___________ 策略:$_______ (___%)
   - 评分:_____
   - 适用市况:_____

### 成长/卫星资产(____%)
3. ___________ 策略:$_______ (___%)
   - 评分:_____
   - 适用市况:_____

4. ___________ 策略:$_______ (___%)
   - 评分:_____
   - 适用市况:_____

## 预期目标
- 年化收益目标:_____%
- 可接受最大回撤:_____%
- 目标 Sharpe Ratio:_____

## 再平衡计划
- 频率:☐ 每月  ☐ 每季度  ☐ 偏离>10%时
- 下次再平衡日期:_____
Enter fullscreen mode Exit fullscreen mode

任务 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("⭐ 低相关或负相关,理想组合")
Enter fullscreen mode Exit fullscreen mode

任务 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}")
Enter fullscreen mode Exit fullscreen mode

📚 策略组合最佳实践

1. 黄金组合模板

趋势 + 均值回归(最经典)

60% 趋势策略(牛市/熊市表现好)
40% 均值回归策略(震荡市表现好)

相关性:0.2-0.4(理想)
适用:所有市况
风险:中低
推荐度:⭐⭐⭐⭐⭐
Enter fullscreen mode Exit fullscreen mode

趋势 + 突破 + 均值回归(全能型)

40% 趋势策略
30% 突破策略
30% 均值回归策略

相关性:0.3-0.5
适用:所有市况
风险:中
推荐度:⭐⭐⭐⭐
Enter fullscreen mode Exit fullscreen mode

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 个高质量策略,重点配置
Enter fullscreen mode Exit fullscreen mode

错误 2:同类策略组合

❌ 3 个趋势策略组合
结果:相关性高(0.8+),未起到分散作用

✅ 趋势 + 均值回归 + 突破,不同类型组合
Enter fullscreen mode Exit fullscreen mode

错误 3:忽略再平衡

❌ 设置好组合后从不调整
结果:配置漂移,风险失控

✅ 定期再平衡(每月或每季度)
Enter fullscreen mode Exit fullscreen mode

📌 核心要点总结

  1. 策略组合降低风险:回撤可减少 50-70%
  2. 选择低相关性策略:相关性 < 0.5 最佳
  3. 核心-卫星配置:70% 核心 + 30% 卫星
  4. 定期再平衡:每月或偏离 > 10% 时
  5. 策略数量适中:3-5 个最合适
  6. 趋势 + 均值回归:最经典的组合

🎉 第三部分总结

恭喜!你已完成第三部分:策略优化(第 11-15 课)

你学到了

  • ✅ 第 11 课:使用 Hyperopt 优化策略参数
  • ✅ 第 12 课:深入分析不同策略类型
  • ✅ 第 13 课:建立科学的策略评分体系
  • ✅ 第 14 课:掌握风险和资金管理方法
  • ✅ 第 15 课:构建多策略投资组合

下一部分预告
第四部分:实时信号与模拟交易(第 16-20 课)

在第四部分中,你将学习:

  • 第 16 课:实时信号监控
  • 第 17 课:Telegram 通知配置
  • 第 18 课:Web UI 与 API 使用
  • 第 19 课:可视化分析工具
  • 第 20 课:模拟交易验证

准备工作

  • ✅ 完成策略组合设计
  • ✅ 准备进入模拟交易阶段
  • ✅ 确保有稳定的网络环境

🎯 学习检验标准

  • ✅ 理解策略组合的重要性
  • ✅ 会分析策略相关性
  • ✅ 能构建合理的投资组合
  • ✅ 掌握再平衡方法

完成第三部分后,你已经具备了策略优化的完整能力!准备进入实盘前的最后阶段——实时信号监控和模拟交易! 🚀🎊

Top comments (0)