AKShare 加密货币数据接口实战:金十实时行情、比特币持仓报告与 CME 成交量数据
【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcode.com/gh_mirrors/aks/akshare
本文聚焦 AKShare 项目中「数据中心(dc)」分类下的三只加密货币数据接口:crypto_js_spot(加密货币实时行情)、crypto_bitcoin_hold_report(比特币持仓报告)与 crypto_bitcoin_cme(CME 比特币成交量报告)。三只接口的数据均来自金十数据数据中心,面向加密货币行情追踪、链上/机构持仓分析和衍生品市场监控等场景。读完本文,你将掌握每只接口的输入输出结构、字段含义、调用方式,以及对应的源码级实现原理,可直接在自己的量化分析脚本中落地使用。
接口全景:一个数据中心的三类加密数据
本文涉及的三个接口同属于金十数据数据中心(datacenter)体系,AKShare 将其统一归类为「加密货币数据」模块,并全部在项目顶层导出,因此可以直接通过 ak. 前缀调用。三只接口的定位差异如下:
| crypto_js_spot | 主流加密货币实时行情快照 | 时点快照(多市场多品种) | 高频轮询 |
| crypto_bitcoin_hold_report | 全球机构/上市公司比特币持仓 | 当前时点持仓总表 | 低频(日更级) |
| crypto_bitcoin_cme | 芝加哥商业交易所比特币成交量 | 指定交易日的逐类统计 | 按交易日查询 |
从源码结构看,三只接口的实现在仓库中分处两处:crypto_js_spot 定义于 akshare/economic/macro_other.py,而 crypto_bitcoin_hold_report 与 crypto_bitcoin_cme 分别位于 akshare/crypto/crypto_hold.py 与 akshare/crypto/crypto_bitcoin_cme.py。在 akshare/init.py 中三者均被显式导入并加入 __all__ 导出列表,从而统一以 ak.crypto_* 的形式暴露给用户。
crypto_js_spot:加密货币实时行情
接口说明
crypto_js_spot 用于获取主流加密货币在当前时点的实时行情数据,覆盖 Bitfinex、Bitflyer、Bitstamp、CEX.IO、Kraken、OKCoin 等多家交易所的多币种报价,一次请求即返回完整的行情快照,接口本身不需要任何输入参数。
输入参数
| – | – | – |
输出参数
| 市场 | object | 交易所及其所在地,如 Bitfinex(香港)、Kraken(美国) |
| 交易品种 | object | 交易对,如 BTCUSD、BTCJPY、LTCUSD |
| 最近报价 | float64 | 最新成交价 |
| 涨跌额 | float64 | 相对参考价的涨跌绝对值 |
| 涨跌幅 | float64 | 相对参考价的涨跌百分比 |
| 24小时最高 | float64 | 24 小时内最高价 |
| 24小时最低 | float64 | 24 小时内最低价,注意货币币种 |
| 24小时成交量 | float64 | 24 小时成交量,注意货币币种 |
| 更新时间 | float64 | 行情时间戳,实际为字符串形式的日期时间 |
接口示例
import akshare as ak
crypto_js_spot_df = ak.crypto_js_spot()
print(crypto_js_spot_df)
数据示例
市场 交易品种 … 24小时成交量 更新时间
0 Bitfinex(香港) LTCUSD … 23157.88 2022-03-15 16:02:03
1 Bitflyer(日本) BTCJPY … 2031.26 2022-03-15 16:02:03
2 Bitstamp(美国) BTCUSD … 1380.17 2022-03-15 16:02:03
3 CEX.IO(伦敦) BTCUSD … 54.51 2022-03-15 16:02:03
4 Kraken_EUR(美国) BTCEUR … 1342.40 2022-03-15 16:02:03
5 Kraken(美国) LTCUSD … 21871.79 2022-03-15 16:02:03
6 OKCoin(中国) BTCUSD … 239.14 2022-03-15 16:02:03
7 Bitfinex(香港) BCHUSD … 0.00 2020-11-16 21:02:04
8 Bitfinex(香港) BTCUSD … 7496.55 2022-03-15 16:02:03
9 Kraken(美国) BTCUSD … 3147.43 2022-03-15 16:02:03
源码实现要点
从 akshare/economic/macro_other.py 的实现可以看到,该接口向金十数据的数据中心 API 发起 requests.get 请求,并在请求头中携带 x-app-id、x-csrf-token、x-version 三个业务标识字段。拿到 JSON 响应后,源码做了三件关键的加工:
需要留意的是,接口返回的是「当前时点」的行情快照,适合做实时轮询采样;而不同交易所的成交量、最低价等字段对应的币种口径存在差异(如 BTCUSD 与 BTCJPY),做跨市场对比前建议先按「交易品种」列做分组对齐。
crypto_bitcoin_hold_report:比特币持仓报告
接口说明
crypto_bitcoin_hold_report 用于获取金十数据整理的全球比特币持仓报告,覆盖上市公司、政府机构、私营企业、ETF/ETP 等多种主体类型的 BTC 持仓明细,单次返回当前时点的完整持仓总表,无需输入参数。
输入参数
| – | – | – |
输出参数
| 代码 | object | 证券代码(含交易所后缀),政府机构等无证券代码主体为 None,该列同时作为行索引 |
| 公司名称-英文 | object | 持仓主体英文名称 |
| 公司名称-中文 | object | 持仓主体中文名称 |
| 国家/地区 | object | 主体注册国家或地区 |
| 市值 | float64 | 主体市值 |
| 比特币占市值比重 | float64 | 比特币持仓占主体市值比重,注意单位:% |
| 持仓成本 | float64 | 平均建仓成本 |
| 持仓占比 | float64 | 持仓占比,注意单位:% |
| 持仓量 | float64 | 持有的比特币数量 |
| 当日持仓市值 | float64 | 当日比特币持仓市值 |
| 查询日期 | object | 数据查询日期 |
| 公告链接 | object | 相关公告链接 |
| 分类 | object | 主体分类:上市公司、政府机构、私营企业、ETF 等 |
| 倍数 | float64 | 倍数指标 |
接口示例
import akshare as ak
crypto_bitcoin_hold_report_df = ak.crypto_bitcoin_hold_report()
print(crypto_bitcoin_hold_report_df)
数据示例
代码 公司名称-英文 … 分类 倍数
0 MSTR:NADQ MicroStrategy … 上市公司 NaN
1 MARA:NADQ Marathon Digital Holdings Inc … 上市公司 NaN
2 TSLA:NADQ Tesla, Inc … 上市公司 NaN
3 HUT:NASDAQ Hut 8 Mining Corp … 上市公司 NaN
4 COIN:NADQ Coinbase Global, Inc. … 上市公司 NaN
5 BRPHF:OTCMKTS Galaxy Digital Holdings … 上市公司 NaN
6 SQ:NYSE Block, Inc. … 上市公司 NaN
7 RIOT:NADQ Riot Platforms, Inc. … 上市公司 NaN
8 BTGGF:TCMKTS Bitcoin Group SE … 上市公司 NaN
9 VOYG:TSX Voyager Digital LTD … 上市公司 NaN
10 HIVE:NASDAQ Hive Blockchain … 上市公司 NaN
11 NEXOF:OTCMKTS NEXON Co. Ltd … 上市公司 NaN
12 EXOD:OTCMKTS Exodus Movement Inc … 上市公司 NaN
13 HKD:HKG Meitu … 上市公司 NaN
14 PHUN:NASDAQ Phunware, Inc. … 上市公司 NaN
15 NFT:AQSE NFT Investments PLC … 上市公司 NaN
16 BITF:NASDAQ Bitfarms Limited … 上市公司 NaN
17 CLSK:NASDAQ CleanSpark Inc … 上市公司 NaN
18 DMGGF:OTCMKTS DMG Blockchain Solutions Inc. … 上市公司 NaN
19 BTBT:NASDAQ Bit Digital, Inc. … 上市公司 NaN
20 CIFR:NASDAQ Cipher Mining … 上市公司 NaN
21 NPPTF:OTCMKTS Neptune Digital Assets … 上市公司 NaN
22 ABT:DUS Advanced Bitcoin Technologies AG … 上市公司 NaN
23 LQWDF:OTC LQwD FinTech Corp … 上市公司 NaN
24 BBKCF:OTCMKTS BIGG Digital Assets Inc. … 上市公司 NaN
25 BNXAF:OTCMKTS Banxa Holdings Inc … 上市公司 NaN
26 HSSHF:OTCMKTS Digihost Technology Inc. … 上市公司 NaN
27 BTCS:OTCMKTS BTCS Inc. … 上市公司 NaN
28 SATO:TSXV Canada Computational Unlimited Corp. … 上市公司 NaN
29 FRMO:OTCMKTS FRMO Corp. … 上市公司 NaN
30 ARBKF:OTCMKTS Argo Blockchain PLC … 上市公司 NaN
31 MILE:NASDAQ Metromile … 上市公司 NaN
32 MOGO:Nasdaq MOGO Financing … 上市公司 NaN
33 None USA … 政府机构 NaN
34 None Ukraine (govt) … 政府机构 NaN
35 None Mt. Gox … 私营企业 NaN
36 None Block.one … 私营企业 NaN
37 None Tether Holdings LTD … 私营企业 NaN
38 None The Tezos Foundation … 私营企业 NaN
39 None Stone Ridge Holdings Group … 私营企业 NaN
40 None Massachusetts Mutual … 私营企业 NaN
41 None Lisk Foundation … 私营企业 NaN
42 None Seetee AS … 私营企业 NaN
43 GBTC:OTCMKTS Grayscale Bitcoin Trust … ETF NaN
44 XBTE:NADQ CoinShares / XBT Provider … ETF NaN
45 BTCC:TSX Purpose Bitcoin ETF … ETF NaN
46 BTCQ:TSX 3iQ CoinShares Bitcoin ETF … ETF NaN
47 BTCE:XETRA ETC Group Bitcoin ETP … ETF NaN
48 QBTCBV:TSX 3iQ The Bitcoin Fund … ETF NaN
49 BITW:OTCMKTS Bitwise 10 Crypto Index Fund … ETF NaN
50 OTCQX:OTCMKTS Grayscale Digital Large Cap Fund … ETF NaN
51 ABTC:SWX 21Shares AG … ETF NaN
52 VBTC:XETRA VanEck Vectors Bitcoin ETN … ETF NaN
53 BTCX:TSX CI Galaxy Bitcoin Fund … ETF NaN
54 OBTC:OTC Osprey Bitcoin Trust … ETF NaN
55 BTC0E.AS:OTC Valour Bitcoin Zero ETP … ETF NaN
56 EBIT:TSX Evolve Bitcoin ETF … ETF NaN
57 BITC:TSX Ninepoint Bitcoin Trust … ETF NaN
58 FTBC:TSE Fidelity Advantage Bitcoin ETF … ETF NaN
[59 rows x 14 columns]
源码实现要点
阅读 akshare/crypto/crypto_hold.py 可以发现几个值得注意的实现细节:
- 16 个原始字段投影为 14 列:服务端返回的每条记录包含 16 个字段,其中两个字段以占位符 _ 命名且在重命名后被显式剔除,最终保留文档列出的 14 列,输出列顺序也经过二次排序固定;
- 数值化与日期规范化:市值、比特币占市值比重、持仓成本、持仓占比、持仓量、当日持仓市值、倍数共 7 列均通过 pd.to_numeric(errors="coerce") 转为数值类型;「查询日期」列经 pd.to_datetime(…).dt.date 统一为标准日期格式;
- 分类字段的价值:数据示例中的「分类」列包含上市公司、政府机构、私营企业、ETF 四类主体,且政府机构/私营企业主体(如 USA、Ukraine (govt)、Mt. Gox、Tether)的「代码」列为 None——做统计分析时可直接按「分类」分组聚合,观察不同类型持仓主体的持仓量变化;
- 注意单位:文档与源码均提示「比特币占市值比重」「持仓占比」两列单位为百分号(%),计算时注意是否需要除以 100。
该接口适合追踪机构级 BTC 持仓动向,例如筛选「分类 == 上市公司」后按「持仓量」排序,即可快速定位持仓最大的上市公司。
crypto_bitcoin_cme:CME 比特币成交量报告
接口说明
crypto_bitcoin_cme 用于获取芝加哥商业交易所(CME)的比特币成交量报告,数据按指定交易日返回,覆盖期货、看涨期权、期权、看跌期权以及微型比特币期货等品种合约的成交与持仓统计。这是三只接口中唯一需要输入参数的接口。
输入参数
| date | str | 指定交易日,格式如 date="20230830",即 8 位数字的 YYYYMMDD |
输出参数
| 商品 | object | 标的商品,如「比特币」「微型比特币」 |
| 类型 | object | 合约类型:期货、期权、看涨、看跌 |
| 电子交易合约 | int64 | 电子交易平台成交合约数 |
| 场内成交合约 | float64 | 场内(公开喊价)成交合约数 |
| 场外成交合约 | int64 | 场外成交合约数 |
| 成交量 | int64 | 当日总成交量 |
| 未平仓合约 | int64 | 期末未平仓合约数 |
| 持仓变化 | int64 | 未平仓合约较前一日的增减 |
接口示例
import akshare as ak
crypto_bitcoin_cme_df = ak.crypto_bitcoin_cme(date="20230830")
print(crypto_bitcoin_cme_df)
数据示例
商品 类型 电子交易合约 场内成交合约 场外成交合约 成交量 未平仓合约 持仓变化
0 比特币 期货 7895 NaN 366 8261 15364 -808
1 比特币 看涨 38 NaN 0 38 3260 11
2 比特币 期权 113 NaN 0 113 5871 -27
3 比特币 看跌 75 NaN 0 75 2611 -38
4 微型比特币 期货 7818 NaN 0 7818 8353 -425
源码实现要点
查看 akshare/crypto/crypto_bitcoin_cme.py 可知该接口的核心逻辑:
- 日期参数格式化:传入的 date="20230830" 会被切片重组为 "2023-08-30"("-".join([date[:4], date[4:6], date[6:]]))后作为请求参数提交,因此务必使用 8 位无分隔符的 YYYYMMDD 格式,否则切片会得到错误日期;
- 动态列名:与另外两只接口不同,这里没有硬编码列名,而是从服务端响应的 keys 字段动态生成 DataFrame 列名,再对 6 个数值列统一做 pd.to_numeric(errors="coerce") 转换;
- 请求头完整性:源码携带了完整的浏览器级请求头(User-Agent、Referer、Sec-Fetch 系列等)与 x-app-id、x-version 业务标识,说明该接口对请求环境较为敏感,AKShare 已封装好这些细节,调用方无需自行构造;
- 数据解读:「未平仓合约」反映存量持仓,「持仓变化」为负表示该交易日减仓,例如数据示例中比特币期货持仓变化为 -808;「场内成交合约」多数情况下为 NaN 或 0,反映 CME 比特币合约以电子交易为主导的现状。
若需要回溯历史交易日,可循环调用该接口并拼接结果,但需注意金十数据中心对历史数据保留范围有限,超出保留期限的日期可能返回空结果。
安装与快速上手
以上三只接口均属于 AKShare 的标准公开接口,只需安装项目本体即可使用:
pip install akshare
安装完成后在 Python 中导入并调用:
import akshare as ak
# 1. 加密货币实时行情
spot_df = ak.crypto_js_spot()
# 2. 比特币持仓报告
hold_df = ak.crypto_bitcoin_hold_report()
# 3. CME 比特币成交量报告(指定交易日)
cme_df = ak.crypto_bitcoin_cme(date="20230830")
三个接口的返回值均为 pandas.DataFrame,可以直接接入 df.to_csv()、df.to_excel() 做落盘存储,或配合 df.groupby("分类")、df.sort_values("持仓量") 等进行加工分析。
注意事项与延伸阅读
【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcode.com/gh_mirrors/aks/akshare
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

