owenjin:加密货币现货与合约市场价格机制及其影响分析

专栏: 量化 & 套利 · · 2024年08月19日 · 32 次阅读

币圈大多数用户都对合约嗤之以鼻但又忍不住手去开合约,每次发合约的推文大家评论总是很积极,所以打算时隔 1 年后更新第 2 篇。研究并预测永续合约的资金费率是每个做市商、交易员的必备技能,但其实很多业内从业人员、专业做市商也对合约算法并不熟悉,所以第 2 篇从主流交易所 (Binance&OKX) 合约算法的角度介绍 2 种主动市值管理手法——轧空 Short Squeeze&幌骗 Spoofing

此处只举例了市面上最常用的逐仓 USDT 本位合约设计方案,以下交易所文档和项目方交易对,仅是用于举例而随机采用。

2023 年的第 1 篇大概写完了合约算法设计的 20%,2024 年这篇会逐渐开始硬核起来,大概写完了合约算法设计的 50%。下次什么时候填坑写第 3 篇(保险基金机制&ADL&风险限额 Risk Limit&维持保证金率)就看大家的呼声了。最重要的图先放在最前面:

合约系列1:

1. 阅读前须知

阅读前需要有一些交易的基本知识,才能更好的理解本文的内容

加密货币交易所交易页面

  • 订单簿 Order Book:订单簿即用来放置订单的池子,这个池子里包含了 2 种订单 — — 限价单 Maker 和市价单 Taker。
  • 限价单 Maker:当限价单挂出来时,实际上就是在订单簿里特定的价位形成一堵墙,阻止价格波动突破这堵墙
  • 市价单 Taker:当市价单 Taker 挂出来时,实际上就是在尝试突破 Maker 形成的墙。因为 Taker 的设定是以最佳价格成交而非以指定价格成交。

举个例子:以市价单买方 Taker Buy 为例,当卖 1 的限价单 Maker 无法满足市价单买单 Taker Buy 的需求时,就会去吃掉卖 2 的 Maker。达成的结果就是,盘口最新成交价变成了卖 2 的价格。这就是市价单买单 Taker Buy“突破”了卖 1 的限价单卖单 Maker Sell 这堵墙。

  • 冰山单 Iceberg Order:大户不希望自己的挂单被看到,所以会有冰山单这个选项,即挂单不完全显示在订单簿当中。比如卖 7 亿,但是在订单簿只显示成 1 亿。
  • 幌骗单 Spoofing Order:也有很多巨额挂单放出来不是为了成交,而是为了对市场做预期管理。比如前几天 Binance 的永续合约 BTC 订单簿中的 7 亿空单。

大额挂单统计

这种单子放出来之后,买方就会惊慌从而选择观望,卖方觉得自己这一方有个大哥做庄从而放肆做空,最终让价格逐渐下跌。而大户会随后撤回自己的幌骗单,等价格因为自己的大额卖单被骗到一个合适的低价时,再反向用冰山单成交自己的买单,从而达到控制市场价格的目的。

传统金融市场已经对 Spoofing 做了一些限制,比如识别到大额挂单频繁撤回后,即使不成交也要收取其挂单手续费。达到一定频率后限制其挂单、撤单。

2. 时隔 1 年再度出现的负费率 Short Squeeze 行情

极端的负资金费率

上图为 2023 年第 3 季度负资金费率行情时的典型代表,当时 SRM 合约的 24H 涨幅可以达到 120%,现货订单簿中的市价单买单 Taker Buy 非常强势,不断突破限价单卖单 Maker Sell 设置的订单墙。而期货市场看到标记价格被现货价格拉高,选择做空的力量更强,形成期现价差,最终资金费率到达 -5% 以下。

这时候现货订单簿的卖方限价单相对买方非常薄,为什么?因为想要买的话只要有 USDT 就可以了,而想要卖的前提是已经持有 $SRM。如果在现货市场你没有币,你又如何卖出呢?所以持币大户只要收集筹码不卖就能保证在对手盘中不会出现预料之外的抛压。

RARE 现货交易订单和交易额

