4、多策略协同框架:策略分类、协同逻辑与风险预算分配
做市这行干久了,你会发现一个道理:没有哪个单一策略能永远赚钱。我见过太多团队,手里攥着一个好策略就死磕到底,结果市场风格一变,回撤直接把人打懵。说白了,做市不是赌方向,而是靠组合拳吃饭。
今天咱们聊聊多策略协同。这不是什么花架子,而是实打实的生存技能。我个人习惯把策略分成几大类,然后像调鸡尾酒一样,按比例搭配。嗯,这里面的门道,我踩过的坑不少,今天一并倒给你。
4.1 策略分类:三大核心类型
做市策略千千万,但万变不离其宗。我一般把它们归为三类:
- 方向性策略:赌价格涨跌。比如趋势跟踪、均值回归。这类策略收益高,但风险也大。
- 套利策略:吃价差。比如跨期套利、期现套利。收益稳,但容量有限。
- 做市策略:赚买卖价差和返佣。比如订单簿做市、被动挂单。这是我们的基本功,胜率高,但单笔利润薄。
你想想看,如果只靠做市策略,遇到单边行情,库存风险能把你压垮。反过来,如果只做方向性策略,震荡市里来回打脸。所以,协同才是王道。
核心观点:多策略协同不是简单叠加,而是让不同策略在时间、空间、风险上互补。一个策略亏钱时,另一个策略能顶上。
4.2 协同逻辑:它们怎么配合?
我在项目中遇到过最典型的场景:ETF上市首日,波动巨大。做市策略的挂单被频繁吃掉,库存方向完全被动。这时候,如果有一个均值回归策略在反向开仓,就能把库存成本拉回来。
协同逻辑其实就三条:
- 时间错配:短线策略(如做市)负责高频交易,长线策略(如趋势)负责捕捉大波段。两者互不干扰。
- 风险对冲:方向性策略和套利策略天然对冲。比如你持有多头ETF,同时做空股指期货,市场跌了也不怕。
- 资金效率:做市策略占用资金少,但周转快;套利策略占用资金多,但收益稳。两者搭配,资金利用率最高。
举个例子。我记得有一次做沪深300ETF做市,盘中突然出现大单砸盘。做市策略的库存瞬间变成净多头,浮亏很大。但我的套利策略监测到期货贴水扩大,立刻开了反向套利仓。结果呢?做市亏的钱,被套利赚回来了。这就是协同的力量。
避坑指南:我曾经犯过一个错——让两个策略在同一时间、同一方向上加仓。结果市场反转,双重亏损。后来我定了个规矩:任何两个策略的相关性不能超过0.3。超过就砍掉一个。
4.3 风险预算分配:钱怎么分?
这是最核心的部分。很多新手上来就问:「哪个策略最赚钱?」我一般会反问:「你能承受多大回撤?」
风险预算分配,说白了就是给每个策略定一个亏损上限。我个人习惯用「风险平价」的思路:
- 做市策略:分配40%的风险预算。因为它胜率高,回撤小。
- 套利策略:分配35%的风险预算。收益稳,但偶尔有滑点风险。
- 方向性策略:分配25%的风险预算。波动大,但收益弹性高。
当然,这不是死数字。市场波动率变化时,我会动态调整。比如VIX飙升时,我会降低方向性策略的预算,把钱挪给做市策略。
下面这张图,是我自己常用的多策略协同框架。你看一眼就明白了:
你看,这个框架的核心就是分类、协同、分配三步走。每一步都有讲究。
4.4 实战中的动态调整
理论说完了,聊聊实战。我一般每天开盘前做三件事:
- 检查策略相关性:如果两个策略最近一周的收益相关性超过0.5,我会手动降低其中一个的权重。
- 调整风险预算:根据隔夜波动率,重新分配各策略的亏损上限。波动率高了,方向性策略的预算砍一半。
- 设置止损线:每个策略单独设止损,总账户也设止损。哪个先到,哪个先停。
举个例子。有一次市场突然降准,ETF瞬间暴涨2%。我的做市策略库存全是空的,浮亏很大。但方向性策略监测到突破,立刻开了多头。结果呢?做市亏了5万,方向性赚了8万,整体还是赚的。这就是协同的价值。
注意:多策略协同不是万能药。如果市场出现极端行情(比如熔断),所有策略可能同时失效。这时候,唯一的办法就是减仓、减仓、再减仓。别指望策略能救你,仓位管理才是最后的防线。
4.5 代码示例:风险预算分配器
下面是我自己用的一个简化版风险预算分配器。你拿去改改就能用:
class RiskBudgetAllocator:
def __init__(self, total_risk=1000000):
self.total_risk = total_risk
self.budgets = {
'market_making': 0.40,
'arbitrage': 0.35,
'directional': 0.25
}
def adjust_by_volatility(self, vix_level):
"""根据VIX调整预算"""
if vix_level > 30:
self.budgets['directional'] *= 0.5
self.budgets['market_making'] += 0.125
self.budgets['arbitrage'] += 0.125
elif vix_level < 15:
self.budgets['directional'] *= 1.2
self.budgets['market_making'] *= 0.9
self.budgets['arbitrage'] *= 0.9
def get_allocations(self):
"""返回各策略的风险预算"""
return {k: v * self.total_risk for k, v in self.budgets.items()}
# 使用示例
allocator = RiskBudgetAllocator(total_risk=1000000)
allocator.adjust_by_volatility(vix_level=35)
print(allocator.get_allocations())
# 输出:{'market_making': 525000, 'arbitrage': 475000, 'directional': 125000}
这段代码很简单,但核心逻辑都在里面了。你想想看,如果VIX到了35,方向性策略的预算从25万砍到12.5万,是不是安全多了?
个人经验:我建议你把风险预算分配做成自动化脚本,每天开盘前跑一遍。别手动调,人容易受情绪影响。机器不会恐慌,也不会贪婪。
好了,多策略协同框架就聊到这儿。记住一句话:做市不是单打独斗,而是团队作战。把策略分类、协同逻辑、风险预算分配这三件事做好,你的账户曲线会平滑很多。
公众号:蓝海资料掘金营,微信deep3321