📖 程式環境還沒裝好?先看 Python 量化交易入門;看到不懂的詞搭配 幣圈術語表 隨查。
一句話結論:資金費率套利=現貨做多+永續做空同一個幣,把方向風險抵銷掉、純收「正資金費率」這份息。原理不難,難在要同時盯很多幣、很多所的費率、還要算清楚扣完手續費划不划算——這正是 Python 該上場的地方。本文用 ccxt 把監控、篩選、對沖開倉一步步寫出來。三鐵則:① API 金鑰一定要關掉「提現」權限+綁 IP ② 這是「低風險」不是「無風險」,費率會翻負、會有基差 ③ 任何下單程式先在模擬盤跑通再碰真錢。
如果你看過 資金費率套利是什麼(原理+年化試算),知道它的邏輯是「用永續空單收正費率、用現貨多單抵銷漲跌」,賺的是一份跟方向無關的息。但手動做有個天花板:你不可能 24 小時盯著四家所、上百個幣的費率,還即時算年化、比較哪個划算。
這篇就是把這件事自動化:用 Python 的 ccxt 套件(一套程式碼打通幣安/OKX/Bybit/Bitget),寫出多所費率監控 → 年化篩選 → 中性對沖開倉的腳本。完全沒寫過程式也沒關係,環境怎麼裝、API 怎麼接,可先看 Python 量化交易入門打底,再回來跑這篇的進階腳本。
為什麼資金費率套利值得「程式化」
三個手動做不到、程式輕鬆做到的點:① 廣度——一次掃四家所上百個永續,找出費率最高的;② 即時——費率每 8 小時(部分所更頻繁)變一次,程式可定時重算;③ 紀律——設好「年化 > X% 才進場」的門檻,避免費率被手續費吃光還傻傻做。我們分四步:抓費率 → 接金鑰(安全!)→ 篩機會 → 對沖開倉。
第一步:用 ccxt 監控多所資金費率(免金鑰)
抓行情不需要 API 金鑰。先 pip install ccxt,這段程式碼會把四家所的 BTC 永續費率抓出來、換算年化、由高到低排序:
import ccxt # pip install ccxt
# 要比較的交易所(USDT 永續合約)
EXCHANGES = ["okx", "binance", "bybit", "bitget"]
SYMBOL = "BTC/USDT:USDT" # ccxt 統一的 USDT 本位永續格式
def scan_funding(symbol=SYMBOL):
rows = []
for ex_id in EXCHANGES:
ex = getattr(ccxt, ex_id)() # 只讀行情,免 API 金鑰
try:
fr = ex.fetch_funding_rate(symbol)
rate = fr["fundingRate"] # 單次費率,例 0.0001 = 0.01%
apr = rate * 3 * 365 # 多數所每 8 小時結算一次→一天 3 次
rows.append((ex_id, rate, apr))
except Exception as e:
print(f"{ex_id}: 取不到 {symbol}({e})")
rows.sort(key=lambda r: r[1], reverse=True)
for ex_id, rate, apr in rows:
print(f"{ex_id:8s} 費率 {rate*100:+.4f}% 年化約 {apr*100:+.1f}%")
return rows
if __name__ == "__main__":
scan_funding()
fetchFundingRate 是 ccxt 的統一方法,回傳的 fundingRate 是「單次費率」。年化怎麼換算?多數交易所每 8 小時結算一次(一天 3 次),所以 年化 ≈ 單次費率 × 3 × 365。⚠️ 結算頻率各所不同(有些是 4 小時甚至 1 小時一次),實作時要對照各所規則調整倍數。
第二步(最重要):API 金鑰安全工程
🔴 下單需要 API 金鑰,而金鑰外洩=有人能動你的錢。在貼任何程式碼前,先把這份安全清單做完:
- 關閉「提現 / 轉帳」權限:建立金鑰時只勾「讀取」+「交易」,絕不要勾提現。這樣就算金鑰外洩,對方也提不走你的幣。
- 綁定 IP 白名單:把金鑰限制只能從你的伺服器/家用固定 IP 呼叫。
- 金鑰放
.env、加進.gitignore:永遠不要把金鑰寫死在程式碼裡、更不要 commit 到 GitHub(爬蟲幾分鐘就掃到)。 - 用子帳號 / 獨立帳號跑機器人:把要套利的資金獨立出來,main 帳戶不放金鑰。
金鑰存成 .env 檔(這個檔案務必加進 .gitignore):
# .env(這個檔案務必加進 .gitignore,絕不要 commit 到 git!)
OKX_API_KEY=你的_api_key
OKX_API_SECRET=你的_secret
OKX_API_PASSWORD=你的_passphrase # OKX 建立金鑰時自己設的密碼短語
再用 python-dotenv 讀進來、建立帶金鑰的交易所連線:
import os, ccxt
from dotenv import load_dotenv # pip install python-dotenv
load_dotenv() # 讀取同目錄的 .env
def okx_client():
return ccxt.okx({
"apiKey": os.environ["OKX_API_KEY"],
"secret": os.environ["OKX_API_SECRET"],
"password": os.environ["OKX_API_PASSWORD"], # OKX 需要 passphrase
"options": {"defaultType": "swap"}, # 預設操作永續合約
})
# 小測試:抓帳戶 USDT 餘額,確認金鑰權限正常
if __name__ == "__main__":
ex = okx_client()
bal = ex.fetch_balance()
print("USDT 可用:", bal["USDT"]["free"])
第三步:篩選「扣完手續費還划算」的機會
不是費率正就能做——網格/套利都要先過手續費這關。設一個年化門檻,只挑真正划算的:
# 篩選「正費率、且年化夠高」的套利標的
THRESHOLD_APR = 0.10 # 只看年化 > 10% 的機會(已扣手續費才划算)
def pick_opportunities(symbols):
picks = []
ex = ccxt.okx()
for sym in symbols:
fr = ex.fetch_funding_rate(sym)
rate = fr["fundingRate"]
apr = rate * 3 * 365
if rate > 0 and apr > THRESHOLD_APR: # 正費率 = 做多付錢給做空
picks.append((sym, rate, apr)) # → 我們要「現貨多 + 永續空」收費率
picks.sort(key=lambda r: r[2], reverse=True)
return picks
正費率代表「做多的人付錢給做空的人」,所以我們要的是現貨做多(抵銷方向)+永續做空(收費率)這組中性部位。
第四步:中性對沖開倉骨架
下面是開倉的骨架。請務必先在模擬盤跑通,它刻意省略了精度/最小下單量/滑點處理,是要你看懂邏輯、再自己補實盤細節:
def open_hedge(ex, symbol_swap="BTC/USDT:USDT", symbol_spot="BTC/USDT", usdt=100):
"""中性對沖骨架:現貨買入 + 永續等量做空,賺正資金費率。
⚠️ 教學骨架:未含下單精度、最小下單量、滑點、保證金檢查。
實盤前務必先在交易所「模擬盤 / sandbox」跑通!"""
price = ex.fetch_ticker(symbol_swap)["last"]
amount = usdt / price
# 1) 現貨買入(做多底倉)—— 用現貨帳戶
ex.create_order(symbol_spot, "market", "buy", amount)
# 2) 永續等量做空(收取正資金費率,抵銷現貨方向風險)
ex.create_order(symbol_swap, "market", "sell", amount,
params={"posSide": "short"}) # OKX 對沖模式需指定持倉方向
print(f"已建立中性對沖:現貨多 {amount:.6f} + 永續空 {amount:.6f}")
⚠️ 真正實盤前至少要補:下單精度與最小下單量(用 ex.load_markets() 拿規則)、保證金與強平距離檢查、兩腿成交不對稱的處理、手續費與滑點估算。先小額、先模擬盤。
把它變成定時任務(但別無人值守自動下單)
監控可以全自動,但下真錢的那一步建議保留人工確認。一個簡單的定時掃描+提醒:
# 每小時掃一次費率,有機會就提醒(先別自動下單,人工確認再開)
import time
while True:
rows = scan_funding()
best = rows[0]
if best[2] > 0.15: # 年化 > 15%
print(f"⚡ 機會:{best[0]} 年化 {best[2]*100:.1f}%")
# 這裡可接 Telegram 推播,不建議無人值守自動下單
time.sleep(3600)
更穩的做法是「程式只負責找機會+推 Telegram,你看到再手動確認下單」。完全無人值守自動下單,對新手風險太高——一次費率翻負或交易所 API 異常,可能讓你睡一覺就虧光保證金。
這是「低風險」不是「無風險」
- 費率翻負:你做空收費率,但費率隨時可能變負(變成你付錢),要設定自動平倉條件。
- 基差與兩腿風險:現貨和永續價格不會完全同步,極端行情下對沖會出現缺口。
- 強平風險:永續那條腿有保證金,留足保證金、別開高槓桿,否則現貨還在、空單先爆。
- 手續費侵蝕:開平倉都要手續費,費率太低時做越多賠越多——所以前面要設年化門檻。
- 交易所風險:資金放在交易所就有平台風險,分散、別All in 單一所。
手續費直接決定套利划不划算
資金費率套利賺的是薄薄一層息,手續費差 0.01%、有沒有返佣,長期報酬差很多。OKX 合約 taker 0.05%、API 友好,是跑量化腳本的常見選擇;用邀請碼註冊可拿返佣再壓低成本:
| 交易所 | 合約 taker | 邀請碼 | 註冊 |
|---|---|---|---|
| OKX | 0.05% | VIP20FEE |
前往 |
| 幣安 | 0.05% | VIP20FEE |
前往 |
| Bybit | 0.055% | SLASHCAPITAL |
前往 |
| Bitget | 0.06% | VIP20FEE |
前往 |
※ 費率與返佣會隨交易所活動調整,以官方為準;查證 2026-06-28。想精算用 手續費返佣計算機。
常見問題 FAQ
資金費率套利用 Python 跑安全嗎?金鑰會被盜嗎?
只要做好三件事就相對安全:① 建立 API 金鑰時關閉「提現」權限、只開讀取與交易;② 綁定 IP 白名單;③ 金鑰放 .env 並加入 .gitignore,絕不寫死在程式碼或上傳 GitHub。這樣即使金鑰外洩,對方也無法提走你的資產。
一定要用 ccxt 嗎?跟交易所官方 SDK 差在哪?
ccxt 的好處是「一套程式碼打通多家交易所」,要比較幣安/OKX/Bybit/Bitget 的費率特別方便。官方 SDK(如 OKX python-okx)功能較完整、更新較即時,但綁單一交易所。想做跨所監控用 ccxt,深度操作單一所可用官方 SDK。
可以讓程式 24 小時無人值守自動下單嗎?
技術上可以,但對新手不建議。費率翻負、交易所 API 異常、兩腿成交不對稱都可能在你沒看著時造成虧損。較穩的做法是「程式負責監控+推播提醒,下單那步人工確認」。若要全自動,務必先在模擬盤長時間跑通、加上完整的風控與停損邏輯。
資金費率套利真的是無風險套利嗎?
不是。它是「市場中性、低風險」策略,不是無風險。主要風險有:資金費率隨時可能翻負、現貨與永續的基差缺口、永續腿的強平風險、手續費侵蝕、以及交易所本身的平台風險。把它當「賺穩定小息」而非「穩賺不賠」。
新手沒寫過程式,能照這篇做嗎?
可以從監控腳本(不需金鑰)開始練手,先跑通「抓費率、排序」這段最沒風險。下單的部分建議先讀 Python 量化入門打底、並全程使用交易所模擬盤,等完全理解每一行在做什麼、也跑順了,再考慮用小額真錢。
延伸閱讀:加密量化程式碼系列
原理/科普:資金費率套利是什麼(手動版+年化試算)、四大所合約網格比較
程式/工具:Python 量化入門:30 行接 OKX API、策略回測教學、交易機器人實測比較
利益揭露:本文部分交易所連結含邀請碼,使用不增加你的成本,有些還有手續費折扣。本文為程式教學整理,所有程式碼僅供學習,不構成投資建議;資金費率套利涉及合約與槓桿,屬高風險交易,可能損失本金,請先用模擬盤測試並自行評估風險。






發表迴響