"善弈者,通盘无妙手。"
——李昌镐(韩国围棋九段)
真正的高手从不靠一两步神来之笔赢棋,
而是靠整盘棋的"厚"——没有明显的弱点,每一处都稳。
复合型CTA的全部智慧就在这句话里:
不追求某个策略的极致,而追求整个组合的"没有短板"。
那个"单腿走路"的产品
2021年,我研究过两只CTA产品,业绩对比让我印象很深。
A产品:纯趋势跟踪。2020年大牛市,赚了45%,全市场排名前列。2021年市场进入震荡,回撤了25%,投资人骂声一片。
B产品:趋势+套利复合。2020年赚了28%,排名中游。2021年震荡市,回撤只有8%,全年还是正收益。两年下来,B产品的累计收益反而超过了A。
A的基金经理跟我吐槽:"我这策略,牛市是英雄,震荡市是狗熊。"
B的基金经理说了句让我记到现在的话:"我不追求当英雄,我只追求不翻车。"
这句话,点破了复合型CTA的核心逻辑——它不赌单一策略的极致表现,而是靠两个互补的策略,让组合在任何环境下都能"活得下去"。
今天这篇,我就把复合型CTA讲透。讲清楚它的设计思路、仓位怎么分、为什么它能平滑资金曲线、以及——怎么监控和动态调整。
Why:为什么单一策略注定"瘸腿"?
一、没有一种策略能通吃所有市场
这是最朴素的道理,也是最容易被忽略的。
•趋势策略:趋势市赚钱,震荡市亏钱。
•均值回归/套利策略:震荡市赚钱,趋势市亏钱。
市场永远在"趋势"和"震荡"之间切换。你只用一种策略,就注定有一半的时间在"挨打"。
更残酷的是:你永远不知道下一段行情是趋势还是震荡。所以,押注单一策略,本质上是在赌"下一段行情适合我"。
二、复合的意义:用"负相关"对冲
复合型CTA的核心,是找到两个收益负相关的策略,组合起来。
•趋势赚钱的时候,套利可能小亏(但亏得少)。
•套利赚钱的时候,趋势可能小亏(但亏得少)。
两条曲线叠加,结果就是:整体波动变小,回撤变浅,夏普比率提高。
注意,复合不是为了提高收益上限,而是为了降低波动和回撤。它牺牲了一点点"极端行情下的爆发力",换来了"全环境的稳定性"。
三、夏普比率:复合策略真正的KPI
很多人评价策略只看"年化收益"。但对复合型CTA来说,真正的KPI是夏普比率。
夏普比率 = (年化收益 - 无风险利率) / 年化波动率。
它衡量的是"每承担一单位风险,能换来多少收益"。
举个例子:
•策略A:年化20%,波动20%,夏普≈1.0。
•策略B:年化15%,波动8%,夏普≈1.8。
表面看A赚得多,但B的"性价比"高得多。而且,B可以用杠杆放大到和A一样的收益,同时波动还比A低。
这就是复合策略的价值:它提高了"资金的使用效率"。
What:复合型CTA是怎么设计的?
一、双轮驱动的分工
复合型CTA,通常由两个"轮子"组成:
轮子一:趋势策略——提供"方向暴露"
趋势策略负责在市场出现大级别行情时,抓住方向,赚取"趋势的钱"。它是组合的"进攻端"。
轮子二:套利策略——提供"收益增强"
套利策略负责在市场震荡时,通过价差回归赚取"稳定的钱"。它是组合的"防守端"。
两者分工明确:趋势管"大行情",套利管"日常收益"。
二、仓位分配:60/40 是常见起点
仓位怎么分?没有标准答案,但有一个常见的起点:趋势60%、套利40%。
为什么是这个比例?因为:
•趋势策略的波动大、回撤深,需要给它"足够的空间"去捕捉大行情,但不能给太多(否则回撤失控)。
•套利策略的波动小、收益稳,给40%就能起到"稳定器"的作用。
但这只是起点。真实的仓位分配,要看两个策略的波动率和相关性。通常的做法是:按风险贡献来分配,让两个策略对组合的风险贡献大致相等(第115篇讲过的"波动率倒数"思路)。
三、复合策略的三大优势
优势一:平滑资金曲线
这是最直观的。趋势策略的曲线是"横盘+暴涨",套利策略的曲线是"稳步向上"。叠加后,曲线的"毛刺"被磨平了。
优势二:提高夏普比率
因为波动降低了,而收益没降太多,夏普自然提高。
优势三:降低"择时依赖"
单一策略需要你判断"现在是趋势市还是震荡市"。复合策略不需要——无论什么市,总有一个轮子在转。
四、复合策略的"代价"
天下没有免费的午餐。复合也有代价:
•收益上限被摊薄:极端趋势行情下,复合策略的收益不如纯趋势策略。
•管理复杂度提高:要同时维护两套策略,监控两套信号。
•相关性可能失效:极端行情下,两个策略可能同时亏损(比如流动性危机时,趋势和套利一起亏)。
How:复合型CTA怎么落地?
一、第一步:确定两个策略的"性格"
在设计复合之前,你要先搞清楚两个策略各自的:
•年化收益
•年化波动率
•最大回撤
•和对方的相关系数
这些数据,来自各自的历史回测。相关系数是关键——如果两个策略相关性很高(比如都是趋势类),那复合就没意义了。
二、第二步:按风险贡献分配仓位
不要简单地按"60/40"分资金,而要按"风险贡献"分。核心思路:让两个策略对组合波动的贡献相等。
具体做法:仓位权重 ∝ 1 / 策略波动率。波动大的策略少配,波动小的多配。
三、用代码实现"风险平价"的复合配置
下面这段代码,实现一个"按风险贡献分配"的复合CTA框架。每一行都有注释。
// python
# ============================================
# 复合CTA:风险平价仓位分配
# 功能:按两个策略的波动率倒数分配权重,
# 并计算组合的收益、波动、夏普
# ============================================
import numpy as np
# 第一步:模拟两个策略的日收益(实际中替换为真实回测数据)
np.random.seed(23)
n = 500
# 趋势策略:波动大,和"市场趋势"相关
trend_ret = np.random.normal(0.0006, 0.018, n)
# 套利策略:波动小,相对独立
arb_ret = np.random.normal(0.0004, 0.006, n)
# 人为制造一点负相关(真实中两者通常低相关或负相关)
arb_ret = arb_ret - 0.15 * (trend_ret - trend_ret.mean())
# 第二步:计算各自的年化波动率
ann = np.sqrt(250) # 年化因子(一年约250个交易日)
vol_trend = np.std(trend_ret) * ann
vol_arb = np.std(arb_ret) * ann
# 第三步:按波动率倒数分配权重(风险平价)
inv_trend = 1.0 / vol_trend
inv_arb = 1.0 / vol_arb
w_trend = inv_trend / (inv_trend + inv_arb)
w_arb = inv_arb / (inv_trend + inv_arb)
# 第四步:计算组合收益
port_ret = w_trend * trend_ret + w_arb * arb_ret
# 第五步:计算关键指标
def sharpe(r, rf=0.02):
"""计算夏普比率:年化超额收益 / 年化波动"""
excess = np.mean(r) * 250 - rf # 年化超额收益
vol = np.std(r) * ann # 年化波动
return excess / vol if vol > 0 else 0
def max_drawdown(r):
"""计算最大回撤"""
eq = np.cumprod(1 + r) # 资金曲线
peak = np.maximum.accumulate(eq) # 历史最高
return ((eq - peak) / peak).min() # 最大回撤(负值)
# 第六步:输出对比
print("=" * 60)
print("【复合CTA vs 单一策略】")
print("=" * 60)
for name, r in [("纯趋势", trend_ret), ("纯套利", arb_ret), ("复合组合", port_ret)]:
print(f"\n{name}:")
print(f" 年化收益:{np.mean(r)*250:.1%}")
print(f" 年化波动:{np.std(r)*ann:.1%}")
print(f" 夏普比率:{sharpe(r):.2f}")
print(f" 最大回撤:{max_drawdown(r):.1%}")
print(f"\n权重分配:趋势{w_trend:.1%} / 套利{w_arb:.1%}")
print("注意:复合后波动和回撤通常低于纯趋势,夏普更高。")
逐行讲解:
•第1步:模拟两个策略的收益。趋势策略波动0.018,套利策略波动0.006——套利明显更"稳"。我还人为让套利收益和趋势收益负相关(-0.15 * (trend - mean)),模拟真实中的互补关系。
•第2步:算年化波动。np.std × sqrt(250),因为一年约250个交易日。
•第3步:风险平价的核心——权重 = (1/波动率) / 所有(1/波动率)之和。波动大的趋势策略,权重会自动变低。
•第4步:组合收益 = 加权平均。
•第5步:定义两个函数。sharpe算夏普,max_drawdown算最大回撤。np.maximum.accumulate是关键,它记录"到目前为止的最高净值"。
•第6步:输出三者对比。你会看到:复合组合的波动和回撤,明显低于纯趋势,夏普最高。
注意:真实使用中,trend_ret和arb_ret要换成你真实的回测数据。这段代码的框架可以直接复用。
四、第三步:监控表现占比,动态调整
复合策略上线后,不是一劳永逸的。你要持续监控两个问题:
问题一:两个策略的实际表现,是不是偏离了预期?
比如,趋势策略连续6个月不赚钱,说明市场可能进入了长期震荡,趋势策略"失灵"了。这时候要降低它的权重。
问题二:两个策略的相关性,是不是变高了?
原本负相关的两个策略,如果相关性突然变成正相关(比如极端行情下一起亏),那"对冲"就失效了。这时候要警惕。
动态调整的原则:
•定期再平衡:比如每月或每季度,重新计算权重,调回目标比例。
•阈值触发:某个策略回撤超过阈值,主动降权。
•不要过度频繁:调整太频繁,会被交易成本吃掉收益。
案例复盘:2022年的"双轮"是怎么扛住的
2022年,是复合CTA最好的"广告年"。
那一年,A股大跌、美股大跌、债券也跌(美联储激进加息)。纯股票多头几乎全线亏损。但很多复合CTA产品,那一年是正收益。为什么?
趋势轮在发力。2022年商品市场大趋势明显——原油因俄乌冲突暴涨、下半年回落,工业品整体下行。趋势策略在原油、螺纹钢上捕捉到了大级别趋势,赚到了钱。
套利轮在补位。当趋势策略在某些品种上"打脸"时(比如来回震荡的农产品),套利策略通过跨期、跨品种的价差回归,提供了稳定的收益。
关键是"负相关"发挥了作用。趋势策略某个月亏钱的时候,套利策略往往在赚钱(因为市场震荡时,价差机会反而更多)。两条曲线一叠加,整体回撤被压得很低。
做个对比:同年纯趋势CTA的最大回撤普遍在20%以上,而复合CTA的回撤大多在10%以内。这就是"双轮"的真正价值——不是让你赚更多,而是让你亏更少。
五、复合型CTA的"心法"
最后说三个心法:
心法一:复合是为了"稳",不是为了"猛"。
别指望复合策略在牛市里跑赢纯趋势。它的价值在熊市和震荡市——那时候,它比谁都稳。
心法二:两个轮子必须"真互补"。
如果你找的两个策略相关性0.8,那复合就是自欺欺人。一定要找低相关甚至负相关的。
心法三:动态调整要有"纪律",不能"追涨杀跌"。
很多人看到趋势策略最近表现好,就加仓趋势——结果刚好加在趋势末尾。调整要基于长期逻辑,不是短期业绩。
总结
我们把复合型CTA捋了一遍。
为什么要复合?因为没有一种策略能通吃所有市场。单一策略注定有一半时间在挨打。复合用"负相关"对冲,让组合在任何环境下都能活。
它是什么?趋势策略(提供方向暴露)+ 套利策略(提供收益增强)的双轮驱动。常见仓位60/40,但更科学的做法是"按风险贡献分配"。
该怎么做?先确定两个策略的性格(收益/波动/相关性)→ 按波动率倒数分配权重 → 监控表现占比和相关性的变化 → 定期再平衡。核心KPI是夏普比率,不是年化收益。
最后送你一句话。
复合型CTA,本质上是一种"人生哲学"——不把鸡蛋放在一个篮子里,不押注单一的成功路径,而是构建一个"东方不亮西方亮"的系统。
它不追求某一年的爆发,而追求长期的"不翻车"。
在这个市场里,活得久的,从来不是跑得最快的,而是最不容易摔倒的。