LIVE
$7.62 min profit is yours / per trade
Get the bot

預期價值 Polymarket 仲裁:如何正確計算 EV

實用指南:逐步計算 Polymarket 仲裁交易的預期價值(EV),包含 taker 手續費、部分成交機率與清算風險。附公式與可運行的範例程式碼。

更新於 2026-04-20· 4 min
arbitrage
expected value
Polymarket
trading

預期價值 Polymarket 仲裁:如何正確計算 EV

本指南逐步示範如何計算 Polymarket 仲裁交易的預期價值(expected value,EV),包含 taker 手續費、部分成交機率與結算風險。如果你在 Polymarket 做 intra-market 的二元或多選項套利,這些公式能把名義價差轉成可執行的 EV 估計。

要點總覽

  • EV = (贖回金 − 成本 − 手續費) × 成交機率 − 來自部分成交與結算時序的下行風險。
  • 必須納入 taker 手續費與預期部分成交率;Polymarket 的 maker 手續費為零,只有在你掛被動流動性時才相關。
  • 對於小尺寸,使用簡單的機率模型(Bernoulli 或二項分配)來模擬部分成交;當執行跨多個價格層時,放大模型或分片處理。
  • 千萬不要將套利交易稱為「無條件的無風險」——務必列出解析風險、滑點、手續費、UMA 爭議與智能合約或時序風險。

1. 預測市場仲裁的 EV 基礎

從基本原理出發。完整且成功的套利(買入一套完整的結果代幣)花費 C(即各腿以 best-ask 買入的總和加上任何 taker 手續費),並在解析後每套最終可贖回為 $1.00。名義 edge 為:

Edge = 1.00 − C

在扣除手續費與執行風險前的預期值就是每套的 Edge。對實務交易你必須把它轉成 EV(期望金額收益),考慮手續費、報價成交的機率,以及可能的部分成交。

EV_basic = Edge × FillProbability − Fees_expected

下面章節會細化 FillProbability 與 Fees_expected 的估算。

2. 納入 taker 手續費與結算流程

在 Polymarket 上 taker 手續費依分類而異,目前介於 0% 到 1.8% 之間;maker 手續費為零。對套利而言,通常對跨價差執行的已成交腿支付 taker 手續費。

當你買入 N 個結果(在多選市場是一整套,在二元則為 YES 與 NO 兩腿),計算毛成本:

C_gross = Σ bestAsk_i

Taker 手續費以基點或百分比表示。若 fee_rate 為 taker 手續費(十進位),則手續費約為:

Fees = fee_rate × C_gross

若某些腿以 maker 方式成交(對於緊密套利較少見),它們的手續費為零;可透過把 C_gross 分成 maker 與 taker 部分來建模。

淨成本 C_net = C_gross + Fees

若完全成交且可贖回,名義利潤為:

Profit_full = 1.00 − C_net

但 Profit_full 只會在 FillProbability_full 的機率下實現,所以 EV 的貢獻為 Profit_full × FillProbability_full。

3. 模擬部分成交與非對稱執行

部分成交是實務損失的最常見來源。兩個例子:

  • 你的買單把 YES 完全買進,但 NO 只買到部分,造成你持有未對沖的 YES 暴露,且其價格高於隱含對沖價格。
  • 成交分布在多個價格層;實際實現的 C_gross 高於第一層 best ask 的總和。

對於小訂單,一個簡單且有用的模型是以每腿在顯示 best ask 的 Bernoulli 全成機率來模擬。對較大尺寸,可以把成交視為二項分配或把量切成確定性的片段跨層價格執行。

計算中使用的符號:

  • q_i = 對腿 i 的預期數量(以 outcome 股數計)
  • f_i = q_i 在掛單價位被完全成交的機率
  • r_i = 對腿 i 的預期成交比例(0 ≤ r_i ≤ 1)

若可能出現部分成交,期望成本為:

E[C_gross] = Σ (bestAsk_i × q_i × r_i)

期望手續費按比例跟隨:

E[Fees] = fee_rate × E[C_gross](針對 taker 已成交部分)

