ArbTide

方法论:ArbTide 如何采集和计算数据

ArbTide 每个数字背后的数据来源、更新频率、资金费率标准化方法、套利净价差公式、质量筛选规则和已知局限性。

更新于

ArbTide 在自己的服务器上直接从各交易所的 API 采集资金费率以及买价和卖价(Bid / Ask),把它们标准化为可以相互比较的单位,并计算扣除吃单手续费(Taker Fee)之后的套利价差。本页面记录了其中的每一个步骤,让每一个数字都可以被核查和引用。

数据来源

交易所 类型 资金费率 现货价格 永续合约价格
Binance CEX ✓ ✓ ✓
Bybit CEX ✓ ✓ ✓
OKX CEX ✓ ✓ ✓
Bitget CEX ✓ ✓ ✓
Gate CEX ✓ ✓ ✓
KuCoin CEX ✓ ✓ ✓
MEXC CEX ✓ ✓ ✓
BingX CEX ✓ ✓ ✓
HTX CEX ✓ ✓ ✓
Kraken CEX ✓ ✓ ✓
Coinbase International CEX ✓ ✓ ✓
WhiteBIT CEX ✓ – ✓
BTSE CEX ✓ ✓ ✓
XT.COM CEX ✓ ✓ ✓
LBank CEX ✓ – –
WEEX CEX ✓ ✓ ✓
Toobit CEX ✓ ✓ –
Backpack CEX ✓ – –
BigONE CEX – ✓ –
Bitfinex CEX – ✓ ✓
Bitstamp CEX – ✓ –
BtcTurk CEX – ✓ –
CEX.IO CEX – ✓ –
Crypto.com CEX – ✓ ✓
Deepcoin CEX – ✓ ✓
DigiFinex CEX – ✓ ✓
HitBTC CEX – ✓ ✓
Revolut X CEX – ✓ –
Hyperliquid 永续合约 DEX ✓ – ✓
Aster 永续合约 DEX ✓ ✓ ✓
Lighter 永续合约 DEX ✓ – –
Paradex 永续合约 DEX ✓ – ✓
dYdX 永续合约 DEX ✓ – –
Extended 永续合约 DEX ✓ – ✓
Pacifica 永续合约 DEX ✓ – –
WOOFi Pro 永续合约 DEX ✓ – –

与交易所的连接使用开源的 ccxt 库。我们通过一次批量请求获取一家交易所的全部市场,这样既能保持数据的一致性,又不会超出调用频率限制(Rate Limit)。

更新频率

数据 拉取间隔 超过多久显示为过期
资金费率 30 秒 2 分钟
买价和卖价 10 秒 45 秒
资金费率历史 每 5 分钟存储一次 –

每次请求页面时,服务器都会用缓存时间最多 5 秒的数据来渲染页面。已经打开的页面会在浏览器中每 15 到 30 秒自动刷新一次。

资金费率标准化

各家交易所的资金费用结算周期各不相同:大多数 CEX 合约每 8 小时结算一次,有些每 4 小时或每 1 小时结算一次,而 Hyperliquid 和 dYdX 等永续合约 DEX 每小时结算一次。每一个费率都会被换算成相同的单位:

  • 每小时费率 = 资金费率 ÷ 结算周期小时数
  • APR = 每小时费率 × 8,760

当一个币种在同一家交易所上有多种计价货币的交易对时,我们优先使用 USDT,其次是 USDC,然后是 USD。只有处于活跃状态的线性(以稳定币作为保证金的 U 本位)永续合约才会被纳入统计。

平均资金费率

每个币种会显示三个跨交易所的汇总数字:

  • 平均 APR 按每个市场以 USD 计价的永续合约 24h 交易量进行加权。一个流动性很差、费率又很极端的市场,对它的影响只会与其交易量相称。如果某个市场没有报告交易量,则使用简单平均值。
  • APR 中位数是各家交易所数值的中间值,完全不受极端值的影响。
  • 8h 等效费率是把平均 APR 重新换算回 8 小时的资金费率(APR ÷ 8,760 × 8),方便与大多数交易所所报的费率进行比较。