时隔 1 年来到了 2024 年第 3 季度,似曾相识的特征出现在了 RARE 等合约上。我们可以看到 RARE 的现货订单簿中,有用户用 USDT 在买方设置了一个订单墙,卖方的 Taker 不足,很难突破这堵墙让价格大幅下跌。

RARE 期货交易情况

而到了 RARE 的合约订单簿中,我们可以看到并没有买方设置的订单墙,双方相对均衡。一方面缺少强势的市价单买单 Taker Buy,另一方面卖方可以用 USDT 产生抛压并不需要先持有币,我们会发现合约成交价显著低于现货成交价,卖方的卖出情绪在合约市场上得到释放。

以上的订单簿差距,会体现成期现价差,最终导致资金费率为负(具体资金费率怎么算,我下面会展示)。而负资金费率代表空仓需要付费给多仓,现在 RARE 的资金费率是 -2%/8 小时,假设一个用户开了 10x 杠杆的空仓,那么 24 小时会被扣掉 -60% 的保证金。但凡价格再稍微上涨几个点,空仓就会被爆仓。

种主动型市值管理手法中,空仓不一定死于价格波动,很有可能是拖着不止损最后因资金费发生大额亏损

以上内容基本回顾完了 2023 年第 1 篇文章的内容,读到这里大家一定有很多疑问,比如资金费率为啥是负的?现货价格怎么控制期货价格?在过去 1 年中我一直收到有关第 1 篇文章的疑问,所以下文我会介绍合约算法以帮助理解这个独特的币圈金融衍生品。

3. 现货价格&合约价格&指数价格&标记价格的关系

整个合约算法的关系图总结如下,下面我会以 Binance 和 OKX 的 2 种算法做逐个拆解:

加密货币合约算法

在交易所交易页面,以上这几种价格会被摆放在不同的位置,以便区分:

现货价格&合约价格&指数价格&标记价格的关系

3.1 现货指数价格 Index Price

指数价格又被称为 Index Price,这个价格会采用全市场多个交易所的现货价格作为组成部分。为了避免某个交易所价格偏差过大,会对这种异常值进行平滑处理(Binance 为±2%,OKX 为±5%)。最终通过 4~6 家交易所的价格,形成一个现货指数价格,其实大家可以把指数价格 Index Price 理解为“全市场现货的合理价格”

为啥某个交易所会出现异常价格呢?比如,某个交易所没有开充值提现导致无法进行跨交易所套利,最终使得其价格偏离了其他交易所的价格。

现货指数价格Index Price 计算

以 Binance 的 RARE 合约为例,其现货指数价格的成分是 Binance、Coinbase、Gate、Mxc、Bitget 的现货价格。

方案 A. OKX 的指数价格算法方案

方案A. OKX的指数价格算法方案

上图为 OKX 的指数价格算法,当某个交易所的现货价格偏离中位数>±2% 时,最多只取±2%。由此对异常值进行平滑处理。

方案 B. Binance 的指数价格算法方案

上图为 Binance 的指数价格算法,选择用±5% 来平滑。

阶段性结论:①Binance 的现货指数价格用±5% 平滑,会比 OKX 用±2% 平滑的算法,理论上波动更大一些。

3.2 合约标记价格 Mark Price

标记价格又被称为 Mark Price,这个价格的目的在于:需要衡量合约市场的盈利/亏损/爆仓,既要体现合约价格,又要体现现货价格(毕竟合约价格完全脱离现货价格的话,那还算是同一个币吗?)

所以标记价格的理念是在现货指数价格的基础上,添加一些合约价格的成分,组成一个新的价格用来衡量合约市场的盈利/亏损/爆仓。

方案 A. OKX 的标记价格算法方案

方案A. OKX的标记价格算法方案

标记价格=指数价格 + 基差

“基差”其实就是现货与期货的差,这个概念跟传统期货概念类似,并且用了移动平均值来平滑掉这个基差,所以即使是某一时刻的插针,也不会影响基差的计算。

OKX 的算法有 1 点值得特别注意 — — 只取了合约的买 1 和卖 1(也被称为盘口中间价),这意味着 OKX 的盈利/亏损/爆仓其实跟整个订单簿的深度没有直接的关联,而是只与买 1 和卖 1 相关。

