LIVE
keunggulan minimum $7,62 per perdagangan
Dapatkan bot

Expected value Polymarket arbitrage: how to calculate EV correctly

Panduan praktis untuk menghitung expected value untuk trading arbitrase di Polymarket, termasuk taker fees, probabilitas partial-fill, dan risiko penyelesaian. Rumus EV langkah-demi-langkah dan contoh kode yang berfungsi.

Diperbarui 2026-04-20· 8 min
arbitrage
expected value
Polymarket
trading

Expected value Polymarket arbitrage: how to calculate EV correctly

Panduan ini menunjukkan cara menghitung expected value untuk trading arbitrase Polymarket langkah demi langkah, termasuk taker fees, probabilitas partial-fill, dan risiko penyelesaian. Jika Anda menjalankan intra-market binary atau arbitrase kombinatorial di Polymarket, rumus ini mengubah selisih harga nominal menjadi estimasi EV yang dapat dieksekusi.

Key takeaways

  • EV = (payout − cost − fees) × fill probability − downside dari partial fills dan timing penyelesaian.
  • Selalu sertakan taker fees dan tingkat partial-fill yang diharapkan; maker fees adalah nol di Polymarket sehingga hanya relevan jika Anda menempelkan order ke likuiditas pasif.
  • Gunakan model probabilistik sederhana (Bernoulli atau binomial) untuk partial fills pada ukuran kecil; skala model ketika eksekusi melintasi banyak level harga.
  • Jangan pernah menyebut trade arb sebagai "risk-free" tanpa mencantumkan risiko: risiko resolusi, slippage, fees, sengketa UMA, dan risiko smart-contract atau timing.

1. EV fundamentals for prediction-market arbitrage

Mulai dari prinsip dasar. Arbitrase penuh yang berhasil yang membeli satu set lengkap token outcome menelan biaya C (jumlah best-ask yang dibeli ditambah taker fees) dan akhirnya dapat ditebus menjadi $1.00 per set lengkap setelah resolusi. Edge nominal adalah:

Edge = 1.00 − C

Expected value sebelum fees dan risiko eksekusi hanyalah Edge per set lengkap. Untuk trading praktis Anda harus mengonversi itu menjadi EV (keuntungan moneter yang diharapkan) dengan memperhitungkan fees, probabilitas order Anda terisi pada harga yang dikutip, dan kemungkinan partial fills.

EV_basic = Edge × FillProbability − Fees_expected

Anda akan merinci FillProbability dan Fees_expected di bagian berikut.

2. Including taker fees and settlement flow

Di Polymarket taker fees bervariasi menurut kategori dan saat ini berada antara 0% dan 1.8% tergantung kategori pasar; maker fees adalah nol. Untuk arb Anda biasanya membayar taker fees pada legs yang dieksekusi yang melintasi spread.

Saat Anda membeli N outcome (satu set lengkap di pasar multi-outcome atau kedua YES dan NO pada binary), hitung biaya kotor:

C_gross = Σ bestAsk_i

Taker fee per trade dinyatakan dalam basis poin atau persen. Jika fee_rate adalah taker fee (dalam desimal), fees Anda kira-kira:

Fees = fee_rate × C_gross

Jika beberapa leg dieksekusi sebagai maker (jarang untuk arb ketat) mereka tidak dikenai fees; model ini dengan memisahkan C_gross menjadi porsi maker dan taker.

Net cost C_net = C_gross + Fees

Kemudian keuntungan nominal jika terisi penuh dan dapat ditebus adalah:

Profit_full = 1.00 − C_net

Tapi Profit_full hanya terealisasi dengan probabilitas FillProbability_full, sehingga kontribusi EV adalah Profit_full × FillProbability_full.

3. Modelling partial fills and asymmetric execution

Partial fills adalah sumber kerugian praktis yang paling umum. Dua contoh:

  • Order Anda membeli YES penuh tetapi NO hanya sebagian. Anda tersisa posisi YES sisa yang harganya lebih tinggi dibandingkan hedge implisit.
  • Fill terjadi di banyak level harga; C_gross yang terealisasi lebih tinggi daripada jumlah best ask pada level pertama.

Model sederhana dan berguna untuk order kecil adalah probabilitas fill Bernoulli per leg pada best ask yang ditampilkan. Untuk ukuran lebih besar Anda dapat memodelkan fills sebagai binomial atau sebagai jumlah potongan volume deterministik melintasi level harga.

