4. 跨期套利中的流动性风险:滑点与执行成本

做跨期套利,很多人第一反应是看价差、算回归。但我得说句实话——你策略再漂亮,流动性一差,全白搭。我见过太多人,回测曲线美如画,实盘一跑就崩盘。为什么?滑点和执行成本吃掉了所有利润。

今天我们就来聊聊这个容易被忽视,但极其致命的问题。

4.1 滑点:你看到的价差,不是你能拿到的价差

滑点,说白了就是你的成交价和预期价之间的差值。在跨期套利里,这个问题会被放大。因为你要同时操作两个合约,滑点会叠加。

举个例子。你看到近月合约买一价100,远月合约卖一价102。价差2个点,你觉得有套利空间。但当你真正下单时,近月可能成交在100.5,远月成交在101.5。实际价差变成了1个点。嗯,利润直接腰斩。

核心公式:

实际执行价差 = 理论价差 - (近月滑点 + 远月滑点)

当实际执行价差 ≤ 0 时,这笔交易就是亏钱的。

我在项目中遇到过最夸张的一次,是交易某个冷门品种的跨期组合。盘口薄得像纸,我这边刚下完单,价格直接被打穿了两个tick。那次之后,我养成了一个习惯——先看流动性,再看价差。

4.2 执行成本:不只是手续费那么简单

执行成本包含三部分:

  • 显性成本:手续费、印花税、过户费等。这些是明码标价的。
  • 隐性成本:滑点、市场冲击、延迟成本。这些才是大头。
  • 机会成本:因为流动性不足,你无法及时建仓或平仓,错过的利润。

你想想看,很多新手只算了手续费,觉得一个来回才几块钱,没问题。结果一算滑点,好家伙,一个滑点顶你十次手续费。

成本类型 典型数值(以螺纹钢为例) 是否可控
手续费 约0.01% 是(可谈判)
滑点(高流动性) 0.5 - 1个tick 部分可控
滑点(低流动性) 3 - 10个tick 几乎不可控
市场冲击 取决于订单规模 部分可控

我的习惯:在策略里直接预留2个tick的滑点成本。如果回测还能赚钱,实盘才有戏。别太乐观,市场会教你做人。

4.3 流动性分层:不是所有合约都一样

跨期套利涉及两个合约,它们的流动性往往天差地别。近月合约通常流动性好,远月合约可能门可罗雀。

为什么会这样?因为大部分交易者都在做近月投机或套保,远月合约参与者少。你想想看,一个每天成交10万手的合约,和一个每天成交100手的合约,它们的滑点能一样吗?

我建议你把合约流动性分成三个等级:

  1. 高流动性:盘口深度好,买卖价差小,适合做高频或小资金套利。
  2. 中等流动性:有一定深度,但大单会打穿价格。需要控制仓位。
  3. 低流动性:盘口稀薄,一单下去就是一根针。我个人建议直接避开。

避坑指南:我曾经在低流动性合约上吃过亏。当时远月合约只有3手挂单,我下了5手,结果成交均价直接比预期高了4个tick。那次之后,我定了个规矩——单笔订单不超过盘口挂单量的30%。

4.4 如何量化流动性风险?

光靠感觉不行,得量化。我常用的几个指标:

  • 买卖价差(Bid-Ask Spread):最直接的流动性指标。价差越小,流动性越好。
  • 市场深度(Market Depth):看盘口前五档的挂单量。深度越厚,大单冲击越小。
  • 成交额/持仓量比:比值越高,说明合约越活跃。
  • Amihud非流动性指标:衡量价格对成交量的敏感度。敏感度越高,流动性越差。

下面这张图,是我自己整理的一个流动性分析框架。你可以照着这个思路来评估你的跨期组合。

跨期套利流动性分析框架 流动性风险评估 合约层面 近月 vs 远月流动性差异 订单层面 盘口深度 & 买卖价差 市场层面 成交额 & 持仓量比 主力合约 vs 非主力 交割月临近效应 盘口前五档挂单量 大单冲击成本估算 Amihud非流动性指标 换手率分析 结论:流动性不足 → 滑点放大 → 套利空间消失 建议:优先选择主力合约组合,控制单笔订单规模

4.5 实战中的执行策略

知道了风险,怎么应对?我分享几个实战技巧。

技巧一:分批下单

别一口气全干进去。把大单拆成小单,分批进场。虽然可能错过最佳时机,但能有效降低市场冲击。我一般拆成3-5批,每批间隔几秒钟。

技巧二:使用冰山订单

如果你的交易平台支持,用冰山订单。只显示部分挂单量,隐藏真实意图。这样不会吓跑对手盘。

技巧三:选择交易时段

开盘和收盘时段流动性最好。午休时段和夜盘后半段,流动性会明显下降。我建议尽量在活跃时段交易。

一个简单的滑点估算代码:

def estimate_slippage(bid_depth, ask_depth, order_size):
    """
    估算市价单的滑点成本
    :param bid_depth: 买盘前五档挂单量(列表)
    :param ask_depth: 卖盘前五档挂单量(列表)
    :param order_size: 订单数量
    :return: 预估滑点(tick数)
    """
    remaining = order_size
    slippage = 0
    level = 0
    
    # 以买入为例,遍历卖盘
    for depth in ask_depth:
        if remaining <= 0:
            break
        if remaining <= depth:
            slippage += level * remaining
            remaining = 0
        else:
            slippage += level * depth
            remaining -= depth
        level += 1
    
    return slippage / order_size

一个小技巧:在实盘前,先用小单测试流动性。比如下1手看看成交速度和滑点。如果1手都滑了半个tick,那大单就别想了。

4.6 总结一下

流动性风险是跨期套利的隐形杀手。它不像价差那么直观,但杀伤力极大。我个人习惯是,每做一个新组合,先花一周时间观察它的流动性特征。别急着赚钱,先搞清楚你能不能活着出来。

记住一句话:在流动性差的市场上,你的对手不是其他交易者,而是市场本身。


公众号:蓝海资料掘金营,微信deep3321