Skip to content

Latest commit

 

History

History
291 lines (175 loc) · 24.2 KB

hashrate-derivative-cn.md

File metadata and controls

291 lines (175 loc) · 24.2 KB

1. 动机

数字货币挖矿行业创建了一个巨大的市场。投资挖矿通常需要投入一笔资金用于购买矿机,并在未来一段时间持续获得挖出的数字货币作为投资收益。然而,投资挖矿的风险很大。除政策、天气等特殊因素外,挖矿产业的核心风险来自于数字货币币价的波动和挖矿难度的波动。

由于有大量的金融工具可以对冲币价带来的风险,所以本文不再讨论币价波动带来的风险而主要讨论挖矿难度波动带来的风险。

区块链协议界定了单位时间内挖矿产生的数字货币总量,当参与挖矿的投资越多,全网用于挖矿的算力就会越高,此时区块链协议为了维护相对固定的出块时间就会自动提高挖矿难度,从而造成单位算力的挖矿产出下降,由此大大降低了挖矿的投资回报比。

今天挖矿市场的核心痛点之一便是挖矿市场不是一个有效的市场,矿工只能选择做多或不投资,即要么投资矿机进行挖矿要么不进行投资,而没有做空的手段。另一个问题是,市场缺乏风险揭示机制,矿工往往在币价上涨时扎堆盲目投资矿机进行挖矿,从而造成挖矿难度快速上升,收益很快下降。如果再遇到币价大跌则会损失惨重。

本文提出一种挖矿算力收益合约。这一金融衍生品可以双边交易,其市场成交情况很好的揭示了挖矿风险。通过交易这一衍生品,矿工可以有效对冲难度波动带来的挖矿风险,投机者可以通过承担风险获得收益,从而剥离了挖矿难度风险、形成更有效的挖矿市场的目的。

2. 合约说明书

以下合约基于Market Protocol智能合约发行。

2.1 比特币算力收益合约

2.1.1 指数

设计原则
  • 指数必须具有一个明确的实际意义
  • 为了方便预测,指数应当只与挖矿难度相关
  • 指数应该方便矿工进行挖矿对冲。矿工应该可以通过进入合约头寸对冲一段时间内的难度波动引起的风险
  • 指数应该与一个被人们熟知的数据具有可比性,比如btc.com中的某一数据
命名

本合约使用的指数称为:比特币算力收益指数,缩写为_BME{N}_ ,N表示指数天数, 例如 BME28, BME84等等

含义

比特币算力收益指数 BME 表示: 1T算力在过去N天内的平均日BTC收益

1T = 1012

公式

BME 用以下公式计算:

其中:

  • T 表示N天内的挖矿难度调整次数. 令T=N/14
  • Difficultyi 表示最近倒数第i次难度调整后的难度值
  • Ki 是一个缩放系数,由以下公式计算:

参数 取值 备注
HashrateUnit 10 12 Hash/s 1T 算力
TargetBlockTime 600 s 比特币预期出块时间,10分钟
Coinbasei 12.5 BTC 区块挖矿收益,每21,000区块收益减半
NBlock 144 每天的区块数
Ki 251457095 Coinbasei 减半而减半
其他要点
  • 因为比特币挖矿难度每2016个区块调整一次(大约相当于14天),所以指数中的天数N一般设置为14的整数倍。
  • 在挖矿减半之前,指数只会在每次挖矿难度调整的时候变化。
  • 指数和btc.com的“每T收益”数据在同一量级,事实上,BME14指数应该与btc.com的“每T收益”数据相等。
例子
区块高度 时间 难度 BME14 BME28 BME84
572,544 2019-04-21 09:54:28 6,353,030,562,983 3.958E-05    
574,560 2019-05-04 16:32:13 6,702,169,884,349 3.752E-05 3.855E-05  
576,576 2019-05-18 16:31:36 6,704,632,680,587 3.750E-05 3.751E-05  
578,592 2019-05-31 06:43:04 7,459,680,720,542 3.371E-05 3.561E-05  
580,608 2019-06-14 09:03:50 7,409,399,249,090 3.394E-05 3.382E-05  
582,624 2019-06-27 10:59:30 7,934,713,219,630 3.169E-05 3.281E-05 3.566E-05
584,640 2019-07-09 17:17:48 9,064,159,826,491 2.774E-05 2.972E-05 3.368E-05