Notasi yang digunakan dalam perhitungan:

  • q_i = kuantitas yang dimaksud untuk leg i (dalam saham outcome)
  • f_i = probabilitas bahwa q_i terisi penuh pada best ask yang dipasang
  • r_i = fraksi fill yang diharapkan untuk leg i (0 ≤ r_i ≤ 1)

Biaya yang diharapkan ketika partial fills mungkin terjadi:

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

Fees yang diharapkan mengikuti proporsionalitas:

E[Fees] = fee_rate × E[C_gross] untuk porsi yang dieksekusi sebagai taker

Tetapi partial fills menciptakan posisi residual yang asimetris. Pendekatan konservatif umum adalah mengasumsikan setiap posisi residual single-outcome harus langsung dilikuidasi pada mid/ask yang lebih buruk, dan memasukkan kerugian yang diharapkan dari unwind itu ke dalam EV.

Contohnya, jika Anda mengharapkan membeli satu set lengkap tetapi rata-rata hanya mengisi 90% leg NO, Anda akan menanggung 10% YES yang dibeli pada harga p_yes. Kerugian residual worst-case kira-kira 0.90 × (p_yes − mid_unwind_price) (sesuaikan untuk tick size dan fees). Sertakan istilah kerugian residual yang diharapkan L_residual dalam EV.

4. A step-by-step EV formula you can implement

Definisikan:

  • n = jumlah outcome dalam set (n=2 untuk binary)
  • ask_i = harga best ask untuk outcome i, dalam dolar
  • q = kuantitas target per set lengkap (saham; mis. 10 complete sets)
  • fee = tingkat taker fee sebagai desimal (mis. 0.006 untuk 0.6%)
  • r_i = fraksi fill yang diharapkan untuk leg i (0..1). Untuk probabilitas terisi penuh gunakan r_i = 1.0.
  • p_unwind_i = harga yang diharapkan untuk menutup posisi residual di outcome i (konservatif: gunakan ask terburuk saat ini atau mid)

Hitung:

  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. Expected payout ketika set lengkap ditebus = q × 1.00 × P_redeem (P_redeem adalah probabilitas eventual redeemability; biasanya 1.0 jika tidak ada sengketa UMA — tetapi masukkan risiko sengketa di bawah)
  5. Expected residual loss L_residual = Σ_i max(0, q × (1 − r_i) × (paid_price_i − p_unwind_i))

Estimasi EV final:

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

Jika Anda ingin EV per complete set, bagi EV dengan q.

Catatan tentang P_redeem: Sengketa UMA dapat menunda atau mengubah penyelesaian. Tetapkan P_redeem ≤ 1.0 untuk mencerminkan risiko sengketa yang bukan nol; untuk banyak pasar Anda dapat menganggap P_redeem ≈ 1.0 tetapi Anda harus secara eksplisit memperhitungkan kemungkinan keterlambatan atau sengketa penyelesaian.

5. Worked numerical example (binary) — implementable and conservative

Asumsikan arbitrase binary kecil di mana Anda bermaksud membeli 100 complete-sets dengan membeli YES dan NO pada best ask masing-masing. Gunakan angka hanya untuk ilustrasi; pertahankan fee dalam kisaran yang didokumentasikan.

  • ask_YES = $0.49
  • ask_NO = $0.50
  • q = 100 sets
  • fee = 0.006 (0.6% taker fee)
  • r_YES = 1.0, r_NO = 0.95 (NO mungkin terisi sebagian pada level pertama)
  • p_unwind_NO = $0.52 (harga yang Anda harapkan untuk menjual residual NO)
  • P_redeem = 1.0 (asumsikan eventual redeemability)

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

Lebih tepat:

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

Payout = 100 × 1.00 = 100.00

L_residual: Anda mengharapkan 100 NO tetapi hanya mendapat 95, jadi Anda memiliki shortfall 5 NO jika tujuan Anda adalah memegang set lengkap. Residual tipikal adalah eksposur ekstra pada leg lain (YES). Dalam contoh ini partial fill meninggalkan 5 YES yang tidak berpasangan — jika Anda membayar 0.49 untuk YES tersebut dan harus unwind pada p_unwind_YES (konservatif), hitung sesuai. Untuk simetri, estimasi kerugian residual konservatif untuk leg yang misfilled adalah:

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