表格中始终会在 APR 旁边显示每家交易所的原始资金费率及其自身的结算周期,因此每一个数字都可以拿去与交易所核对。

资金费率套利价差

对于每个币种,价差等于资金费率最高的交易所的 APR 减去资金费率最低的交易所的 APR。它所对应的策略是:在资金费率最低的地方做多,在资金费率最高的地方做空。这个价差是总价差:交易手续费、不同平台之间的价格基差以及资金费率的变化都没有被扣除。

期现套利

对于每个币种,我们把价格最便宜的现货市场与每一个支付正资金费率的永续合约进行配对,并保留 30 天预估收益最好的那一组:

  • 基差 = (永续合约买价 − 现货卖价)÷ 现货卖价
  • 手续费 = 每条腿两笔吃单手续费(开仓和平仓)
  • 预估收益 = 资金费率 APR × 持有天数 ÷ 365 + 基差 − 手续费
  • 盈亏平衡 = (手续费 − 基差)÷ 资金费率 APR × 365 天

这个预估假设资金费率保持在当前水平,并且基差在离场时收敛。如果现货和永续合约位于不同的交易所,这条路线就需要转移币,或者在两边都持有库存。

反向期现套利的借币成本

反向期现套利卖出的是你借来的现货。只有提供现货杠杆借币的交易所才会被用于这条腿,被标记为不可借的币种会被跳过。我们每 10 分钟从 Binance、OKX 和 Bybit 读取一次标准(非 VIP)借币利率,并把它换算成 APR。它会从资金费率 APR 中扣除:预估收益 = (资金费率 APR − 借币 APR)× 持有天数 ÷ 365 + 基差 − 手续费。如果现货交易所没有公布借币利率,我们会使用该币种已公布利率的中位数作为估算值,并标注为“估算”;如果没有任何交易所公布借币利率,借币成本会显示为未知,并且不会被扣除。

价格套利净价差

对于每个币种和每种市场类型(现货或永续合约),我们会测试每一对交易所,并保留价差最大的那一组:

总价差 = (卖出交易所的买一价 − 买入交易所的卖一价)÷ 卖一价

净价差 = 总价差 − 吃单手续费

  • 现货:每家交易所各收取一笔吃单手续费(先买入,再卖出)。
  • 永续合约:每家交易所各收取两笔吃单手续费(开仓和平仓),因为仓位会在价格收敛时平掉。

吃单手续费采用每家交易所在该市场的默认(非 VIP)费率。已登录的用户可以在“账户 → 交易手续费”中按交易所填写自己的费率,之后他们看到的每一个净价差、最大利润、期现套利预估和提醒都会使用这些费率。

最大规模和最大利润来自订单簿。我们每 20 秒为价差最大的 60 条路线读取两边订单簿各 20 档深度,并把它们放在一起逐档推进:吃掉卖单、卖给买单,直到下一档在扣除手续费后不再有利润为止。最大规模就是利润达到峰值的位置,最大利润就是该位置的利润,对于现货路线还要再减去转账手续费。+ 表示在价差收敛之前,我们读取的订单簿深度就已经用完了,因此可能还能容纳更大的规模。对于不在这组之内的路线,最大规模会退而使用卖一价和买一价上挂单数量中较小的那个(“· 盘口”)。币种页面还会显示在 $1,000、$10,000 和 $50,000 规模下扣除手续费后的净价差。

转账成本(现货路线)

一条现货路线只有在币能够从买入交易所转出、并到达卖出交易所的情况下才可行。我们每 30 分钟读取一次每家交易所公布的网络信息:提现手续费,以及提现和充值是否开放。对于每条路线,我们会选出在买入交易所开放提现、同时在卖出交易所开放充值的最便宜的网络。不同交易所之间的网络名称会进行匹配(例如 ERC-20、ETH 和 Ethereum 指的是同一条链)。

  • 转账显示所选的网络及其按买入价换算成 USD 的手续费。
  • 从 $X 起是手续费恰好等于净价差时的交易规模。低于这个规模,这条路线就会亏钱。
  • 提现关闭、充值关闭或无共同网络表示这条路线目前无法完成。
  • 未确认表示某家交易所公布了手续费,但没有公布该网络是否开放。
  • 未知表示某家交易所在没有账户密钥的情况下不公布这些数据。除非我们拥有它们的只读密钥,否则 Binance、Bybit、OKX、MEXC 和 BingX 都属于这一类。