更多的BME数据

2.1.2 指数范围

按照Market Protocol的设计要求,每份比特币算力收益合约都会设置指数的有效范围,用 Cap 表示指数上限,用 Floor 表示指数下限。当指数达到上下限的时候会触发合约交割。

在设置合约的指数范围时需考虑如下两个原则:

  • 为了减少对保证金的需求、提高杠杆,会尽量设置较小的指数范围
  • 另一方面,为了防止因指数达到上下限而触发合约提前交割,会设置相对安全(较宽)的指数范围

2.1.3 合约大小

每份合约的价值 = 合约乘数 * 指数

合约乘数 = Multiplier = 106 WBTC

2.1.4 到期时间

每份比特币算力收益合约都会设置一个到期日。合约在格林尼治时间到期日的02:00点到期。为了避免出块时间波动的影响,到期时间通常设置在某次难度调整预期时间之后的7天。根据Market Protocol的要求,合约在到期1天后可以进行交割。

2.1.5 交割

合约发生交割时,Market智能合约将会向合约头寸持有人发送WBTC。每份合约多头将收到 ( BMI - Floor ) * Multiplier 个WBTC,每份合约空头将收到 ( Cap - BMI ) * Multiplier 个 WBTC。

2.1.6 保证金

合约发行人向Market智能合约抵押( Cap - Floor ) * Multiplier 个WBTC以铸造合约头寸代币。合约的头寸是完全抵押的,合约在交割前不需要补充保证金。

2.1.7 头寸代币命名

<L|S>BME<N>-<Floor>-<Cap>-<YYMMDD>

  • L: 多头头寸
  • S: 空头头寸
  • N: 指数天数
  • Floor: 指数下限,单位是1E-7
  • Cap: 指数上限,单位是1E-7
  • Height: 交割区块高度
  • YYMMDD: 到期日

例: SBME84-250-300-190718表示指数范围在[2.50E-5,3.00E-5]于2019年7月18日02:00:00(UTC)到期的84天比特币算力收益合约空头。

3. 智能合约栈

基于以太坊上的智能合约实现对算力收益合约的发行、交易、保证金管理、交割等生命期管理。这个过程可以实现信任最小化,降低了交易门槛,为流动提供保障。

3.1 合约代币化

基于Market Protocol智能合约 可以方便实现建立算力收益合约的头寸。同时,Market Protocol的合约头寸都是标准的ERC20代币,从而很容易的可以通过链下交易所或链上去中化协议交易这些头寸。

市场上流通的合约头寸代币需要由发行人铸造(mint)。合约发行人通过向Market Protocol智能合约抵押资产铸造头寸代币。发行人在完成代币铸造后,将同时持有合约的多头代币和空头代币,其净头寸为0。因为铸造的多头代币总是等于空头代币,所以称为代币对。此后,如果发行人希望进入合约多头,则可以在市场上将空头代币卖出,以达到持有多头的目标;反之,如果发行人希望进入合约空头,则可以卖出多头代币。

交易员也可以在市场上直接购买合约代币实现持有合约头寸的目的,而不必在Market Protocol智能合约中铸造头寸代币。任何时候,头寸代币持有人只需要在市场上卖出持有的头寸代币就可以实现平仓,从而不必等待合约交割就可以实现头寸盈亏。

由于算力合约的指数具有上下的范围限制,且发行人已经在创建头寸时为指数范围内的合约价值支付了完全的保证金,所以合约头寸是完全抵押的,在指数范围内没有爆仓的风险。由于算力合约会被用于对冲挖矿风险,而挖矿是一个长期的过程,所以必须尽量避免因为指数到达上下限而造成的合约提前交割的情况。为此,设置指数上下限时需要根据历史数据,设置相对宽松的指数范围,以求覆盖指数波动。

