場內(Intra-market)二元套利說明
為何在 Polymarket 上 YES + NO 會小於 $1.00、如何量化 edge,以及透過 CLOB 同時買入雙腿的實務方法。
場內(Intra-market)二元套利說明
簡短摘要:當同一個 Polymarket 二元市場上 YES 與 NO 的 best-ask 價格加總小於 $1.00 時,就會出現場內二元套利。此時可以同時買入雙腿,鎖定一個數學上的差價,等於 $1.00 減去兩個 ask。但在稱之為獲利前,必須考量費用、滑點、部分成交、決議風險與結算時間等因素。
重點要點
- 「YES + NO < $1.00」是產生場內套利 edge 的簡單條件。
- 原始 edge 為 1.00 − (bestAsk(YES) + bestAsk(NO)),但費用、滑點與成交情況通常會侵蝕它。
- 透過 CLOB 執行雙腿;FAK(市價)訂單是常用的操作工具,因為它優先追求即時成交。
- 以可用深度保守地定量,並且始終把 taker 手續費與 tick size 考慮進去。
為何 YES + NO 會低於 $1.00
市場微觀結構與人類行為會產生短暫不一致。常見原因包括:
- 流動性分散:不同參與者在不同側放置 ask,而另一側沒有對應的對手盤。
- 延遲與陳舊訂單:訂單更新透過 CLOB 與 WebSocket 傳播的速率不同;best ask 會短暫出現分歧。
- Tick-size 離散化:tick size(通常為 $0.01,在極端價格時收緊到 $0.001)會迫使價格四捨五入,產生微小空隙。
- 費率差異與誘因:maker 手續費為零而 taker 費率變動;積極的 taker 會以不同方式路由成交,有時會讓一側變薄。
- 人為錯誤與手動做市:一側放錯大型限價 ask 會在另一側造成可被利用的缺口。
量化原始 edge
計算很簡單:Edge = 1.00 − (bestAsk(YES) + bestAsk(NO))。Edge > 0 => 理論套利。
- 範例:bestAsk(YES) = 0.46、bestAsk(NO) = 0.52 → Edge = 0.02(2 分或相當於 $1 的 2%)。
- 但這是「原始 edge」,尚未扣除手續費、滑點與執行風險。
把原始 edge 轉成實現損益會遇到的成本
務必扣除或考量:
- Taker 手續費:Polymarket 上依分類變動(0% 到 1.8%)。若兩邊都付 taker 費,可能會吃掉 edge。
- 滑點 / 部分成交:best ask 可能只有小量可成交;若成交更大數量會吞噬更深且價格更差的報價。
- Tick-size 四捨五入:當 tick 為 $0.01 時,實際可成交價格是量化的;這會改變深度曲線。
- 結算時間與決議風險:UMA 的爭議可能延後或改變結算。
- 智能合約與操作風險:CTF 操作、relayer 行為與錢包狀態可能增加摩擦。
估算機會大小:實務規則
- 從顯示的 best ask 可用深度開始。使用訂單簿深度檢視,查看在最佳價格與下一個價格層級的累積量。
- 計算扣除手續費後的淨 edge。如果兩腿都會被課 taker 費,估算淨 edge = Edge − fee(YES) − fee(NO)。
- 套用滑點緩衝。保守假設你只能拿到目前顯示的 best ask 數量;超過該數量,假設下一價格為 +tick 或更差。
一個簡單的量化流程:
- 查詢兩個結果的 bestAsk 與可見深度。
- 計算原始 edge 與扣除手續費後的淨 edge。
- 決定對稱最大數量 S,使得買入 S 的每一側只會吃到你預期接受的價格層。
- 如果淨 edge × S 超過你的最小目標,交易可能值得執行。
在 Polymarket 上的執行方法
CLOB 上有兩種實務執行模式:
- 兩腿都用市價(FAK)訂單:createMarketOrder 類型的 FAK 嘗試立即成交,並取消任何未成交的剩餘部分。FAK 是追求快速且保證即時性的常見方法,但你會付 taker 手續費並承擔部分成交的風險。
- 在書上以限價穿越:在顯示的 best ask 或稍微更積極的價格放限價買單以鼓勵成交。如果你的訂單能成為 resting maker(被 taker 撞擊),你可以避免 taker 手續費,但這較慢且會暴露被 pick-off 的風險。
為何 FAK 常被使用
FAK 強制即時性。當你偵測到小而短暫的 edge 並且想要最簡單的操作路徑時,對 YES 與 NO 各下兩筆 FAK(各一腿)會得到「已成交或部分成交」,且不會留下超出已成交部位以外的未結曝險。請記得 FAK 屬於 taker 訂單,因此通常會被課 taker 手續費。
一個最小的 TypeScript 程式序列(概念性)
這個範例勾勒了流程;請依你的 SDK 與憑證調整。把佔位字串替換成你的環境值。
// Pseudocode-like sketch using a CLOB client
// 1. Read best asks for both outcomes via CLOB read endpoints
const yesAsk = await clob.getBestAsk(marketId, 'YES')
const noAsk = await clob.getBestAsk(marketId, 'NO')
// 2. Compute edge and decide size
const edge = 1.0 - (yesAsk.price + noAsk.price)
if (edge <= minimumNetEdge) throw new Error('No edge')
// 3. Place FAK market orders for both legs
await clob.createMarketOrder({side: 'buy', outcome: 'YES', size: size})
await clob.createMarketOrder({side: 'buy', outcome: 'NO', size: size})
注意:CLOB 的交易端點需要 API key + HMAC 來下單。讀取資料為公開。不要假設同步成交;下單後務必檢查訂單簿狀態與交易收據。
交易後:管理頭寸
成交後你會持有 YES 與 NO 的結果代幣。常見的兩種結算路徑:
- 立即合併與拆分的經濟性在二元市場並不適用;你會同時持有兩種結果代幣。當市場決議後,你可以透過 CTF 的 redeem 將贏方代幣兌換成 $1.00。
- 若你需要提前釋放資金,可以把一個或兩個結果再上架到 CLOB;是否能以獲利平倉通常取決於剩餘流動性與 spread。
風險檢查表 — 為何「數學上」不等於無風險
在未逐一列出風險前,絕不要稱場內套利交易為無風險。執行前應記錄的主要風險:
- 決議風險:UMA 的爭議可能延後或改變結算。
- 滑點與部分成交:你可能無法以公告價格同時填滿兩腿。
- 手續費:taker 手續費可能消滅 edge。
- 智能合約/操作風險:relayer 故障、錢包部署問題或 SDK 錯誤可能中斷執行。
- 地理與合規限制:Polymarket 對部分司法管轄區封鎖新訂單;不要嘗試透過 VPN 規避。
此事項如何影響你的交易
對於活躍交易者,操作手冊很直接:自動監控 bestAsk(YES) 與 bestAsk(NO) 以及深度,計算扣除手續費與滑點後的淨 edge,並以較小的一側可用深度做為下單大小。當你優先考量即時性並接受支付 taker 手續費時,使用 FAK 訂單;若能耐心等待 maker 成交以避免 taker 手續費,則考慮放置限價。務必記錄成交並在鏈上核對你的代幣與預期曝險。
結語
場內二元套利是 Polymarket 上最乾淨的微觀結構套利之一:條件簡單(YES + NO < $1.00),且執行模式為人所熟悉。但這種簡單性不等於沒有實際的操作、手續費與決議風險——在量化與執行決策時必須將這些風險納入考量。
常見問題
在場內二元套利中,「edge」到底是什麼?
Edge 是 1.00 − (bestAsk(YES) + bestAsk(NO))。它是 $1.00 與二元市場上兩個 best ask 之和的原始、未扣手續費差額。實際獲利必須扣除 taker 手續費、滑點與其他執行成本。
我應該總是用 FAK 訂單來執行雙腿嗎?
FAK 訂單優先即時性且常被使用,但會付 taker 手續費並有部分成交風險。如果你能容忍等待 maker 成交以避免 taker 手續費,放限價訂單可能更便宜,但比較慢。
我該如何下單大小以避免剩下一邊的部位?
以兩側可接受價格層上的較小可用深度為大小上限。計算最佳 ask 及接下來幾個 tick 的累積深度,然後選擇一個對稱大小,使其只吃掉你能接受的那些價格層。保守的下單大小能降低部分未配對成交的機率。
tick-size 的變化會影響這個策略嗎?
會。Polymarket 通常使用 $0.01 的 tick,價格接近極端時會收緊到 $0.001。tick 的離散化會影響深度並可能創造或消除小的 edge,所以在 sizing 與滑點模型中要把當前的 tick size 考量進去。
這些交易會被收取 maker 費用嗎?
Polymarket 的 maker 費為零。如果你的限價訂單進到書上並被他人吃掉,你可以避免 taker 手續費。然而,resting limit 會暴露你於時間風險與被 pick-off 的風險。
參考術語
相關指南
僅作教育用途。非財務、法律或稅務建議。Polymarket 可能在你的司法管轄區無法使用。