做期货套利这几年我听过最多的一句话就是“套利是无风险搬砖”。说这话的人要么没真金白银下过场要么就是运气好赶上了一段特别顺畅的行情。真实的套利交易任何一笔都在承担风险只不过它承担的是“更小、更可控、更愿意承担”的风险而不是没有风险。“期货套利策略”这个系列写到第二篇上一篇我主要讲了跨期、跨品种、期现这三种经典套利形式的基本原理和入场逻辑算是把框架搭了起来。这一篇我打算换个角度聊一聊我从“手动做套利”转向“数据驱动的统计套利”过程中的那些体会以及在实盘中真正影响利润的细节主力合约数据怎么拼、价差序列怎么算、均值回归和动量哪一类更适合普通交易者、滑点和保证金占用怎么评估。这篇文章适合两类人一类是已经懂期货基础交易、想往套利方向深入的朋友另一类是知道套利这个词、但还没系统理解它背后统计逻辑的朋友。我会尽量把每一步都拆开讲争取你看完就能动手做自己的价差分析和回测。1. 从经典套利到统计套利我为什么把一个“搬砖生意”做成了数据工程先说一个我自己的观念转变过程。最早我做套利思路特别简单螺纹钢和热卷都是黑色系走势大体同步价差拉大了就空强的买弱的价差收回来就平仓。这个方法有效但效率很低因为“拉大”和“收回”之间到底多大算大、多久能收回来靠眼睛看盘很难判断。真正让我把套利当做一个系统工程来做是我发现——现货贸易商和下游终端企业也在做类似的事他们比我更懂基本面我拼信息拼不过他们。但我在数据处理和回测上有优势可以用历史价差的统计规律来弥补信息劣势。所谓统计套利核心就是一句话用历史数据找到两个或多个合约之间稳定的数量关系当这种关系被短期的市场情绪或资金行为打破时以“关系会回归常态”为假设进行交易。它不预测绝对价格涨跌只赌价差或者比价的“不正常不持续”。这个思路放到期货里最常见的应用就是把两个相关性很高的品种做成一个价差序列。比如豆油和棕榈油比如螺纹钢和热卷比如焦煤和焦炭它们受共同的产业逻辑驱动价格走势长期趋同但短期会因为各自的基本面差异、资金关注度不同而产生价差波动。统计套利做的就是捕捉这种相对强弱变化。不过我得先泼一盆冷水统计套利不是印钞机。它的胜率确实可以做到比较高但单笔利润通常比较薄而且非常依赖你对“正常区间”的界定。如果两个品种的基本面发生了永久性变化比如产业政策导致供应结构改变历史价差的均值就成了一个陷阱你顺着“回归”的思路开仓越跌越买结果价差一去不回。所以我现在做套利默认遵循三个原则先看产业逻辑再看统计指标。统计指标是辅助工具不能替代基本面判断。只做流动性好的品种组合成交稀疏的合约会带来严重的滑点和冲击成本。每一笔套利开仓前先想清楚这笔交易的亏损极限在哪里而不是先想能赚多少。这三条原则看着简单但每一条背后都有我实打实亏出来的教训。后面我会结合具体的策略展开讲。2. 把数据基础打牢主连合约拼接、跳空过滤与“干净的价差”才是策略的地基很多做手工套利的朋友其实不觉得自己需要处理数据——软件上直接看价差图不就行了吗但一旦你开始做回测、做统计检验数据处理的粗糙程度会直接决定策略是真有效还是假有效。我可以很负责任地说数据这块踩的坑比策略本身多得多。2.1 主力合约拼接别直接用行情软件的“主连”做分析国内的期货行情软件里都有“主力连续”或者“指数连续”打开就能看。但做量化分析和回测时我不建议直接用主连的价格数据来算价差。原因很简单主连是由不同月份合约拼接而成的每次换月都会带来价格跳变而这个跳变不是市场真实的涨跌纯粹是合约切换造成的“人工缺口”。举个例子螺纹钢主力合约从2405换到24102405临近交割时价格可能明显高于2410这时候主连价格会出现一个向下的台阶。如果你直接用这个数据去算价差、算均值、算标准差相当于在序列里混入了一堆假信号。你会发现策略回测时异常美好实盘一跑就崩问题往往就出在数据源上。我自己现在的做法是用Wind、聚宽、米筐这类数据接口拿到每个合约的日线数据自己拼接主力合约序列。拼接规则并不复杂取每个交易日的持仓量和成交量按自己设定的规则选出当日主力合约我一般用“成交量加权并兼顾持仓量”的方式。生成一张“日期—合约—价格—成交量”的明细表逐日映射到主力合约上。换月当天不修改历史价格只记录切换后的合约品种和价格回测时代码自动处理仓位切换。这种自己拼接的方式虽然前期工作量大一点但能保证你的价差序列不会被人为跳空污染。做套利分析数据干净是第一优先级。2.2 跨品种价差怎么算才不失真价格比、价差差还是Z-score接下来是核心问题两个品种的价差到底该用“A价格减B价格”还是“A价格除以B价格”很多人都直接取减法但这里有个隐藏问题如果A的价格是5000B的价格是4000那么价差1000如果行情涨了一波A变成6000B变成4900价差依然接近1100看起来“很稳定”但两个品种的比价其实已经从1.25变成了1.22。用减法算出来的价差会掩盖相对强弱的变化。更稳妥的做法是同时观察两种形态绝对价差A-B和比价A/B。我在实际分析中会把两个指标都算出来然后各自做Z-score标准化再做一下对比看它们给出的是否是同向信号。如果同向说明这波价差波动是真实的结构变化值得关注如果背离那说明这更多是价格水平变化带来的“表观波动”开仓要更谨慎。Z-score的计算方法很简单取过去N根K线的价差序列算平均值和标准差Z 当前价差 - 平均价差/ 标准差。Z-score的意义在于把不同价格水平的价差放到同一尺度下比较。当Z接近2或超过2时意味当前价差在历史分布里处于比较极端的位置均值回归策略会倾向于反向开仓当Z接近0时说明价差处于均值附近趋势策略一般不介入。这里N怎么选没有绝对标准。我做短线套利时常用20-30个交易日做波段套利时用60-120个交易日。N越小信号越敏感但假信号也越多N越大信号越稳定但反应更迟钝。我的做法是先用60日做一个基准再用30日和120日做交叉验证只有当几种周期的信号方向一致时才动手。2.3 别忘了交易时段和合约规则差异还有一个很容易被忽略的坑不同品种的交易时间并不完全一致夜盘开市、收市时间也不一样。比如螺纹钢夜盘到23点棕榈油夜盘同样到23点但有些品种夜盘到凌晨1点甚至到凌晨2点30分。如果你用分钟级数据做日内套利必须先把两个品种的交易时间对齐否则你会拿A在开盘时段的价格去对比B在收盘时段的价格算出来的价差自然失真。另外不同品种的最小变动价位、合约乘数、保证金比例都不一样这直接影响“一手价差”的资金占用和盈亏。比如螺纹钢一手10吨热卷一手10吨乘数一致比较好配对但如果你做豆油和棕榈油豆油一手10吨棕榈油一手10吨也一致可如果做豆油和菜油要确认一下乘数差异。算好“价差变动一个最小单位账户盈亏变动多少钱”再决定仓位这是基本功。3. 三种核心价差策略的实战拆解均值回归、展期收益与强弱动量这一节是全文的重头戏。我把自己实盘验证过、觉得值得持续跟踪的三类套利策略逐一展开。策略没有绝对的优劣关键是搞清楚每一类策略赚的是什么钱、亏钱的场景是什么。3.1 同产业链相关品种的均值回归以螺纹钢和热卷为例螺纹钢和热卷算是产业链配对套利里最经典的一组。两者都是钢材成本结构高度一致但需求端有差异螺纹主要走房地产和基建热卷主要走制造业和汽车家电。当政策或资金集中炒作某一个下游时两者价差会被拉得很开但过一段时间产业利润的再平衡会把价差拉回去。我的具体做法分四步第一步数据准备。取螺纹钢和热卷主力连续的各合约日线数据自己拼接主力序列计算价差。第二步确定中枢。我一般用过去60个交易日的简单移动平均线SMA作为动态中枢。为什么不用固定值因为钢材价格本身有趋势固定中枢在单边行情里会被瞬间击穿。第三步设置开平仓阈值。当价差高于“中枢1.5倍标准差”时做空价差即卖出螺纹钢、买入热卷当价差回到中枢附近时平仓。低于“中枢-1.5倍标准差”时反向操作。第四步过滤极端行情。如果价差突破“中枢3倍标准差”我先不平仓但要检查一下是不是有产业层面的重大变化。如果是政策驱动的单边行情比如限产政策直接改变了卷螺供应结构那价差中枢可能已经系统性抬升此时继续持有旧的中枢判断就是拿命扛风险。这套策略实盘下来的胜率大概在60%-70%之间单笔盈利不算多但回撤也不太剧烈。它的主要风险在于卷螺价差的中枢不是永远不变的。2021年之后制造业景气度长期好于房地产热卷价格相对螺纹钢走强如果你还用过去两年的平均价差做中枢就会有一段时间连续亏损。我的解决方案是给中枢加上一个斜率项用线性回归估计价差的中长期趋势再用回归残差代替原始价差做均值回归。这是一个很实用的调整强烈建议做配对套利的朋友试一试。3.2 跨期价差的展期收益逻辑近远月合约之间的结构性矛盾跨期套利和跨品种套利不太一样它不做两个不同商品的相对强弱而是做同一个商品不同月份合约之间的价差赌的是市场对“近月供需”和“远月供需”的定价差异会不会修复。跨期价差的核心是展期收益roll yield逻辑。比如在强现实弱预期的格局下近月合约价格远高于远月合约价差为正且偏高这叫“期货升水”倒挂结构也叫back结构。此时你如果做空近月、做多远月不仅能赚价差收敛的钱还能不断获取展期带来的正收益。反过来在“弱现实强预期”的格局下远月价格高于近月形成contango结构此时做多远月、做空近月展期收益才对你有利。实操中我常看的一个指标是“月差百分位”——即当前月差在近一年月差分布中所处的位置。如果月差分位在90%以上说明近月相对远月极强这时要么是现货紧缺back加剧要么是远月被过度悲观定价可以考虑反向做空近月做多远月具体是否下得去手要结合库存和开工率判断。如果月差分位跌到10%以下说明近月极弱市场存在潜在的超跌反弹机会。这里有一个非常重要的执行细节跨期套利一定要关注合约的流动性。有的远月合约成交量很低你一开仓就把盘口打崩了。流动性不足的合约即使价差再“诱人”我也不碰。常用主力合约和次主力合约配对流动性相对有保障。3.3 强弱动量价差趋势也是一种趋势不是所有套利都在“回归”我在前面讲了均值回归又讲了展期收益但现在我要说一个反直觉的事实大部分时候价差是有惯性的而不是始终在回归。我之前有段时间特别迷信均值回归看到Z-score到了2以上就忍不住要反向开仓。但后来统计了一下实盘记录发现不少亏损单都发生在“价差刚开始突破历史极值”的时候。原因很简单价差之所以能突破历史极值往往是因为产业基本面发生了显著变化。比如一项环保政策导致铁矿石需求下降同时焦煤供应收缩那么焦炭和焦煤的比价可能一路走阔你在比价偏高时做空比价等于逆着大趋势接飞刀。后来我给自己定了一条纪律先用趋势过滤器判断当前市场环境适不适合用均值回归策略。趋势过滤器可以是MACD周线也可以是价格与60日均线的关系甚至只是简单地看“价差最近20个交易日是上涨还是下跌”。如果价差在过去20个交易日内表现为明显单边走势且产业逻辑也支持这种单边比如库存结构继续分化那我会放弃逆势回归转做价差动量的跟随单。如果价差虽然波动大但总体上在历史均值区间来回震荡没有明显的产业趋势那均值回归策略就能正常发挥作用。这相当于在同一组价差上安装两个模型平时跑均值回归趋势启动后切换成动量跟踪。这个做法听起来简单但能避开大部分“策略失效”的时段。我把它叫做“同一价差的双模运行”是我做套利以来最有价值的一个结构调整。4. 选不准参数别硬上从手动盘感进化到半自动化的中间态很多人看完上面的内容第一反应是“我直接去写个程序全自动跑”。且慢一个从零开始做套利的人我不建议一上来就搞全自动。更合理的路径是从手动交易过渡到半自动化逐步建立对价差的“盘感”再做规则化。4.1 先用“模拟信号”练手标记但不执行我自己早期的做法是每天收盘后对重点关注的几组价差手动计算当天的Z-score然后在图表上标记“如果严格执行规则今天应该开多还是开空”并记录下来。这个过程不涉及真金白银但它能帮你建立最直观的感受——什么时候信号会连续出现什么时候信号刚开仓就被打止损哪些时段策略表现特别差。坚持一两个月后你自然会对这套策略的“脾气”有感觉。这个“感觉”非常重要因为量化信号只能告诉你现在该做什么但它不能告诉你当前市场环境是不是适合执行。有了大量手动标记的经验你对信号的可信度会有一个模糊但有效的判断。4.2 交易参数的敏感性分析找到“钝感区”当你想把策略从手动变成半自动第一件事不是写代码而是做参数敏感性测试。拿均值回归策略来说开仓阈值可以是1.5倍标准差也可以是2倍、2.5倍止损可以是3倍标准差也可以是固定金额止损。你把参数从小到大扫一遍看策略在哪个区间表现稳定。如果策略只在参数设定得非常精确时才赚钱那说明这个策略本身是“过拟合”的换到实盘大概率失效。如果策略在一个合理的参数范围内都能稳定盈利那说明它抓住了市场真实的统计规律值得继续打磨。我自己的筛选标准很简单至少找到连续的一段参数区间比如阈值从1.4到2.0策略的最终收益率和最大回撤都不能有剧烈波动。满足这一条才允许上实盘。4.3 实盘初期模拟盘与极小仓位并行实盘初期我用的方法是同一套信号在模拟盘和实盘同时运行实盘仓位控制在总资金的10%以内。这样既能验证行情软件的实时推送是否正常也能观察真实盘口的滑点和成交情况。这里要特别提醒模拟盘成交价格通常是按对手价成交的但实盘还有排队、吃单、盘口厚度等问题。如果模拟盘和实盘的成交价差经常达到好几个最小变动价位说明这个品种不适合你的策略要么放弃要么降低交易频率。只有在极小仓位实盘运行超过两个月、样本足够多之后我才会逐步把仓位加上来最高不超过总资金的30%。套利虽然风险可控但杠杆依然会放大亏损资金管理再怎么强调都不为过。5. 交易执行中的真实摩擦滑点、保证金、逼仓与尾部风险策略逻辑只是交易的一部分执行层面的细节往往决定了策略“纸面收益”和“实际收益”之间的差距。这一节我把套利实盘中最容易吃暗亏的几个环节展开讲。5.1 滑点套利交易里最隐蔽的利润杀手套利策略通常单笔盈利空间有限滑点对它的影响比对单边趋势策略大得多。比如你做卷螺价差开仓时买入热卷、卖出螺纹钢如果你分别去市价追单两边各吃2个滑点再算上手续费这笔交易的成本可能已经占到预期利润的30%以上。降低滑点的方法有哪些我的经验是尽量用限价单挂在中间价或略优于中间价的位置不要急着成交。两个腿的下单顺序讲究“先下单流动性差的一腿再下流动性好的一腿”。流动性差的合约一旦被吃掉马上用流动性好的合约对冲剩余敞口。避免在开盘前几分钟和收盘前几分钟做大额建仓那段时间盘口波动剧烈点差最宽。在实盘系统里设置滑点成本模型默认每边按1-2个tick计算回测时就扣掉这部分成本。很多人做历史回测时把滑点设成0然后把策略过去一年的收益率拉出来看得心潮澎湃。我建议所有人在回测时至少加上双边各1个tick的滑点如果你做的品种流动性一般加到2个tick也不算多。5.2 保证金占用与资金使用效率别被“浮盈”迷惑套利交易的保证金占用怎么算直接影响资金使用效率。跨期套利同一品种交易所通常会给保证金优惠跨品种套利一般没有优惠按两腿保证金简单相加。举个例子螺纹钢价格3500元/吨一手10吨交易所保证金比例7%那么一腿保证金为3500107%2450元。如果你做了螺纹钢和热卷的配对两腿按期货公司加收后的比例算可能需要6000元左右的保证金。如果价差波动100个点一手盈亏为1000元。年化收益率的计算必须建立在实际占用的保证金和预留风险资金基础上而不是只看价差波动。除了保证金我还特意预留了相当于套利组合保证金30%-50%的“缓冲资金”用于应对价差往不利方向波动时的浮亏和追加保证金需求。套利单边浮亏可能不大但如果遇到极端行情比如两个品种同时封涨跌停你连平仓的机会都没有账户资金不够就会被强平。这种尾部风险必须提前用资金冗余对冲。5.3 合约临近交割逼仓、限仓与流动性骤降的三重麻烦做套利交易最怕的就是持仓进入交割月前的一段时间。这时候近月合约流动性迅速下降买卖价差拉大投机资金撤退很容易发生“砍仓都砍不动”的情况。更麻烦的是临近交割时部分资金会进场逼仓把近月价格推到极不合理的水平价差瞬间被打到历史极值。我的处理原则是套利持仓最晚在进入交割月前第10个交易日全部平掉绝不拖到最后几天。有些策略可能在最后几天利润最丰厚但那属于“火中取栗”长期来看大概率会把之前赚的钱还回去。另外不同品种的限仓规则差异很大。你如果资金量上了一定规模要在开仓前就查清楚交易所对相关合约的限仓规定免得持仓临近限额被迫减仓打乱整个策略的节奏。5.4 尾部风险最怕的不是亏钱而是“想止损却止不了”套利交易者经常忽略尾部风险因为大部分时间它都不出现。但一旦出现往往就是致命性的。比如2016年“双十一”夜盘多个品种在几分钟内从涨停打到跌停很多看似稳健的套利组合出现了两条腿同时剧烈波动的情况价差被瞬间拉出历史极值。如果你用的是全自动策略止损单在这种行情下根本成交不了——跌停板上全是卖单你的平仓单排在后边等开板时可能已经亏掉几个月的利润。应对尾部风险我有几个习惯永不加杠杆到极限预留足够的缓冲资金。每笔策略都设置“熔断线”即当账户当日亏损达到某个比例时无条件平掉所有持仓当天不再开新仓。对涉及临近交割月的持仓提前用软件设置“交割月前第N个交易日自动平仓”的提醒。对关联度过高的策略比如同时跑卷螺、焦煤焦炭等多个策略但它们本质上都在交易同一类宏观逻辑账户总风险需要合并计算不能一个个单独看。尾部风险不是靠预测来的是靠仓位控制和应急预案扛过去的。6. 策略从挖据到上线的工程化流程回测、模拟、实盘三步走最后聊一下我自己整理出来的套利策略上线流程。这个流程不一定适合所有人但对没有专职量化团队的个人交易者来说是一套性价比比较高的执行路径。6.1 回测环境搭建与回测陷阱回测工具可以选择Python的backtrader、聚宽、米筐这类在线平台也可以用Excel做简单测算。我个人的习惯是用Python因为它处理数据和做统计分析更方便。回测时需要注意几个陷阱请务必用“未来函数”检测器。举个常见的例子你在某个交易日用“当日收盘后的全部数据”计算当日价差信号然后在同一天收盘价附近成交这没问题但如果你不小心用了第二天的数据来计算信号再回溯到第一天成交那回测结果就完全失真了。手续费和滑点必须在回测里体现。套利策略换手率高仅仅1个tick的滑点就能吃掉不少利润。回测时间最好覆盖一轮完整的牛熊周期至少包含一次大的行情转折。如果只回测单边上涨行情你只会得到“所有策略都赚钱”的错误结论。回测评估指标方面我最关注的是“收益回撤比”和“连续亏损次数”。一个策略如果连续亏损超过6次即使历史年化收益很诱人我也倾向于降低预期。因为连续亏损考验的不仅是策略本身更是交易者的执行纪律——很多人就是死在“连续亏损几次之后不敢再按信号开仓”上。6.2 样本外验证与参数终身管理在正式使用一个策略前我会把历史数据切分成两段前70%的数据用来开发和调参后30%的数据完全不参与调参只用来做样本外验证。如果策略在样本外依然能保持和样本内类似的收益回撤特征我才认为它具备实盘条件。但样本外验证并不是一劳永逸。市场结构会变品种相关性会变策略的参数会慢慢失效。我的习惯是每季度做一次全面的策略体检重新计算近半年价差的均值、标准差、回归系数与策略开发时的假设做对比。如果核心参数发生了明显漂移就减仓观察或暂停策略而不是机械地继续执行。6.3 实盘落地时的工具选择与自动化方案到了实盘阶段技术方案可以选择期货公司提供的条件单、第三方交易终端也可以自己写Python自动交易程序。对于大多数个人交易者我的建议是先从条件单和半自动提醒开始——把策略信号算好推送到手机人工确认后再下单先避免情绪化操作。当你积累了足够信心再上全自动程序。我自己的实盘架构是数据层每天收盘后从数据接口拉取行情更新本地数据库。策略层Python计算各价差的Z-score、趋势过滤器和开平仓信号。执行层通过期货公司提供的API接口下单但每一笔交易都加上硬性的风控检查包括最大持仓数、最大回撤、单日亏损熔断等。这套架构不复杂但胜在稳定。我从手动交易过渡到这套半自动化流程花了大概半年时间。回头看最慢的不是代码实现而是心态转换——从“看到信号就兴奋”到“信号来了先问一句现在适不适合执行”。7. 写在最后套利交易是一场“预期管理”而不是“预测游戏”分享几个我在实操中逐渐沉淀下来的体会吧。第一不要追求胜率100%甚至不要追求胜率80%。一套胜率在60%出头、盈亏比接近1:1的套利策略只要能严格控制单笔亏损、在连续回撤时不乱改参数长期跑下来效果并不差。真正杀死账户的往往是“某段时间策略连续盈利你觉得它稳定了于是开始加大仓位然后刚好碰上一波极端行情”。第二价差的均值和中位数不是一成不变的。产业结构的变迁、进出口政策的调整、替代品供需的变化都会让价差的“合理区间”发生永久性位移。建议每过一段时间就重新审视你正在交易的价差组合问自己一个问题当前价差偏离均值到底是情绪性错杀还是基本面的新常态回答不了这个问题的时候选择观望也不丢人。市场永远有机会本金没了才是真出局。第三套利交易能给人最大的礼物不是“稳定盈利”而是“不用每天都做预测的从容”。单边交易者每天都要回答“明天涨还是跌”套利交易者只需要回答“两者之间的价差是否极端”。这个问题更简单、更可以量化、也更容易用纪律去执行。如果你也想开始做套利别急着写代码也别急着开实盘。先找两组你最熟悉的品种手动记录一个月的价差和信号感受一下策略在震荡期和趋势期的表现差异。这个积累过程会让你后面的每一步都走得踏实。做交易这件事快就是慢慢就是快。
阅读完成 · 觉得有帮助?