虽然合约头寸是完全抵押的,但指数的范围设置,依旧提供了对指数的杠杆作用。即当指数波动时,合约头寸价值的变化率通常会大于指数的变化率。

例1,Carboclan社区在设置了一个84天后到期的比特币挖矿算力合约。此时BME84指数为5.52E-5。设置算力收益合约的参数如下:

  • 指数上限:6.00E-5
  • 指数下限:4.50E-5
  • 到期时间:2019-05-11 02:00:00 UTC

Alice希望创建1.0个合约代币对,为此她向Market智能合约质押了(6E-5 - 4.5E-5) * 1E6 * 1.0 = 15 WBTC,从而铸造了1.0个合约多头代币和1.0个合约空头代币。此时,按指数计算的每个合约多头代币价值为(5.52E-5 - 4.50E-5) * 1E6 = 10.2 WBTC,每个合约空头代币价值为(6.00E-5 - 5.52E-5) * 1E6 = 4.8 WBTC。

之后,指数下降到5.50E-5,此时,按指数计算的每个合约多头代币价值为(5.50E-5 - 4.50E-5) * 1E6 = 10 WBTC,每个合约空头代币价值为(6.00E-5 - 5.50E-5) * 1E6 = 5 WBTC。Alice希望进入合约空头,于是她在交易所中挂单出售1.0个多头代币。Bob恰好希望进入合约多头,最终Bob向Alice购买了合约多头币,成交价9.8 WBTC。Bob向Alice支付9.8 WBTC,Alice向Bob支付1.0个多头代币。

这里在市场上头寸代币成交价(9.8 WBTC)低于了按指数计算的价值(10 WBTC),这是由于人们对到期日指数会进一步下降的预期造成的。另一方面,我们可以看到,指数下降了(5.52E-5 - 5.50E-5) / 5.52E-5 = 0.36%,但多头头寸按指数计算的价格却下降了(10.2 - 10) / 10.2 = 1.9%,这就是指数下限造成的5.28倍杠杆作用。

当UTC时间2019年5月11日02点合约到期。又过了1天,合约进行交割。此时合约指数为5.25E-5。Market智能合约向多头持有方Bob支付(5.25E-5 - 4.50E-5) * 1E6 * 1.0 = 7.5 WBTC, 向空头持有方Alice支付(6.00E-5 - 5.25E-5) * 1E6 * 1.0 = 7.5 WBTC。最终Alice的盈亏为:-15 + 9.8 + 7.5 = 2.3 WBTC,Bob的盈亏为: -9.8 + 7.5 = -2.3 WBTC。

3.2 预言机

Market Protocol依赖预言机提供指数。预言机是整套系统的相对中心化的部分。

比特币算力收益合约的预言机依赖以太坊链外数据。需要由外部权威机构提供比特币区块难度信息,提交到预言机智能合约实现。好在比特币区块难度信息的变化很缓慢,平均14天变化一次,且这一信息由于记录在比特币区块链上,全世界任何人都可以对这一数据的真实性进行检验。

3.3 交易层

因为基于Market Protocol发行的算力收益合约头寸代币背后是完全抵押的合约头寸,且头寸代币符合ERC20规范,所以头寸代币可以通过任何支持ERC20的线下中心化交易所(例如币安、bitstamp等)或链上去中化的智能合约(例如0x,Uniswap等)交易。这一特性,使得交易算力收益合约变得非常简单。并不需要开发新的交易技术或基础设施就可以进行交易。

3.4 浮动保证金层

在3.1中我们已经分析了使用Market Protocol本身存在对指数的杠杆作用。然而,当指数波动较大时,为了防止指数触达上下限而引发合约交割,需要设置较大范围的指数上下限,进而造成抵押保证金上升,并降低整体杠杆率。

在算力收益合约中,对于相对近期的合约(比如30天),指数波动不大,此时设置的指数上下限范围相对较小,仅仅使用Market Protocol就提供了相对足够的杠杆率。但对于相对远期的算力合约(比如180天),指数波动可能达到100%,此时Market Protocol的完全抵押保证金的方式会造成交易成本过高。

