先把比较条件锁死

不要直接比较三个页面上的“年化”数字。先选同一种保证金币种、同一标的、同一方向口径和同一名义价值,并记录 UTC 时间。本文示例使用 BTC 的 USDT 线性永续合约和单腿 10,000 USDT 名义价值;示例数字只用于演算,不是 2026-08-30 的实时报价。

  • 合约范围:只比较状态为可交易的 USDT 线性永续合约
  • 账户条件:记录自己的 VIP 等级、挂单或吃单费率及任何折扣
  • 时间窗口:资金费率至少取最近 30 天,盘口必须在同一分钟内抓取
  • 仓位口径:所有费用都换算成 USDT,并以同一名义价值计算

每家交易所需要收集四组数据

第一组是合约规格,包括最小数量、数量步长、价格步长、合约面值和资金费率结算间隔。第二组是实际结算的历史资金费率,不用预测费率替代。第三组是计划下单规模对应的盘口深度。第四组是账户实际适用的 maker 与 taker 费率;如果没有登录后的账户费率,就把这一项标为待填,不能用宣传页最低费率代替。

  • Binance:用 exchangeInfo 确认交易状态和数量规则,用 fundingRate 取历史结算,用 depth 模拟成交
  • OKX:用 public/instruments 确认 SWAP 的 ctVal、lotSz 和 tickSz,用 funding-rate-history 与 books 取历史费率和盘口
  • Bybit:用 instruments-info 确认 LinearPerpetual、qtyStep 与 fundingInterval,用 history-fund-rate 和 orderbook 取历史费率与盘口

四个可以直接放进表格的公式

交易手续费 = 名义价值 × 费率。完整开平仓要分别计算开仓与平仓;两所对冲则一共是四次成交。买入滑点 = 名义价值 ×(成交量加权均价 ÷ 最优卖价 − 1);卖出滑点 = 名义价值 ×(1 − 成交量加权均价 ÷ 最优买价)。资金费 = 名义价值 × 实际结算费率;正费率通常由多方支付给空方,负费率方向相反。总成本 = 开平仓手续费 + 开平仓滑点 + 资金费净支出 + 其他明确费用。

  • 30 日平均每日资金费 = 30 日内每次实际资金费现金流之和 ÷ 30
  • 跨所对冲每日净 carry = 收取端每日资金费 − 支付端每日资金费 − 每日化交易与滑点成本
  • 回本天数 = 一次性开平仓成本 ÷ 每日净 carry;每日净 carry 小于或等于零时不存在可用回本期

10,000 USDT 的完整演算示例

假设在 A 所做空、B 所做多,每腿名义价值都是 10,000 USDT。假设四次成交的吃单费率都是 0.05%,手续费为 10,000 × 0.0005 × 4 = 20 USDT。假设四次成交的盘口滑点都是 0.03%,滑点成本为 10,000 × 0.0003 × 4 = 12 USDT。若两腿每 8 小时的实际资金费率差为 0.01%,每次结算净收取 1 USDT,一天三次就是 3 USDT。

一次性成本为 32 USDT,忽略其他变化时的回本时间约为 32 ÷ 3 = 10.7 天。这个结果仍不能直接当成收益预测:只要资金费率差缩小、方向反转、成交量增加导致滑点扩大,或两腿价格出现暂时性偏离,回本时间就会延长甚至消失。

实际执行清单

  • 建仓前 15 分钟:保存三所合约规格、账户费率和最近 30 天资金费率快照
  • 建仓前 5 分钟:连续抓取三次盘口,每次间隔一秒,以最差一次的模拟滑点入表
  • 下单前:检查两腿数量换算后名义价值是否一致,并预留维持保证金缓冲
  • 成交后:用成交回报替换模拟均价,记录实际手续费、成交时间和资金费结算时间
  • 每次结算后:更新累计净 carry;若实际值低于计划值 25%,立即重新计算回本期
  • 平仓前:再次模拟两腿退出滑点,不把未实现资金费收入当作已获得现金流

明确的停止条件

以下任一条件出现,就应该停止把这组价差视为可执行机会:保守估计后的每日净 carry 小于或等于零;回本期长于自己愿意持仓的时间;任一腿的盘口无法在预设滑点内承接目标数量;资金费结算间隔或方向发生变化;保证金缓冲不足以承受两所标记价格短暂分化;所在地区或账户状态不允许使用对应产品。

这套方法仍没有覆盖什么

公开盘口是快照,不保证真实成交;Bybit 官方说明 RPI 订单不会显示在公开订单簿中。OKX 的衍生品盘口数量可能以合约张数表示,必须用 ctVal 换算。资金费率的结算频率可能调整,不能固定假设每天三次。强平、自动减仓、保险基金、跨所转账时间、API 延迟、系统中断与税务也不在上面的简化公式内。

官方资料入口(核验于 2026-08-30)