首页 知识的力量 正文
  • 本文约5071字,阅读需25分钟
  • 43
  • 0

新手最友好策略:详解所内期现资金费率套利

温馨提示:本文最后更新于2026年2月8日 11:48,若内容或图片失效,请在下方留言或联系博主。

新手最友好策略:详解所内期现资金费率套利

目前,量化圈已经从5年前的手动点击就可以印钞变成顶尖机构团队高频互相收割,连做市商都过不下去,交易所被迫推出了RPI这玩意(只与散户成交的订单)

那现在还有小白就能轻松赚钱的策略吗?

还真有!

期限套利

如下图是我实际的 PnL 收益曲线,几乎是不会有回撤发生,即使有,也是微乎其微。

并且,以我在行业内的人脉了解,运行在此策略上的资金不少于100亿

你要问我收益怎么样,只能说比存银行高,反正我看不上

image-20260205175050155

什么是资金费率?

在传统金融期货中,合约有“交割日”,随着交割日临近,期货价格会强制回归现货价格,因为合约有兑换现货的权力,从而实现了价格的锚定。但在加密市场,有一种特殊也是交易量最大的合约:永续合约,它没有交割日。没有交割日这一个特征,使得永续合约的价格脱离现货是一件容易的事情,从而也难免价格被人操控。而对于金融资产持续的恶意操控也是交易所不支持的一种行为,为了杜绝该现象的发生,并且确保市场的流动性,交易所设计了一个机制,便是资金费率机制。资金费率机制保证了现货价格和期货价格不会距离很远,因为持仓是有成本的,从而在一定程度上遏制了价格操纵的行为。资金费率的具体机制如下:

  • 当行情火爆,做多情绪高涨时: 合约价格通常高于现货价格(溢价)。此时,资金费率为正,多头需要向空头支付费用,用于抑制做多,使得价格回归到现货。
  • 当行情低迷,做空情绪主导时: 合约价格通常低于现货价格(折价)。此时,资金费率为负,空头需要向多头支付费用,用于抑制做空,使得价格回归到现货。。

在加密市场的大多数时间里,永续合约处于“正费率”的时间占据了绝大多数。这意味着,在永续合约的这个市场做空,往往能躺着收钱。 从而这个市场特征,为我们接下来的期限资费套利创造了生存的环境。

image-20260205175224579

交易核心:如何实现“Delta中性”来过滤掉价格波动带来的盈亏?

期现套利的核心在于 “对冲”,即剥离价格波动的风险,只赚取确定的收益。只有这样,才能过滤掉因为涨跌带来的盈亏,只赚取最纯粹的利率,因此对新手来说,这是一个非常好的路子,不会亏大钱。

具体的对冲逻辑和方法如下,我们假设合约的杠杆都是 10 倍杠杆,并且我们此时有 110,000 USDT:

这里的资金分配需要满足条件:我使用 100,000 USDT 发送现货订单,使用一倍杠杆,来避免资金借贷产生的利息。同时,用剩余的 10,000 USDT 发送永续合约做空订单,使用 10 倍杠杆,获得名义价值为 100,000 的订单。此时,在名义价值上,现货和合约是相等的,那么价格的变化应该也是一样的。从而过滤掉了价格波动带来的盈亏。注:更实战的做法应该是持有相同份额的现货,因为以合约价格计价的现货和现货的价格,会出现价差波动。合约和对应的现货权益不同的合约是有不同的对应关系。可以通过 OpenQuant 中的 self.trader.get_instruments() 函数接口来查询每个币种单独的信息。

假设 BTCUSDT 价格为 100,000 USDT。现在我们需要同时做多现货和做空合约,来赚取合约大部分时间的正资金费率。那么我们需要按照如下两步的行为来做:

  1. 现货买入: 花 100,000 USDT 买入 1 个 BTC。
  2. 合约做空: 在永续合约中,以 10 倍杠杆做空 1 个 BTC(价值 100,000 USDT, 保证金使用 10,000 USDT)。

此时你的账户状态:

  • 如果 BTC 上涨 10%,你的现货赚 10%,合约亏 10%,盈亏抵消。
  • 如果 BTC 下跌 10%,你的现货亏 10%,合约赚 10%,盈亏抵消。

