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

Giá trị kỳ vọng trong arbitrage Polymarket: cách tính EV đúng

Hướng dẫn thực tế để tính giá trị kỳ vọng cho các giao dịch arbitrage trên Polymarket, bao gồm phí taker, xác suất khớp lệnh một phần, và rủi ro thanh toán. Công thức EV từng bước và ví dụ mã chạy được.

Cập nhật 2026-04-20· 11 min
arbitrage
expected value
Polymarket
trading

Giá trị kỳ vọng trong arbitrage Polymarket: cách tính EV đúng

Hướng dẫn này chỉ cho bạn cách tính giá trị kỳ vọng cho các giao dịch arbitrage trên Polymarket từng bước, bao gồm phí taker, xác suất khớp lệnh một phần, và rủi ro thanh toán. Nếu bạn chạy arbitrage intra-market dạng binary hoặc tổ hợp trên Polymarket, các công thức này chuyển một khoảng chênh giá danh nghĩa thành ước tính EV có thể hành động.

Những điểm chính

  • EV = (khoản thanh toán − chi phí − phí) × xác suất khớp − tổn thất do khớp một phần và thời điểm thanh toán.
  • Luôn bao gồm phí taker và tỷ lệ khớp lệnh một phần kỳ vọng; maker fee bằng 0 trên Polymarket nên chỉ quan trọng nếu bạn neo vào thanh khoản thụ động.
  • Dùng mô hình xác suất đơn giản (Bernoulli hoặc binomial) cho khớp một phần ở kích thước nhỏ; mở rộng mô hình khi khớp trải qua nhiều mức giá.
  • Không bao giờ gọi một giao dịch arb là "không có rủi ro" vô điều kiện — liệt kê rủi ro về resolution, trượt giá, phí, tranh chấp UMA và rủi ro hợp đồng thông minh hoặc thời gian.

1. Những nguyên lý cơ bản về EV cho arbitrage trên thị trường dự đoán

Bắt đầu từ nguyên lý cơ bản. Một arbitrage hoàn chỉnh, thành công mua một bộ đầy đủ token kết quả có chi phí C (tổng các giá ask đã mua cộng bất kỳ phí taker nào) và cuối cùng đổi lấy $1.00 cho mỗi bộ đầy đủ sau khi resolution. Khoảng chênh danh nghĩa là:

Edge = 1.00 − C

Giá trị kỳ vọng trước phí và rủi ro thực thi đơn giản là Edge cho mỗi bộ đầy đủ. Để giao dịch thực tế bạn phải chuyển nó thành EV (lợi nhuận tiền tệ kỳ vọng) bằng cách tính tới phí, xác suất lệnh của bạn khớp ở giá đã báo, và các khớp một phần có thể xảy ra.

EV_basic = Edge × FillProbability − Fees_expected

Bạn sẽ tinh chỉnh FillProbability và Fees_expected trong các phần sau.

2. Bao gồm phí taker và luồng thanh toán

Trên Polymarket phí taker thay đổi theo danh mục và hiện nằm trong khoảng 0% đến 1.8% tùy danh mục thị trường; maker fee bằng 0. Với arb bạn thường trả phí taker cho các chân khớp vượt spread.

Khi bạn mua N outcome (một bộ đầy đủ trong thị trường nhiều kết quả hoặc cả YES và NO trong binary), tính chi phí tổng gộp:

C_gross = Σ bestAsk_i

Phí taker cho mỗi giao dịch được biểu diễn bằng điểm cơ bản hoặc phần trăm. Nếu fee_rate là phí taker (dạng thập phân), phí của bạn xấp xỉ:

Fees = fee_rate × C_gross

Nếu một số chân khớp ở vai trò maker (hiếm với arb chặt) thì chúng không chịu phí; mô hình hóa điều đó bằng cách tách C_gross thành phần maker và taker.

Chi phí ròng C_net = C_gross + Fees

Sau đó lợi nhuận danh nghĩa nếu được khớp đầy đủ và có thể đổi lấy là:

Profit_full = 1.00 − C_net

Nhưng Profit_full chỉ hiện thực với xác suất FillProbability_full, nên đóng góp vào EV là Profit_full × FillProbability_full.

3. Mô hình hóa khớp một phần và thực thi lệch

Khớp một phần là nguồn tổn thất thực tế phổ biến nhất. Hai ví dụ:

  • Lệnh của bạn mua YES đầy đủ nhưng NO chỉ khớp một phần. Bạn còn lại vị thế dư YES có giá cao hơn hedge ngụ ý.
  • Khớp xảy ra qua nhiều mức giá; C_gross thực tế cao hơn tổng các best ask ở cấp đầu.

Một mô hình đơn giản và hữu dụng cho lệnh nhỏ là xác suất khớp Bernoulli cho mỗi chân ở best ask hiển thị. Với kích thước lớn hơn bạn có thể mô hình hóa khớp như phân bố binomial hoặc như tổng các lát khối lượng xác định qua các mức giá.

