Polymarket Bot Tutorial · Chương 16/32
Statistical arbitrage trên Polymarket: các cặp cross-market (sự kiện tương quan), spread Polymarket-vs-Kalshi, mean reversion, và cách sizing stat-arb positions khi các market cuối cùng cũng resolve.
Chương này bao gồm gì
Statistical arbitrage trên prediction markets khai thác các mispricing tạm thời giữa những market có tương quan - cùng một sự kiện trên Polymarket và Kalshi, hoặc các market liên quan ngay trong Polymarket. Biên lợi nhuận rất nhỏ (thường 1-3 cent) và dễ bị tổn thương về mặt vận hành. Chương này nói thẳng về cái gì hiệu quả, cái gì không, và rủi ro thực thi nhiều leg có thể làm hỏng hầu hết mọi nỗ lực.
Cross-market statistical arbitrage khai thác các bất nhất tạm thời về giá giữa Polymarket và Kalshi, Polymarket và Manifold, hoặc giữa các market tương quan trong Polymarket. Biên lợi nhuận rất nhỏ (thường 1-3 cent) và đòi hỏi thực thi nhanh ở cả hai leg. Chương này là playbook thẳng thắn, bao gồm cả độ phức tạp vận hành có thể phá hỏng hầu hết nỗ lực.
- Stat-arb nghĩa là gì trong prediction markets
- Ví dụ spread Polymarket-vs-Kalshi
- Các cặp trong Polymarket (sự kiện tương quan)
- Mean reversion so với trend continuation
- Quy mô vị thế cho market sẽ resolve (không phải perpetual)
- Rủi ro: divergence kéo dài đến tận lúc resolution
- Code: pairs monitor và threshold-trigger
Stat-arb nghĩa là gì trong prediction markets
Statistical arbitrage trong prediction markets có nghĩa là giao dịch spread giữa hai market lẽ ra phải được định giá nhất quán. Trên Polymarket, có ba dạng phổ biến.
- Cross-venue: cùng một sự kiện trên Polymarket và Kalshi (hoặc Manifold, PredictIt). Giá nên hội tụ; trên thực tế, nó thường lệch 2-5 cent.
- Same-event-pair: parent so với tổng các leg trong NegRisk multi-outcome market. Bất biến tổng bằng 1 cho phép bạn arb khi tổng các leg nhỏ hơn 1.0.
- Correlated-event-pair: hai market về các outcome liên quan (ví dụ: “Trump là tổng thống vào ngày 1/1” và “Trump là tổng thống vào ngày 1/3”). Lý tưởng là giá của chúng chênh nhau trong khoảng 2-3 cent.
Biên lợi nhuận rất nhỏ. Độ phức tạp vận hành là có thật. Hầu hết các nỗ lực thất bại ở khâu thực thi, không phải ở lý thuyết.
Ví dụ spread Polymarket-vs-Kalshi
Theo quan sát trong giai đoạn 2025-26, Polymarket và Kalshi niêm yết cùng các sự kiện lớn ở Mỹ nhưng thường có giá lệch nhau 1-4 cent một cách ổn định. Khoảng cách này tồn tại vì các nguyên nhân cấu trúc mà bạn cần mô hình hóa trong bất kỳ arb nào.
Các yếu tố cấu trúc:
- Fee asymmetry: Kalshi thu 4-7% trên các giao dịch thắng (tùy market); Polymarket không thu taker fee. Công thức arb phải trừ hết phần “cắn” của Kalshi.
- Settlement risk premium: khi điều kiện resolution của một market mơ hồ, UMA của một venue có thể resolve khác với judges của venue kia. Market đã phản ánh phần rủi ro này vào giá.
- Trader population: Polymarket có xu hướng trẻ hơn và thiên về crypto-native; Kalshi thiên về professional / hedge. Họ thường bất đồng có hệ thống về cùng một sự kiện.
Arb hoạt động khi khoảng cách vượt quá phí premium cấu trúc cộng với fees. Một gap 5 cent trên market mà structural premium là 1c và tổng fees là 1c thì lợi thế thực là 3c.
Các cặp trong Polymarket (sự kiện tương quan)
Trong Polymarket, các cặp sự kiện tương quan dễ arb hơn cross-venue. Cùng cấu trúc phí, cùng wallet, có thể thực thi atomic.
Ví dụ thường xuyên định giá không nhất quán:
- Trump là tổng thống vào ngày A so với Trump là tổng thống vào ngày B (trong đó B muộn hơn A < 90 ngày).
- Bitcoin có chạm $100k trước ngày 31/7 so với trước ngày 31/8.
- Leg Yes và No của cùng một market nhị phân (tổng phải = 1.0; đôi khi lệch đến 1.04 trong order book mỏng).
Arb Yes+No=1 là sạch nhất: đọc cả hai leg từ cùng một market, bắn FOK cho cả hai nếu tổng xuống dưới 0.97 (để tính spread tax). Vốn yêu cầu gần như bằng nhau ở mỗi leg; thực thi là atomic khi cả hai fill trả về trong cùng một response.
Mean reversion vs trend continuation
Có hai regime stat-arb. Mean reversion: cặp đã tách ra vì nhiễu; bạn đặt cược vào việc hội tụ lại. Trend continuation: cặp bắt đầu diverge vì thông tin mới xuất hiện; bạn đặt cược vào việc tiếp tục divergence.
Điều khó là phân biệt chúng. Heuristic: nếu divergence xảy ra với khối lượng thấy rõ (một whale đã quét một leg của book), đó là news - chỉ fade nếu bạn có model. Nếu nó trôi từ từ với volume thấp, đó là nhiễu - giao dịch reversion với sự tự tin.
Với người mới xây bot: chỉ giao dịch mean reversion, trên các cặp mà divergence nhỏ hơn 1 độ lệch chuẩn của drift lịch sử. Trend continuation đòi hỏi một model bắt được news; nếu không có, bạn đang giao dịch ngược lại informed flow.
Sizing cho market sẽ resolve (không phải perpetual)
Prediction markets sẽ resolve. Crypto pairs thì không. Điều này làm thay đổi công thức.
Một vị thế pair-arb trên Polymarket có lịch thanh toán cố định: khi cả hai market resolve, chênh lệch giữa spread dự đoán và spread thực tế sẽ được khóa lại. Không có rolling, không có thời gian nắm giữ vô hạn.
Hệ quả về sizing: mức tối đa bạn có thể giữ bị giới hạn bởi thời gian tới lúc resolution, vì vốn bị khóa cho đến khi đó. Một cặp resolve trong 6 tháng có thể kiếm cho bạn 3c mỗi share nhưng trong thời gian chờ đợi bạn không thể đưa thêm vốn vào nếu cả hai market đã được size đầy đủ.
Cách hiểu đúng: stat-arb trên Polymarket là một chuỗi giao dịch có thời hạn, không phải một chiến lược liên tục. Hãy so sánh PnL trên mỗi đơn vị vốn bị khóa mỗi ngày, không phải gross PnL.
Rủi ro: divergence kéo dài đến tận lúc resolution
Kịch bản xấu nhất của stat-arb là dự đoán về hội tụ của bạn sai vì giả định nền tảng đã sai. Ví dụ:
- Bạn short “Trump là tổng thống vào ngày 1/4” với kỳ vọng nó sẽ hội tụ về “Trump là tổng thống vào ngày 1/3” - nhưng market ngày 1 resolve YES và market ngày 2 resolve NO vì một vụ luận tội vào tháng 3. Thesis “spread phải phẳng” của bạn là sai.
- Bạn arb Polymarket và Kalshi trên cùng một người thắng NBA Finals. Polymarket resolve theo đội thắng theo series chính thức; Kalshi resolve theo một định nghĩa hơi khác, có bao gồm overtime tie-breakers theo cách khác. Cả hai đều resolve YES theo điều khoản của riêng chúng, nhưng theo hai hướng ngược nhau.
Hãy đọc kỹ tiêu chí resolution của từng market. Cross-venue arb chỉ cần lệch một điểm trong logic resolution là có thể thành thua lỗ toàn phần ở cả hai leg.
Code: pairs monitor và threshold-trigger
Tham khảo: theo dõi hai token tương quan, kích hoạt arb khi spread vượt ngưỡng.
def pairs_monitor(token_a, token_b, threshold_cents=3, size=10):
"""Buy A and Sell B when (1 - ask_A) + bid_B > 1 + threshold."""
while True:
book_a = fetch_book(token_a)
book_b = fetch_book(token_b)
if not (book_a.best_ask and book_b.best_bid):
time.sleep(2); continue
# implied: cost of buying A at ask + value of selling B at bid
edge = (1 - book_a.best_ask) + book_b.best_bid - 1
if edge > threshold_cents / 100:
print(f"ARB edge={edge:.3f}; firing")
r_a = fok_buy(token_a, price=book_a.best_ask, size=size)
if r_a.status != "matched": continue
r_b = fok_sell(token_b, price=book_b.best_bid, size=size)
if r_b.status != "matched":
# leg A filled, B failed -- unhedged, exit A
fok_sell(token_a, price=book_a.best_bid, size=size)
time.sleep(3)
Cleanup-on-partial-fill là cực kỳ quan trọng. Nếu không có nó, việc khớp một phần sẽ khiến bot bị phơi exposure theo directional, hoàn toàn ngược với mục đích của stat-arb.





