链上数据知多少系列之一:如何获得链上数据

链上数据之于区块链,就像基本面数据之于股票市场,是做加密资产量化时绕不开的信息,它可以成为因子策略中的重要因子。

链上数据泛指所有发生在区块链上的交易信息。区块链本质上是一个公开的分布式数据库,所有的链上交易都会被保存,具有公开透明、不可篡改等特点。因此,链上数据不可造假,公开透明。

本文将简要介绍主要有哪些链上数据提供商,并以Glassnode为例展示如何使用Python下载数据,并以「活跃地址交易调整后价格」指标为例展示链上数据的作用。

一、链上数据提供商一览

Galaxy Research
Galaxy Research

区块链的数据提供商可以分成以下三类:

一是区块浏览器,包括Etherscan、Zapper等,主要是用来帮助用户更方便地浏览交易和账户信息(下图)。

Etherscan
Etherscan

二是链上数据服务商,包括 Glassnode,Coin Metrics,IntoTheBlock、Nansen,Token Terminal 等,主要对链上数据进行分析整合和分析。本文将简要介绍如何使用 Python 从 Glassnode 免费下载链上数据。

三是链上基建,包括Chainalysis,Infura等,包括以反洗钱为目的监测链上数据,为项目开发提供了基础设施开发工具套件和API。

二、Glassnode简介

Glassnode 是一家顶级的区块链的数据分析平台,它提供了比较完整的链上、期货期权、交易所交互等数据。知名投资机构、量化团队、咨询平台等都在使用它们提供的数据信息。

Glassnode 主要分为**「Studio数据库」, 「Insights市场研报」,「Academy教育」**三个模块。

「Studio」模块界面如下,用户可以查看加密资产指标。

studio模块
studio模块

「Insights」模块每周提供专业分析师的最新研报,还提供了中文翻译,内容除了周报和链上数据分析,还有对defi、nft等领域的分析。

insights模块
insights模块

「Academy」模块提供了对链上数据模型的使用指南和相关知识的免费学习。

Academy模块
Academy模块

三、通过Glassnode下载链上数据

如下图,Glassnode数据可以大致分成地址(addresses),指标类(indicators),衍生品(derivatives)等。

不同endpoint
不同endpoint

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天收益率放在同一张图如下:

pava指标和过去90天收益率
pava指标和过去90天收益率

从上表可以发现,调整后价格与过去90天收益率有很强的相关性,并存在周期性。假如将pava按大小分成5个区间,区间0代表最小的20%值,区间4代表最大的20%值的话,计算未来7天,30天和90天的平均收益率,如下:

pava不同区间下的未来收益率
pava不同区间下的未来收益率

以及未来胜率:

pava不同区间下的未来一段时间胜率
pava不同区间下的未来一段时间胜率

综上可以发现,pava是一个不错的因子。

小结

本文简单简单介绍了链上数据的提供商glassnode,如何使用api下载从glassnode获得链上数据,最后以「活跃地址交易调整后价格」为例展示了链上数据的价值。

Subscribe to Trader Li
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.