同一个交易所、同一个合约、多空两边一样大,资金费一边付多少,另一边就收多少,锁一周净额是 0。真正花掉的是对冲那条腿开仓、平仓的两次手续费,它另占的一份保证金,还有解锁那一刻成交价和预想价之间的差。
换成两个交易所锁,账就变了:两边各按各的费率结算,互不抵扣,每次净付的是费率差。现货加空单这种锁法,只有空单那一边碰资金费,费率为正时空单在收钱,为负时在付钱。
三种锁法用同一组数。拿一笔 BTC 永续多单来算:0.4 BTC,开在 64,000,标记价格跌到 60,000,浮亏 1,600 USDT,打算在 60,000 锁住,拿 7 天。现货加空单那一列,把这笔多单换成手里的 0.4 BTC 现货。默认每 8 小时结算一次,7 天是 21 次;资金费率按一直是 0.01% 假定,跨所那一列欧易的空单按 0.005%。
| 锁 7 天的账(USDT,正数 = 付出) | 同所等量 | 跨所 | 现货加空单 |
|---|---|---|---|
| 对冲那条腿的名义价值 | 24,000 | 24,000 | 24,000 |
| 21 次资金费净额 | 0 | 25.2 | −50.4 |
| 对冲腿开仓加平仓手续费(吃单) | 24 | 24 | 24 |
| 7 天合计 | 24 | 49.2 | −26.4 |
现货加空单那一列的 −50.4 是收进来的钱,只在费率一直为正时成立;费率转负,同一格就成了付出 50.4,合计变成付出 74.4。三种锁法都要给对冲那条腿另备保证金,按 10 倍粗算是 24,000 ÷ 10 = 2,400 USDT。
手续费按普通用户档算,币安和欧易的合约费率页上,这一档都是挂单 0.02%、吃单 0.05%。费率会调,动手那天照页面上的数重算。
想换成自己的仓位大小、锁的天数和两边费率,可以填进锁仓对冲成本计算器,三种锁法并排出数,记法和上表一样,正数是付出去的。它把原仓位那条腿的开平手续费也算了进去,合计会比上表多一截。
同所两边一样大,资金费为什么一付一收?
币安资金费率说明给的算法是:资金费用 = 持仓名义价值 × 资金费率,名义价值 = 标记价格 × 持有数量。欧易的「Perpetual funding fee mechanism」写法相同,只多一步把张数换成币:张数 × 面值 × 乘数 × 标记价格。两个式子里都没有开仓价。
所以锁仓后,多单开在 64,000、空单开在 60,000,不影响资金费。每到结算时刻,两条腿用的是同一个标记价格、同一个数量、同一个费率。费率为正,多单付、空单收;为负,反过来。两条腿在同一个账户里,付出去和收进来的数一样大。
| 每次结算(费率 0.01%,正数 = 付出) | USDT |
|---|---|
| 名义价值 60,000 × 0.4 | 24,000 |
| 多单付 24,000 × 0.01% | 2.4 |
| 空单收 24,000 × 0.01% | −2.4 |
| 每次净额 | 0 |
净额为 0 是拿官方公式推出来的结果,实际记了多少,看账户里的资金费流水。两条腿数量不一样时,抵掉的只有相同的那一截。空单只开 0.3 BTC,每次净付 0.1 × 60,000 × 0.01% = 0.6 USDT,7 天 12.6。
同所锁仓的钱花在手续费上,对冲那条腿一开一平要收两次:
| 对冲腿手续费(USDT) | 吃单 0.05% | 挂单 0.02% |
|---|---|---|
| 在 60,000 开空 0.4 BTC,名义 24,000 | 12 | 4.8 |
| 解锁时平空,名义按 24,000 算 | 12 | 4.8 |
| 合计 | 24 | 9.6 |
挂单能把这一项压到 9.6,可挂单不一定马上成交。价格还在往下走的时候,空单挂在 60,000 等成交,多单每多等一个价位就多亏一截;真着急锁,按吃单那一列估更稳妥。
原来那笔多单早晚要平,它的平仓费不算锁仓多出来的钱。手续费能不能再打折,两家规则不同:币安的 BNB 抵扣规则页写着,用 U 本位钱包里的 BNB 付手续费打 9 折,BNB 不够时改扣 USDT、不打折;欧易的手续费常见问题写着,目前没有用 OKB 抵扣手续费的功能。
保证金那一项要分全仓、逐仓看。全仓下,币安「如何计算 U 本位合约的强平价格」里的全仓强平式把其它合约的保证金和未实现盈亏都算了进去,一条腿亏、另一条腿赚,两边在同一个式子里互相撑着。逐仓下,每条腿只认分给自己的那份保证金,另一条腿赚多少都进不来。
用估算式算一下逐仓的情形。维持保证金率取 0.40%,币安和欧易的 BTC 永续第 1 档都是这个数。原多单 10 倍开在 64,000,强平价约 64,000 ×(1 − 0.1 + 0.40%)= 57,856;新空单 10 倍开在 60,000,强平价约 60,000 ×(1 + 0.1 − 0.40%)= 65,760。两条腿都用逐仓,这把锁只在 57,856 到 65,760 之间管用;价格走出这一段,先碰线的那条腿会被单独强平。
同所锁仓,开第一笔仓之前就要切到对冲模式
币安的持仓模式说明写明:单向持仓模式下,同一合约只能持有一个方向的仓位;对冲模式下可以同时持有多头和空头。入口在右上角的设置图标 →【交易】→【仓位模式】,选【对冲模式】。同一页还写着:有未平仓仓位或挂单时,无法调整仓位模式。
落到这笔仓位上,就是多单已经开着,模式切不过去了。这时在单向模式里下 0.4 BTC 的卖单,结果是把多单平掉,不是锁仓。欧易的「交易常用功能设置教程」把这一点直接写了出来:单向持仓同一时间仅支持一个方向的持仓,进行反向开仓操作就会平仓;双向持仓才允许同时持有多空两个方向,两者不会相互平仓。它的入口在交易页面右上角的【···】→【交易设置】→【交易模式】,仓位模式和账户模式、交易单位在同一处切;切之前同样要先确保没有持仓。想留着同所锁仓这条路,得在开第一笔仓之前就把模式切好。
两个交易所之间锁仓,每次净付的是费率差
这一节按多单开在币安来算:它留着不动,到欧易开 40 张 BTC-USDT 永续空单。一张面值 0.01 BTC,40 张就是 0.4 BTC,名义同样是 24,000。
两家各按自己的费率结算,钱不会在两个账户之间互相抵。每次的净付 = 名义 ×(多单所在交易所的费率 − 空单所在交易所的费率):
| 每次结算(正数 = 付出) | USDT |
|---|---|
| 币安的多单付 24,000 × 0.01% | 2.4 |
| 欧易的空单收 24,000 × 0.005% | −1.2 |
| 每次净额 | 1.2 |
| 21 次合计 | 25.2 |
再加上对冲腿在欧易的开平手续费 24,7 天是 49.2。两边费率一正一负时更难看:多单这边 +0.01%、空单那边 −0.01%,两边都在付,每次 4.8,7 天 100.8。费率每期都在变,这一期站在哪一种,下一期说不准;更多组合和两所结算时刻的对照,在两所资金费对照那篇。
21 次这个数也要打个问号。两家默认都是每 8 小时一次,可行情极端时,币安可以改成每 4 小时或每小时,欧易可以改成每 4、2 或 1 小时。只要有一边改密了,就得按各自实际经过的结算次数分开算,不能再拿每次净额乘 21。
跨所还有两笔同所没有的账。一是保证金要在两个账户各备一份,空单那边的 2,400 得另外转过去,两个账户之间不能直接互相补。二是两家的标记价格各算各的,名义价值会差一点零头,上表按相等处理。
两条腿放在两个互不相通的账户里,还带来一个同所没有的风险:价格单边走一大段时,亏的那条腿可能先被强平、那份保证金亏光,赚的那条腿还开着,手上就只剩一笔没有对冲的单边仓位。跨所锁之前,把两边各自的强平价都算出来,看哪一边先到。
现货加空单,只有空单那边算资金费
这一种锁的是手里现货的价值。手里有 0.4 BTC 现货,想在 60,000 把它的美元价值锁住,就开 0.4 BTC 的永续空单。传统期货里管这叫套期保值:芝商所(CME Group)期货入门课程的 Understanding the Role of Hedgers 一课,介绍的是套保者怎样用期货抵消现货价格变动的影响。
资金费是永续合约的账,现货不参与。7 天里只有空单那一边结算:
| 空单 0.4 BTC,名义 24,000(USDT,正数 = 付出) | 费率 +0.01% | 费率 −0.01% |
|---|---|---|
| 每次资金费 | −2.4 | 2.4 |
| 21 次合计 | −50.4 | 50.4 |
| 空单开平手续费(吃单) | 24 | 24 |
| 7 天合计 | −26.4 | 74.4 |
锁住的是什么,换个价格一看就清楚。7 天后价格跌到 54,000:现货少了 0.4 × 6,000 = 2,400,空单赚了(60,000 − 54,000)× 0.4 = 2,400,两边相加还是 24,000 USDT 的价值。涨到 63,000 也一样,现货多 1,200,空单亏 1,200。价格怎么走,这 0.4 BTC 都按 60,000 算,剩下的变化只来自资金费和手续费。
现货本来就在手上,这里没算买卖现货的手续费;要是为了锁仓临时去买现货,那一笔也得加进来。
这种锁法的麻烦在保证金放在两个地方。空单用的是逐仓,只认分给它的那份保证金,现货涨多少都不进它的强平式。价格涨到 65,760 左右,也就是涨 9.6%,10 倍逐仓的空单就到了强平线;这时现货多出来的 0.4 × 5,760 = 2,304 USDT 还躺在现货账户里,空单那 2,400 保证金已经赔进去了。想让它扛得住更大的涨幅,就给空单降杠杆、多放保证金,代价是多占 USDT。
锁仓和直接止损,哪个亏得少
回到那笔 64,000 的多单。锁仓之后,两条腿合起来算,不管价格去哪,浮亏都停在 1,600。它没有变小,只是不再变大。
把「现在止损」和「锁 7 天再两边一起平」放在一起,7 天后的价格按还在 60,000 附近算:
| 两种做法(USDT,正数 = 付出) | 在 60,000 直接平多 | 同所锁 7 天后两边一起平 |
|---|---|---|
| 已经亏掉的 | 1,600 | 1,600 |
| 多单平仓手续费 24,000 × 0.05% | 12 | 12 |
| 对冲腿开平手续费 | 0 | 24 |
| 7 天资金费净额 | 0 | 0 |
| 合计 | 1,612 | 1,636 |
两边按同一个价格一起平,多单在 60,000 之下多亏的,空单正好赚回来;在 60,000 之上多赚的,空单正好亏回去。合计的 1,600 不随平仓价变。锁 7 天比直接平掉多付 24 USDT 手续费,另有 2,400 保证金被占 7 天。
锁仓前先说得出自己在等什么。等一笔钱转进合约账户补保证金,等某个已知时间的公告或数据公布,这类事有明确的终点,锁几天、花多少都能算出来。说不出终点,锁仓就只是把止损往后推:每推一天,2,400 保证金就多占一天,解锁时还得再做一次同样难的决定。那种情况我倾向在 60,000 直接平掉,少付一份对冲腿的手续费,也少占一份保证金。
解锁先平哪条腿:手续费差不了几毛,差别在留下的那条腿
锁是分两笔开的,解也得分两笔平。两笔一起平、先平空单、先平多单,各算一遍。拿 7 天后标记价格在 62,000 来算,这时每条腿的名义是 0.4 × 62,000 = 24,800,吃单平一笔的手续费是 24,800 × 0.05% = 12.4。多单开在 64,000,浮亏(64,000 − 62,000)× 0.4 = 800;空单开在 60,000,浮亏(62,000 − 60,000)× 0.4 = 800。价格落在 60,000 到 64,000 之间时,两条腿都是浮亏,加起来正好是锁住的那 1,600。
| 在 62,000 解锁(USDT,正数 = 付出) | 两边一起平 | 先平空单、留多单 | 先平多单、留空单 |
|---|---|---|---|
| 这一步落袋的亏损 | 1,600 | 800 | 800 |
| 这一步的平仓手续费 12.4 × 笔数 | 24.8 | 12.4 | 12.4 |
| 留下的仓位 | 无 | 多 0.4 BTC | 空 0.4 BTC |
| 留下那条腿的均价 | — | 64,000 | 60,000 |
| 留下那条腿带着的浮亏 | 0 | 800 | 800 |
| 价格每动 1,000,盈亏跟着变 | 0 | 400 | 400 |
| 留下那条腿的逐仓强平价(10 倍估算) | — | 57,856 | 65,760 |
| 强平价离 62,000 | — | 6.68% | 6.06% |
手续费上分不出高下。先平一条腿只是把另一笔 12 块多的平仓费往后挪,早晚要付。强平价那两格是前面逐仓估算式的结果,57,856 和 65,760,离 62,000 分别是(62,000 − 57,856)÷ 62,000 = 6.68% 和(65,760 − 62,000)÷ 62,000 = 6.06%。锁着的时候这两条线只是那把锁管用的范围;一解开,留下那条腿的线就成了真会碰到的强平线,而且这条腿一开始就带着 800 浮亏。
先平一条腿,等于在 62,000 重新押了一次方向。把「先平空单、留多单」往后推,看多单最后平在哪:
| 先平空单之后,多单最后平在(USDT,正数 = 付出) | 64,000 | 62,000 | 60,000 |
|---|---|---|---|
| 空单已经落袋的亏损 | 800 | 800 | 800 |
| 多单平仓亏损(64,000 − 平仓价)× 0.4 | 0 | 800 | 1,600 |
| 两笔平仓手续费 | 25.2 | 24.8 | 24.4 |
| 合计 | 825.2 | 1,624.8 | 2,424.4 |
两笔平仓手续费里,空单那笔固定是 12.4,多单那笔按平仓价算:0.4 × 64,000 × 0.05% = 12.8,0.4 × 60,000 × 0.05% = 12。中间那一列就是两边一起平的结果。往上走 2,000 少亏 800,往下走 2,000 多亏 800,锁仓攒下的「不再变大」到这一步就没有了。先平多单、留空单,是把这张表左右对调。两条腿前后脚平,中间价格动了多少,也照这个算法多亏或少亏:隔了 100 个价位,就是 0.4 × 100 = 40 USDT。
全仓账户里账要换一种算法。锁着的时候两条腿在同一条强平式里互相撑着;平掉一条,它的亏损从钱包余额里扣掉,留下那条腿由变薄了的余额单独扛。拿钱包余额 7,000、账户里只有这两条腿来算,手续费先不计:
| 全仓,在 62,000 先平一条腿 | 先平空单、留多单 | 先平多单、留空单 |
|---|---|---|
| 平掉那条腿落袋的亏损 | 800 | 800 |
| 钱包余额 7,000 − 800 | 6,200 | 6,200 |
| 余额 ÷ 数量 6,200 ÷ 0.4 | 15,500 | 15,500 |
| 强平价算式 | (64,000 − 15,500)÷ 0.996 | (60,000 + 15,500)÷ 1.004 |
| 留下那条腿的强平价 | 48,694.78 | 75,199.20 |
| 强平价离 62,000 | 21.46% | 21.29% |
多单用的是「钱包余额 + 数量 ×(强平价 − 均价)= 维持保证金率 × 强平价 × 数量」,空单是把方向对调的对称式,都按第 1 档、账户里没有别的仓位算。全仓留下的那条腿离强平远得多,可它押着的是账户里全部 6,200,逐仓那一种最多赔掉分给那条腿的保证金。
现货加空单的解法只有两种顺序。先平空单,留下的是没有杠杆的现货,没有强平价,只是重新跟着价格涨跌。先卖现货,留下的是一笔裸空单,10 倍逐仓的强平价还是 65,760 左右;价格真涨到那里,这份保证金可能全部亏光。跨所锁仓的两笔平仓单下在两个地方,没法做到同一刻成交,前后脚之间的价差要算进成本。
顺序上我的取舍是这样:等的那件事有了结果、方向已经想清楚,就先平看错的那条腿,并且把留下那条腿的强平价和保证金当成一笔新开的仓重新算一遍;方向没想清楚,就两边一起平,认下 1,600 和几十块手续费。