无论市场的价格怎么变,你持有的仓位本金总价值几乎不变。这就构成了 Delta 中性,也是一个中性的仓位。

在 OpenQuant 中,可以非常简单来实现 Delta 中性的对冲下单,以下是我的示例代码:

"""
注:以下代码仅为演示教学,用于讲述 Delta 中性的发单逻辑应该如何设计。OpenQuant 中实际使用时,还需要根据自己的函数变量、版本来进行细节上的调整。
"""

def on_strategy(self, symbol):
    if self.fundings[1][symbol] > 0: # 表示永续合约费率为负
        self.trader.place_order(symbol, side="Sell", pos="Short")

def on_order(self, account_id, order):
    if account_id:
        # 假设 account_id 为 1 表示永续合约端,account_id 为 0 表示现货端
        self.place_order(self, symbol, side="Buy", pos="Long", is_spot=True)

def place_order(self, symbol, side, pos_side, is_spot):
    idx = 1 if not is_spot else 0
    if side == "Buy":
        price = self.bbos[idx][symbol]['ask_price']
        amount = self.bbos[idx][symbol]['ask_qty']
    else:
        price = self.bbos[idx][symbol]['bid_price']
        amount = self.bbos[idx][symbol]['bid_qty']
    order = {
            "cid": self.trader.create_cid(self.ex_map[idx]),  # 客户端订单ID
            "symbol": symbol,
            "order_type": "Limit",  # 限价单
            "side": side,  # Buy/Sell
            "pos_side": pos_side,  # 单向持仓模式
            "time_in_force": "GTC",  # 持续直到取消
            "price": price,
            "amount": amount,
            "reduce_only": False,
        }
        params = {
            'is_dual_side': False, 
            "margin_mode": "Cross",
            "leverage": self.leverage if not self.is_spot or (self.is_spot and idx == 1) else 1,
            "process_amount": "Floor",
        }
        if self.is_spot and idx == 0:
            order['quote_amount'] = local_order.amount * local_order.price

        result = self.trader.place_order(idx, order, params=params)
        self.trader.log(f"下单结果: {result}", level="INFO", color="blue", web=False)

利润来源:

既然不赚价差,赚什么?赚资金费。因为在永续合约端持有空单,只要资金费率为正,每隔 n 个小时就会收到多头支付的利息。

资金费计算的原理

接下来从理论的角度来说,交易所是怎么计算资金费率的。资金费率并非随意制定,而是由交易所算法实时计算的。主要由两部分组成:

Funding_Rate = Clamp(MA((FuturePrice - SpotPrice)/SpotPrice) + InterestRate)

简单来说:

  1. 利率分量(Interest Rate): 基础利率,通常固定在每天 0.03% 或 0.01% 左右,每个交易所有所不同,因为基础利率高,这也是币圈利润高的原因之一。
  2. 溢价指数(Premium Index): 反映合约价格相对于现货价格的偏离程度。偏离越大,费率越夸张。

接下来我将介绍在 OpenQuant 中订阅资金费率的一些细节操作和注意事项:

Open Quant 提供了非常简便的订阅资金费的方法:

def subscribes(self):
    subs = []

    for i in range(self.base_index):
        if not self.is_spot(i):   # 现货没有资金费率,不能订阅,只订阅非现货的,is_spot 方法需要用户自己实现判断
            subs.append(
            {
                    "account_id": i,
                    "sub": {
                        "SubscribeRest": {  # 推荐使用 Rest 接口订阅,因为会返回下一次结算时间,便于进行风险控制管理和统计
                            "update_interval": {"secs": 60, "nanos": 0},
                            "rest_type": "Funding",
                        }
                    },
                }
            )
    return subs

当订阅好了资金费之后,OpenQuant 系统收到了资金费率数据的时候,会主动回调接口 on_funding ,我们只需要在该函数里处理资金费率数据,就可以完成对交易所所有币种的实时资金费进行数据分析。