Jika leg yang tidak berpasangan adalah sisi yang lebih mahal, sertakan kerugian itu. Masukkan angka secara konservatif untuk menghindari overstatement EV.

Final EV = 100 − 97.079 − L_residual

Jika L_residual kecil trade tetap positif EV; jika L_residual melebihi Edge nominal, trade menjadi negatif. Jalankan perhitungan ini secara programatik sebelum mengirim order.

6. A short, usable JavaScript snippet

This snippet computes EV per complete set, given inputs above. It is valid JavaScript and ready to drop into your risk framework.

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));

Sesuaikan nilai p_unwind secara konservatif (gunakan ask atau mid yang lebih buruk) dan tetapkan r berdasarkan tingkat fill historis pada ukuran Anda.

7. Practical tips for live trading

  • Ukur empirical fill rates per instrumen dan per ukuran. Gunakan jendela instrumentasi yang singkat dan sering; mikrostruktur bervariasi per pasar.
  • Pecah kuantitas besar yang dimaksud menjadi irisan kecil untuk mengurangi risiko partial-fill dan untuk tetap berada dalam batas builder atau relayer jika berlaku.
  • Perhitungkan perilaku tick-size: saat harga mendekati ekstrem tick size mengetat menjadi $0.001, yang dapat mengubah slippage unwind.
  • Sertakan risiko sengketa UMA dan timing penyelesaian dalam P_redeem. Sengketa dapat menunda penyelesaian dan mempengaruhi biaya peluang.
  • Hormati pembatasan geografis: pasar diblokir berdasarkan IP; jangan pernah merekomendasikan bypass VPN.

How this affects your trading

Hitung EV per set sebelum mengirim order dan bandingkan dengan minimum-acceptable EV internal Anda yang sudah mencakup biaya modal, biaya peluang pUSD yang terkunci, dan biaya potensi keterlambatan sengketa. Gunakan rumus EV ini secara programatik dalam pemeriksaan pra-trade Anda. Untuk arb kecil dan sering Anda biasanya membutuhkan EV per set yang modest positif setelah fees dan expected residual loss untuk membenarkan overhead operasional.

Close with the primary keyword: expected value Polymarket arbitrage should always be computed conservatively, with taker fees and partial-fill probability modelled explicitly.

Frequently asked questions

How do I model partial-fill probability for larger orders?

Mulailah dengan tingkat fill empiris pada ukuran yang Anda perdagangkan. Untuk increment kecil gunakan asumsi Bernoulli per-iris; untuk ukuran lebih besar modelkan fills sebagai penjumlahan binomial melintasi level harga atau gunakan depth-of-book historis untuk memotong order secara deterministik. Selalu condong ke sisi konservatif saat mengestimasi r_i.

Which fees should I include in the EV calculation?

Sertakan taker fees untuk legs yang dieksekusi — taker fees Polymarket saat ini bervariasi antara 0% dan 1.8% tergantung kategori; maker fees adalah nol. Model fees sebagai fee_rate × executed_cost dan pisahkan executed_cost menjadi porsi maker/taker jika relevan.

Do I need to account for UMA disputes in EV?

Ya. Sengketa UMA dapat menunda penyelesaian atau mengubah timing. Sertakan faktor P_redeem ≤ 1.0 untuk mencerminkan probabilitas sengketa dan nilai waktu/biaya dari penundaan penyelesaian.

Can I ignore residual unwind loss if I expect to re-balance later?

Tidak. Posisi residual membawa risiko pasar dan risiko arah. Sertakan harga unwind konservatif (p_unwind) dalam model EV Anda kecuali Anda memiliki rencana re-balance yang terdokumentasi dan dibenarkan secara statistik dengan biaya yang diketahui.

Is the nominal edge the same as EV?

Tidak. Nominal edge = 1.00 − Σ bestAsk_i. EV menyesuaikan edge itu untuk taker fees, probabilitas partial-fill, kerugian unwind residual, dan risiko penyelesaian/sengketa. Gunakan EV untuk pengambilan keputusan.

Istilah yang dirujuk

Panduan terkait

Hanya untuk tujuan edukasi. Bukan nasihat keuangan, hukum, atau pajak. Polymarket mungkin tidak tersedia di yurisdiksi Anda.