但部分成交會產生非對稱的剩餘部位。保守的常見做法是假設任何剩餘的單一結果部位必須立即以較差的 mid/ask 價格平倉,並把該平倉的預期損失納入 EV。

例如,如果你原本預期買入一整套,但平均上 NO 只成交 90%,你會多持有 10% 的 YES,且你為這些 YES 支付的價格為 p_yes。最壞情況的剩餘損失大約為 0.90 × (p_yes − mid_unwind_price)(需考慮 tick size 與手續費)。把預期的剩餘損失項 L_residual 加入 EV。

4. 你可以實作的逐步 EV 公式

定義:

  • n = 一套結果的項目數(binary 時 n=2)
  • ask_i = 第 i 項結果的 best ask 價格(美元)
  • q = 目標完整套數(股數;例如 10 套)
  • fee = taker 手續費率(十進位,例如 0.006 代表 0.6%)
  • r_i = 對腿 i 的預期成交比例(0..1)。要取全額成交機率時,設 r_i = 1.0。
  • p_unwind_i = 預期你可用於平掉任何剩餘部位的價格(保守作法:使用當前較差的 ask 或 mid)

計算:

  1. E[C_gross] = Σ_i ask_i × q × r_i
  2. E[Fees] = fee × E[C_gross]
  3. E[C_net] = E[C_gross] + E[Fees]
  4. 完整套在可贖回時的期望贖回金 = q × 1.00 × P_redeem (P_redeem 為最終可贖回的機率;在沒有 UMA 爭議時通常為 1.0 — 但下方會將爭議風險考量進來)
  5. 預期剩餘損失 L_residual = Σ_i max(0, q × (1 − r_i) × (paid_price_i − p_unwind_i))

最終 EV 估計:

EV = q × P_redeem − E[C_net] − L_residual

若要得到每套的 EV,將 EV 除以 q。

關於 P_redeem 的備註:UMA 的爭議可能會暫停或改變結算。把 P_redeem 設為 ≤ 1.0 以反映非零的爭議風險;對於多數市場你可以近似 P_redeem ≈ 1.0,但必須明確納入延遲或被爭議的可能性。

5. 實作範例(二元)— 可執行且保守

假設一個小型二元套利,你打算透過各自的 best-ask 買入 YES 與 NO,目標買入 100 套。僅以數字示範;手續費仍在文件範圍內。

  • ask_YES = $0.49
  • ask_NO = $0.50
  • q = 100 套
  • fee = 0.006(0.6% taker 手續費)
  • r_YES = 1.0, r_NO = 0.95(NO 在第一層可能部分成交)
  • p_unwind_NO = $0.52(你預期平掉剩餘 NO 的價格)
  • P_redeem = 1.0(假設最終可贖回)

計算 E[C_gross] = (0.49 + 0.50) × 100 × average_r

更精確地:

E[C_gross] = (0.49 × 100 × 1.0) + (0.50 × 100 × 0.95) = 49.00 + 47.50 = 96.50

E[Fees] = 0.006 × 96.50 = 0.579

E[C_net] = 96.50 + 0.579 = 97.079

贖回金 = 100 × 1.00 = 100.00

L_residual:你原先預期 100 個 NO 但只拿到 95 個,因此相當於剩下 5 個 YES 沒有配對——若你為這些 YES 支付 0.49 而必須在 p_unwind_YES(保守估)平掉,則依照對稱性可用下式估算典型的剩餘損失:

L_residual = (q × (1 − r_NO)) × (paid_price_NO_unpaired − p_unwind_NO)

僅在未配對一側為較貴那側時才納入該損失。代入數字時要保守,避免高估 EV。

最終 EV = 100 − 97.079 − L_residual

若 L_residual 小,交易仍為正 EV;若 L_residual 超過名義 Edge,則交易為負 EV。請在下單前以程式化方式執行此數學運算。

6. 一個可用的 JavaScript 程式片段

下面程式片段會根據上列輸入計算每套的 EV。它是有效的 JavaScript,可直接放入你的風險框架中。