在转移资金之前,请务必在两家交易所上确认网络和地址。永续合约路线和期现套利不需要转账,因为两条腿都以保证金结算。

质量筛选

只有同时满足以下所有条件,一个报价才会被使用:

  1. 该市场处于活跃状态,并以 USDT、USDC 或 USD 计价。
  2. 24h 交易量至少为 $100,000(套利)——永续合约交易量低于 $1M 的币种页面不会被搜索引擎收录。
  3. 交易所自身的报价时间戳距今不到 60 秒。
  4. 订单簿价差(卖价 − 买价)低于 2%。
  5. 对于价格套利路线,两个报价的采集时间相差不超过 15 秒。
  6. 该路线的总价差低于 20%。更大的价差几乎总是意味着两种不同的代币使用了同一个代码。

已知局限性

  • 转账成本:只有部分交易所会公布提现手续费,而且只是按每笔提现公布,所以两次读取之间 Gas 费的飙升无法被反映出来。转账时间没有被纳入模型,所以资金在途期间价格可能会发生变动。
  • 深度:订单簿在两次读取之间会发生变化,而且我们只读取 20 档,所以非常大的订单可能会遇到比显示价格更差的成交价。
  • 时间:价格来自 REST 轮询,所以两条腿的报价最多可能相差 15 秒。有些交易所(Bybit、Gate、BigONE、Bitfinex、CEX.IO、Hyperliquid、Aster 永续合约)不公布报价时间戳,因此无法识别它们的延迟数据。
  • 计价货币:USDT、USDC 和 USD 市场会被直接比较,所以稳定币之间的微小价格差异也会被计入价差。
  • Lighter 没有在 API 中说明它的资金费率结算周期;它的费率会被视为 8 小时等效费率。

准确性检查

我们每 5 分钟把 ArbTide 上显示的价格与每家交易所的实时订单簿进行一次比较,并把结果发布在数据准确性页面上:包括按交易所统计的价差中位数和第 95 百分位数,以及检查时我们的报价已经过去了多久。

纠错

发现某个数字看起来不对?每个页面都会链接到它所使用的交易所市场,而且只要在 URL 后面加上 .md,每个页面都可以以纯 Markdown 格式查看。

常见问题

ArbTide 的数据来自哪里?
直接来自 36 家交易所的公开 API:Binance、Bybit、OKX、Bitget、Gate、KuCoin、MEXC、BingX、HTX、Kraken、Coinbase International、WhiteBIT、BTSE、XT.COM、LBank、WEEX、Toobit、Backpack、BigONE、Bitfinex、Bitstamp、BtcTurk、CEX.IO、Crypto.com、Deepcoin、DigiFinex、HitBTC、Revolut X、Hyperliquid、Aster、Lighter、Paradex、dYdX、Extended、Pacifica 和 WOOFi Pro。数据在我们自己的服务器上采集,从不在你的浏览器中采集。
数据多久更新一次?
每家交易所的资金费率每 30 秒拉取一次,买价和卖价每 10 秒拉取一次。页面每 15 到 60 秒刷新一次。
如何根据资金费率计算 APR?
APR = (资金费率 ÷ 结算周期小时数)× 8,760。这样,8 小时、4 小时和 1 小时结算的资金费率就可以直接比较了。
平均资金费率 APR 是如何计算的?
它按每家交易所永续合约的 24h 交易量进行加权,这样费率极端的小市场就不会扭曲结果。页面上还会同时显示 APR 中位数,以及每家交易所的原始费率和结算周期。
净价差包含了所有成本吗?
它包含吃单手续费。对于现货路线,页面会在旁边显示最便宜的可用网络的提现手续费,并从最大利润中扣除。最大规模和最大利润是根据两边的订单簿计算的,所以已经包含了滑点。永续合约仓位持仓期间支付的资金费用不包含在内。