为此,可以在头寸代币基础上,引入一种浮动保证金层。浮动保证金层的特点是,保证金不是完全抵押的,而是按照头寸市场价设置一个保证金比例,保证金只要能覆盖短期内的价格波动。当头寸价格发生变化造成保证金率下降时,可以向保证金不足的交易方发起追加保证金请求(margin call),从而提高保证金以覆盖波动。另一方面,由于指数波动,当浮盈头寸的保证金率超过了必要比例时,超出的保证金可以从保证金账户中取出,使得头寸持有者实现盈利。这种浮动保证金机制降低了保证金要求,提高了交易双方的资金利用率。

已经有一些Defi的协议实现了浮动保证金功能。dydx protocol是其中的代表。dydx平台提供了融币的功能。一方面,出借方将代币A存到智能合约的资金池中,贷方抵押代币B创建保证金账户,并从资金池中贷出代币A。贷出的代币A可以在交易市场上卖出以获得代币B,卖出获得代币B再次作为抵押进入保证金账户,从而又可以贷出更多代币A用于卖出,最终达到了杠杆做空代币A的目的。相反的,出借方将代币B存到智能合约的资金池中,贷方抵押代币A创建保证金账户,并从资金池中贷出代币B。贷出的基础代币B可以在交易市场上买入更多代币A,获得的代币A再次作为抵押进入保证金账户,从而又可以贷出更多代币B用于买入代币A,最终达到了杠杆做多代币A目的。dydx支持最大4倍杠杆。当抵押的代币相对于贷出的代币的价格下降时,会造成保证金不足,如果贷币方不能及时补充抵押物,会引发强行平仓,从而实现浮动保证金的功能。

目前,dydx还不完全支持直接交易Market的头寸代币,还有一些适配工作需要完成,但应该不会是主要障碍。

4. 使用场景

算力收益合约可以用于多种业务场景。

4.1 风险揭示

投资人在购买矿机开始挖矿前,需要预估投入产出比(ROI)。投资人购买矿机是一次性投入,未来挖矿需要付出的电费也是固定值,即投资挖矿的投入是确定的。影响挖矿产出的因素就是币价和挖矿难度。已经有大量金融产品(期货、期权、永续合约等)可以揭示或对冲币价波动的风险。挖矿收益合约市场向投资人进一步揭示了因难度波动带来的风险敞口。当投资挖矿前,投资人可以观察近期及远期的算力收益合约的成交价,合约的成交价反应了市场对于挖矿收益的真实估计。

例,在2019年5月1日时,BMI14指数为3.95E-5, 市场中比特币挖矿收益合约的成交价情况如下:

合约头寸代币 预计到期日 市场价 隐含挖矿收益
LBME28-300-500-190526 19-05-26 8 WBTC 3.8E-5 BTC / 1T*24H
SBME28-300-500-190526 19-05-26 12 WBTC 3.8E-5 BTC / 1T*24H
LBME84-200-400-190716 19-07-16 12 WBTC 3.2E-5 BTC / 1T*24H
SBME84-200-400-190716 19-07-16 8 WBTC 3.2E-5 BTC / 1T*24H

合约多头代币的成交价反应了市场对合约到期前N天的每T算力平均每日预期挖矿收益的判断。用(多头成交价 / Multiplier + 指数下限)就可以得到成交价隐含的预期挖矿收益。从成交价看,市场认为同等算力挖矿收益将逐渐下降。投资人从上述成交价洞察出预期挖矿收益的下降,从而对挖矿ROI做出更理性的预估。

4.2 对冲风险

算力收益合约在揭示挖矿风险的基础上,还可以进一步对冲挖矿风险。同样的,这里的讨论忽略币价的波动,因为有大量的衍生品可以对冲币价波动。投资人在购买矿机挖矿的同时,进入算力收益合约空头,对难度引起的挖矿收益波动进行对冲。当挖矿难度上升,挖矿收益下降时,合约空头的利润将抵消真实矿机挖矿收益下降的部分;当挖矿难度下降,挖矿收益上升时,合约空头的亏损将被真实矿机挖矿收益上升的部分抵消。上述对冲操作相当于提前锁定了挖矿收益,锁定的收益为(合约指数上限 * Multiplier - 进入头寸价格)。

