先把比較條件鎖死
不要直接比較三個頁面上的「年化」數字。先選同一種保證金幣、同一標的、同一方向口徑和同一名目價值,並記錄 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 延遲、系統中斷與稅務也不在上面的簡化公式內。