链上数据之于区块链,就像基本面数据之于股票市场,是做加密资产量化时绕不开的信息,它可以成为因子策略中的重要因子。
链上数据泛指所有发生在区块链上的交易信息。区块链本质上是一个公开的分布式数据库,所有的链上交易都会被保存,具有公开透明、不可篡改等特点。因此,链上数据不可造假,公开透明。
本文将简要介绍主要有哪些链上数据提供商,并以Glassnode为例展示如何使用Python下载数据,并以「活跃地址交易调整后价格」指标为例展示链上数据的作用。
区块链的数据提供商可以分成以下三类:
一是区块浏览器,包括Etherscan、Zapper等,主要是用来帮助用户更方便地浏览交易和账户信息(下图)。
二是链上数据服务商,包括 Glassnode,Coin Metrics,IntoTheBlock、Nansen,Token Terminal 等,主要对链上数据进行分析整合和分析。本文将简要介绍如何使用 Python 从 Glassnode 免费下载链上数据。
三是链上基建,包括Chainalysis,Infura等,包括以反洗钱为目的监测链上数据,为项目开发提供了基础设施开发工具套件和API。
Glassnode 是一家顶级的区块链的数据分析平台,它提供了比较完整的链上、期货期权、交易所交互等数据。知名投资机构、量化团队、咨询平台等都在使用它们提供的数据信息。
Glassnode 主要分为**「Studio数据库」, 「Insights市场研报」,「Academy教育」**三个模块。
「Studio」模块界面如下,用户可以查看加密资产指标。
「Insights」模块每周提供专业分析师的最新研报,还提供了中文翻译,内容除了周报和链上数据分析,还有对defi、nft等领域的分析。
「Academy」模块提供了对链上数据模型的使用指南和相关知识的免费学习。
如下图,Glassnode数据可以大致分成地址(addresses),指标类(indicators),衍生品(derivatives)等。
Glassnode 的数据标价表如下,标准版(Standard)是免费的,支持日度频率的数据下载。
第一次使用Glassnode需要申请API,用户可以在「studio」模块完成账户注册,并申请一个API key,并将api key填入下面的代码中。
import json
import requests
import pandas as pd
# insert your API key here
API_KEY = '{your api key}'
# make API request
res = requests.get('https://api.glassnode.com/v1/metrics/indicators/sopr',
params={'a': 'BTC', 'api_key': API_KEY})
# convert to pandas dataframe
df = pd.read_json(res.text, convert_dates=['t'])
Tier 1一共支持437个数据接口,可以使用如下代码查询所有可调用接口,或直接查看官方开发文档:https://docs.glassnode.com/basic-api/endpoints。
# make API request
res = requests.get('https://api.glassnode.com/v2/metrics/endpoints',
params={'a': 'ETH', 'api_key': API_KEY})
# convert to pandas dataframe
df = pd.read_json(res.text, convert_dates=['t'])
以调用活跃用户地址数量为例,可以通过如下输入关键词「active」的方法查看端口完整名称,从中确定了端口是 /v1/metrics/addresses/active_count 。
for index, row in df.iterrows():
if 'active' in row['path']:
print(row['path'])
得到端口名称后,便可以运行如下代码得到glassnode数据:
#链接可以修改
res = requests.get('https://api.glassnode.com/v1/metrics/addresses/active_count',
params={'a': 'ETH', 'api_key': API_KEY})
# convert to pandas dataframe
df = pd.read_json(res.text, convert_dates=['t'])
摩根士丹利在一篇研报中提出过 Volume per Address adjusted Price 概念(简称pava),即**「活跃地址交易调整后价格」**。简单来说,对一层公链来说(例如以太坊、Solana等),可以通过链上交易量和活跃地址数对价格进行调整,计算出公链的估值水平。计算方法是用价格除以(90天平均链上交易量/90天平均活跃地址数),以上提到的数据都可以通过 glassnode 的api 免费得到。
将调整后价格(pava指标)和过去90天收益率放在同一张图如下:
从上表可以发现,调整后价格与过去90天收益率有很强的相关性,并存在周期性。假如将pava按大小分成5个区间,区间0代表最小的20%值,区间4代表最大的20%值的话,计算未来7天,30天和90天的平均收益率,如下:
以及未来胜率:
综上可以发现,pava是一个不错的因子。
本文简单简单介绍了链上数据的提供商glassnode,如何使用api下载从glassnode获得链上数据,最后以「活跃地址交易调整后价格」为例展示了链上数据的价值。