例,Alice在2019年5月1日,购买了一批具有100T Hash/s的矿机,她希望锁定未来6个难度周期(大约84天,从2019-5-4到2019-7-27)。于是Alice在市场上买入100 * 84 / 1E6 = 0.0084 个算力收益合约空头代币SBME84-200-400-190716。以下是到期交割时Alice的盈亏情况:

头寸代币 进入价格 交割指数 每代币盈亏 头寸盈亏 挖矿收入 综合收入
SBME84-200-400-190716 8 3.36E-5 -1.6 -0.01344 0.28224 0.26880
SBME84-200-400-190716 8 2.86E-5 3.4 0.02856 0.24024 0.26880

* 上表中货币单位为WBTC

4.3 固收投资

算力收益合约剥离了挖矿中因挖矿难度变化而带来的风险,从而提出了一种固定收益的投资模式。投资人可以购买(或租赁)实体矿机并在矿场挖矿,同时进入算力收益合约空头对冲掉挖矿难度上升带来的风险。如果是法币本位投资者,还可以进入币价的空头对冲掉币价下跌的风险。通过上述方法,组合出一个无风险的固定收益投资品。无风险固收投资者为整个挖矿产业生态提供了资金。无风险固收投资者需要管理实体矿机矿场确保挖矿生产,提供了在虚拟挖矿衍生品和实体矿机挖矿中的桥梁作用。

4.4 融资租赁

矿场经营者的痛点是缺乏资金,无法加杠杆扩大生产。由于挖矿的风险不可控,没有人敢给挖矿行业贷款。矿场经营者可以将矿机按时间出租给无风险固收投资者或抵押给融资租赁的资金提供方,从而获得一笔现金流用于增加杠杆扩大生产规模。当把矿机抵押给融资租赁的资金提供方时,资金提供方可以要求融资方进入算力收益合约空头和币价空头,从而增加贷款人的偿债能力。

4.5 云挖矿

利用算力收益智能合约之上,可以很容易的构建一个虚拟云挖矿业务。虚拟云挖矿业务面向已经理解云挖业务的用户。

传统投资云算力是这样一个经济模型:用户在初期投入一部分资金用于购买云算力,并在之后一段连续时间内陆续获得一系列挖矿收益。用户希望获得挖矿的总收益最终可以大于购买云算力的投入。不考虑币价波动的情况(或者对币价做完全对冲),云算力投入的回报只和挖矿难度相关。

可以很容易的利用算力收益智能合约模拟上述过程:用户在市场上进入一组大小相同的连续交割的算力收益合约多头,这些算力收益合约的指数下限都是0,这一过程类似于投资云算力。之后用户会不断收到头寸代币交割后返还的资金,收到资金的过程类似挖矿收益。用户购买的云算力的算力大小即是头寸大小对应的合约指数的算力大小。例如比特币挖矿合约指数使用1T Hash/s作为算力单位,则购买(1 / Multiplier)个多头代币就相当于购买了1T Hash/s的云算力。由于这些算力收益合约的指数下限都是0,所以多头永远没有爆仓问题,非常类似于挖矿。

4.6 投机

算力收益合约构建了一个双边市场。在这一市场中,可以做多或做空算力收益。投资者可以出于投机目的进入合约多头,成为挖矿对冲者的对手方。只要能建立挖矿难度增长的准确估计,就可以通过为挖矿承担风险的方式投机获利。

4.7 为杠杆交易配资

对于远期交割的算力收益合约,由于指数波动较大,为了防止指数触达合约上下限,往往需要设置较大范围指数上下限,这样设置合约,会使得无论合约空头代币还是多头代币都需要在Market Protocol中质押相对多的保证金,进而表现为空头和多头代币价格都很高,从而减少了资金利用率。尤其是当用于挖矿对冲的时候,投资人已经花费大量资金在购买矿机上,如果对冲远期风险还需要占用大量资金,则会大大减低投资人的对冲欲望。为此,我们也引入了浮动保证金机制(例如dydx)。