Ký hiệu dùng trong tính toán:

  • q_i = khối lượng dự định cho chân i (số cổ phần của outcome)
  • f_i = xác suất q_i được khớp đầy đủ ở best ask đã đăng
  • r_i = tỷ lệ kỳ vọng được khớp cho chân i (0 ≤ r_i ≤ 1)

Chi phí kỳ vọng khi có khớp một phần:

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

Phí kỳ vọng theo tỷ lệ:

E[Fees] = fee_rate × E[C_gross] cho phần thực thi bằng taker

Nhưng khớp một phần tạo ra vị thế dư bất đối xứng. Cách tiếp cận thận trọng phổ biến là giả định bất kỳ vị thế dư đơn lẻ nào phải được đóng ngay lập tức theo mid/ask xấu hơn, và bao gồm tổn thất kỳ vọng từ việc đóng đó vào EV.

Ví dụ, nếu bạn dự định mua một bộ đầy đủ nhưng trung bình chỉ khớp 90% chân NO, bạn sẽ giữ 10% YES dư với giá trả p_yes. Tổn thất dư xấu nhất xấp xỉ 0.90 × (p_yes − mid_unwind_price) (điều chỉnh cho kích thước tick và phí). Bao gồm hạng mục tổn thất dư kỳ vọng L_residual trong EV.

4. Công thức EV từng bước để triển khai

Định nghĩa:

  • n = số kết quả trong một bộ (n=2 cho binary)
  • ask_i = giá best ask cho outcome i, tính bằng đô-la
  • q = khối lượng mục tiêu theo bộ đầy đủ (shares; ví dụ, 10 bộ đầy đủ)
  • fee = tỷ lệ phí taker dưới dạng thập phân (ví dụ 0.006 cho 0.6%)
  • r_i = tỷ lệ kỳ vọng được khớp cho chân i (0..1). Với xác suất khớp đầy đủ dùng r_i = 1.0.
  • p_unwind_i = giá bạn kỳ vọng có thể đóng bất kỳ vị thế dư nào của outcome i (thận trọng: dùng ask tệ nhất hiện tại hoặc mid)

Tính:

  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. Kỳ vọng thanh toán khi các bộ đầy đủ đổi lấy = q × 1.00 × P_redeem (P_redeem là xác suất có thể đổi cuối cùng; thường là 1.0 nếu không có tranh chấp UMA — nhưng hãy bao gồm rủi ro tranh chấp bên dưới)
  5. Tổn thất dư kỳ vọng L_residual = Σ_i max(0, q × (1 − r_i) × (paid_price_i − p_unwind_i))

Ước tính EV cuối cùng:

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

Nếu bạn muốn EV trên mỗi bộ đầy đủ, chia EV cho q.

Ghi chú về P_redeem: Tranh chấp UMA có thể tạm dừng hoặc thay đổi thanh toán. Đặt P_redeem ≤ 1.0 để phản ánh xác suất tranh chấp không bằng 0; với nhiều thị trường bạn có thể lấy P_redeem ≈ 1.0 nhưng phải ghi rõ khả năng thanh toán bị trì hoãn hoặc bị tranh chấp.

5. Ví dụ số đã tính (binary) — có thể triển khai và thận trọng

Giả sử một arbitrage binary nhỏ nơi bạn dự định mua 100 bộ đầy đủ bằng cách mua YES và NO theo các best ask tương ứng. Dùng số chỉ để minh họa; giữ phí trong khoảng đã ghi.

  • ask_YES = $0.49
  • ask_NO = $0.50
  • q = 100 bộ
  • fee = 0.006 (0.6% phí taker)
  • r_YES = 1.0, r_NO = 0.95 (NO có thể khớp một phần ở cấp đầu)
  • p_unwind_NO = $0.52 (giá bạn kỳ vọng bán dư NO)
  • P_redeem = 1.0 (giả sử có thể đổi cuối cùng)

Tính E[C_gross] = (0.49 + 0.50) × 100 × average_r

Chính xác hơn:

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: bạn kỳ vọng 100 NO nhưng chỉ nhận 95, nên bạn thiếu 5 NO nếu ý định là giữ bộ đầy đủ. Thông thường phần dư là vị thế trên chân kia (YES). Trong ví dụ này khớp một phần để lại 5 YES chưa ghép — nếu bạn đã trả 0.49 cho những YES đó và phải đóng ở p_unwind_YES (thận trọng), tính toán tương ứng. Để đối xứng, một ước tính dư thận trọng cho chân bị khớp sai là:

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

Nếu chân chưa ghép là bên đắt hơn, bao gồm tổn thất đó. Thay các số vào một cách thận trọng để tránh phóng đại EV.