function computeEVPerSet(asks, r, fee, p_unwind, P_redeem = 1.0) {
  // asks: array of best asks for each outcome, e.g. [0.49, 0.50]
  // r: array of expected fill fractions for each outcome, e.g. [1.0, 0.95]
  const n = asks.length;
  const q = 1; // per-set basis

  const E_C_gross = asks.reduce((s, a, i) => s + a * q * r[i], 0);
  const E_Fees = fee * E_C_gross;
  const E_C_net = E_C_gross + E_Fees;

  // Residual loss: assume unfilled fraction must be closed at p_unwind
  const L_residual = asks.reduce((s, a, i) => {
    const unfilled = q * (1 - r[i]);
    const paid_price = a; // price you paid for filled portion of this outcome
    const unwind_price = p_unwind[i];
    return s + Math.max(0, unfilled * (paid_price - unwind_price));
  }, 0);

  const EV = q * P_redeem - E_C_net - L_residual;
  return { EV_per_set: EV, E_C_gross, E_Fees, L_residual };
}

// Example
const asks = [0.49, 0.50];
const r = [1.0, 0.95];
const fee = 0.006; // 0.6%
const p_unwind = [0.48, 0.52];
console.log(computeEVPerSet(asks, r, fee, p_unwind));

保守地調整 p_unwind 值(使用較差的 ask 或 mid),並根據你在該尺寸上的歷史成交率設定 r。

7. 實盤交易的實用建議

  • 量化每個合約與每個尺寸的經驗成交率。使用短期且頻繁的量測窗口;市場微結構會隨市場而異。
  • 把大型目標量分切成較小片段以降低部分成交風險,並避開 Builder 或 Relayer 的限額(如適用)。
  • 考慮 tick-size 的行為:當價格接近極端時,tick size 會收窄至 $0.001,這會改變 unwind 的滑點。
  • 在 P_redeem 中納入 UMA 爭議與結算時序風險。爭議會暫停結算並影響機會成本。
  • 遵守地理限制:市場會以 IP 進行地理封鎖;切勿建議使用 VPN 覆蓋。

這如何影響你的交易

在下單前先計算每套 EV,並把它與你內部的最低可接受 EV 做比較,該最低值應已包含資本成本、被鎖定 pUSD 的機會成本,以及可能的爭議延遲成本。在小額且頻繁的套利中,你通常會要求在扣除手續費與預期剩餘損失後每套仍保有適度的正 EV,才能證明營運開銷是合理的。

結語與主要關鍵字:expected value Polymarket arbitrage 應始終以保守方式計算,明確將 taker 手續費與部分成交機率納入模型。

常見問題

我該如何為較大訂單建模部分成交機率?

以你交易尺寸的經驗成交率為起點。對小片段使用 Bernoulli 的假設;對較大尺寸,將成交建模為跨價格層的二項和,或使用歷史深度檔來確定性地切片你的委託。估計 r_i 時務必保守。

在 EV 計算中我應該包含哪些手續費?

包含已成交腿的 taker 手續費 — Polymarket 的 taker 手續費依分類介於 0% 到 1.8%;maker 手續費為零。將手續費建模為 fee_rate × 已執行成本,並在適用時把已執行成本拆分為 maker / taker 部分。

我需要在 EV 中考慮 UMA 爭議嗎?

需要。UMA 爭議可能暫停結算或改變時序。使用 P_redeem ≤ 1.0 來反映爭議機率與結算延遲所造成的時間價值/成本。

如果我預期稍後會再平倉,能忽略剩餘的 unwind 損失嗎?

不能。剩餘部位會帶來市場與方向性風險。除非你有文件化且統計上證明的再平倉計畫與已知成本,否則在 EV 模型中納入保守的平倉價格(p_unwind)。

名義 edge 與 EV 一樣嗎?

不一樣。名義 edge = 1.00 − Σ bestAsk_i。EV 會根據 taker 手續費、部分成交機率、剩餘平倉損失與結算/爭議風險來調整該 edge。以 EV 作為決策依據。

參考術語

相關指南

僅作教育用途。非財務、法律或稅務建議。Polymarket 可能在你的司法管轄區無法使用。