关于本页
资金费率是永续合约多空双方之间往来支付的费率,结算周期由各交易所自行设定。本站以约每分钟一次的频率,从各交易所自有的公开 API 读取该费率与相应价格。同样的观测值也可通过下列地址以 JSON 取用。
无需密钥、无需注册,也不必安装任何东西。一行即可看到全部内容。
curl -s https://www.carryroom.com/api/v1/latest每个响应都会说明自身属于哪个版本、生成于何时、以及不包含什么。尚未建成的内容不会用空列表来充数。
当前返回什么
| 数据种类 | 响应中的名称 | 本版本的处理 |
|---|---|---|
| 各交易所、各合约的最新资金费率与价格 | latest_rates | 已开放 |
| 跨交易所组合的排序,以及 30 天内资金费差额的累计结果 | pair_ranking | 已开放 |
| 该累计结果逐日形成的过程 | cumulative_curve | 尚未返回 |
| 历史资金费率(过去的费率本身,时间序列) | rate_history | 尚未返回 |
| 成交额与持仓量(尚未平仓的规模) | volume | 尚未返回 |
| 盘口的厚度,以及实际成交所需的费用 | depth_profile | 尚未返回 |
资金费率的历史将在下一版本提供。在此之前,历史地址只会返回一句简短说明,而不会返回空列表——空列表无法与“今天没有符合条件的结果”区分开,读到它的程序会把这当作事实带走。
标记为“已开放”表示本版本愿意返回该类数据;其地址是否已经就绪则是另一回事,由下方列表说明。
接口地址
| 地址 | 当前是否可用 |
|---|---|
/api/v1 | 是 |
/api/v1/latest | 是 |
/api/v1/venues | 是 |
/api/v1/carry | 是 |
/api/v1/history | 尚未提供 |
本列表中的任何地址都不接受密钥(本版本没有密钥这一机制)。标记为“尚未提供”的地址会返回一段简短说明,并指出可改用哪个接口;它不会返回空列表。
先取回一次列表,再在本地筛选。查看某一家交易所的费率及各自的结算周期:
curl -s https://www.carryroom.com/api/v1/latest \
| jq '[.rows[] | select(.venue == "hyperliquid")
| {symbol, funding_rate_8h, funding_interval_h}]'symbol 是各交易所自己的写法,因此 1000BONK 与 BONK 其实是同一个资产的两种写法。每一行还另带一个统一化后的资产名称,跨交易所对齐时应当用它来连接。不带查询参数时返回的是与页面相同的范围;要看其余的,请如 ?venues=dydx,btcc 这样点名。无法识别的名称会原样写回响应,而不会悄悄放开全部结果。
从智能体调用
智能体所需的说明从这一个文件开始,由本站自行分发,无需经过任何外部仓库。其格式就是 Claude Code、Codex(ChatGPT)等所读取的通用技能文件:开头是文件的自我声明,之后是使用上的约定。
mkdir -p ~/.claude/skills/carryroom
curl -fsSL https://www.carryroom.com/skills/carryroom/SKILL.md \
-o ~/.claude/skills/carryroom/SKILL.md上面的位置是 Claude Code 的。其他读取方会看别的目录。
| 读取方 | 仅自己使用 | 仅某个项目 |
|---|---|---|
| Claude Code | ~/.claude/skills | .claude/skills |
| Codex CLI(ChatGPT) | ~/.agents/skills | .agents/skills |
| Gemini CLI | ~/.gemini/skills | .gemini/skills |
Codex CLI 与 Gemini CLI 也都会读取 ~/.agents/skills,因此放在这一处即可同时供两者使用。放好之后请重新开一个会话。
各智能体存放技能文件的位置会随版本变化。如果它找不到该文件,请直接把地址交给它。上面第二个地址是清单:它会列出本站正在分发的每个文件、各自的大小,以及由内容算出的版本号,因此智能体可以自行判断手中的副本是否仍然最新。
本版本没有提供 MCP 服务器。这些地址是普通的 HTTP 且无需密钥,因此既可由具备抓取能力的 MCP 服务器读取,也可由智能体自带的抓取工具直接读取。
返回的是观测值,不是建议。请要求智能体如实转述字段、数值与单位,并一并说明响应中自称未包含的内容。
单位与时间
每个响应都带有 meta.units,说明该响应中每个数字的单位——把单位写在外部文档里,它会与数据各自变旧。以 _ms 结尾的字段为 UTC 纪元毫秒,以 _utc 结尾的字段为 RFC 3339。
最容易被误读的四个字段如下。
funding_rate_8h— 相对于持仓金额的每 8 小时比例。0.0001 是 0.01%,不是 1%。funding_rate_annualised_pct— 以百分比表示的年化值,为单利(8 小时数值 × 3 × 365),不做复利。funding_interval_h— 交易所自己公布的结算间隔小时数,原样保留。mark_price_scaled— 按合约自身单位表示的价格。除以 contract_scale 即为一枚的价格。
结算周期如何对齐
各交易所的资金费结算周期并不相同:有的每小时一次,有的每四小时一次,有的每八小时一次。因此,某个交易所公布的费率与另一个交易所公布的费率,本身并不是同一种度量;不加说明就并排比较,是这类数据最常见的误用。
这一差异有多大:某交易所每小时结算一次、公布 0.00002,折成 8 小时就是 0.00016;而每八小时结算一次的交易所公布的 0.00002,折成 8 小时仍是 0.00002。相差八倍,而且印出来数字更大的那一边,实际收到的反而更少。
因此两个数字都会返回,并且彼此分开。funding_rate_8h 是已换算为每 8 小时口径的数值,交易所之间可比的正是这个值——再换算一次,就是把同一个错误犯两遍。funding_interval_h 则是交易所自身的周期,未作任何改动,可据以还原或复核换算。
结算周期属于合约,而不属于交易所:同一家交易所可以同时存在每小时、每四小时与每八小时结算的合约,而同一个合约的周期也可能第二天就变。与其在这里写一个会悄悄过期的数字,不如给出现在就能自己清点的方法。
curl -s https://www.carryroom.com/api/v1/latest \
| jq -r '.rows[].funding_interval_h' | sort -n | uniq -c年化数值为单利,而且是一个假设:把此刻的费率延伸到一年,既不是预测,也不是已实现的收益。具体算法请见数值的读法页面。
各交易所之间容易读错的地方
以下三点无论怎样统一都会残留。响应不会择一约定而隐去其余,而是把它们保留在可见之处。
- 有些交易所对多空两侧独立定价。这类行的 carry_model 为 directional,完全没有 funding_rate_8h,取而代之的是 funding_return_8h_short 与 funding_return_8h_long。不能把其中一侧的正负号反过来当作另一侧:两侧有可能同时为负;把它们合成一个数字,等于凭空造出一笔并不存在的交易。
- 一张合约未必等于一枚。contract_scale 表示一张合约代表多少枚,这一点已写进交易所自身的合约名中——1000PEPE 即为 1000。跨交易所比较价格前请先除以它。费率是相对于持仓金额的比例,因此该倍率不会影响费率。
- 列表中的合约并非全部是永续。若 expires_at_ms 不为空,则该合约有到期日;有到期日的合约根本没有资金费机制,其 funding_rate_8h 恰好为 0.0——这不是行情清淡,而是机制不存在。按费率排序时它们会排在最后。这类合约的收益体现在同一交易所的到期合约价格与永续价格之差上。
覆盖到什么程度
本站在页面上列出的交易所共 48 家。资金费率与价格即从这些交易所读取,频率约为每分钟一次。
其中有多少家真正出现在某次响应里,是另一个数字;这个数字不是宣称的,而是由响应自行清点得出:数量在 meta.coverage 中,交易所列表地址则逐家列出,并注明各家是否出现在当前观测里。
curl -s https://www.carryroom.com/api/v1/venues覆盖情况无法用整站的一个数字概括,它会随数据种类而不同。本版本返回的是资金费率与价格,不返回盘口厚度、成交额与费率历史——因此本页不给出这些数据的任何数量,因为这里并未对它们做过清点。
调用量
请使用可一次返回全部结果的列表接口,不要逐个合约调用。衡量的不只是次数,还有请求的形态:逐个抓取大量不同合约看起来像是全量抓取,而反复查看少数几个则不会。
若被拒绝,会返回 429、Retry-After,以及可改用哪个接口的说明——无需有人去读文档,程序自己就能恢复。
费用
上述内容的使用不收取任何费用。本站没有可供购买的商品,不标示价格,也不收取款项。
常见问题
需要密钥或注册账号吗?
不需要。既没有密钥,也没有需要注册的账号。
每个响应都会在自身内容中说明这一点:plan 字段为 free,key_required 字段为 false,因此程序可以自行判断当前看到的是否就是全部。
如何从 Claude Code、Codex 或 Gemini CLI 使用?
下载一个文件,把它放到你的智能体查找技能文件的目录里即可。
该文件由本站自行分发,无需经过任何外部仓库,全程也不需要密钥。它采用通用的技能文件格式,因此同一个文件对各家都适用。放好之后请重新开一个会话。
- Claude Code:~/.claude/skills(仅某个项目则用 .claude/skills)
- Codex CLI 与 Gemini CLI:放在 ~/.agents/skills 一处即可同时供两者使用
- 其他读取方:直接把该文件的地址交给它读取
有 MCP 服务器吗?
本版本没有。
这些地址是普通的 HTTP 且不接受密钥,因此既可由具备抓取能力的 MCP 服务器读取,也可由智能体自带的抓取工具直接读取,事先无需安装或授权。
可以取得历史资金费率吗?
暂时还不行。资金费率的历史将在下一版本提供。
目前返回的是各交易所、各合约的最新费率与价格。在历史数据就绪之前,对应地址只会返回一句简短说明,程序不会把空列表当成答案读走。
可以多频繁地调用?
请用可一次返回全部结果的列表接口取数;被拒绝的是逐个合约调用的方式。
衡量的不只是次数,还有请求的形态:逐个抓取大量不同合约看起来像是全量抓取,而反复查看少数几个则不会。被拒绝时会返回 429、Retry-After 头,以及可改用的地址。
各个数字的单位写在哪里?
就写在响应自身的 meta.units 中。
时间可由字段名判断:以 _ms 结尾的是 UTC 纪元毫秒,以 _utc 结尾的是 RFC 3339。价格按合约自身的单位给出,并同时给出倍率,因为一张合约可能代表一千枚。
我要的东西没有返回,是坏了吗?
不是。尚未建成的地址会明确说明“尚未提供”,而不是返回空列表。
空列表无法与“今天没有符合条件的结果”区分开,读到它的程序会把这当作事实带走。因此这些地址会返回 501、not_yet 的状态、一句说明理由的话,以及确实可用的地址。
各交易所的结算周期不同,这些数字是如何对齐的?
分为两个字段:换算为每 8 小时口径的费率,以及交易所自己公布、原样保留的结算周期。
交易所之间可比的正是换算之后的数值,而换算已经完成——再按周期乘或除一次,就是把同一个错误犯两遍。结算周期字段的用途,是让你知道在持有期间会发生几次结算,这是另一个问题。
- 每小时结算的交易所公布的 0.00002,折成 8 小时是 0.00016。
- 每八小时结算的交易所公布的 0.00002,折成 8 小时仍是 0.00002。
- 结算周期属于合约而非交易所:同一家交易所可以同时存在每小时、每四小时与每八小时结算的合约。
覆盖了多少家交易所?
资金费率与价格取自本站在页面上列出的交易所;数量不是宣称的,而是由响应自行清点得出。
整站无法用一个数字概括,因为覆盖情况随数据种类而不同。本版本返回的是资金费率与价格,不返回盘口厚度、成交额与费率历史,因此也不给出这些数据的数量。
- 交易所列表,以及各家是否出现在当前观测里:/api/v1/venues