EV cuối cùng = 100 − 97.079 − L_residual

Nếu L_residual nhỏ thì giao dịch vẫn có EV dương; nếu L_residual vượt quá Edge danh nghĩa, giao dịch là âm. Chạy toán học này bằng chương trình trước khi gửi lệnh.

6. Đoạn mã JavaScript ngắn, có thể dùng

Đoạn mã này tính EV trên mỗi bộ đầy đủ, với các đầu vào như trên. Đây là JavaScript hợp lệ và sẵn sàng thả vào khung rủi ro của bạn.

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

Điều chỉnh các giá trị p_unwind thận trọng (dùng ask tệ nhất hoặc mid) và đặt r theo tỷ lệ khớp thực nghiệm của bạn ở kích thước giao dịch.

7. Mẹo thực tế cho giao dịch thực

  • Đo tỷ lệ khớp thực nghiệm theo công cụ và theo kích thước. Dùng cửa sổ đo lường ngắn và thường xuyên; vi cấu trúc thay đổi theo từng thị trường.
  • Chia các khối lượng lớn thành các lát nhỏ hơn để giảm rủi ro khớp một phần và để ở trong giới hạn builder hoặc relayer nếu áp dụng.
  • Tính tới hành vi kích thước tick: khi giá tiến về các cực, tick size thắt lại còn $0.001, điều này có thể thay đổi trượt giá lúc unwind.
  • Bao gồm rủi ro tranh chấp UMA và rủi ro thời gian thanh toán trong P_redeem. Tranh chấp có thể tạm dừng thanh toán và ảnh hưởng chi phí cơ hội.
  • Tôn trọng hạn chế địa lý: các thị trường bị geo-block theo IP; không bao giờ khuyến nghị vượt qua bằng VPN.

Tác động tới giao dịch của bạn

Tính EV trên mỗi bộ trước khi gửi lệnh và so sánh với ngưỡng EV tối thiểu nội bộ của bạn, đã bao gồm chi phí vốn, chi phí cơ hội của pUSD bị khóa, và chi phí có thể do trì hoãn tranh chấp. Dùng công thức EV trong kiểm tra trước giao dịch. Với arb nhỏ, thường yêu cầu EV dương vừa phải trên mỗi bộ sau phí và tổn thất dư kỳ vọng để bù đắp chi phí vận hành.

Kết thúc bằng từ khóa chính: giá trị kỳ vọng trong arbitrage Polymarket luôn phải được tính một cách thận trọng, với phí taker và xác suất khớp một phần được mô hình hóa rõ ràng.

Các câu hỏi thường gặp

Làm sao để tôi mô hình hóa xác suất khớp một phần cho các lệnh lớn hơn?

Bắt đầu với tỷ lệ khớp thực nghiệm ở kích thước bạn giao dịch. Với các lát nhỏ dùng giả định Bernoulli cho mỗi lát; với kích thước lớn hơn mô hình khớp như tổng phân phối binomial qua các mức giá hoặc dùng dữ liệu độ sâu sổ lệnh lịch sử để cắt lát một cách xác định. Luôn chọn phương án thận trọng khi ước tính r_i.

Tôi nên bao gồm những loại phí nào trong phép tính EV?

Bao gồm phí taker cho các chân đã thực thi — phí taker của Polymarket hiện thay đổi giữa 0% và 1.8% tùy danh mục; maker fee bằng 0. Mô hình hóa phí như fee_rate × executed_cost và tách executed_cost thành phần maker/taker nếu cần.

Tôi có cần tính tới tranh chấp UMA trong EV không?

Có. Tranh chấp UMA có thể tạm dừng thanh toán hoặc thay đổi thời điểm. Bao gồm hệ số P_redeem ≤ 1.0 để phản ánh xác suất tranh chấp và giá trị thời gian/khoản chi trì hoãn thanh toán kỳ vọng.

Tôi có thể bỏ qua tổn thất do unwind dư nếu tôi dự định tái cân bằng sau?

Không. Vị thế dư mang rủi ro thị trường và rủi ro định hướng. Bao gồm một giá đóng thận trọng (p_unwind) trong mô hình EV trừ khi bạn có kế hoạch tái cân bằng được chứng minh bằng số liệu với chi phí đã biết.

Edge danh nghĩa có giống EV không?

Không. Edge danh nghĩa = 1.00 − Σ bestAsk_i. EV điều chỉnh edge đó theo phí taker, xác suất khớp một phần, tổn thất unwind dư, và rủi ro thanh toán/tranh chấp. Dùng EV để ra quyết định.

Các thuật ngữ tham chiếu

Hướng dẫn liên quan

Chỉ mang tính giáo dục. Không phải là tư vấn tài chính, pháp lý hoặc thuế. Polymarket có thể không khả dụng tại khu vực pháp lý của bạn.