本文发布于HashKey Capital,作者:郝凯。

 

做市商广泛存在于交易市场,他们通过做市制度来维持市场的流动性,满足交易者的交易需求。随着 DeFi 项目的兴起,自动化做市商(AMM)受到越来越多的关注。AMM 利用数学函数来确定资产的价格,在推动 DeFi 发展和提供流动性方面发挥了巨大作用。

永续合约很好地契合了加密货币市场上交易者的特点和需求,已经成为中心化交易所在期货合约市场的主要产品。作为实现去中心化交易所(DEX)的关键技术,AMM 已经被成功应用到现货交易中。一些 DeFi 项目希望通过 AMM 的方式实现永续合约,Perpetual Protocol 是其中的典型代表。根据下表中数据,Perpetual Protocol 的交易量在衍生品类去中心化交易所是最高的。

HashKey 郝凯:深入解析 Perpetual Protocol 永续合约机制设计表 1:与去中心化交易所相关的主要 DeFi 项目,数据来源:www.oklink.com,2021 年 3 月 15 日

 

项目设计

AMM 通过完全去中心化的方式实现两种或多种资产之间的链上交易,利用数学函数来确定资产的价格。例如,Uniswap 使用恒定乘积函数 x*y=k,当 x 的供给增加时,y 的供给就会减少,以保持恒定的乘积 k,反之亦然。但是,AMM 还存在很多限制,包括无常损失、资本使用效率低和无法使用杠杆等。

 

虚拟自动化做市商

针对当前 AMM 存在的问题,Perpetual Protocol 引入了虚拟自动化做市商(vAMM)。所谓虚拟自动化做市商,指的是交易者的真实资产没有存储在 vAMM 中,而是存储在管理所有 vAMM 抵押品的智能合约中。

对于流动性而言,AMM 的流动性来源于流动性提供者在流动性池中提供的资产。vAMM 的流动性不依赖流动性提供者,直接来自于 vAMM 之外的抵押品。在 vAMM 中,交易者本身可以彼此提供流动性,不需要其他流动性提供者。因此,vAMM 始终存在流动性。

对于无偿损失而言,由于 vAMM 不需要其他流动性提供者预先放入资产来提供流动性,交易者的真实资产存储在管理抵押品的智能合约中,因此 vAMM 模式下不存在无偿损失。

vAMM 也采用恒定乘积函数 x*y=k,并且 Perpetual Protocol 允许交易者使用 1-10 倍的杠杆进行永续合约交易。与 AMM 不同的是,vAMM 不需要真实的流动性提供者来提供资产,x、y 和 k 值是由创建者设定的。

由于 k 值是虚拟的,可以根据交易量、持仓量和资金费率等市场数据进行调整。未来,k 值可能会以分布式自治组织的形式来决定。通过调整更高的 k 值,vAMM 可以有效解决交易滑点的问题。但 k 值也不能设置的太高,否则会影响套利者的参与动力。

 

交易流程

创建者创建 vAMM,并设定 vAMM 中虚拟资产的初始数量 x0 和 y0,对于任意时刻,资产 x 和资产 y 都满足恒定乘积函数 x*y=k,资产 x 相对于资产 y 的初始价格为 y0/x0。

HashKey 郝凯:深入解析 Perpetual Protocol 永续合约机制设计

HashKey 郝凯:深入解析 Perpetual Protocol 永续合约机制设计

HashKey 郝凯:深入解析 Perpetual Protocol 永续合约机制设计表 2:交易流程示意图

当交易者进行平仓时,他们需要拿出持有的资产 x,并根据恒定乘积函数计算得到最终实际获得的资产 y 的数量。

 

资金费率

为了确保永续合约的价格和现货价格之间的长期趋同,不会偏离现货价格太多,Perpetual Protocol 也引入了资金费率机制。Perpetual Protocol 每隔一个小时进行资金费率的结算。资金费率决定了付款方和收款方:如果永续合约的价格明显高于现货价格,那么资金费率为正,多头需要支付资金给空头;反之,如果永续合约的价格明显低于现货价格,那么资金费率为负,空头支付资金给多头。并且,价格偏离的程度越高,资金费率就会越高。如果永续合约的价格与现货价格出现明显的偏差,会有套利者在两个市场上进行套利。同时,Perpetual Protocol 也采用标记价格以避免市场操纵的影响。