回到最近很热门的问题,合约订单簿中的 7 亿卖单

大额挂单统计

假设我在 OKX 的合约订单簿上挂了 7 亿的限价单空单 Maker Sell,这会对现货价格或者合约价格有直接影响吗?答案是不会,因为算法上完全不考虑非买卖 1 的挂单深度。

也许会有上文提到的幌骗单 spoofing 的影响,但这是一种心理上影响,无法量化其影响大小。

方案 B. Binance 的标记价格算法方案

方案B. Binance的标记价格算法方案

Binance 在标记价格的取值上更加谨慎,计算了 3 种价格,最后在这 3 者间取中间值,所以标记价格会比 OKX 的波动更加小一些。

Binance 价格 1:

这是一种跟指数价格 Index Price、资金费率 Funding Rate 强相关的算法。指数价格跟现货价格强相关。而 Binance 的资金费率又跟订单簿深度强相关,所以这是一种融合了现货价格和合约订单深度的算法。但主要组成部分仍然是现货指数价格 Index Price。

注意这里的不同,OKX 取买 1 卖 1 计算,而 Binance 这里取订单簿深度来计算。

Binance 价格 2:

这个算法跟 OKX 的理念一致,不赘述了。

Binance 价格 3:

就是合约成交价。但取合约成交价的前提是,其价格水平已经处于价格 1 和价格 2 之间了,所以其实很大程度上也已经受限于现货指数价格 Index Price。

阶段性结论:


① 现货价格通过指数价格Index Price在很大程度上决定了合约标记价格Mark Price。合约标记价格Mark Price用于计算盈利/亏损/爆仓,所以也就意味着现货价格波动是合约爆仓的主要原因。

② OKX的标记价格Mark Price仅与买1和卖1相关,所以波动更大(插针)。但这也有好处,就是OKX的方案下,标记价格Mark Price更加紧贴现货价格,期现价格出现价差时也会回归更快。

③ Binance的标记价格Mark Price是3种价格的中间值,所以波动会更加小一些,但意味着期现价差的回归也会相对更慢。

④ 合约价格不能从算法直接反馈回现货价格,而且靠套利间接受到合约价格影响,但这种规模不可量化

⑤ 现货和合约可以最新成交价不一致,但会反映在资金费率上

3.3 资金费率≠借贷利率

这是常见误解最多的部分,比如资金费率为正就代表市场做多杠杆较多?资金费率为负代表了做空的更多?资金费率为负就代表现货一定 Short Squeeze?

资金费率的正负只是市场行为的结果,合约价格正在通过资金费机制回归现货价格。换言之,资金费率为负是轧空 short squeeze 的必要不充分条件。

方案 A. OKX 的资金费率算法方案

方案A. OKX的资金费率算法方案

Clamp(X,a,b)这种函数的作用就是,X 的取值上下限分别为 a 和 b,即限制了资金费率的最高和最低取值。比如 OKX 大多数山寨币合约的上下限是±1.5%。

注意!借贷利率是 0%

具体来看 X——其实就是(合约盘口价 - 现货指数价格)取个移动平均值,然后再除以现货指数价格。数学好的家人们,读到这里大概就能体会到,这其实就是合约盘口价距离现货指数价格的价差幅度。

那资金费率又体现了什么呢?

假设买了个山寨币合约,意思就是以每 8 小时最多 1.5% 仓位价值交换为代价,让合约盘口价格回归到现货指数价格。资金费率以 1.5%/8 小时的速度不断结算,最终合约盘口中间价锚定现货指数价格 Index Price 的过程完成。

方案 B. Binance 的资金费率算法方案

方案B. Binance的资金费率算法方案

Binance 的资金费率计算方案与 OKX 相差很大。首先我们还是看到了熟悉的 Clamp 函数,只不过这次 Clamp 的上下限取值仅为±0.5%。

Binance 资金费率计算方案有 2 个重要部分:

  • 借贷利率为 0.01%!而不是 0%。所以当期现价差几乎为 0 时,Binance 的合约资金费率大多以 0.01% 进行结算

