Polymarket Bot Tutorial · Chapter 18 of 32

Bot prediksi sengketa UMA di Polymarket: mendeteksi proposal Optimistic Oracle, memprediksi kemungkinan dispute, memanfaatkan asimetri harga sebelum dan sesudah dispute, serta menghindari spiral kematian market yang disengketakan.

Apa yang dibahas di chapter ini

Optimistic Oracle (OO) milik UMA menyelesaikan market Polymarket, dan dispute menciptakan anomali harga sebelum dan sesudah terjadi. Pola yang bisa ditradingkan ada di kedua sisi dispute, tetapi strateginya kompleks secara operasional dan sudah membuat lebih banyak bot rugi daripada untung. Chapter ini adalah playbook yang jujur.

  • Cara kerja UMA Optimistic Oracle
  • Mendeteksi proposal on-chain
  • Prediktor dispute (volume, ambiguity, sejarah)
  • Asimetri harga sebelum dispute
  • Setup trade pasca-dispute
  • Kapan TIDAK perlu trade market yang dipersengketakan
  • Kode: subscribe ke event UMA proposed/disputed

Cara kerja UMA Optimistic Oracle

Optimistic Oracle (OO) milik UMA adalah layer penyelesaian dispute untuk Polymarket. Setiap market resolution melewati OO; sebagian besar tidak diperdebatkan dan settle secara otomatis. Yang diperebutkan - dispute - memicu voting period 24-72 jam di mana pemegang token UMA memutuskan hasilnya.

Alurnya: resolver Polymarket mengajukan harga (0 = NO menang, 1 = YES menang). Setelah challenge window 2 jam, jika tidak ada yang dispute, harga difinalkan dan kontrak CTF mendistribusikan payout. Jika ada yang dispute, market masuk ke voting window; pemegang UMA memberikan suara, mayoritas menang.

Untuk bot, event yang relevan adalah ProposePrice (proposal masuk, challenge window dibuka) dan DisputePrice (dispute diajukan, periode voting dimulai). Subscribe ke event ini untuk melacak state penyelesaian market secara real time.

Mendeteksi proposal on-chain

Contract UMA OO di Polygon memancarkan event ProposePrice dengan parameter (requester, identifier, timestamp, ancillaryData, proposer, proposedPrice). Filter berdasarkan known requester address milik Polymarket untuk membatasi ke proposal yang relevan.

POLY_REQUESTER = "0x..."  # Polymarket Adjudicator
filt = oo_contract.events.ProposePrice.create_filter(
    fromBlock="latest",
    argument_filters={"requester": POLY_REQUESTER}
)
for event in filt.get_new_entries():
    market_id = decode_ancillary(event.args.ancillaryData)
    proposed = "YES" if event.args.proposedPrice == 1e18 else "NO"
    print(f"PROPOSE: market {market_id} → {proposed}")

Field ancillaryData adalah JSON yang di-encode dalam hex dan menjelaskan pertanyaan market. Dengan mendekodenya, Anda mendapatkan market identifier yang bisa dicocokkan dengan open positions Anda.

Prediktor dispute (volume, ambiguity, sejarah)

Tiga sinyal sebelum dispute berkorelasi dengan dispute aktual yang terjadi kemudian.

  • Total volume: market dengan volume seumur hidup > $1M dipersengketakan pada laju 4x lebih tinggi daripada market kecil. Semakin besar modal yang dipertaruhkan = semakin besar insentif untuk challenge.
  • Ambiguous wording: market apa pun dengan frasa seperti "or similar," "officially confirmed," atau kondisi gabungan (tanggal DAN hasil spesifik) memiliki tingkat dispute yang lebih tinggi.
  • Past disputes pada event yang sama: jika proposal sebelumnya sudah didispute dan diajukan ulang, proposal kedua didispute pada laju 2-3x normal.

Bot dapat menghitung skor "probabilitas dispute" dari fitur-fitur ini dan menghindari mengambil posisi di market yang skornya melewati ambang batas dekat waktu resolution.

Asimetri harga sebelum dispute

Dalam beberapa jam sebelum dispute yang kemungkinan besar terjadi, harga market sering menunjukkan pergerakan asimetris: sisi yang disebut proposer sebagai YES turun (karena trader khawatir dispute akan membalik hasil), sedangkan sisi lainnya naik.

Jika Anda punya view arah tentang bagaimana dispute akan terselesaikan, ini adalah jendela yang bisa ditradingkan. Risikonya: jika dispute tidak terjadi, asimetri akan berbalik ketika challenge window berakhir tanpa insiden dan harga kembali ke arah proposal.

Jujur: sebagian besar trade asimetri pra-dispute adalah trade rugi karena kebanyakan challenge diselesaikan sesuai proposal awal. Strategi ini hanya bekerja jika Anda punya informasi spesifik tentang mengapa dispute ini kemungkinan besar akan dipertahankan.

Setup trade pasca-dispute

Setelah dispute diajukan, market diperdagangkan selama 24-72 jam dalam kondisi "limbo" - sudah diketahui disengketakan, hasil menunggu voting. Ada dua setup.

Convergence ke konsensus UMA: jika sinyal penyelesaian dispute muncul lebih awal (misalnya, voter UMA yang menonjol secara publik mengambil satu sisi), harga bergerak menuju resolusi itu. Bot yang memantau sinyal UMA Discord / Twitter + price action bisa menangkap ini 30-60% dari waktu.