在浮动保证金机制下,出现了一种专门为杠杆交易配资以赚取无风险利息收益的业务模式。投资人在Market Protocol中创建合约代币对,但投资人不在市场上交易这些头寸代币,而是始终维持净头寸为0。配资投资人把多头代币和空头代币都出借到dydx等融资平台的资金池中。当需要浮动保证金杠杆交易的交易员从dydx中贷出多头代币或空头代币时,配资投资人可以获得利息收益。

4.8 做市商

任何双边市场都可以存在做市商。做市商通过为市场提供流动性并承担做市风险而获利。由于头寸代币是标准的ERC20代币,所有现有的加密货币做市商机制都可以引入进来。做市商可以通过观察订单薄进行低卖高卖的策略做市获利,也可以通过创建头寸代币对,并质押到Uniswap等自动化做市合约中做市获利。

5. 定价

算力收益合约是一种全新的算力衍生品,对其进行定价的方式尚待探索。这里介绍几种简单的技术指标。希望这些指标有助于交易方对合约定价。

5.1 隐含难度

每个合约的价格都隐含了一个预期的1T算力日均挖矿收益。隐含挖矿收益(Implied Earnings)可以由以下两个公式计算:

从隐含挖矿收益可以计算出对应的隐含挖矿难度。隐含挖矿难度(Implied Difficulty)由以下公式计算:

其中,K 是2.1.1中指数公式使用的 K 值。

例子:引用4.1中的例子,在2019年5月1日时,难度为6.35T对应的BMI14指数为3.95E-5, 补充隐含难度和隐含难度增长率(见5.2)

合约头寸代币 市场价 隐含挖矿收益 隐含难度 隐含难度增长率
LBME28-300-500-190526 8 WBTC 38 BTC / 1T*24H 6.62T 2.82%
SBME28-300-500-190526 12 WBTC 38 BTC / 1T*24H 6.62T 2.82%
LBME84-200-400-190716 12 WBTC 32 BTC / 1T*24H 7.86T 6.46%
SBME84-200-400-190716 8 WBTC 32 BTC / 1T*24H 7.86T 6.46%

交易员可以对未来一段时间的难度变化进行预测,并给出一个隐含难度的推断值,从而倒推出自己的对应出价。

5.2 隐含难度增长率

算力收益指数中引用了一组连续的难度数据,而难度总在变化。合约的市场价也反应了对这种变化的预测。隐含难度增长率(Implied Difficulty Growth Rate, 简写为IDGR)是从合约价格反推出的每次难度调整后难度的平均增长率。隐含难度增长率与隐含挖矿收益之间具有以下关系:

其中,

  • KT 都是2.1.1中指数公式使用的值
  • Difficulty0 是合约到期前倒数第T+1次难度调整后的难度

将上式代入隐含难度公式可以得到隐含难度和隐含难度增长率之间的关系为:

当T较大时,无法从隐含难度轻易求出隐含难度增长率的解析解,此时可以通过牛顿迭代法求其数值解。

示例见5.1中的例子。

交易员可以通过预测一个合理的隐含难度增长率进而计算出相应的合约价格。

5.3 分解定价法

由于合约的指数只与难度相关,通过逐个预测未知的难度周期的挖矿难度,可以推算出相应的交割指数,从而对头寸代币进行定价。

通过一个例子来说明这一方法。在2019年5月20日,用分解定价法对LBME84-200-400-190716进行定价。注意此时该合约周期内有6次难度调整,在5月20日已经进行过2次难度调整,我们通过分别预测另外4次难度调整对该合约定价。下表给出了几个不同的预测数据及对应的代币价格:

难度1 难度2 预测难度3 预测难度4 预测难度5 预测难度6 预测交割指数 代币价格
6.7 6.7 6.9 7.1 7.3 7.9 3.55E-05 15.5
6.7 6.7 7.4 7.6 7.9 8.3 3.40E-05 14.0
6.7 6.7 6.5 6.4 6.3 6.2 3.89E-05 18.9

上表中难度单位为T

6. 社区介绍

7. 致谢