def on_funding(self, exchange, fundings):
    try:
        # 使用 update() 方法更新,而不是直接赋值,避免覆盖其他 symbol
        exchange_idx = self.ex_map[exchange]
        new_fundings = {
            item["symbol"]: item for item in fundings if item["symbol"] in self.symbols
        }
        self.fundings[exchange_idx].update(new_fundings)

        if self.is_spot:
            # 因为是现货,所以资金费率都是 0, funding_interval 和 next_funding_at 和期货保持一致即可。
            spot_fundings = {
                item["symbol"]: {"symbol":item["symbol"], \
                    "funding_rate": 0, \
                    "funding_interval": item["funding_interval"], \
                    "next_funding_at": item["next_funding_at"]} for item in fundings if item["symbol"] in self.symbols
            }
            self.fundings[0].update(spot_fundings)

    except:
        logger.error(f"{traceback.format_exc()}")

收益计算公式:

单次收益 = 持仓名义价值 × 当期资金费率

  • 举例: 你持有价值 10 万 U 的 BTC 空单,当前费率为 0.01%,结算时间为 8 小时,每天结算 3 次。
  • 收益: 每 8 小时收入 10 U,一天收入 30 U。
  • 年化: 如果平均费率维持在 0.01%,年化约 11%;若牛市费率飙升至 0.1%,年化可达 100%+。

如何进行期现套利?

进行所内期现套利,流程相对简单,无需跨平台转账,但是需要创建统一账户,让U本位永续合约账号和现货账号可以互相充当保证金,来避免强平风险:

  1. 准备资金: 假设你有 11,000 USDT。
  2. 分配资金: 将 10,000 USDT 买入现货,剩下 1,000 USDT 转入合约账户作为保证金。
  3. 建立空单: 在永续合约页面,选择10倍杠杆(或更低),开立与现货等值的空单(Short)。
    • 注意:必须保证 空单价值 = 现货持仓数量。
  4. 自动印钞: 只要费率为正,系统每 n 小时会自动将资金费结算到你的合约账户。
  5. 结束套利: 卖出现货的同时平掉空单,进行止盈止损。

以下是我自己的一些研究数据和结果,左侧是资金费率,起点是 0 轴,可以看到大部分的资金费率都是在 0 轴之上的,曲线密密麻麻看不到底部,但是也有少部分极端情况,资金费率是持续为负数,意味着在这些极端情况下,期限套利的模式是会亏损。

image-20260205180013633

从资金费的统计结果来看,绝大部分的币种的永续合约资金费率,在绝大多数情况下,都是维持 正利率 的状态,因此给了市场进行套系的空间和丰厚的回报。而这些前提,也符合策略最开始的假设,更是策略长期有效的 生命线。但是也可以看到,仍然有部分币种的资金费率,会维持较长时间的 负利率 的状态,这是策略的最主要风险点。

风险管理:

虽然期现套利被称为低风险策略,但绝非零风险。以下风险点必须注意并且进行一定的风险管理:

  • 爆仓风险: 虽然是对冲模式,但如果你的合约杠杆过高,当币价短时暴涨时,又来不及转账,合约端的保证金可能不足以支撑亏损而被强制平仓,导致对冲失败,只剩下亏损的现货。

    • 对策:使用统一账户。
  • 费率反转风险: 如果市场进入深熊,资金费率可能长期为负。此时做空不仅收不到钱,还要付钱给多头。如上图所示的一些极端费率情况,负费率可以很夸张。

    • 对策:监控费率,一旦长期转负,及时平仓离场。

    • 需要有对应的风控代码进行监控

    def risk_monitor(self, symbol):
        if self.fundings[1][symbol] < 0 and self.position[symbol]:
            # 表示在该 symbol 上有仓位,并且资金费率发生了反转
            self.trader.log(f"持仓 {symbol} 产生了资金费率反转,请注意", level="INFO", web=True)
  • 价差: 在开仓和平仓的瞬间,如果买入现货和做空合约没有同时完成,可能会产生滑点磨损,吃掉部分利润。并且可能每单位的现货价格和期货价格在开仓时会有价差,吞噬一部分利润。

    • 对策:深入使用 OpenQuant 交易系统并且在流动性好的主流币种上操作。

总结

当看到这里已经可以创造出一个很完整的期限套利策略了,就问你,货干不干?硬不硬?关注点不点?

评论