Polymarket Bot Tutorial · Chapter 13 of 32

Market making di Polymarket: cara menampilkan bid dan ask, menangkap spread, mendapatkan maker rebates (20-25% dari taker fees), math inventory risk, dan kapan MM bekerja di prediction markets.

Apa yang dibahas di chapter ini

Market making di Polymarket berarti secara terus-menerus menampilkan kedua sisi order book dan mendapatkan spread pada setiap round trip. Strategi ini sudah dipahami dengan baik dalam traditional finance; kekhasan Polymarket adalah program maker-rebate dan profil adverse-selection dari prediction markets, yang lebih tinggi daripada venue CFD. Chapter ini adalah math yang jujur.

  • Market making dalam bahasa sederhana
  • Spread + rebate edge
  • Inventory risk dan skew
  • Kapan MM bekerja di Polymarket (dan kapan tidak)
  • Code skeleton: quote kedua sisi di +/- N cents
  • Menyesuaikan quote saat ada news flow
  • Mematikan bot saat adverse selection melonjak

Market making dalam bahasa sederhana

Seorang market maker secara terus-menerus menampilkan harga beli (bid) dan harga jual (ask), dengan jarak lebih lebar dari mid sebesar spread tetap. Saat seseorang menekan bid, maker membeli murah; saat seseorang mengangkat ask, maker menjual mahal; selisih antara bid dan ask adalah revenue maker per round trip.

Strategi ini digerakkan oleh order flow, bukan arah pasar. Maker tidak berspekulasi apakah YES akan menang; mereka mengambil posisi bahwa flow akan terus berjalan dan spread akan terus dibayar.

Risikonya adalah adverse selection: orang yang menekan bid Anda punya informasi yang tidak Anda miliki. Seiring waktu, keuntungan MM bergantung pada apakah spread cukup lebar untuk menutupi slippage dari trader yang informed.

Spread + rebate edge

Ada dua stream pendapatan untuk maker di Polymarket.

Spread capture: quote bid 0.45 dan ask 0.47 di sekitar mid 0.46. Setiap fill di bid yang nantinya bisa Anda exit di ask menghasilkan 2 cents. Net edge bergantung pada ketidakseimbangan fill dan pergerakan harga.

Maker rebate: program liquidity rewards Polymarket membayar rebate per share pada maker fills di market yang memenuhi syarat. Angkanya berubah; cek halaman rewards resmi untuk nilai saat ini. Rebate dibayar dalam pUSD secara berkala, terpisah dari trade itu sendiri.

Untuk sebagian besar market, spread capture adalah stream pendapatan yang lebih besar. Rebate menjadi berarti saat Anda bisa menampilkan quote di market yang lebar (tahun pemilu, playoff olahraga besar) ketika Polymarket menaikkan rebate untuk menarik liquidity.

Inventory risk dan skew

MM yang berulang kali terkena di bid akan mengakumulasi posisi long. Risikonya adalah mid turun saat inventory masih long; maker merealisasikan loss pada posisi tersebut meskipun sudah mendapat revenue spread.

Pertahanan: quote skew (geser bid lebih rendah saat inventory long, ask lebih tinggi saat short, untuk mengurangi fill satu arah); inventory cap (berhenti menampilkan sisi yang sudah terlalu long); active rebalancing (sesekali menyeberangi spread untuk mengurangi posisi ketika inventory mencapai batas).

Math-nya: jika 60% fill di bid tidak pernah keluar sebelum harga bergerak 2 cents melawan Anda, strategi ini rugi pada fill tersebut saja. Lakukan skew secara agresif ketika ketidakseimbangan fill > 65/35.

Kapan MM bekerja di Polymarket (dan kapan tidak)

MM bekerja di Polymarket ketika tiga kondisi terpenuhi.

  • Liquid book: cukup banyak quote competition sehingga spread Anda kompetitif tetapi tidak nol. Pasar pemilu 2024, pertandingan besar NFL/NBA, BTC naik/turun 5m semuanya memenuhi.
  • Two-sided flow: baik pembeli maupun penjual aktif. Market satu arah (sudah hampir selesai di 0.95+) tidak memberi apa pun untuk ditangkap oleh maker.
  • Pergerakan harga terbatas: spread capture dimakan oleh lonjakan 5-cents. Market mid-range yang stabil (0.40-0.60) paling ramah.

MM gagal pada: market yang digerakkan news, di mana mid bergerak lebih cepat daripada Anda bisa re-quote; book yang illiquid, di mana Anda satu-satunya quote dan trade berikutnya melewati 5 level; market yang hampir resolve, di mana satu sisi bergerak menuju 0 atau 1.

Code skeleton: quote kedua sisi di +/- N cents

Pseudocode untuk maker paling sederhana yang masih layak.

SPREAD_CENTS = 2
INVENTORY_CAP_SHARES = 50

def make_loop(token_id):
    while True:
        book = fetch_book(token_id)
        mid = (book.best_bid + book.best_ask) / 2
        inv = chain_balance(token_id)

        # Skew: pull the side we are too long on
        bid_px = mid - SPREAD_CENTS/200 - (0.005 if inv > INVENTORY_CAP_SHARES * 0.6 else 0)
        ask_px = mid + SPREAD_CENTS/200 + (0.005 if inv < -INVENTORY_CAP_SHARES * 0.6 else 0)

        cancel_my_existing_quotes(token_id)
        if inv < INVENTORY_CAP_SHARES:
            place_gtc(token_id, side="BUY", price=bid_px, size=5)
        if inv > -INVENTORY_CAP_SHARES:
            place_gtc(token_id, side="SELL", price=ask_px, size=min(5, inv))
        time.sleep(2)

