LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > 自动做市,从联合曲线到联合曲面

自动做市,从联合曲线到联合曲面

2020-04-14 区块律动BlockBeat 来源:区块链网络

原文标题:《自动做市,从联合曲线到联合曲面》
原文来源:胖车库

本文的目的在于介绍 Balancer 的联合曲面 (bonding surface),可以用来自动做市,不需要雇用基金经理负责投资组合的再平衡。从理论、实务,再到获取早期用户的信任,去中心化金融正在逐渐侵蚀传统金融板块。

本文为胖车库约稿作品,作者 Thomas。

本文思路是:先思考 Uniswap,回顾 Uniswap 的起源和联合曲线思路,再探讨 Balancer 联合曲面 ( bonding surface) 的原理。

Uniswap 的起源


以第一性原理来思考:在以太坊上建立交易所,会遇到什么问题?

我们得先回答:什么是交易所?

传统交易所的模式是,给交易者上来挂买单 (bid) 和卖单 (ask),交易所依照其所遵循的各种原则实作并运行「交易撮合算法」,撮合买家挂的买单和卖家挂的卖单。

在流动性高,也就是很多人交易、很多钱换手的交易所里,任何时候都有非常高频次且大额的挂单和撤单,因为在这个程式化交易的时代,交易程式们会剖析挂单簿 (order book) 和委托单流量 (order flow),辅以交易算法进行自动交易。挂单频率以做市商 (market maker) 的交易程式为最高,左手挂卖单和买家成交,右手挂买单和卖家成交。

做市商的盈利模式就是在左手卖右手买之间,赚取买卖价差 (bid-ask spread)。做市商的有效运行,能使交易所维持高流动性、买卖价差较小。所以做市商又叫流动性提供者。

在以太坊上建立这样交易撮合式的交易所,问题就在于以太坊上的交易—只要是在以太坊虚拟机上执行操作—都要付 gas 费。在不考虑扩容方案 (例如状态通道) 的前提下,挂单和撤单都会消耗 gas。这一点让做市的成本变得非常高,导致没多少人愿意做市,使早期去中心化交易所上的买卖价差变得很大,并且小小的交易量就会推动价格有感变化。

那么,能不能想出一种不进行买卖撮合的交易所模式,适合在以太坊上运行?

Uniswap 和联合曲线 (bonding curve)


下面,Uniswap 登场。

Uniswap 是以太坊上的一个自动做市合约。在 Uniswap 的世界里,没有挂单簿,也没有撮合算法。

再从第一性原理来思考:做市商的目标是什么?

举个例子,今天你想要在冰淇淋市场上当一名自动做市商。你左手卖冰淇淋买进美分 (penny),右手卖美分买进冰淇淋。作为一名想要永续经营的做市商,你的动机非常简单:手上随时有足够的冰淇淋和美分来应付任何可能发生的市场状况。

什么状况呢?往极端想:一,如果今天天气爆炸热,一堆人跑来找你买冰淇淋,导致你的冰淇淋存货下降;二,今天天气爆炸冷,一堆人跑来找你卖对他们已毫无吸引力的冰淇淋,想要换成美分,导致你的美分存货下降。只要你的冰淇淋存货或是美分存货降到零,你就得被迫停止做市,去其他市场上补货。想当自动做市商的你最讨厌这种麻烦的情形了。因此,必须存在某种机制让你的存货不会无止尽下降。

比较粗暴的做法是,当某种存货降到一定水准以下,你就需要马上暂停该方向的交易。例如冰淇淋只剩 20% 存货时你就不卖冰淇淋了,直到天气转冷,有人找你卖冰淇淋为止。比较优雅、连续的作法是,你左手挂出的冰淇淋卖价随著你的存货水准动态调整,存货越少,卖价越贵。如果你手上只剩趋近于 0 的冰淇淋,那理论上你挂出的冰淇淋卖价应该要趋近于无穷大,保证劝退所有嘴馋的人。这样理论上你不可能耗尽任何一种存货,对吧?

好,那这个动态调整的价格如何实现?一个简单的做法就是:左手挂出的冰淇淋卖价 = 美分存货÷冰淇淋存货。只要你还有足够的美分存货,则趋近于 0 的冰淇淋存货将导致卖价飙升到天文数字。右手则是冰淇淋买价 = 冰淇淋存货÷美分存货。

下式描述冰淇淋卖价,p 是价格,q 是存货,P 是美分,I 是冰淇淋:



这个卖价的意思是,如果在现有存货的状态下,有人向你购买无穷小份的冰淇淋,就该用这个价格跟他交易。

往源头走,我们想起双曲线 xy=k 上的任一点斜率都是 -y/x。而在冰淇淋存货对美分存货作图,函数的斜率正是交易价格的意思 – 两存货微幅变动的比值不就是价格吗!因此上述的数学关係其实可以从一个恆定式推导而出:



上式表示,任何时候你手上的冰淇淋存货乘以美分存货都是某定值 (invariant)。你常听到的 bonding curve 就是在描述上述这条双曲线。它打破了传统观念里,市场价格必定由买卖双方一起决定的说法。在上述模型里,价格在任何时候都依照卖方存货比值而定。

举例:今天有个买家跟你说,他要买 50 美分 (下式中的 p) 的冰淇淋,请问能买到多少冰淇淋呢 (下式中的 i)?你看了看你当初开始营运时的起始存货:100 份冰淇淋与 100 美分。使用下式计算:



你就能算出这个买家的 50 美分能换得多少冰淇淋了:



这一对存货 (冰淇淋和美分) 的总和就是所谓的流动池 (liquidity pool)。任何一种 ERC-20 代币和 Eth 兑换的流动池都能在 Uniswap 上找到。你也可以在 Uniswap 上为自己发佈的 ERC-20 代币创建一个流动池。

Balancer 的联合曲面(bonding surface)


Balancer 想做的事,就是把上述原理概括到「杂货市场」的情形。假如今天,你想同时在冰淇淋、柠檬汁、香菸和口香糖市场里当做市商,能否设计一种机制,让你成为一名自动做市商、支援任何一对商品的兑换?(比如,我可以拿口香糖跟你换香菸、拿柠檬汁跟你换冰淇淋)

Balancer 提供了一种思路,我们来看一下。

首先,定义以下价值函数:



其中,t 指代任何一种代币,B_t 是代币 t 的存货价值,W_t 是代币 t 佔流动池总价值的权重,应保持恆定,由做市商自行定义。有了这个式子我们就能算出做市商卖出 o 币、买进 i 币的两币汇率/现货价格 (spot price):



这是 Uniswap bonding curve 往高维度的推广,因此称为 bonding surface。

不需要基金管理人的指数基金


Balancer 的 联合曲面(bonding surface)为实现两个目标:

1. 自动再平衡 (rebalance) 投资组合—不收取管理费的自动指数基金。


2. 成为价格信号提供者。


让我们再以第一性原理理一次思路。

指数基金的目标很简单:维持各部位之间相对价值恒定。

设想以下情境:今天,一个以太坊的地址 X 想要保持持有 A 币与 B 币价值 7:3 的权重,同时,地址再平衡前后总价值不变。



6.25 颗 A 币价值 500 变卖成 16.66667 颗 B 币。

A 币从 50 颗变成 43.75 颗;B 币从 100 颗变成 116.66667 颗。

基金持有:43.75x A、116.667x B。两币价值皆为 3500。

这里面的关键在于:再平衡的交易 (将 6.25xA 交易成 16.6667xB) 由谁来完成?

市面上的指数基金的逻辑是:雇佣人类基金管理人,收取管理费,进行交易、记帐、税务管理等。

Balancer 指数基金:外部游击交易者来完成交易,获得套利收益。

如果,需要再平衡发生的时候,自动出现套利机会,就能激励任何人来帮基金完成再平衡了!

但是,为什么会自动有套利机会?

因为任何人在任何时候都能买卖 Balancer 指数基金,基金按 bonding surface 对外公布的动态汇率进行交易。

回顾上式中的现货价格 (spot price):基金向外公布的 A-B 交易对汇率是:



因此:

时刻 1,基金 A-B 汇率是 (50/1) / (100/1) = 1:2,等同基金外的 A-B 汇率




时刻 2,基金 A-B 汇率依旧是 1:2,但外界 A-B 汇率已变成 1:2.6667,导致套利机会的出现,使外部任何交易者有诱因与基金交易,藉此获利。


以 B 计价,基金收 2B 给 A,但外界已经是收 2.6667B 给 A。


也就是基金提供的 A 比较便宜。


因此套利者有意愿提供 B 向基金便宜买到 A,拿去外界变卖。


套利过程中,基金 A 存货变少,B 存货变多,依照 bonding surface 的规则,A-B 汇率上升。
随著基金被套利,基金内 A 与 B 的存货持续变化,直到基金的 A-B 汇率与外界相同,套利机会消失,同时再平衡也完成了。


总结一下,Balancer 将 Uniswap 的模型推广,以独特的激励机制使合约持有的各币价值比自动维持恒定。同时基金提供套利机会,让外界套利者进来帮基金完成再平衡。


无责任脑洞一下,如果这个地址是一个国家呢?上述这个模型将来是否可以套用在任何基于区块链个人通证所实现的人类组织上,用于很未来主义的、所有民族意识主权意识消弭后的全球集体意识,由此模型自动统筹资源,真正实现无国界的民有、民治、民享?或许随著这一天的到来,人类才有足够的协同动能一起往宇宙发展吧。


(完)

来源链接:weixin.qq.com


—-

编译者/作者:区块律动BlockBeat

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...