Binance 资金费率计算方案:借贷利率为0.01%!而不是0%

  • 溢价指数模块

Binance 资金费率计算方案:溢价指数模块

乍一看溢价指数的计算很复杂,不要慌 — — 其实这跟 OKX 的基差是同一个概念,只不过把 OKX 的买 1 卖 1 换成了“冲击买方/卖方出价”这个概念。

这个概念简而言之,就是 Binance 的资金费率计算时不止看买 1 卖 1,而是参考整个订单簿中的深度分布,将能承受大额 Taker Buy 冲击的价格位置称为“冲击卖方出价”,而能承受大额 Taker Sell 冲击的价格位置称为“冲击买方出价”。以这 2 个价位替换掉买 1 卖 1,相当于以深度为基础计算出了基差。

如果想详细了解,可以点击查看Binance 的产品文档

读到这里大家应该会很疑惑,既然算法这么牛逼,那为什么 RARE 这样的合约,-2% 的资金费率还不能让合约价格回归到现货价格呢?

当现货价格比合约价格高时,期现价格的套利机器人常见策略是“做空现货做多合约” — — 但是“庄”都控制了大部分代币了,用户去哪里借呢?所以我们会看到这种行情时,在借贷市场上“一币难求”!就更别提让现货价格回归了。

阶段性结论:

① 资金费率不是借贷费率。OKX的借贷费率默认是0%,Binance的借贷费率默认是0.01%。所以当期现价差很小时,Binance常见的结算资金费率是0.01%,因为其他项约为0。

② OKX的资金费率仍然跟现货指数价格强相关,而Binance的资金费率则跟现货指数价格毫无关联。

③ Binance的资金费率跟合约盘口深度强相关,而OKX的资金费率仅跟合约盘口中的买1卖1相关

3.4 价格精度的设计

如果读到现在,你是否觉得,虽然 OKX 算法方案与买 1 卖 1 强相关,Binance 算法则与整个订单簿深度强相关,但这真的会有没有什么不同吗?

Binance 与 OKX 加密货币交易所对标的价格精度的设计

以曾经的拉盘妖币代表 API3 合约交易对为例,OKX 的合约交易对价格精度是 0.001,而 Binance 的合约交易对价格精度是 0.0001。那么当价格波动时,OKX 的价格波动颗粒度就会比 Binance 粗一些,毕竟 OKX 只能以 0.001 为幅度去挂单交易 — — 在这种情况下,OKX 的买 1 卖 1 容易波动比较快(还记得吗?OKX 的标记价格与买 1 卖 1 强相关),最终这细微的差距会引发某些用户更多的盈利或更快的爆仓。

设计 1 张合约的价格精度是 0.001 还是 0.0001,这都与合约爆仓是息息相关的。

魔鬼都藏在细节里!The devil is in the details!

4. 负资金费率轧空 Short Squeeze 的条件

说回一年前的文章,介绍了小市值合约的 short squeeze,但这种行情并不多见,以至于最近看到很多人对这种情况做出了错误判断。这里总结如下,必须全部满足:

4.1 项目特点

  • 市值要小:这样做主动市值管理的潜在抛压也比较小
  • 代币全流通或短期内稳定:如果后续还有解锁,那还有额外的抛压要处理,不好预估。全流通是最好的,但如果并非全流通则距离下次解锁较远也可以,保持在主动市值管理期间代币总量稳定。

4.2 现货市场

  • 限价单买单 Maker Buy 深度显著好于限价单卖单 Maker Sell,“庄”用 USDT 为现货价格做托底,如果有其他持币大户 dump 那正好,可以加速换手。
  • 控制杠杆的借贷市场,最好是交易所的借贷市场里也借不出太多的币用来砸盘。
  • 用订单足迹图的功能识别到现货市场持续有市价单买单 Taker Buy 在突破限价单卖单 Maker Sell 的价格(可以用 coinank 的订单足迹图查看)

4.3 合约市场

  • OI 显著提高:1 个小市值合约的 OI 如果比现货市值还大,那就说明已经有巨鲸玩家偷偷上车了,正在等现货拉盘然后在合约市场中又吃又拿(价格和资金费同时赚钱)
  • 现货价格高于合约价格:最终体现为资金费率变负,越负越好。