Production maker menambahkan: tracking inventory per sisi, urutan cancel-before-place, jitter pada interval re-quote untuk menghindari pola yang mudah diprediksi, kill-switch saat adverse selection meningkat tajam (bagian berikutnya).

Menyesuaikan quote saat ada news flow

Saat event news terjadi, fair value bergerak lebih dulu sebelum quote Anda ikut bergerak. MM yang tidak menarik quote selama news flow akan terkena pick off.

Signal-nya: cancel rate dari incoming fills melonjak di atas ~3x baseline dalam 30 detik, atau cross-check stream event yang lebih luas (Polymarket Twitter/Discord, Bloomberg headline feed). Saat terdeteksi, maker menarik semua quote selama 60-120 detik, membiarkan mid baru stabil, lalu re-quote di sekitar pusat yang baru.

Implementasi paling sederhana memantau stream last-trade-price untuk token tersebut. Lonjakan lebih dari 2 standard deviations dari rolling-window mean memicu pause. Bot aktif kembali ketika harga sudah stabil selama 30+ detik.

Mematikan bot saat adverse selection melonjak

Hard exit. Jika fill PnL bot selama 50 fill terakhir berubah sangat negatif, ada sesuatu yang salah: entah market sekarang digerakkan news dan Anda seharusnya tidak market making, atau spread Anda terlalu ketat untuk level adverse-selection saat ini.

Kill conditions yang perlu di-encode:

  • 5 consecutive bid fills tanpa ask fill, mid turun > 1c sejak fill pertama.
  • Realized PnL pada 25 round-trip fills terakhir di bawah -25% dari expected.
  • WebSocket disconnect atau stale book terdeteksi.
  • Inventory mencapai cap pada salah satu sisi selama > 5 menit.

Saat terpicu, cancel semuanya, flatten inventory pada market price, hentikan selama 15+ menit. Market maker yang tidak punya kill switch akan kehilangan uang selama periode volatil sampai trader menyadarinya secara manual - dan itu hampir selalu lebih lama daripada yang Anda kira.

Pertanyaan yang sering diajukan

Apakah bot retail benar-benar bisa menghasilkan uang dari market-making di Polymarket?
Terkadang, di market tertentu. Maker rebate (20-25% dari taker fees) ditambah spread 1-3 cents per round trip bisa terakumulasi menjadi return yang nyata. Tetapi di Polymarket, news flow bisa menggerakkan market 20+ cents dalam hitungan detik - market maker tanpa news feed yang cepat akan terkena adverse selection. Paling baik untuk market olahraga yang liquid sebelum pertandingan dan selama periode minim news.
Seberapa lebar saya harus quote di Polymarket?
Minimal, spread yang Anda butuhkan untuk menutupi adverse-selection terburuk yang diperkirakan. Untuk sports/politics yang liquid: 1-3 cents per sisi dari mid. Untuk market tipis: 5+ cents. Jika Anda tidak bisa quote cukup ketat untuk bersaing dengan maker lain tetapi cukup lebar untuk bertahan dari pergerakan, market itu tidak market-makeable untuk Anda.
Batas inventory apa yang harus saya tetapkan?
Hard cap inventory per market di 50-200 USD sampai Anda membuktikan profitabilitas selama beberapa bulan. Lakukan skew pada quote untuk mendorong inventory kembali netral - jika Anda menumpuk Yes, turunkan bid Yes Anda dan turunkan ask No Anda untuk mendorong pembelian No kembali. Jangan pernah biarkan satu market memegang 20%+ dari bankroll Anda.
Apakah saya perlu VPS yang cepat untuk market-make Polymarket?
Ya. Market making adalah strategi Polymarket yang paling sensitif terhadap latency. VPS yang jittery menghasilkan quote stale yang akan dipick off. Kami menggunakan TradingVPS untuk bot MM kami secara khusus karena jitter-nya sangat rendah. Commodity cloud (DO/Vultr) bisa dipakai untuk paper trading MM tetapi tidak untuk live.
Apa perbedaan Polymarket MM dengan crypto MM?
Dua perbedaan besar: (1) Polymarket memiliki outcome events yang pasti (news, final olahraga) yang bisa menggerakkan harga 30-100 cents secara instan - jauh lebih tajam daripada crypto. (2) Market Polymarket pada akhirnya resolve, jadi tidak seperti pasangan crypto, posisi MM memiliki expiration yang pasti. Keduanya mendorong Anda ke holding yang lebih singkat dan risk limits yang lebih ketat.
Apakah saya bisa market-make market crypto 5 menit di Polymarket?
Mungkin, tetapi sangat sulit. Market 5 menit melihat ~288 expirations per hari per pair, didominasi bot yang lebih cepat, dan spread-nya lebih ketat. Sebagian besar bot MM retail rugi di sana karena adverse selection. Bahas strategi crypto 5 menit dengan benar di chapter 23 seri ini.