Perpetual Protocol 的资金费率的计算如下。其中,TWAP 表示时间加权平均价格。

HashKey 郝凯:深入解析 Perpetual Protocol 永续合约机制设计

 

项目代币 PERP

PERP 是 Perpetual Protocol 的项目代币,主要作用包括抵押和治理。PERP 持有人可以抵押代币并按比例获得交易手续费的分红奖励。同时,PERP 持有人还可以参与项目治理,例如参与投票上线新的交易对和修改项目参数等。

 

案例分析

目前,Perpetual Protocol 支持 ETH/USDC、BTC/USDC 和 DOT/USDC 等交易对,每个交易对都用 USDC 作为保证金。以 ETH/USDC 为例进行分析。假设 ETH 的交易价格为 2000 USDC,创建者设置 ETH 和 USDC 的初始比例为 1:2000。例如,创建者将 vAMM 的初始状态设置为 100 vETH 和 200000 vUSDC,具体交易流程如下表所示。

HashKey 郝凯:深入解析 Perpetual Protocol 永续合约机制设计表 3:案例分析

交易者 A 希望以 1000 USDC 作为抵押品,然后 10 倍做多 ETH。A 将 1000 USDC 存入抵押品的智能合约中。Perpetual Protocol 将 A 的 10000 vUSDC (1000 USDC 的 10 倍杠杆)计入 vAMM。此时,vAMM 中 USDC 的数量为 210000,根据 x*y=k 计算 A 收到的 vETH 的数量,即 4.7629 个(100-100*200000/210000),相当于 A 持有 4.762 个 ETH 多仓。

此时,交易者 B 也希望以 1000 USDC 作为抵押品,然后 10 倍做多 ETH。B 将 1000 USDC 存入抵押品的智能合约中。Perpetual Protocol 将 B 的 10000 vUSDC (1000 USDC 的 10 倍杠杆)计入 vAMM。此时,vAMM 中 USDC 的数量为 220000,根据 x*y=k 计算 A 收到的 vETH 的数量,即 4.329 个(95.2381-100*200000/220000),相当于 B 持有 4.329 个 vETH 多仓。

然后,交易者 A 拿出持有的 4.762 个 vETH 进行平仓。此时,vAMM 中 vETH 的数量为 95.671,根据 x*y=k 计算得到 vUSDC 的数量为 209049.8,A 的最终获利为 950.2 个 USDC (220000-209049.8-10000)。

此时,交易者 B 拿出持有的 4.329 个 vETH 进行平仓。此时,vAMM 中 vETH 的数量为 100,计算得到 vUSDC 的数量为 200000,B 的最终获利为-950.2 个 USDC (209049.8-200000-10000),即交易者 B 亏损了 950.2 个 USDC。

 

与中心化交易所永续合约的对比

交易对手方

中心化交易所的永续合约属于场内标准化交易产品。永续合约是一个双向交易市场,根据中心化交易所的撮合机制,交易者在开仓交易时必须要有对手盘才能成交。也就是说,对于做多的交易者,必须有做空的对手方才能完成交易,反之亦然。

但 Perpetual Protocol 的交易者不需要交易对手方。从上一章的案例中可以看出,在 vAMM 模式中没有真实的资产在进行交易,交易者在开仓时不需要反方向的交易对手方。在不考虑交易手续费等磨损的条件下,生态中交易者的盈利等于其他交易者的亏损,并且与交易方向无关。即使 Perpetual Protocol 中两个交易者的交易方向是一致的,还是可能会出现一位交易者盈利而另一位交易者亏损的情况。

考虑一种极端情况,Perpetual Protocol 生态中所有交易者都建立多头头寸或都建立空头头寸。这在中心化交易所的永续合约市场上是不可能发生的,但对于 Perpetual Protocol 是可能的。此时,Perpetual Protocol 市场的价格将会明显偏离现货市场的价格,理性的套利者会进行做空以获得资金费率金。如果没有套利者加入,多头需要向风险准备金支付资金费率金。

 