5. 蕴含的交易机会

之前在 2023 年第 3 季度我更新了很多次有关这个交易策略的实践,也有人私信我感谢说跟着我做空赚到了些钱。但我仍然不建议参与这种高风险合约交易对的交易,所以最近这 1 年里我故意停更了这个策略的实践。

5.1 对于做多方

想搭顺风车的关键是识别到:

  1. 买方的 Maker Buy 还在保护现货价格
  2. 现货盘口有 Taker Buy 在按规律拉高价格

5.2 对于做空方

想搭顺风车的关键是识别到“庄”的离场:

  1. 现货 Maker Buy 撤单
  2. Taker Buy 很久不出现,可以考虑在每 8 个小时资金费率结算后的那几秒尝试做空,如果发现 Taker Buy 继续拉盘那就止损离开等下一个 8 小时结算后再尝试。

不建议在资金费率结算前做空,资金费成本太高了。另外这种合约会引来很多资金费率套利机器人,这些机器人会统一在结算前几秒开多,然后结算完后几秒平仓,实操的时候可能会发现结算前后几秒交易有点卡。

如果不能一直盯着现货订单簿感受“庄”在现货的 Maker Buy 和 Taker Buy 是否还在的话,仍然不建议参与这种合约交易。

6 合约市场的常见误区

误区 1:合约挂单可以去吃现货挂单

现货和杠杆是同一个订单簿可以互相成交,现货和合约不是同一个订单簿不能互相成交。现货/杠杆挂单吃不到合约挂单。

误区 2:合约价格可以影响现货价格

这个问题要从 2 个方面判断

直接影响层面:算法上合约价格是不会反馈给现货的,只有现货价格反馈给合约价格的机制

间接影响层面:当现货/合约出现价差时,确实可以进行套利。但当现货价格比合约价格高时,套利要做的操作是“做空现货 + 做多合约”,但卖的现货从哪里来呢?如果“庄”控制住了大部分代币,套利机器人没办法进行卖现货这个操作。

所以 BTC、ETH、SOL 这些借贷市场流动性充足的币,可以用期现套利促进两者价格回归。但山寨币若在借贷市场上流动性不足,无币可借的话,那就不能进行空现货这个操作,也就不能影响到现货价格了。比如 RARE 现在在借贷市场上根本无币可供借出。

误区 3:资金费率的正负代表做多方和做空方的力量强弱

对于 OKX 来说,资金费率的正负只代表合约盘口中间价和现货指数价格 Index Price 孰高孰低。现货价格比合约高,资金费率就会变负。

对于 Binance 来说,资金费率的正负只代表利率 0.01% 与溢价指数孰高孰低。溢价指数比利率 0.01% 高,就变导致资金费率变负。而溢价指数的多少取决于“冲击买方/卖方价格”与现货指数价格 Index Price 孰高孰低。

总结一下:现货多方的强势确实会伴随着资金费率变正,但资金费率为正并不意味着现货多方很强势。必要不充分条件。

对于杠杆借贷市场来说,借贷利率越高确实可以体现借贷双方的需求情况,USDT 的利率高代表多方需求旺盛,RARE 的利率高代表空方的需求旺盛。

误区 4:资金费率的正负跟未平仓位 OI 有关

更没关系。合约的一张空仓必定对应一张多仓,两者永远 1:1。

7. 币圈金融交易无监管下的巨鲸优势

7.1 现货联动合约市场的 short squeeze

虽然 short squeeze 或 gamma squeeze 在传统金融市场也存在,但是在币圈因为永续合约这个独特的金融产品,巨鲸优势进一步放大。

对于交易所来说,上线一个现货交易对和合约交易对评审标准应大不相同。现货交易对更看重项目资质最好一路上涨。

而合约交易对可涨可跌,最好交由专业的金融二级市场从业人员来评审。一张合约设计的侧重点在于避免现货被控制后走出单边行情,需要更加看重数理关系 — — 代币如何释放?风险限额给用户开多大风险比较小?如何设计一个合约才能规避项目方/做市商控制现货筹码后开小号操作合约市场?一张合约代表多少 u?价格精度应该设置成小数点后几个 0 才公平?

