资讯动态

期货量化多策略组合实战:从策略池搭建到资金风控

发布时间:2026/9/11 21:00:13 来源:尧图企业网站定制
做期货量化这几年我越来越觉得“多策略组合”不是锦上添花而是活下去的必备手段。尤其当市场进入低波动、政策扰动频繁、品种分化严重的阶段单一策略的持仓体验会非常差——净值像心电图回撤动辄百分之二三十心态很容易崩。2026年的期货市场程序化交易占比进一步提升手续费和保证金规则也在变靠一个策略吃遍所有行情的日子早就过去了。我这次梳理的这套多策略组合方案核心就两个词分散风险、平滑收益。不是追求某一年的爆发而是让净值曲线在多数市场环境下都走得稳。这篇文章适合正在做期货量化、或者准备从单策略转向组合管理的朋友。如果你已经能写出基础的策略代码但对资金分配、策略相关性、组合风控还比较模糊那这篇内容可以直接拿来参考。我会把整体设计思路、策略池怎么搭、资金怎么分、风控怎么做、代码框架怎么落地以及我踩过的坑一次性讲清楚。1. 方案设计思路为什么要做多策略组合而不是把单策略做到极致1.1 单策略天然存在收益天花板和回撤瓶颈很多人刚接触量化时都幻想找到一个“圣杯策略”——参数稳定、夏普高、回撤小。我在早期也这么想过但实盘几年下来的结论是单策略的收益天花板非常明显而且这个天花板不是策略本身的问题是市场结构决定的。一个趋势跟踪策略在流畅的单边行情里表现极好但震荡市里会被反复打脸。一个均值回归策略在震荡市里如鱼得水一旦趋势启动就不断止损。一个套利策略胜率很高但单笔利润很薄遇到价差极端扭曲时还可能面临尾部风险。你把任何一个策略的参数优化到极致它依然只在适合它的那部分行情里赚钱其他时间就是在回撤和等待。我自己做过一个统计同样一笔资金单跑一个中频趋势策略年化收益可能做到30%左右但最大回撤也差不多要25%而把趋势、套利、日内截断三类策略组合在一起年化收益未必能翻倍但最大回撤往往能压到10%到12%以内。这个性价比的差异才是多策略组合真正的价值。1.2 多策略的核心不是“数量多”而是“低相关”这里要澄清一个常见误区多策略组合不是你把十套趋势策略叠在一起就叫分散。如果十套策略都在同一天做多螺纹钢、同一天平仓那本质上还是一套策略只不过换了几种参数写法遇到不利行情时一起亏风险一点没降。真正的多策略组合核心是寻找“低相关”的收益来源。说得直白一点A策略在亏钱的时候B策略最好在赚钱或者至少是持平的。这样组合净值才不会出现多策略同时大幅回撤的局面。策略之间的相关性越低组合的波动率就越低资金曲线就越平滑持有体验自然就好很多。我用一个生活化的类比来解释这件事你请客吃饭单独点一个重口味的川菜好吃但容易腻单独点一个清淡的粤菜舒服但不够刺激。你把两道菜一起端上桌客人可以根据口味自选整体满意度反而更高。策略组合也是一样的道理不同类型的收益来源互相搭配才能适应更多样的市场口味。1.3 2026年市场环境下组合思维的必要性为什么特别强调2026年因为从近两三年的市场情况看有几个趋势非常明显。一是程序化交易参与者越来越多很多经典策略的容量在变小信号拥挤度在上升单策略的超额收益被摊薄。二是宏观和政策因素对期货品种的影响权重在加大某个品种突然被政策“点名”后波动结构会瞬间变化单品种策略容易踩雷。三是品种间的分化越来越明显黑色、有色、农产品、能化各有各的节奏用一套策略去套所有品种本身就不现实。在这种环境下多策略组合更像是一个“分散下注、动态调整”的系统。它不会押注某一个品种、某一个方向、某一种行情类型而是通过多品种、多周期、多逻辑的覆盖让整个组合在不确定性中依然保持相对稳定的表现。这也是我这套方案在2026年依然值得参考的核心原因。2. 策略池构建三类低相关性策略的搭配思路2.1 趋势跟踪策略组合的“进攻主力”趋势跟踪是多策略组合里最常见的底仓策略原因很简单期货市场的趋势行情虽然不常出现但一旦出现往往是幅度大、持续久的大机会。趋势策略的盈亏比天然就高靠的是“截断亏损、让利润奔跑”。我常用的趋势策略有两类一类是双均线系统适合把握中长线趋势另一类是通道突破系统比如唐奇安通道或ATR通道突破对趋势启动的捕捉更敏感。在品种选择上我会优先选流动性好、趋势性强的品种比如螺纹钢、铁矿石、PTA、豆粕这类持仓周期通常在5到15天。趋势策略的缺点也很明显震荡市里胜率会降到30%左右连续十几次小止损很正常。所以趋势策略必须配合严格止损和仓位控制来使用这也决定了它需要和其他类型的策略搭配否则单看它的资金曲线大多数人是拿不住的。2.2 统计套利策略组合的“减震器”如果说趋势策略是进攻那套利策略就是防守。套利策略的核心逻辑是“价差回归”——两个相关性很高的品种或者同一品种的不同月份合约价格差偏离正常范围后最终大概率会回归均值。它赚的是价差回归的钱和涨跌方向关系不大所以和趋势策略的相关性天然比较低。我常用的套利逻辑有两种跨期套利和跨品种对冲。跨期套利做的是同一品种不同月份合约的价差比如螺纹钢1月和5月合约跨品种对冲做的是产业链上下游品种的价差比如螺纹钢和热卷、豆粕和豆油、焦煤和焦炭。套利策略的最大好处是回撤小、胜率高但单笔利润也比较薄。它的作用是给整个组合提供一条相对平稳的收益线对冲掉趋势策略在震荡期的回撤。不过要注意套利策略也有极端风险2021年前后部分品种的价差走势就出现过历史级别的偏离所以套利的止损逻辑同样不能省。2.3 日内截断策略组合的“收益增强器”日内策略的特点是从进场到出场都在一天内完成不持仓过夜彻底规避隔夜跳空风险。它们赚的是日内波动或者日内趋势的钱和隔夜的趋势策略、持有一段时间的套利策略在持仓周期上天然错开相关性也比较低。我做日内策略时用得比较多的是日内动量突破和日内均值回归。前者是突破日内高低点后顺势进场后者是价格偏离日内均价过远后反向做回归。日内策略对流动性和交易成本很敏感所以一般只做螺纹钢、PTA、甲醇、豆粕这些成交活跃、点差小的品种。日内策略的问题是交易频率高、手续费和滑点成本占比大。我的经验是日内策略必须把交易成本算进回测里否则实盘和回测的差距会大得离谱。它在组合里承担的更多是“平滑收益、增厚利润”的角色而不是单独扛起收益的大旗。2.4 策略相关性检验组合搭建前必须做的一步很多人在组合策略时犯的最大的错误就是不看相关性凭感觉把几个策略堆在一起。我在搭建策略池之后都会做一道很关键的工序计算策略两两之间的收益率相关系数。具体做法其实不复杂把每个策略的历史每日收益率序列都导出来然后计算相关系数矩阵。两个策略相关系数高于0.7基本可以认为是同一种风格的重复低于0.5才具备比较好的分散效果。如果两个趋势策略都做同品种同周期相关系数往往会冲到0.9以上这种时候就应该果断剔除其中一个而不是两个都留在组合里。在实际操作中我会把相关性矩阵做成一张表每季度更新一次。这样能及时发现策略之间是否出现了“相关性上升”的苗头及时做调整避免在极端行情中所有策略同时亏损。3. 资金分配与组合风控分散风险的核心环节3.1 风险预算法按风险分配资金而不是按收益分配策略选好之后最关键的问题就是每个策略分多少钱我见过很多人在这一步犯错误——哪个策略历史收益高就给谁多分钱结果重仓的那个策略恰好在一段行情里连续回撤整个组合跟着遭殃。我采用的方法是风险预算法也叫波动率目标法。核心思想是每个策略分配到的资金量由它的风险水平决定而不是由历史收益决定。具体的做法是先确定每个策略的目标风险预算占比再根据策略当前的波动率反推实际分配资金。举个例子假设组合总资金100万目标年化波动率15%三个策略的风险预算分别是趋势50%、套利30%、日内20%。如果趋势策略当前年化波动率是20%那它的目标资金占比就不是简单的50%而是50%乘以组合目标波动率再除以策略波动率的比例关系来调整。这样做的效果是高波动的策略自动收敛仓位低波动的策略可以拿到更多资金整个组合的风险水平相对均衡。3.2 头寸计算公式把风险预算换算成实际手数风险预算确定之后还需要把资金预算换算成每个品种的具体手数。我常用的公式是手数 该策略分配资金 × 该策略允许的最大亏损比例 /ATR × 合约乘数其中ATR是平均真实波幅用来衡量当前品种的波动水平。举个例子如果某策略在产品螺纹钢上分配了20万资金设定单笔最大亏损为账户的0.5%也就是5000元螺纹钢当前ATR是80点合约乘数是10那么手数 5000 /80 × 10 6.25手取整就是6手。这个公式的好处是它把仓位和波动直接挂钩。行情波动大的时候ATR上升手数自动减少行情平稳的时候ATR下降手数自动增加。这比固定手数在风控上科学得多可以避免在波动剧烈时仓位过重、单笔亏损过大。3.3 三层止损与组合熔断机制止损是量化交易里最容易被低估的部分。很多策略策略赚钱但一次意外就把几个月利润全部回吐。我在组合层面设计了三个层级的止损和熔断机制。第一层是策略级止损每个策略内部设定最大回撤阈值。比如趋势策略回撤达到账户净值的8%就暂停该策略等它修复之后再重新启用。第二层是组合级熔断整个组合的累计回撤达到15%时所有策略降半仓运行回撤继续扩大到20%则全部暂停只保留套利策略的轻仓运行。第三层是品种级限制单一品种的总持仓市值不超过组合总资金的30%防止某个品种出现过大的集中度风险。这些阈值不是固定的需要根据策略的历史最大回撤来设定。原则是“止损线要留出正常波动的空间但不能突破历史极端情形下你能承受的底线”。定得太窄容易频繁触发定得太宽又起不到保护作用。3.4 组合再平衡定期检查策略权重与相关性策略组合不是搭好之后就一劳永逸的。市场在变策略的表现也在变原来的合理配置可能半年后就失效了。我一般每个月做一次组合体检每季度做一次正式的再平衡。月度体检主要看三件事各策略的当前波动率有没有异常变化、策略间相关性有没有显著上升、有没有触犯熔断或风控阈值。季度再平衡会做一次完整的权重调整把表现过热、波动过大的策略仓位降下来把波动平稳、相关性低的策略仓位提上去。这里有一个需要特别注意的地方再平衡不是“哪个策略最近赚钱就加仓”。量化组合管理的目标永远是把组合的波动控制在一定范围内而不是追逐短期收益。过热的策略往往意味着波动也在放大盲目追高反而破坏了组合的风险结构。4. 核心代码与系统框架从策略信号到组合管理4.1 用Python实现策略信号的生成现在做期货量化绕不开Python。我用Python做策略研究已经有很长时间数据获取、信号生成、回测分析基本都是用Python完成。下面我以唐奇安通道突破策略为例展示一个最基础的趋势策略信号生成过程。import pandas as pd import numpy as np def donchian_signal(df, period20): 唐奇安通道突破策略信号 df: 包含high, low, close列的DataFrame period: 通道周期 返回: signal, 1为做多, -1为做空, 0为观望 df df.copy() df[upper] df[high].rolling(period).max() df[lower] df[low].rolling(period).min() df[mid] (df[upper] df[lower]) / 2 df[signal] 0 df.loc[df[close] df[upper].shift(1), signal] 1 df.loc[df[close] df[lower].shift(1), signal] -1 # 去掉连续重复信号只保留转折点 df[position] df[signal].replace(0, np.nan).ffill().fillna(0) return df这段代码的逻辑其实很直观把过去20根K线的最高价作为通道上轨最低价作为通道下轨。价格突破上轨就做多跌破下轨就做空。shift(1)是防止用到当根K线的最高价最低价造成前视偏差这一点非常关键很多新手写策略时忽略了这一点导致回测结果严重失真。4.2 组合层的风险控制模块实现策略信号生成只是基础真正的难点在组合层的风控管理。我通常会把多策略系统的架构分成四个模块信号模块、风控模块、执行模块、监控模块。其中风控模块是最核心的它负责把多个策略的信号汇总后做统一的风控检查。下面是一段简化的组合风控逻辑伪代码展示了多策略信号汇总后如何遵守统一风控规则def risk_check(strategy_signals, current_position, account_info): strategy_signals: dict, 每个策略的最新信号 current_position: 当前所有品种持仓 account_info: 账户资金、回撤等关键数据 combined_signals {} # 1. 检查组合层级熔断 if account_info[drawdown] 0.15: return reduce_half if account_info[drawdown] 0.20: return stop_all # 2. 检查策略层级暂停 for strategy, signal in strategy_signals.items(): if account_info[strategy_drawdown][strategy] 0.08: combined_signals[strategy] 0 else: combined_signals[strategy] signal # 3. 检查品种层级集中度 for symbol, pos in current_position.items(): total_exposure abs(pos[qty] * pos[price] * pos[multiplier]) if total_exposure / account_info[total_equity] 0.30: combined_signals[symbol] reduce_position() return combined_signals这套风控模块的逻辑核心是“分层控制”在策略层、组合层、品种层分别设置独立的检查规则任何一个层级触发条件都会限制信号的下发。比如整个组合回撤超过15%任何策略的新开仓信号都会被拦截已有的仓位要逐步降低。4.3 策略研究工作流回测、评价与验证策略组合的开发流程我一般走四个步骤。第一步是数据准备把历史日线数据和分钟线数据整理干净特别要注意复权处理和异常值清洗。第二步是单策略回测用Python的backtrader或者vectorbt框架先跑单策略的历史表现记录收益、回撤、夏普、盈亏比等关键指标。第三步是组合回测把多个策略的净值序列按权重合并观察组合整体的风险收益特征。第四步也是最重要的一步——压力验证把2020年疫情冲击、2022年行情剧烈波动、2024年政策的极端行情时段单独拿出来看组合在这些特殊时期的表现。回测中有一个细节需要重点提醒一定要把手续费、冲击成本和滑点算进去。期货交易的实际成本分为两部分交易所手续费和期货公司加收部分再加上市价单通常带来的滑点。我的经验是回测时按单边万分之五到万分之八来估算总成本会更接近真实结果。很多策略在忽略交易成本后年化收益看着很高一旦计入真实成本可能就失去实盘价值了。4.4 实盘落地用PTrade类量化终端还是自建系统策略研究到实盘之间还差一个可落地的执行系统。目前国内期货量化实盘落地主要有两条路一是使用券商的量化终端比如常见的PTrade它把行情、研究、交易打通了可以在同一个环境里写策略文档、做回测、挂实盘二是自己用CTP接口搭建交易系统灵活度高但开发和运维成本大适合有一定编程能力的团队。如果是以研究和策略为主、不想花太多精力在系统开发上我会建议优先考虑PTrade这类成熟平台。它有现成的行情源和柜台接入可以用Python编写策略和风控模块自动交易相对稳定。代码框架上思路是一样的信号模块生成交易信号风控模块做资金管理和止损判断执行模块负责下单监控模块负责日常运行状态巡检。如果选择自建系统CTP接口是绕不开的但CTP的开发门槛并不低涉及登录、行情订阅、报单回报、撤单重发等一整套流程。没有半年以上的技术积累不建议直接上手自建容易在系统层面栽跟头。5. 常见问题与避坑实录5.1 策略相关性极端行情下失效怎么办我遇到过最棘手的问题之一是平时相关性只有0.3的两个策略在某个品种遇到极端行情时相关系数会突然飙升到0.8甚至0.9。比如2024年商品市场出现单边暴跌行情趋势策略在大幅盈利套利策略中的跨品种对冲由于价差同步剧烈波动也出现了不小回撤两者并没有形成有效的对冲。后来我总结出来的应对思路是除了看常规相关性矩阵还要做压力测试场景下的相关性分析。把历史上几次最大波动行情的区间单独拿出来计算策略在这些区间内的相关性。如果两个策略在常规时期相关性很低、但在极端行情下相关性显著上升就要适当降低其中一个策略的权重或者在极端行情预警触发时提前手动减仓相关策略。5.2 回测绩效和实盘差距太大问题出在哪里这是几乎每个做量化的人都会遇到的问题。回测年化40%、最大回撤8%的策略实盘跑起来变成了年化20%、回撤15%甚至还亏钱。从我的经验看原因集中在四个方面。第一是高估了执行速度回测假设信号出现后立刻以理想价格成交但实盘从信号产生到指令到达交易所之间有几秒到十几秒的延迟趋势策略影响相对小高频策略影响就巨大。第二是低估了交易成本尤其对日内策略手续费和滑点累积起来吓人。第三是回测数据里混入了前视偏差比如用了当根K线的数据进行信号计算这在实盘中根本不可能实现。第四是策略参数过度优化到了历史噪声上换个时间段或者换个品种就失效。排查方法也很直接把回测中的成交价格做偏离处理比如每笔交易加一到两个滑点再看策略是否依然盈利把样本数据切成两半前半段做参数优化后半段做样本外验证如果样本外表现明显变差说明参数过拟合的概率很高。5.3 多策略组合运行中需要盯哪些异常指标组合上线后日常监控同样重要。我的监控清单主要包括五项组合净值波动率是否超过目标区间、策略之间相关性是否出现趋势性上升、单品种持仓集中度是否超标、策略连续亏损次数是否到了历史极值、日内回撤是否触发熔断阈值。其中容易被忽视的是连续亏损次数。一个策略如果连续亏损超过历史最大连亏次数意味着现在的市场环境可能已经偏离了该策略的适用区间。此时不应该抱着“快回本了”的心态继续加码而应该暂停该策略等市场逻辑重新匹配后再重启。这种纪律性才是组合管理能长期跑下去的关键。5.4 一个容易忽视的坑过多策略导致的过度复杂化多策略组合并不是策略越多越好。我在早期也走过弯路为了追求“分散”一口气上了八套策略结果每套策略的管理都不到位参数监控、逻辑排查、风控规则维护的工作量巨大最终组合表现反而还不如精简后的四套策略。后来我把策略池稳定在五到六套左右的水平每个策略的逻辑特征要有明显区分整体相关性控制在较低水平。这个数量下每个策略都还有足够的精力和时间去精细打磨同时组合也覆盖了趋势、套利、日内的主要收益来源已经能满足分散风险的需求了。最后再分享一个实操层面我认为很重要的点多策略组合的运行本质上是在考验执行纪律。策略逻辑设计得再好如果实盘遇到回撤时忍不住手动干预或者看到某个策略近期收益好就忍不住调仓追高组合效果都会大打折扣。我在实盘里吃过不少亏之后得出的结论是把规则写清楚、把风控交给代码、自己只负责定期复盘这样反而比每天盯盘反复操作赚得更多、心态也更稳。希望这篇内容对正在做期货量化多策略组合的朋友有所启发方向上可以参考细节上还是要根据你自己的资金体量和风险偏好来做适配。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价