资金费率套利不赌方向——两条腿把价格风险对冲掉之后,账面上剩下的只有资金费这一项收入。真正把这项收入吃掉的是另外六样成本,它们的共同点是:在交易所界面和费率榜单上,一条都看不出来。

下面六个口子按我们自己账号上踩到的顺序排,每一个都配着当时量到的数。

一、开反方向:收钱的那边变成付钱的那边

费率的符号决定这一单站哪一边——正费率做空合约收钱,负费率做多合约收钱。问题是符号在两次结算之间会翻,而界面上那个方向来自扫描器快照,一分钟才刷一轮。

照一个已经翻了的符号开出去,两条腿都会正常成交,回执上写着「已开」,没有任何一个字提示你站错了边。然后每一期本该收进来的资金费变成付出去的。我们实测过一次这种单的代价:一笔 100 U 的仓,开出去就是约 −$18。

示意图:一条蓝色曲线在灰色水平基准线上方平缓隆起,中途穿过基准线转到下方;上方一个蓝色实心圆点,下方一个空心圆点,基准线与曲线之间的上半部分填成浅蓝色

这件事没法靠「刷新快一点」解决。我们的做法是把它变成一道硬闸:每一条下单路径在下单那一刻重新问一次实时费率表,按返回的符号定方向,问不到就不开。少开一单的代价是一句话,开反一单的代价是真金白银。

二、价差:和手续费一样贵的那一半成本

开平两条腿一共四笔单,四笔全是吃单。所以成本有两项,结构完全对称:

整轮手续费 = 2 × (合约腿吃单费率 + 杠杆腿吃单费率)
整轮价差   = 2 × (合约腿半价差   + 杠杆腿半价差)
整轮全成本 = 整轮手续费 + 整轮价差

价差这一项经常被整个漏掉,而它不是一个可以忽略的修正项:

交易对 整轮手续费 整轮价差 价差占全成本
INJUSDT 0.30% 0.048% 约 14%
CHRUSDT 0.30% 约 0.30% 约 50%

CHRUSDT 贵在价格只有 5 位有效数字——一个最小变动单位就占 0.074%,跨四次就跟手续费一样贵了。

最难看的一行是 HOLOUSDT:只算手续费时单期净收 +0.002%,把价差算进去是 −0.09%。在只含手续费的口径下,它在界面上一直显示为「能做」。

示意图:上方一根长条被平分成深蓝与浅蓝两段,下方一根短得多的灰色圆角短条,一条虚线从短条右端向上延伸,显示它只覆盖长条很小一截

顺带一个我们自己犯过的错:两条腿的费率不一样。早期代码里只有一个「整轮 = 四笔 × 0.05%」的常数,把杠杆腿也按合约腿算。真实是 2 × (0.05% + 0.1%) = 0.3%,少算了三分之一。少算不会报错——它只是让回本期数偏小,让一批本该被否掉的行越过门槛。

三、回本期数:年化好看,但撑不到那一天

「年化 40%」是一个持有到永远的口径。实际要回答的是另一个问题:

回本期数 = ⌈整轮全成本 ÷ 每期收益⌉

四笔吃单按 0.05% 算是 0.2%,而一期资金费通常只有 0.01% 上下——单期进出本来就覆盖不了成本,净收为负是正常的。年化 40% 那一行摊开来看,要持满 20 期、约 6.7 天才回本;而费率往往两期之内就翻号。

所以扫描表上真正可执行的那个数不是年化,是回本期数。年化只用来跨交易对排序:周期不同的两行不年化没法比,4 小时结算的 0.01% 和 8 小时结算的 0.01%,一年下来差整整一倍。

四、借币卖出:利息按整份名义计,不按借款比例

负费率那一侧要收钱,现货腿必须是净空的。那些币只能来自两处——本来就有的,或者借来的,没有第三种。(「先买进来再卖掉」不算:买进 X 个再卖出 X 个,现货腿净额是 0,剩下的只有一条裸多头加两笔白付的手续费。)

借来的那一种,利息算法和杠杆买入完全不同:

杠杆买入现货:借款比例 = 1 − 1/杠杆倍数    ← 只借自有资金不够的那部分
借币卖出    :借款比例 = 1                 ← 卖出去的每一个币都是借来的

照搬前者会把利息系统性地算小,2 倍杠杆时正好只算一半。举一个刚好卡在线上的例子:一行 4 小时结算、费率 −0.01%,年化 21.9% 看着不错;但基础币的日息只要超过 0.06%,这一行的净收益就是负的,而它在费率表上仍然稳稳地显示为「负费率机会」。

利率还不是固定的。计价币 USDT 常年在 0.001%/小时上下,而深度负费率那些小币的借币利率异动时一天能翻几倍——开仓时算得过来的一行,持有中途会变成算不过来。

五、临下架的合约:后面那些期永远不会发生

榜单最上面那几行常有一个共同点,而这个共同点不是「机会好」。

临下架的合约费率往往是全市场最高的那一档。 实测 SCRTUSDT 一期 0.0684%,六倍于交易所基准费率,按年化排在最前面。但收益模型是「持够回本期数、把整轮成本赚回来」——合约在那之前就停了,后面那些期根本不会发生。四笔吃单的成本你付满了,费率只收到其中几期。

示意图:一条水平细线上等距排着十几个小圆点,左边五个是蓝色实心并被一块浅蓝圆角面板衬底,一道蓝色竖直虚线像闸门一样切下,右侧所有圆点都只剩灰色虚线轮廓

比「即将下架」更该拦住的是已经在交割中的那种——那时候连几期都收不到。

六、根本下不出去的单:质押率与可借库存

最后这一类不直接吃掉收益,它浪费的是时间和机会,但同样在表上看不出来。

  • 质押率为 0。 统一账户里买入现货不是从钱包扣钱,是把计价币换成抵押品,账户抵押价值当场少掉 名义 × (计价币质押率 − 基础币质押率)。实测 HEMIUSDT 质押率是 0:钱包里 725 USDT、买入名义只有 199.75,六条预检全绿,单就是发不出去,交易所回 -2019 Margin is insufficient。
  • 可借库存为空。 借得到与否取决于别人还了没有。实网一轮扫下来 15 行能定价,其中 13 行库存为 0——而年化最高的那几行恰恰全在这 13 行里。

还有一条更隐蔽的:成交额。价差那一列只说明最上面一档的点差,说不出那一档后面有多厚。一个价差 0.1%、但一天只成交几万美元的币,名义稍微一大就得往下吃好几档,实际付出的远不止半个价差——而这件事在只有价差的那一列上完全看不出来。

所以那张表该怎么读

从上往下依次问六句:这一行的方向是不是下单这一刻重判的?成本含没含价差?回本要几期、费率撑不撑得到?这一侧要不要借币、利息按哪个比例算?合约有没有下架排期?质押率和可借库存放不放行?

任何一句答不上来,那一行的年化就只是一个好看的数字。

费率本身从哪来、公式怎么拆,在资金费率怎么算那篇;符号翻过来之后那一侧的完整算法在资金费率为负;两条腿怎么同时落地、单腿没成交怎么回滚,写在 Delta 中性在工程上难在哪。想知道这些口子都堵上之后逐年的真实结果,六年回顾里最差的那年和最好的那年在同一张表上,也可以直接翻历史业绩。