Hyperliquid 资金费率历史 API 完全指南
资金费率(Funding Rate)是永续合约市场的核心定价机制,直接决定多空双方的持仓成本。对于量化策略研究员、套利交易者和风险管理团队而言,能够快速、批量地获取历史资金费率数据是一项基础能力。Hyperliquid 提供了开放的信息查询接口,无需 API Key 即可访问大量公开市场数据。本文将系统介绍如何调用 Hyperliquid 官方 API 获取资金费率历史,并给出 Python 示例代码,帮助你快速上手。
为什么资金费率历史数据如此重要
资金费率历史数据有以下几种典型用途:
识别长期偏向多头或空头的市场结构,辅助趋势判断
计算资金费率套利(Funding Arbitrage)的历史期望收益
构建资金费率因子,用于量化选币或仓位管理模型
回测现货-永续期货对冲策略在不同费率环境下的表现
Hyperliquid 的架构 基于链上订单簿,所有交易和结算数据均可在链上验证,这为历史数据提供了较高的可信度。
Hyperliquid API 基础架构
Hyperliquid 提供两类接口:
Info Endpoint(只读):用于查询市场数据、账户状态、历史记录,无需签名
Exchange Endpoint:用于下单、撤单等写操作,需要钱包签名
资金费率历史查询属于只读操作,使用 Info Endpoint,地址为:
POST https://api.hyperliquid.xyz/info
所有请求均为 POST,Body 为 JSON,Content-Type 为 application/json。
查询资金费率历史的请求结构
获取指定币种的资金费率历史,使用 fundingHistory 类型:
{
"type": "fundingHistory",
"coin": "BTC",
"startTime": 1700000000000,
"endTime": 1700086400000
}
字段说明:
时间戳必须为毫秒级 Unix 时间戳。若不传 endTime,接口将返回从 startTime 至今的数据(受限于单次返回条数上限)。
响应数据格式
接口返回一个数组,每条记录包含:
[
{
"coin": "BTC",
"fundingRate": "0.0001",
"premium": "0.00012",
"time": 1700000000000
},
...
]
Hyperliquid 的资金费率每小时结算一次,具体机制可参考 官方文档的 Perpetuals 章节。
Python 完整示例
以下代码展示如何拉取 BTC 最近 30 天的资金费率历史并计算年化:
import requests
import time
import pandas as pd
ENDPOINT = "https://api.hyperliquid.xyz/info"
def get_funding_history(coin: str, days: int = 30) -> pd.DataFrame:
end_ms = int(time.time() * 1000)
start_ms = end_ms - days * 24 * 3600 * 1000
payload = {
"type": "fundingHistory",
"coin": coin,
"startTime": start_ms,
"endTime": end_ms,
}
resp = requests.post(ENDPOINT, json=payload, timeout=15)
resp.raise_for_status()
data = resp.json()
df = pd.DataFrame(data)
df["time"] = pd.to_datetime(df["time"], unit="ms", utc=True)
df["fundingRate"] = df["fundingRate"].astype(float)
df["annualized"] = df["fundingRate"] * 24 * 365 # 每小时结算
return df.sort_values("time")
if __name__ == "__main__":
df = get_funding_history("BTC", days=30)
print(df.tail(10).to_string(index=False))
print(f"\n30日平均年化资金费率: {df['annualized'].mean():.2%}")
注意:上述年化计算仅为简单线性外推,实际收益受复利、滑点、借币成本等因素影响。
批量拉取多个币种
若需要同时获取多个币种的资金费率,可以并发调用:
import concurrent.futures
COINS = ["BTC", "ETH", "SOL", "ARB", "DOGE"]
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
futures = {executor.submit(get_funding_history, c, 7): c for c in COINS}
results = {}
for future in concurrent.futures.as_completed(futures):
coin = futures[future]
results[coin] = future.result()
合并为一个 DataFrame
combined = pd.concat(results.values(), ignore_index=True)
pivot = combined.pivot_table(
index="time", columns="coin", values="fundingRate", aggfunc="mean"
)
数据存储建议
对于高频使用场景,建议将历史数据缓存到本地数据库(如 SQLite 或 TimescaleDB),避免反复请求 API:
import sqlite3
conn = sqlite3.connect("funding_rates.db")
df.to_sql("funding_history", conn, if_exists="append", index=False)
conn.close()
Hyperliquid 官方 GitHub 提供了官方 Python SDK,封装了认证和签名流程,适合需要同时进行交易操作的开发者使用。
在 OneKey 钱包中管理 Hyperliquid 资产
数据分析只是第一步,真正的资金管理需要安全可靠的钱包工具。OneKey 硬件钱包 支持连接 Hyperliquid,私钥始终保存在离线设备中,有效防止 API Key 泄露或钓鱼攻击导致的资产损失。
当你通过数据分析发现套利机会,需要在 Hyperliquid 上执行资金费率套利或现货对冲时,可以通过 OneKey Perps 便捷进入,享受硬件级私钥保护与流畅的永续合约交互体验。
立即下载 OneKey,开始你的量化数据驱动交易之旅。
常见问题
Q1:Hyperliquid 资金费率 API 需要注册账号吗?
答:不需要。Info Endpoint 完全公开,无需 API Key 或账号,任何人均可直接调用获取历史资金费率数据。
Q2:单次请求最多能获取多少条记录?
答:Hyperliquid 官方文档未明确说明单次上限,实际测试中长时间范围请求可能被截断。建议分段查询(如每次 7 天),并在代码中处理翻页逻辑。
Q3:资金费率是正数还是负数,哪种情况更常见?
答:资金费率为正时,多头向空头支付;为负时,空头向多头支付。在牛市或高风险偏好市场中,正资金费率更为常见,反映市场整体多头溢价。
Q4:如何用资金费率历史评估套利机会?
答:可以计算历史资金费率的均值、标准差和百分位,当当前费率显著高于历史均值时(例如超过 1 倍标准差),做空永续同时做多现货的对冲策略理论上具有正期望。注意这并非财务建议。
Q5:API 返回的 premium 字段和 fundingRate 有什么区别?
答:premium 是标记价格与现货指数价格的实时溢价,是计算下一期资金费率的基础输入;fundingRate 是已经结算的当期费率,受 premium 均值和利率基准(Interest Rate)共同决定。
风险提示:本文仅供技术学习参考,不构成任何投资或财务建议。永续合约交易存在高风险,资金费率历史表现不代表未来收益。请充分了解相关风险后审慎决策。



