预言机一般被认为是去中心化协议和区块链外部数据之间的桥梁,而预言机在Defi领域主要承担的是报价功能。那么,目前的Defi预言机真的能实现精准报价嘛?此次,分布式课堂第二期请来了NEST社区COFI研究员James,为大家讲述可计算金融技术:究竟什么样的公式能让预言机报价更加精准,为做市商和用户最小化风险?
James, 坚定的区块链信仰者,专注去中心化原生资产及计算金融的研究,以区块链世界观看待外部世界,坚信未来人类社会财富将逐渐转移到去中心化资产上来。
中心化资产跟我们现实世界的资产有什么区别呢?区别是形成的去中心化资产是现实世界的大类资产复制不了的。你不可能用已有的大类资产复制出去中心化资产的风险收益结构。
那么从金融学的角度来讲,金融学要干的是什么?总的来说,就是应对人类的各种不确定性。每一个不确定性对应的一种风险收益结构。每当你发现了一种新的风险收益结构,并且把所对应的资产或者是产品做出来,一定会消除全人类在资产配置上面的风险。
最简单易懂的就是在波动率风险。比如马科维茨资产组合理论,如果把两种相互不关联的资产放在一起,在不改变收益结构情况下,就可以降低他们的波动率,达到改善投资风险的目的。去中心化资产的目标就是消除全人类的不确定性。
可信性和可用性
这里面有两个变量,一个叫可信性,一个叫可用性。可用性是消除普通人的不确定性。可信性是消除人类的不确定性。BTC没有在可用性上花钱,而是每年花两百亿的电费在解决可信性问题。那么,可用性谁来解决呢?可能是比特币持有者来解决的,他们向普通人宣传比特币是怎么回事,让这些不懂比特币的人懂比特币。中本聪创造出比特币的目的就是提出全新的风险收益结构,来消除整个人类的不确定性。
在整个去中心化的市场里,只要引入了一个中心化机构,你的风险收益结构某种程度上是跟股权差不多了。这相当于复制一个“比特币+股权”,并没有创造出全新的东西来。这就是我为什么要将项目做到如此去中心化的原因。这里我们也要提到最近特别火的Defi。
Defi目前的问题:第一,项目的风险是不可量化和不可计算的;第二,Defi很难在链上沉淀出去中心化资产。如果不能在链上沉淀出去中心化资产,这个Defi项目最终可能就是一张计算合约。计算合约指的是,你不管怎么计算,信息量也不会增加。计算的意义只是让杂乱的信息编码成为通俗易懂的东西。这过程中,它并没有消除人类的不确定性,当然它可能消除了某些特定人群的不确定性。
如果说Defi项目无法沉淀出去中心化资产,指的是大家竞争到极致的时候,都收不到费。比特币实现了一种transfer函数的可信,实现了转账的功能。以太坊把这个transfer函数进行拓展,变成了逻辑函数。目前这个逻辑函数一个特点是,所有的计算是在多项式时间和资源之内完成。因为它要消耗资源,所以必须要在给定时间内终止。
资产定价
类似于我们现实世界里面的很多问题,资产定价也是很难的问题。比如说:红绿灯怎么设计?最优交通网络问题?最优社交网络的问题?最优商业网络问题?这些涉及到网络的问题都是复杂问题。
资产定价就是一个最优价格的计算问题。这个问题不是P计算能解决的。以太坊不能够用智能合约就给资产定价。因此没有预言机,以太坊只能做这三件事:交易(Uniswap)、稳定币(USDT)以及ETH-wETH互相转换。这是p 函数的局限决定的。
考虑到资产定价这么复杂的计算很难在链上完成,那么就要形成一种新的机制,让它逼近这个结果。于是我们就构建了这样一种方案:假设没有外部市场的情况下,如何逼近这个价格;或者有外部市场的情况下,如何把这个链下价格传递上去。
如果链上有个NP问题的计算结果,对于整个生态系统而言,它增加了信息量,提供了全新的信息。重要之处在于它不断地拓展区块链的边界,只有边界得到拓展,才能真正成为实质性的进步。如果整个网络只是往横向进步,例如编程速度更快点,区块再大点,这都称不上是实质性进步。其实我们对区块链很多认知是需要调整的。
如果从消除人类的不确定来说,没有必要人人都要验证账本。我们只要开放,让人人都可以具备验证账本的权力就行了。类比到Layer1和Layer2,Layer 2是消除普通人的不确定性,而Layer1是创造出新的价值,开发者可以讨论如何提升区块大小、改善打包时间等。
那么,在这个背景之下,NEST要做什么?第一个是NEST要形成更多更新的去中心化风险收益结构。第二个是它要拓展区块链功能,使得原来区块链上不能完成的事情现在可以完成了,当然这一切必须保持去中心化。
在引用NEST的预言机时,就产生了一系列的副产品。第一个非常重要的副产品就是在引用价格时,让风险变得可计算。在信用风险被剥离后,整个计算结果是相对较为准确的。这里的信用风险主要指的是,在排除项目风险以后的主体风险。主体风险一般是很难通过计算得出。比如说,这个项目最终能够产生多少现金流,失败的概率是多少这些都可以计算分析,但问题是主体卷款潜逃了怎么办?其实这体现了系统的不完备性。
区块链将信用风险剥离掉以后(通过去中心化的方式),只剩下流动性风险和波动性风险。由于流动性是区块链所具备的天然有优势,所以这里暂且不去说它。波动率风险是可以计算的,它有很强的理论依据。实际上在70年代,萨缪尔森、布莱克、默顿、法玛等人就将相关的金融思想提出来:历史上的模型对这个风险研究得那么透彻,而这些风险都可以定价。难道不能自动化地管理这些风险嘛?
然后这些思想都被对冲基金学去了,并形成了很多全新的投资模型和风险管理模型。最典型的就是当时的长期资本管理公司。虽然他们建立了很精妙的模型,但最终输在了主体风险不可计算上面:俄罗斯违约了。
现在我们都谈论Alpha Go战胜围棋等等人工智能的话题。其实这个梦想在图灵时代就有了。尽管人工智能的发展断断续续,然而梦想却依然存在。尽管可计算的模型会受制于主体风险,但在去中心化的区块链领域却不用担心这种风险(至少逻辑上如此)。在没有信用主体风险且不考虑市场无效的情况下,让风险管理算法化真正变得可能,显然比长期资比本管理公司所面临的那个时代要好很多。
风险管理可计算是不是能在链上去完成?
其实,Defi简单的说就是交易、利率、正证券/负证券,就这三个结构非常粗糙地对金融做的一个划分。
一个学科最重要的东西有两个:一是基本概念。每一个基本概念的讨论可能就要花上百年。且每一个概念的形成都要经过千锤百炼。第二个是这个概念必须推动形成这个领域的理论制高点。如果这个理论等于常识,这个学科就没有意义了。
中本聪在设计区块链架构的时候,计算/存储/通信这些功能及相关技术都有。当时,数字货币要解决双花问题,即“钱用了一次,不能用第二次”。其实,零知识证明/同态加密这些方案都讨论过,却解决不了双花问题。去中心化不光是分布式,不是说我把活分配给你们,而是让你们自觉地上传些东西并自动组合起来。
现在来看,比特币这个结构有点低效:无论在计算、信息存储还是通信方面都做得非常冗余。冗余指的是多台计算机重复执行相同的计算,并重复存储相同的数据。冗余的架构会导致很难完成撮合交易(即资产定价非常困难),因为它很难靠函数或者投票来解决。
从市场的角度来看,撮合交易是现代经济里信息交互的极致。交易并不适合在链上去进行撮合。换而言之,一旦撮合交易在链上可行了,那链下交易所的优势会更大。这是一个相对优势的问题。
撮合交易的微观市场结构究竟有哪几类交易者?第一级叫做内幕交易者,二是信息交易者,三是做市商,四是价值交易者,五是噪音交易者。这里着重讲一下信息交易者。信息交易者指的是,拥有者所获取的信息占有优势,他每时每刻都要基于自己掌握的信息对这个资产的价格进行折现。比如说,他每收到新信息,就会告诉你这个价格变化是多少。这些信息拥有者对于交易的渴望和对计算存储通信的要求都是最极致的,而且也是交易所成交量和流动性的主要提供者。
比如说,美国交易所的高频交易者,都精确到纳秒级别,而且在交易所闭市封盘的情况下,也要在外面继续交易。因为他们觉得信息不断在变化,而自己具备信息优势,必须每时每刻对资产进行定价。对于这类人,具有计算、存储、通信优势的交易所更加适合他们。比如说,有哪种资产在uniswap上具备价值了,也会被移到中心化交易所,因为信息交易者要以此获利,他们在这里具备更大的优势,也更愿意提供更多的交易和流动性。
假设链下有个价格序列,如何在链上形成?
既然定价放在区块链上并没有什么优势,我们觉得价格计算应该在链下形成。区块链这个系统不是为了让你更有效率,而是为了让你更可信。假设链下有个价格序列,如何在链上生成这个价格序列并保真?
即第一是数据的验证和生成都要去中心化。
第二是要确保这两个价格不出现偏差。
第三是生成机制不能被别人影响。
第四是所有价格序列的生成都会有一个延时,除非你每个区块都有价格,这里延时是指最新的一个生效价格和调用价格并完成交易的区块间隔。
在你调用链下数据去链上时,首先会有的就是价格偏差。而这个偏差就是被链下可复制交易套利的可能性。同时延时会间接影响着价格偏差,因为不同时间对应的价格必然不同。目前Defi的预言机都未就这两点作风险管理。其实你在uniswap上操作的时候,做市商就承担着价格波动的风险以及被其他人套利的风险。问题是这个风险有多大以及做市商收取的费用能不能覆盖这个风险?目前,这类预言机的模型还停留在较为粗糙的阶段。
外部均衡价格的形成是一个NP问题(非多项式时间问题)。而Uniswap做的是一个P计算(这类指的是多项式时间问题:给我一个X,我输出一个Y给你)。所以在这种情况下,在市场价格波动的时候,就一定会被别人套利。如果你保证收益能覆盖损失,就可以形成一个均衡;然后你还需要保证均衡是稳定的,不能因为被扰动就开始偏离,就无法覆盖损失,否则做市商就撤出了。
当链下信息上传至链上时,肯定会有价格偏差,那么如何优化这个价格偏差?因为最小化价格偏差是非常困难的事情,于是我们想到价格偏差肯定小于等于套利成本。因此NEST预言机的机制包括了双向期权/价格链/Beta系数。Beta系数就是为了对抗自成交攻击,价格链是指能够让信息流永远存在,双向期权是一种报价机制,这其中有一个验证周期,主要是用来对抗堵塞攻击,否则理论上可以尽可能短,并收敛到均衡价格。
有两个成本是预言机一定会包含的,一个是gas费用,二是对冲成本。Chainlink是先使用再验证,Nest是先验证再使用。先使用再验证有有几个问题?第一个问题是,它到时候一定会出现一个不对等节点。它一定会碰到中心化问题,你抵押资产在这里,一定会有一个中心化对象来做处罚执行者。第二个是下游的风险抵押资产规模不匹配。100万美金不可能支撑出一个1万亿美金的项目。即便是没有作恶的动机,下游使用者也会担心作恶风险。
我们社会是要求完备的,比如说法律是支持先使用再验证(处罚)机制。但是区块链无法按照我们传统的方式来出处理。我们得先验证再使用,把错误风险把控制在你使用之前。在NEST 里,验证机制成本是什么?就是验证者被套利之后,他要提供一个两倍的报价,即验证成本就是Beta系数*双向期权(这里beta =2)套利的成本就等于gas费用+对冲成本+ Beta系数*双向期权。
那么,套利的成本是多少?在我们对NEST的价格偏差做的统计以后,发现套利成本大概在千分之4左右。这个统计套利并不是绝对套利,而是市场价格波动下对于价格固定的计算的概率。按照现在以太网的波动率,被套利的概率大概是7%左右。也就是100笔报价,大概有7笔被套利,实际检测下来大概2-3笔的样子。
堵塞攻击是第一个变量。(所谓堵塞攻击,是用交易占据区块,使其他人的交易无法打包。)预言机在防止堵塞攻击时需要验证25个区块。整个以太坊矿工社区慢慢都自觉的开始,凡是发起粉尘攻击和堵塞攻击,矿工知道你是恶意的会选择不给你打包。矿工选择打不打包是对系统不完美的修正,因为这是属于协议未定义的。
其次,验证周期和波动率决定了双向期权的成本。任何验证机制绕不开的验证周期和波动率。在这个波动率上升的时候,NEST的价格偏差就会变得很大。比如,3月2日那天达到了千分之三的波动率。千分之三的波动率相当于A股的四五十倍。在这个波动率下,正常投资人不知道如何预测掌控它,往往束手无策,这个时候金融产品的设计应该以链上信息流为基础,而不是盯着链下。
其实,双向期权+价格链+Beta系数这套机制可以用到传统金融,它是把最聪明的信息交易者和套利者放在一起进定价。如果你把最聪明的人集中在一起,就不需要那么多人参与定价。
第二个变量就是延时。延时在NEST系统里是靠激励机制来降低,如果NEST价格不变,每过一个区块报价变成过两个区块报价的话,那就意味着你的收益翻了一倍。不管如何堵塞,只要NEST价格不怎么跌的话,总会有人报,因为收益率太高了。
在做市商引用NEST的价格进行交易,会有一层风险保护。这个风险保护能够保证做市商在交易过程中,最终预期收益不亏损。因为这个价格会浮动,不管如何浮动,做市商都可能被别人套利。如果预言机把这个价格补偿放进来,然后在双方进行长期交易的时候自己不亏损,那么双方就是合适的。如果做市商不用这个风险函数进行保护,交易价格偏差很大,会一直亏钱直到退出。以上就是我们对可计算金融和Defi预言机的探讨。