Volatility farming: periode limbo memiliki spread yang lebar. Market maker yang sabar dapat memperoleh spread tax dari beberapa trader yang bergantian masuk dan keluar selama voting window. Risiko inventory tinggi; atur ukuran posisi dengan hati-hati.

Keduanya memerlukan kesiapan menghadapi kemungkinan nyata bahwa resolusi akan berlawanan dengan posisi Anda. Perlakukan inventory pada periode dispute sebagai setengah ukuran paling banyak.

Kapan TIDAK perlu trade market yang dipersengketakan

Tiga situasi di mana trade dispute salah secara default.

  • Anda tidak punya view khusus UMA. Jika satu-satunya edge Anda adalah "proposal awal terlihat benar menurut saya," Anda tidak punya edge atas proposer awal - dan pengaju dispute berpikir sebaliknya. Hasil voting adalah coin flip yang tidak bisa Anda prediksi.
  • Dispute terjadi pada wording yang ambigu. Voter UMA umumnya berpihak pada pembacaan ketat terhadap pertanyaan. Jika market mengatakan "by January 31" dan event terjadi pada 1 Februari, UMA akan menyelesaikan NO terlepas dari intuisi populasi trader.
  • Anda memegang inventory dari sebelum dispute. Menambah posisi yang sudah ada untuk "average down" selama limbo adalah pola klasik penghancuran modal. Tahan atau exit, jangan pernah menambah.

Kode: subscribe ke event UMA proposed/disputed

Referensi: subscription WebSocket ke event UMA OO, difilter berdasarkan requester Polymarket.

from web3 import Web3
w3 = Web3(Web3.WebsocketProvider(POLYGON_WSS))
oo = w3.eth.contract(address=UMA_OO_ADDR, abi=UMA_OO_ABI)
POLY = "0x...".lower()

dispute_filter = oo.events.DisputePrice.create_filter(fromBlock="latest")
propose_filter = oo.events.ProposePrice.create_filter(fromBlock="latest")

while True:
    for event in dispute_filter.get_new_entries():
        if event.args.requester.lower() == POLY:
            on_dispute(event)
    for event in propose_filter.get_new_entries():
        if event.args.requester.lower() == POLY:
            on_propose(event)
    time.sleep(2)

def on_dispute(event):
    market_q = decode_ancillary_to_question(event.args.ancillaryData)
    send_telegram(f"DISPUTE: {market_q}")
    # If we hold a position in this market, alert + consider exit
    if market_q in our_positions:
        flag_position_for_review(market_q)

Pola kerjanya: subscribe, decode, alert. Bertindak atas dispute secara algoritmik berisiko tinggi; tugas bot biasanya adalah menampilkan event tersebut kepada reviewer manusia.

Pertanyaan yang sering diajukan

Apa itu UMA Optimistic Oracle?
Optimistic Oracle milik UMA adalah sistem yang menyelesaikan market Polymarket. Seorang proposer mengajukan jawaban yang diusulkan; jika tidak ada yang dispute dalam window tertentu, jawaban itu menjadi final. Jika didispute, pemegang token UMA memilih melalui voting (DVM) untuk menyelesaikannya. Sebagian besar market Polymarket selesai tanpa dispute - dispute adalah kasus pengecualian.
Bagaimana cara mendeteksi proposal UMA secara real time?
Subscribe ke contract UMA Optimistic Oracle V2 di Polygon untuk event ProposePrice, difilter berdasarkan alamat adapter Polymarket. Proposal memicu dispute window 2 jam, selama itu harga market sering menyimpang dari 1.00 / 0.00 karena trader memasukkan risiko dispute ke harga.
Apa yang memprediksi dispute UMA?
Tiga sinyal: (1) Volume - market dengan volume tinggi (>$10M) lebih sering memicu dispute karena hadiahnya lebih besar. (2) Ambiguity dalam kriteria resolution - jika judul market samar, risiko dispute naik. (3) Riwayat dispute sebelumnya dari wallet proposer. Gabungkan ini dalam logistic regression untuk baseline dispute predictor.
Bisakah saya trade setelah dispute diajukan?
Bisa, tetapi berisiko. Begitu didispute, market masuk voting DVM, yang memakan waktu sekitar 48-72 jam dan hasilnya binary (dan final). Harga biasanya mengarah ke salah satu sisi sebelum voting. Bot yang mengambil sisi berdasarkan analisis legal/faktual bisa untung, tetapi jika salah, kerugiannya total.
Apakah strategi dispute UMA sudah ramai?
Lebih sedikit daripada market making. Prediksi dispute UMA membutuhkan pembacaan konteks legal dan politik, yang tidak dilakukan kebanyakan quant bot. Strategi ini masih punya ruang untuk judgment manusia plus infrastruktur kuantitatif - sangat cocok untuk hybrid bot.
Apa kasus terburuk untuk bot dispute UMA?
Memegang posisi ketika DVM memilih arah yang berlawanan. Batasi risiko per market yang disengketakan - kami menggunakan maksimal 50 USD per satu disputed market terlepas dari confidence, karena setiap keputusan yang "jelas" pada akhirnya ada yang meleset.