超导体,指可以在特定温度以下,呈现电阻为零的导体。超导体电阻转变为零的温度,称为超导临界温度。——前言
有别于之前推出的MOV磁力交易和闪兑交易,属于一种新型的自动化交易市场,有着非常强大的做市机制和流动性,可以针对不同门类的交易对进行函数定制化做市,如稳定币间、主流币间、小币种间以及合成资产间等。MOV超导核心技术可以归类于CFMM(ConstantFunctionMarketMaker)做市机制,即恒定函数做市商,最著名的代表项目有Uniswap和Balancer,一个是恒定乘积做市函数,一个是恒定加权几何平均做市函数。在描述CFMM之前,我们有必要介绍一下LMSR,一个“古老”的自动化做市机制,可以称之为CFMM鼻祖,体会金融中的数学之美。
LMSR
在现代金融市场和理论中,市场评分规则常用于计算交易者与做市商之间达成交易的成本。其中最常用的是对数市场评分规则LMSR(LogarithmMarketScoringRule)。根据LMSR,在一个做市交易的市场中,做市商定价公式为:
常量参数b与做市商可提供流动性大小有关,可以为任意常量:b过小则价格变化敏感,即很小的交易量就可以造成价格变化明显;b过大则价格发现迟钝,即很大的交易量才可以使价格发生明显改变。因此对于一个小型不频繁的交易市场,b一般取小值,对于大型交易市场,b取大值。q1和q2分别表示交易市场中两个币种流通数量,如果有多个币种,可以继续增加q3,q4...。举个例子,在一个市场中有10个Atoken、20个Btoken以及23个Ctoken,假定b=10,则此时A的定价为:
做市商可以根据公式设置初始数量,给每个币种设定价格和汇率比。之后的定价将完全交由每一笔交易行为按照公式对状态的更改,所以我们还需要一个成本函数。对于函数做市机制,有两个重要函数,一个是上面的价格函数,另外一个是对应的成本函数:
成本函数用于计算交易者跟做市商间进行一笔交易所付出的成本,即交易买卖是有摩擦的,最直观的直觉是,购买某种币越多,付出的成本越大,即需求越多,价格越高。例如在一个三币种的交易市场里,当前有10个Atoken,20个Btoken和23个Ctoken,我要购买7个Atoken,需要付出多少成本?根据成本公式计算交易变更前后的状态,变更前:
交易后更改状态有:
我付出的成本即为二者之差31.284-29.998=1.286。同理来看卖出的场景,假定此时D的数量为50,E的数量为10,定义b=100,我向做市商卖出之前买入的10个Dtoken,则做市商应给我:
我在系统初始时向做市商以低成本买入10个Dtoken:
一来一去,我净赚5.87-5.12=0.75美元。
基于此,我们进一步拓展到数字货币交易对场景中。假定做市商提供两种币间的兑换服务,比如BTM和ETH,用户要购买BTM,需要向系统投入ETH,即用户售卖ETH,系统返还BTM,这可以拆成两步操作,先向做市商售卖ETH拿到钱,再用这些钱向做市商购买BTM,最终获得的BTM数量即反映了汇率比或者成本,所以我们有:
可以得到公式:
其中只有q1*和q2*是未知量,可以用x和y来代替,作图直观表示出ETH和BTM的兑换曲线:
这就跟我们常见的恒定乘积做市商很贴近了。进一步我们拓展到三维甚至多维空间,如图呈现其三维曲面形态:
动态 | 比原链发布MOV稳定金融体系白皮书:1月15日,比原链正式发布《MOV 稳定金融体系白皮书1.0》。白皮书提出了一种创新稳定金融方案,与当下的稳定币项目相比,有3点优势:
一是真正意义上的多资产抵押稳定金融体系,抵押资产包括BTC、ETH、USDT和BTM;
二是当下的稳定币项目大多是从稳定币本身出发和立项,没有站在构建完整生态的高度和立意上思考;
三是激励循环机制,不同的角色担负不同的责任并从系统获利,极大的维护了系统的稳定性。[2020/1/15]
LMSR为自动化做市引入了非常优美的函数变化曲线,完美解决了供需与价格难题,最终慢慢演变成CFMM,被加密货币行业广泛采用。从某种意义上讲,曲线之美缔造了强大的金融自动化做市机制。MOV超导也是根据LMSR基本原理和目前常见的CFMM项目进行了进一步的创新和实现。概括起来有如下几点创新:
构建更为灵活的适用于稳定币间兑换市场的CFMM函数以及关键参数;
不局限于二维函数模型,可灵活调整到多维几何空间,即支持一个储备池中存在多个币种间互相兑换,并解决存入单一资产问题;
通过引入计息规则,完善当前CFMM手续费和收益计算模型的不健全,并基于凸优化为套利者提供高效的套利策略模型;
全面风控指导,尤其是外部市场波动风险,包括LP的无常损失、滑点保护机制、被套利问题等。
MOV超导基本架构
超导基本角色
MOV超导基于储备池提供流动性,所以也可以称之为储备池做市商,由这一角色向储备池按照当前币种间正常市场汇率比例投入各资产进行做市,LP会因此获得系统收益,收益来源便是在此市场交易产生的交易手续费。这个市场的定价或者维持汇率锚定并不是通过传统的中心化预言机机制,而是完全依赖于一种角色,一旦因为交易或者外部汇率变化导致场内汇率跟正常值出现明显偏差,套利者便会迅速进行套利操作,在场内以低成本换取偏差代币,然后去场外汇率正常的市场高价卖出,赚取额外收益的同时将场内汇率“搬”到跟场外一样,这种通过不断的高频套利维持场内价格与正常市场汇率锚定的机制,我们也称之为链上预言机,这也是CFMM最为重要的意义之一。
在这样看似简单的过程中其实蕴藏着复杂的套利与损失问题:有些LP可能并没有严格按照理性比例存入各资产;场内价格严重偏离外部正常市场汇率;迅速波动的外部市场环境对LP存入策略的影响;超级攻击,例如闪电贷攻击。简单来概括这些问题的本质——被套利者利用,加大LP的损失,不利于系统健康运转。但如果我们的系统和机制设计可以很好地解决这些问题,让套利者成为一个“白帽子”套利者,而不是像黑客一样利用系统金融漏洞进行恶意套利,不仅有助于维持场内汇率跟外部正常市场汇率间的无缝锚定,创建一种完备的链上预言机和去中心化交易市场,更有利于系统中所有关键角色达到一个共赢的平衡,让系统正向壮大。
除了这些关键角色外,还有一些辅助设施,比如单一资产代理转换,即帮助存入单一资产的LP转换成按理性比例存入各资产的机制;滑点保护机制,帮助正常交易者和LP规避损失;黑天鹅熔断机制,以防某种稳定币出现黑天鹅信用危机造成的系统风险;外部市场波动监控,通过灵活调整系统关键参数应对极端的市场行情波动。
MOV超导角色图
核心函数公式
随着DeFi的崛起和壮大,越来越多的稳定币交易需求从CeFi交易平台转向更为简便、安全、透明的DeFi交易平台和钱包,很多稳定币还涉及到平台间的竞争以及合规问题,因此并不适合单一的中心化交易所,这也是DeFi交易平台能够有机会跟中心化交易所竞争一席之地的机遇,而CFMM机制天然适合稳定币兑换生态。因此MOV超导首发的是稳定币间的交易兑换市场,这里我们将还原如何构建出适合稳定币兑换场景的CFMM,也是超导最为核心的技术。
我们先来看最简单的做市函数——恒定之和:
上图示意我们初始时有5个USDC和5个USDT。在这条斜率绝对值恒为1的直线函数做市下,USDC和USDT间的兑换汇率始终保持为1:1,即1USDC=1USDT。看似很完美,但是有两个致命问题:
流动性枯竭。在没有强制干预的前提下,很容易出现一方数量归零,将无法再次提供流动性;
无法适应变化的汇率。在外部市场中,稳定币间并不会完全1:1锚定,每种都有可能出现各自的波动行情,场内需要能够实时锚定,否则会带来套利危机。
为了弥补缺陷,我们很自然的想到了著名的双曲线函数——恒定乘积:
声音 | 段新星:比原链停止对第三方平台ERC20代币兑换的技术支持:段新星发微博称,截至2018年9月30日24:00,比原链团队将停止对各第三方平台的比原链ERC20代币兑换的技术支持,感谢广大用户及合作方的支持。[2018/10/1]
双曲线最为直观得反应了供求与价格的关系。其函数曲线无限接近与x和y轴,但永不相交,即当一方代币因为极度需求导致池中数量越来越少,则其价格接近无穷大,两币数量比即为汇率,也即双曲线对应点斜率。这条曲线完美解决了上述两个难题,但同时又引入了一个新的致命问题:无法适应稳定币兑换场景。稳定币大多数情况下汇率是稳定的,而且接近1:1,双曲线函数会引入很大的滑点,即便在很少的交易量下,因此不利于满足大额稳定币兑换的需求。
能否将两个函数各自的优势结合到一种新函数中——稳定的汇率输出、极低的交易滑点、可自动调节的场内汇率以及无尽的流动性保护。从图像直觉上,我们其实在寻找一条在两条曲线之间的一种曲线,既能够在中间位置贴近直线,又能够在尾端向双曲线一样无限贴近坐标轴。在几何数学上,要获得两曲线之间的线只需要将二者的表达式相加:
还不够贴近直线表达式。可以赋予权重常量:
赋予(x+y=D)以权重A,A越大表示合成曲线比例越以直线为主,即偏向直线形态,但同时我们发现合成线的尾部并没有延续双曲线的优势,也就无法提供无尽的流动性。这里我们需要用极限思维和逆向思维来推导合成公式可能的组合形态——我们以初始化点为中心,在中间范围极度贴近直线,坐标的乘积虽然不再等于双曲线恒定乘积值(D/2)^2——比之小,但越往中心越接近(D/2)^2,越远离中心越小于(D/2)^2。直到极限位置,x*y将远远小于(D/2)^2,逼近于0。
所以我们的表达式应该满足上述特征。在上面权重表达式的基础上,我们让A“动起来”,成为变量X——当线上的点越贴近中心位置,X越趋于A,使得合成表达式权重偏向直线;当线上的点越远离中心位置,X越趋于0,使得合成表达式权重偏向双曲线。因此得X:
至此便可以构建出完整的合成函数公式:
化简得:
以及函数曲线为:
如果继续追求完美,我们受到了Curve.fi的启发,权重变量X乘上一个可以表示直线和双曲线在坐标轴上位置的常量值D——如果流动性越大,则对应的直线和双曲线的D值越大,两条曲线越“膨胀”,相应的权重常量也应该跟D的膨胀保持同步,才能“咬住”贴近直线,因此确切的应该是——当线上的点越贴近中心位置,X越趋于A*D,只有这样才能随着流动性增大自动放大权重,否则一直维持A的上限,将会随着流动性越来越大而不再“贴近”直线,失去恒定。最终我们得到完美的核心公式如下:
以及函数曲线为:
比原链CEO段新星:比原链CEO段新星:比原链CEO段新星在今日GBLS全球无眠区块链领袖峰会上发表演讲,他说道:“促进区块链整个行业走向繁荣有三个支柱:对贡献者的激励与尊重、开放以及对贡献者的包容。”[2018/6/6]
借助两币种示例,我们找到了构建核心公式的基本原理,同时兼得了中心范围超低滑点以及尾端无尽的流动性两大优势。下面我们给出多维标准核心公式,本质是一种隐函数:
常用的二元形态为:
其中,
为了方面直观感受,下图给出一种三维形态示例图:
这里要特别指明所谓的多维仅仅是核心表达式可以兼容多种变量,即多个币种,但在同一时空下存在的仅仅是两两间互兑,不存在三者及以上兑换,否则将会升维到真正的多维空间,即便在三维空间几何中我们也无法规划出曲面上最优的点移动轨迹,而到了四维及以上空间更无法按照常规手段完成多币种间轮兑。实际交易场景中也是两两兑换居多,因此本质上我们是对多维核心公式进行了降维求解——即只将在兑换的两种币数量视为变量,其他币种数量视作已知常量带入核心公式,将多维公式降维到二元分式方程,通过牛顿迭代法,根据输入的币种数量求得要换的币种数量,完成交易成本计算。同理跟LMSR一样,成本函数也对应着汇率公式。
对于二元核心公式,求曲线上点的切线的斜率,即代表此时场内对应的汇率,问题简化为对隐函数求导。
注:对于隐函数的导数,采用隐函数求导法来求函数的导数——将方程两边对?x?求导,在求导过程中,将?y看成?x的函数,运用复合函数求导法,从而求得函数的导数。二元相对简单,多元的需要求偏导数。
对于多维核心公式,依然采用降维分析,例如对于上面的三维曲面,求此时点所在的切平面分别相对于三个坐标平面的相交线的斜率,即代表两两间的汇率,同样把计算问题简化为对多元隐函数求偏导数,即对多维核心函数进行隐微分得如下一元方程:
我们所求的汇率即为:
进一步,我们定义j币和l币是在兑换的两种资产名,j币的数量为y,l币数量为x,定义两者的汇率表示为SP,对上面原始公式移位化简,得汇率SP的标准公式:
此公式适用于资产池中资产种类在三种及三种以上的情况,也是最普适的汇率计算公式,公式右边所有变量都可知,即根据此时资产池中各资产现存的数量进行汇率的求解,x和y是兑换两资产各自在池中现存的数量,括号中的累乘积表示的是除了j和l这两种资产外其他池中所有种类的资产的数量的乘积,都是已知变量。n代表资产种类有多少,A和D是核心公式常数。对于只有两种资产的池子,可以对上式进行进一步化简,去掉括号累乘积项,然后令n=2,得如下两资产池汇率计算公式:
至此我们完成了所有核心公式的构建!
LP的损益模型
我们认为对于一个CFMM市场,除了核心公式,最为重要的就是流动性提供者的损失和收益问题,而判断一个CFMM市场是否具有吸引力和抗风险,也正是看其是否全面刻画了LP的损失和收益模型,总结下来模型应该包含如下几点:
无常损失模型;
不按理性比例同时存入各资产,包括单一存、场内汇率与外部市场脱锚时存、存入过程由于干扰、抢先交易和时间等因素导致的比例出现偏差;
稳定币CFMM独特的被大量套利问题以及极端套利保护机制;
针对LP的滑点保护机制;
手续费收益重新注入流动池及手续费模型;
LP的年化计息模型以及提取操作。
我们依次来讲解。
无常损失。这是大多数的翻译,其实本质上应该叫做临时损失,或者叫虚损失。这是由于LP在投入资产后,在没有手续费收入时,面对市场波动和汇率变化,会被套利者不断套取资产,导致自己所占有的池中资产总价值比刚投入时变少了,但是等汇率又回到投入时的汇率时,这部分损失又消失了。对于简单的恒定乘积做市函数,我们可以很容易刻画出无常损失曲线。
比原链COO屈兆翔:6月主网映射完成,且不会带来价格的大幅波动:今晚,比原屈兆翔就6月主网映射完成会不会带来价格的大幅波动这一问题,从三个方面分析:
1、比原链67%的比原大部分已经在市场流通,而现在挖出的份额相比较而言较小;
2、近期挖出来的比原有上线一些交易所,从实际情况来看并没有影响市价;
3、为了等升值赚回成本,矿工会选择将挖出的比原囤一段时间再卖,因此近期不会对市价带来较大影响。[2018/5/11]
假定LP刚投入时有xy=D,当汇率发生变化,套利者进行套利后数量变为:
定义无常损失表达式:
其中有,
根据r表达式,代入p0和p1,化简得:
另外有:
最终都代入获得无常损失关于汇率变化幅度r的函数表达式:
对应函数图像:
从图像上可以直观看到,不论之后汇率是涨还是跌,都会给LP带来无常损失,跌带来的损失更为显著和迅速,当汇率涨到4倍时,大约会带来20%的损失。
再回到我们的超导核心公式,由于隐函数过于复杂,很遗憾我们没法像上面化简过程一样进行无常损失表达式的构建,虽然无法用公式量化无常损失,但机制跟恒定乘积函数是一样的,不论汇率涨还是跌,都会带来无常损失,所损失的即为套利者所套利的,因此可以从套利者获益的角度反向推算LP所经受的无常损失范围。一般情况下的无常损失有助于激励套利者搬平场内汇率,但我们需要帮助LP尽量规避过度的无常损失,通过官方主动快速套利的机制,将所套利重新回馈给LP。
按比例同存同取。前面我们提到过,LP不按照理性比例存入资产会给自己带来被套利损失。在理解了无常损失问题后,我们可以发现所谓损失的本质就是被套利,而被套利来自于LP存入时的比例与当下理性的市场汇率不一致。可以用函数图像来直观感受:
上图示意:最下面曲线代表最初的状态,粉红色点也代表当时池中的一个理性资产比例,即USDT:USDC=5:5,如果一个用户有10美元,他应该将10美元变成5USDT和5USDC,同时存入池中,最上面的曲线即为变更后的公式,而此时曲线上的点位于蓝色位置,即池中USDT:USDC=10:10,维持了汇率恒定,所以不存在被套利空间,也就不会有损失;但是如果该用户的10美元全是10USDT,并一次性投入池中,我们将得到中间的曲线公式,而且此时曲线上的点位于紫色位置,即池中USDT:USDC=15:5,明显偏离正常市场汇率,会被套利者瞬间利用进行套利,将点搬移到图中绿色位置,即池中USDT:USDC=9.5:9.5,该LP为套利者进行了无偿奉献。
这里要注意的是,此损失仅仅来自该LP的资金,并不会影响之前其他LP的可提取资产值,如图所示,当套利者搬到绿色位置后,该用户如果全部提取自己的资产,将只能提取到9美元,而非存入时的10美元,套利者拿走1美元,之前的LP不赚也不亏。如果紫色点还没来得及被搬移到绿色点,在该LP之前的LPA要提取自己的资产,则LPA也会攫取部分套利。在后面的计息模型中我们会详细讲解其中的计算法则。
这里我们只是举例了一种简单的模型,即整个过程中汇率维持恒定,不存在外部市场波动,而在实际生产环境中,外部市场汇率高频波动、存入过程扰动误差、LP不按理性比例存、套利者攫取、之前LP提取流动性等这五要素会复杂交融影响,很难凭直觉判断LP资产存入策略是否规避了损失。但我们对于LP最直接的忠告是,实时关注场内汇率与理性市场汇率,只有在二者极度接近以及恒定锚定时,再严格按照比例投入自己的资产,才能将损失降到最低;避免在某种稳定币资产遭遇频繁外部市场波动时存入。
这也让我想起了分布式一致性系统的设计和开发过程,原理或者核心公式其实非常简单,但正是这些复杂的不可预测的外部因素以及路径,导致了系统的复杂度和风险度无处捕捉,因此人们开始用CAP和FLP指导自己的系统设计,同样在我们的CFMM市场中,一切也才刚刚开始。
被大量套利问题以及极端套利保护机制。接着第二个问题的解释,我们列出几点会对系统带来过度损失的模型:
a.在初始化时,创始LP以1:1投入稳定币资产,随后在市场和套利行为下,不断让场内汇率更新,直到实时锚定到市场汇率,如果外部市场汇率因为极端行情等因素明显偏离1:1,由于超导曲线前半段优越的抗滑点特性,在滑动到市场汇率的过程中,可能会存在路途过长,导致套利者攫取大量套利利润,严重损害创始LP的利益。因此对于一个成熟的稳定币CFMM来说,必要的极端套利保护机制是需要时刻准备的,由官方套利者及时接手过度套利空间,之后将利润返还给LP。
比原链牵手成都链安科技,共建区块链安全新生态:近日,比原链基金会与成都链安科技签署战略合作协议。双方将在区块链安全技术领域达成初步合作意向,未来成都链安科技将会为比原链提供底层平台的形式化安全验证,智能合约的开发、审计、安全验证等服务,保证比原链平台和智能合约的安全性、功能正确性。[2018/5/10]
b.市场汇率在波动的同时,流动性池大小也在不断的增加或者减少,套利者如果故意不及时套利锚定外部市场汇率,让场内汇率一直存在偏差,会造成LP持续按照偏差比例存入资产,最后套利者在积聚到一定量后开始一次性套利,给这些LP造成大量的套利损失。
除了官方提供的极端保护机制外,我们也鼓励LP担当套利者,他们能够清醒地判断场内汇率是否出现偏差,抢在恶意套利者之前搬平场内汇率,不仅给自己存入资产规避损失,也带来额外的套利收益。
所谓的理性比例是指跟市场汇率锚定,而不是任意时刻流动池中的资产比例。假设市场汇率是1:100,场内此时出现脱锚1:105,则LP需要先抢在套利者之前完成套利和市场平衡,再按照1:100投入资产,如果不先完成套利,不论是以1:105还是1:100存,都会被套利产生损失。我们更倾向于LP也能充当市场预言机和套利者,在承担场内外汇率平衡的责任的同时,也可以获得套利收益,也是为了自身损益的考虑,避免无谓的损失。
LP的滑点保护机制。滑点保护是对正常交易者和LP的保护。在LP情境中,即便LP再理性和认知及时,也可能无法规避不按比例存的风险,比如在提交上链的过程中,出现了抢先交易、操作失误或者极端的市场波动,因此无法保障时序原子性,而我们的滑点保护机制会检测LP的范围超出,在微小范围内允许LP继续存,否则回退操作。
手续费模型。LP的收益来源便是手续费,在超导中手续费模型十分简单,交易额的万五。用户用x币换y币,我们的交易费扣除是在y端,并且手续费重新注入流动池,继续提供流动性。LP可随时提取本金和手续费收益。
直接将y投入流动池:如果考虑两步操作的原子性,即在用户兑换交易后,超导立即将k*M数量的y币再投入到流动池中——仅在这种情况下可以由超导单方向存入。在假定用户兑换时是处于正常市场汇率情况下,超导直接投入y币有助于帮助场内汇率向正常市场汇率滑移。这个问题的本质是手续费收益不会被套利者搬走,我们知道兑换后出现了场内滑点,而滑点偏差正是套利者的套利空间,如果我们在兑换后直接将所有的y端手续费重新投入流动池,会更改D值,即曲线发生变更,变更后的点所在切线斜率会更偏近正常汇率点切线斜率,即这种手续费直接回填的操作像套利者一样在搬平场内已经出现的斜率偏差,使得套利者基于中间曲线进行套利的空间变小。从下图中很明显直观看到套利者不再享受之前汇率明显偏差的红利,即对于最下面曲线用较少的y换得更多的x币,虽然依然可以套利,但成本要高于最初曲线的套利。所以这种手续费回填的做法,进一步压缩了套利者的套利空间,被压缩的部分利益转给了LP们,使得套利者和LP们共享之前那笔兑换中交易者多付出的滑点损失成本,而回填的手续费也依然全部归LP提取,套利者并不会分得。
假设我们开放了后续的单资产存操作,初始时LPA在提供流动性,投入了5个x币和5个y币,最下面曲线和粉红色点,随后交易者X发起一笔交易将场内点滑移到了红色空心圆位置,回填手续费后曲线变更为中间曲线,点位置为紫色点,如果此时LPA全部提取资产,可以提15个x币和5个y币,比投入时要多出一部分利益,这部分利益空间就来自于该交易者X多付出的交易成本,但如果此时存在套利者从紫色位置搬移到绿色点,LPA全部提取资产,可以提9.5个x币和9.5个y币,比紫色点可提取的15个x币和5个y币的总价值要少,原因是将交易者滑点损失成本的一部分分给了套利者,即便如此,LPA依旧拿到了比自己原始本金加上手续费更多的收益,原因就是手续费回填流动池压缩了套利者的套利空间,将交易者X的交易滑点成本一部分也分给了LPA。
如果在滑移到紫色点时没有套利者出现,直接出现另一个LPB直接投入了0.75个y币,而不存入x币,则此时曲线直接变更为最外面那条曲线,此时场内点为灰色空心圆位置。根据下面的计息模型,LPB和LPA分别占有的份额为:1/20,19/20。如果没有套利者在搬移,则LPA此时全部提取可以提15*(19/20)=14.25个x币和5.75*(19/20)=5.4625个y币,比紫色点时可提取要少一点,因为LPB分得了一部分来自交易者X滑点损失的利益空间,即LPB此时全部提取可以提15*(1/20)=0.75个x币和5.75*(1/20)=0.2875个y币,此时对于LPB来说可以提取到比存入资产更多的资产,而利益空间就来自于之前交易者X多付出的交易成本,与手续费回填是一个逻辑。如果此时出现套利者进行套利,其可套得利益比之前从紫色点套到绿色点过程所攫取的利益更少了,原因是LPB也参与了交易者X交易成本的瓜分。但前提是LPB单资产存后不要反向超过平衡点,否则自己便又新造成了场内汇率偏差,需要承受被套利的空间。
年化计息模型以及提取。MOV超导记账规则:
如果没有流动性大小的任何变化,不论流动池中两种币的比例如何变化,甲的百分比不变,依然是自己持有的计息凭证数量除以当前总发行的计息凭证数量;
当流动性大小改变后,计算出新的D值D1,然后此时总发行的计息凭证数量是之前的D1/D0倍,如果此时甲提取自己的资产,百分比为甲持有的计息凭证除以此时总发行的计息凭证的数量。
举例:
T1:小明按理性比例存入1ETH、100DAI,获得系统分发的1计息凭证,此时总计息凭证数量也为1;
T2:在接下来一个月里,发生了许许多多交易,但并没有新LP加入,手续费让池子规模变为2ETH、200DAI,注意此时虽然手续费改变了池子流动性大小,但并不需要在每一笔交易后去计算新的D值,也不需要根据新的D值倍数去增发计息凭证——这一个月期间总计息凭证数量并未发生改变,而小明的份额也未发生改变,他依然拥有池子百分百的流动性提取份额
T3:小刚按理性比例存入1ETH、100DAI,此时根据两种资产的数量计算新D值D1,得D1=(3/2)D0,因此得到新总计息凭证数量应该是之前的倍,即此时系统总共有1.5个计息凭证,其中1个计息凭证是之前小明的,剩下的0.5个计息凭证是分发给新LP小刚的——此时小明的份额将变成,可提取2ETH和200DAI,而小刚的份额将变成,可提取1ETH和100DAI。
注意:上面例子中小刚加入时的理性比例跟T1和T2时刻一样,实际上在T2期间,ETH可能会涨涨跌跌,导致T3时刻场内资产数量比例发生变化,但并不影响我们的计算逻辑,小刚依然按照此时场内的数量比例投入资产,继续按照T3的计算过程完成计算即可。
这也是MOV超导给予CFMM完善发展贡献的一份力量。
滑点数据与保护
我们直接给出MOV超导滑点数值实验:
在50万量级流动性下,一次性大额交易20万美元的滑点为0.29%,相比于几大中心化交易所也具备充分的竞争力。我们会在0.5%~10%范围内设置滑点保护档位,给予一次性大额交易充分的滑点保护,避免给交易者带来过大损失,但这里要注意的是,滑点保护机制需要能够获取一种客观的市场汇率作为参照才能够发挥保护机制,而同时不妨碍套利者维持场内汇率恒定和反方向正常交易者正常交易秩序,我们称这种手段为,也是MOV超导在不断完善CFMM的地方。另外一档保护为,如果上链时发现与用户提交时汇率不同,可以允许有0.05%的偏差,超过则回退资产。
这里我们重点讲一下表格实验的由来,方便后来人借鉴参考。在我们的核心公式中,D决定池子流动性规模,A表示向直线偏移权重,A的选择至关重要。D随着流动性更迭在不断变化,而A一经选定,可稳定被采用。A不可以太小,比如1~50,否则在曲线中心范围内会存在明显的滑点,过早丧失交易吸引力;A不可以过大,比如>200,否则会使得曲线价格发现失去根据市场汇率变动而调整的空间,同时给予极端套利者瞬间清空池中单方流动性的可能性,因为成本很低。如上图是流动性规模为50万量级,大概是在其三分之一处存在千三的滑点,当A保持不变时,不论流动性规模变更为多少量级,比如30万,也是在其三分之一处存在千三的滑点,即10万交易量。
深奥的数学问题
到此MOV超导实用性的篇章已经讲完。下面是一些非常有意思的CFMM数学问题,相信会随着CFMM的壮大,不断走向专业性,也会吸引更多学术界人士,开展更为先进的CFMM机制。
牛顿迭代法。
深入到工程细节,隐函数方程是很难直接根据x求出y。因此我们借助著名的牛顿迭代法来实现兑换公式。
迭代法是利用逐次逼近过程求解非线性方程,同样的计算过程往往要多次进行,而每次都要以前一次计算结果带入计算。?一般100次运算完全能得出相当精度的结果。迭代法求解方程的过程是多样化的,比如二分逼近法求解,牛顿迭代法等,这里采用牛顿法。牛顿-拉弗森方法提出来的思路就是利用切线是曲线的线性逼近这个思想。
牛顿迭代法是一种很棒的迭代法。因为在它在大部分情况下都收敛,而且收敛速度很快,有效数字位数以指数级增长。
收敛的充分条件:若f二阶可导,那么在待求的零点x周围存在一个区域,只要起始点x0位于这个邻近区域内,那么牛顿-拉弗森方法必定收敛。也就是说,在这个区域内,用切线代替曲线这个直觉是合理的。但是,因为我们不知道根点到底在哪里,所以起始点x0选择就不一定在这个区域内,那么这个直觉就不可靠了。
我们将超导原始核心公式进行变形得如下形式:
PlainTexty^2+y*(sum'-(A*n^n-1)*D/(A*n^n))=D^(n+1)/(n^(2*n)*prod'*A)
其中y就是我们现在正在求的j币的总数量,sum‘是将j币排除在外其他所有币种的总数量之和,prod’是将j币排除在外其他所有币种数量的乘积,n^n表示n的n次方。
上面公式可以抽象为一元二次方程:
PlainTexty^2+B*y=c
在代码实现中构建B和c的表达式,令b=B+D。进一步按照牛顿迭代法,有
PlainTexty'=y-f(y)/f'(y)
其中
PlainTextf(y)=y^2+B*y-c
化简即得代迭代公式:
PlainTexty'=(y*y+c)/(2*y+b-D)
对该式进行循环迭代,直到最终精度缩小到某一范围内,即得到精确的y值。经过测试,收敛速度十分迅速。
同样除了兑换函数,每次流动性变化后核心公式中的D也要跟着池中的数量变化而变化,依然采用牛顿迭代法进行D的求解。构建出D的迭代公式如下:
GoD=(Ann*S+DP*xpLength)*D/((Ann-1)*D+(xpLength+1)*DP)
交易路径独立。
这个问题可以简化为,交易者将一笔大交易拆分成多个小交易依次进行交易和一次性完成大交易,哪一个更减少摩擦损失。
路径独立假说:
交易一为(?,Λ),交易二为(?′,Λ′),将二者合并为一个交易(?+?′,Λ+Λ′),下面公式表示的意思是,我可以用?数量的i币换取Λ数量的j币的前提下,当且仅当我输入?+?′数量的i币能够换取Λ+Λ′数量的j币时,那我就可以在用?数量的i币换取Λ数量的j币后,再用?′数量的i币换取Λ′数量的j币。反过来也是如此。
与此相对的是pathdeficiency假说:
当我输入?+?′数量的i币能够换取Λ+Λ′数量的j币时,如果我更换策略,先执行用?数量的i币换取Λ数量的j币的交易,然后再去换取Λ′数量的j币时,会发现?′数量已经不够用了,需要大于?′数量,损失由此产生。
pathdeficiency假说的意义是,对于交易者来说,将多笔交易聚合成一笔交易,比分开来交易,更划算。
本来CFMM属于路径独立型,但是,在引入手续费计算时,交易将从pathindependent变为pathdeficiency,证明过程我们借用论文:
简单来讲,我们分别表示出合并成一笔交易可以换得的数量和拆分成两笔交易获得的数量之和,对二者进行比较。最主要的过程就是移项化简得到第三个式子,证得其恒为正。
凸优化与套利策略。
这是最后一部分内容,与套利者套利策略和路径规划有关。首先来看一下高深的凸分析或者凸优化:
凸优化就是:1、在最小化的要求下,2、目标函数是一个凸函数,3、同时约束条件所形成的可行域集合是一个凸集。
依然费解。来看一个例子:
很简单的一个套利过程其实可以用凸分析来量化策略。我们有:
构建凸优化:
但这不够具有明显的凸性,进一步变换:
因此得到标准的凸分析形式:
便可以借助专业的数学凸分析工具,自动完成计算。
上面展示的是一维的凸分析,优势不够明显,似乎直觉更有效,但在多维场景下,比如多种币的交易市场,对于套利者来说,就必须要清晰自己最优的套利策略,有点类似动态规划问题,十分困难,但这里便可以借助凸优化:
最后,超导不止于稳定币CFMM!
引用文献
GuillermoAngeris,ImprovedPriceOracles:ConstantFunctionMarketMakers,2020,?https://arxiv.org/pdf/2003.10001.pdf
Uniswap,AnanalysisofUniswapmarkets,2019,?https://arxiv.org/pdf/1911.03380.pdf
Balancer,Anon-custodialportfoliomanager,liquidityprovider,andpricesensor,2019,?https://balancer.finance/whitepaper/
RobinHanson,LogarithmicMarketScoringRulesforModularCombinatorialInformationAggregation,2002,?http://mason.gmu.edu/~rhanson/mktscore.pdf
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。