盈亏计算

中心化交易所的永续合约可以分为币本位合约和 USDT 本位合约。币本位合约也称为反向合约,交易者使用对应的加密货币作为保证金来进行交易,最终也按对应的加密货币进行结算。例如,交易者参与 BTC 的币本位合约,那么交易者要先持有一定数量的 BTC 作为保证金,其最终收益也按 BTC 来计算。USDT 本位合约也成为正向合约,其保证金和结算币种都使用 USDT。参与 USDT 本位合约的交易者不需要持有不同种类的加密货币,只持有 USDT 就可以参与所有交易品种的 USDT 本位合约。同时,USDT 本位合约的保证金的价值不会发生变化,其盈亏曲线是线性的。假设在 10000 美元的价格分别在币本位永续合约和 USDT 本位永续进行 BTC 开仓 100 张合约,盈亏曲线如下图所示。

HashKey 郝凯:深入解析 Perpetual Protocol 永续合约机制设计

HashKey 郝凯:深入解析 Perpetual Protocol 永续合约机制设计图 1:币本位合约和 USDT 本位合约的盈亏曲线

对于币本位合约,交易者的盈亏需要根据持仓均价、平仓成交均价、合约面值和合约张数来进行计算:多仓盈亏 =(1/ 持仓均价-1/ 平仓成交均价)*平多仓合约张数 *合约面值;空仓盈亏 =(1/ 平仓成交均价-1/ 持仓均价)*平空仓合约张数 *合约面值。

对于 USDT 本位合约,交易者的盈亏需要根据持仓均价、平仓成交均价、合约面值和合约张数来进行计算:多仓盈亏 =(平仓成交均价-持仓均价)*平多仓合约张数 *合约面值;空仓盈亏 =(持仓均价-平仓成交均价)*平空仓合约张数 *合约面值。

对于 Perpetual Protocol 的交易者来讲,他们最终的盈亏计算与开仓和平仓时的整个系统的状态有关。

 

风险准备金

中心化交易所都为永续合约提供风险准备金。如果交易者的永续合约被强制平仓,交易所就会启动清算引擎接管交易者账户上剩余的仓位,并使用风险准备金来进行反向平仓。风险准备金的存在相当于交易所在强制平仓的价格向交易者提供了无限流动性。如果交易所的风险准备金不够接管被强平用户的剩余持仓,交易所将会按照规则对获利方进行自动平仓。主流的中心化交易所都积累了大量的风险准备金以保护交易者的利益。

Perpetual Protocol 也存在风险准备金。当市场上清算不及时未能清算未抵押头寸,或市场不平衡需要 vAMM 支付资金费率金时,就会需要使用风险准备金。如果风险准备金用完,系统将铸造新的代币 PERP 在市场上出售以偿还债务。

与中心化交易所相比,上线时间不久的 Perpetual Protocol 所积累的风险准备金非常有限,而且风险准备金主要是自身代币 PERP,价值也不稳定。因此,Perpetual Protocol 的风险准备金都用户的保护力度比较小。

 

思考和总结

Perpetual Protocol 通过 vAMM 的模式在一定程度上解决了 AMM 的流动性和无偿损失问题。Perpetual Protocol 采用 Layer 2 解决方案,交易在 xDai Chain 进行处理,这意味着交易的效率更高且没有 Gas 费。同时,Perpetual Protocol 实现了去中心化的永续合约。

vAMM 模式中没有真实的资产在进行交易,交易者在开仓时不需要反方向的交易对手方,这就与 Synthetix 等项目一样,生态中交易者的盈利等于其他交易者的亏损。在这种情况下,交易者即使判断对交易方向,还是可能会出现亏损。

Perpetual Protocol 的永续合约交易深度远小于中心化交易所,风险准备金的规模也无法与中心化交易所相比较。同时,Perpetual Protocol 的交易者的盈亏计算比较复杂。因此,当前 Perpetual Protocol 的用户体验还有待改进,中心化交易所的永续合约更适合交易者进行参与。