在之前的一篇文章(HP(HIVE POWER)与HIVE的关系)中,O哥抛出一个问题,那就是计算HIVE上股份(vesting shares)的年化收益率。
(图源 :pixabay)
文章中,O哥给出了一个简单的计算思路:
股份年化收益率 = 当前总供应量 x 通胀率 x 15% / total_vesting_fund_hive
本以为会有小伙伴尝试提交试卷答案,结果等了快一周了,一个交卷的同学都没有。怎么的,不会是都学废了吧?不想毕业了嘛?😡
不过转念一想,自己当时为啥没直接在帖子中给出答案呢?不就是这个计算看起来简单,实则挺麻烦的,自己也很难一下子搞定嘛?哎,让我自己答卷都不一定及格呢,还有啥脸苛求小伙伴呢?
于是O哥断然决定,去计算一下VEST的年化收益率,动动手而不是总在嘴上叭叭叭,毕竟有句诗咋说来着:纸上得来终觉浅,绝知此事要躬行呀!
不扯了,开始计算VEST的年化收益率,思路依然沿袭上文中给出的思路。
获取总供应量
按照上述公式,我们首先要获取系统的总供应量,也就是也就是HIVE+HP+HBD等(就是总的资产啦)。
根据HIVE文档,我们可以使用get_dynamic_global_properties
来获取current_supply(HIVE+HP总量)
以及current_hbd_supply
(HBD总量),可以用get_current_median_history_price
来获取median_price
(HBD->HIVE的转换比例),这样就可以计算出总资产了。
实际操作一下,我们得到这几组数据:
供应量:
'current_hbd_supply': '34340828.208 HBD',
'current_supply': '424082630.009 HIVE',
系统喂价:
{'base': '0.409 HBD', 'quote': '1.000 HIVE'}
对上述两组数据进行计算,得到如下数据:
这就是我们要的总供应量,其实这个总供应量可以直接通过get_dynamic_global_properties
获得,那就是其中的virtual_supply
,感兴趣的小伙伴们自己去校验一下,看看是不是这么回事。
计算通胀率
在O哥的计算公式中,O哥直接用通胀率
,作为公式的参数之一才参与运算,而实际上呢,通胀率是需要计算得到的。
为了计算通胀率,我们需要以下几个数据:
- 当前区块(
head_block_num
)HIVE_INFLATION_RATE_START_PERCENT
(初始通胀率)HIVE_INFLATION_RATE_STOP_PERCENT
(终止通胀率)HIVE_INFLATION_NARROWING_PERIOD
(通胀率缩窄周期)
其中前者可以通过get_dynamic_global_properties
来获取,其它三个关于通胀率的参数可以使用get_config
获取。
也就是说,HIVE区块链初始年通胀率为9.75%,每250000个区块调整一个数值(亦即万分之一),最终稳定在0.95%。
根据上述数据,我们计算出当前通胀率为:
start_inflation_rate = HIVE_INFLATION_RATE_START_PERCENT
inflation_rate_adjustment = head_block_num // HIVE_INFLATION_NARROWING_PERIOD
inflation_rate_stop_percent = HIVE_INFLATION_RATE_STOP_PERCENT
current_inflation_rate = max(start_inflation_rate - inflation_rate_adjustment, inflation_rate_stop_percent)
最终,我们计算出当前通胀率为:current_inflation_rate 645
,亦即6.45%
。
获取通胀分配比例
在O哥的计算公式中,O哥直接用15%
,作为通胀中分配给股权持有者的奖励,实际上这个数值也不是恒定不便的,见证人们可以通过硬分叉来调整这个比例。
所以,正确的方法是用程序获取相应数值,而不是直接使用15%这个硬编码。
通胀奖励被分成几个部分,分别是作者/策展人奖励、见证人出块奖励、股权持有者奖励以及DHF(去中心化HIVE基金)。
其中作者/策展人奖励、股权持有者奖励、DHF可以通过get_config
获取,见证人奖励可以用100%减去其它部分:
可见,目前股权持有者的通胀奖励依旧是当前通胀的15%,当然,我们在代码中还是用以下代码来替换硬编码:
HIVE_VESTING_FUND_PERCENT = cfg['HIVE_VESTING_FUND_PERCENT_HF16']
计算年化收益率
好了,回顾一下我们的公式:
股份年化收益率 = 当前总供应量 x 通胀率 x 15% / total_vesting_fund_hive
现在似乎就差total_vesting_fund_hive
这个数据了,而这个数据同样可以从get_dynamic_global_properties
来获取。
调用一下,得到的数值如下:
至此,我们已经收集全了所有需要的数据,应该可以召唤神龙了。
apr_vest = total_supply * current_inflation_rate /HIVE_100_PERCENT * HIVE_VESTING_FUND_PERCENT/HIVE_100_PERCENT/ total_vesting_fund_hive
(其中HIVE_100_PERCENT可以通过get_config
,亦即cfg['HIVE_100_PERCENT']
,数值为10000
)
将各阶段的计算整理到新的公式中,最终得到的结果如下:
也就是说,粗略的计算,当前HIVE上股份的年化收益率为2.826%
,哈哈哈,比现在国内银行3年期存款要高一些呢。
补充说明
你可能是问了,这都已经计算出年化收益了,为啥还叫粗略估算呢?
这是因为HIVE上的各种数据不是一成不变的,而且通胀率也是在不断根据区块数调整变化的,若要计算更精确的数值,应该模拟一下今天起一年后区块、总量、通胀率等变化数据,进而做出计算。(由于市场、转换、各种销毁等因素,这样算出来的也是近似值)。
小伙伴可能又问了,股权收益才2.8x%,这明显不如存成HBD啦?
单纯看年化收益,锁仓HIVE成HP,是不如HBD存款,但是有HP了,还可以获取点赞收益等其它收益。而且还可以参与HIVE区块链的投票、治理等。
况且市场总是在变化当中,如果HIVE涨到10美元一枚,那么试问当初是存HBD合算还是POWER UP成VESTs更合算呢?(当然,也有下跌的可能,哈哈哈)。
(图源 :pixabay)
好了,今天就先学习到这里,O哥这份答卷,你可否满意?你学废了嘛?