【维克】复合型CTA:趋势+套利的双轮驱动

发布时间:2026/11/6 3:38:12
【维克】复合型CTA:趋势+套利的双轮驱动

"善弈者,通盘无妙手。"

——李昌镐(韩国围棋九段)

真正的高手从不靠一两步神来之笔赢棋,

而是靠整盘棋的"厚"——没有明显的弱点,每一处都稳。

复合型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,本质上是一种"人生哲学"——不把鸡蛋放在一个篮子里,不押注单一的成功路径,而是构建一个"东方不亮西方亮"的系统。

它不追求某一年的爆发,而追求长期的"不翻车"。

在这个市场里,活得久的,从来不是跑得最快的,而是最不容易摔倒的。