如果全部交易所开通小市值山寨币合约并且合约 OI 很宽松,那其实相当于在放大现货持币大户(“庄”)的市场操纵能力,因为合约的这些 OI 爆不爆仓基本取决于现货持币大户什么时候卖。

7.2 对幌骗单 Spoofing 的惩罚?

巨鲸持仓,其实不需要成交就可以形成市场预期管理。比如上周发生的合约 7 亿限价单卖单 Maker Sell。

这种单子只要挂出来就好,多方会自动退却,空方则信心大增,越来越多不明真相的用户加入空方阵营,市场价格自然就下跌。等价格下跌到自己的心理价位,巨鲸把限价单卖单 Maker Sell 撤单换成冰山单买单 Iceberg Buy。最终成功在低价买入,而且因为幌骗单 Spoofing 这些新加入的空方散户还提供了充足的流动性。

大象打架,蚂蚁遭殃,说的就是这种现象。

在传统金融市场,CME 已经将 Spoofing 定义为了“扰乱市场”,而币圈目前似乎还没有相关的交易规定。比较常见的做法是对这种巨鲸的挂单和撤单都收取手续费,以避免其频繁挂撤单恐吓市场,然后给其提供优惠的 OTC 交易费率,最终引导巨鲸完成 OTC 交易。不过如果对以上的 2 种巨鲸操纵价格的行为进行了管制,那也有悖“去中心化“的理念。

8. 结论

8.1 指数价格

① Binance 的现货指数价格用±5% 平滑,会比 OKX 用±2% 平滑的算法,理论上波动更大一些。

8.2 标记价格

① 现货价格通过指数价格 Index Price 在很大程度上决定了合约标记价格 Mark Price。合约标记价格 Mark Price 用于计算盈利/亏损/爆仓,所以也就意味着现货价格波动是合约爆仓的主要原因。

② OKX 的标记价格 Mark Price 仅与买 1 和卖 1 相关,所以波动更大(插针)。但这也有好处,就是 OKX 的方案下,标记价格 Mark Price 更加紧贴现货价格,期现价格出现价差时也会回归更快。

③ Binance 的标记价格 Mark Price 是 3 种价格的中间值,所以波动会更加小一些,但意味着期现价差的回归也会相对更慢。

④ 合约价格不能从算法直接反馈回现货价格,而且靠套利间接受到合约价格影响,但这种规模不可量化

⑤ 现货和合约可以最新成交价不一致,但会反映在资金费率上

8.3 资金费率

① 资金费率不是借贷费率。OKX 的借贷费率默认是 0%,Binance 的借贷费率默认是 0.01%。所以当期现价差很小时,Binance 常见的结算资金费率是 0.01%,因为其他项约为 0。

② OKX 的资金费率仍然跟现货指数价格强相关,而 Binance 的资金费率则跟现货指数价格毫无关联。

③ Binance 的资金费率跟合约盘口深度强相关,而 OKX 的资金费率仅跟合约盘口中的买 1 卖 1 相关

8.4 现货价格&合约价格的关系

可以把合约当作在赌马。

A 马 B 马 C 马跑得有多快,是马自身的素质决定的,我们假设 A 马是跑的最快的马。马之间的竞赛就是现货市场。

而赌马场(合约市场)进行的是,赌 A/B/C 哪匹马跑得快。用户可以根据自己对马的理解,赌 A/B/C 马获胜,比如 A 马的腿比较长、B 马长得帅、C 马的名字取得吉利。但并不会因为大多数钱都赌了 C 马获胜,C 马就一夜之间变得特别健壮能跑赢 A 马了。A 马能跑赢 C 马是由自身决定(现货市场),而不是哪边赌盘大决定的(当然也有的违法交易所看赌盘决定 A/B/C 马谁能赢,这就属于吃客损了,不在本文的讨论范畴)。

原文链接

量化 & 套利

量化 & 套利

探索加密货币量化和套利交易,涵盖市场数据分析、算法策略,提供行业动态和实战洞察。