Polymarket Bot Tutorial · Sura ya 18 kati ya 32
UMA dispute prediction bots kwenye Polymarket: detect Optimistic Oracle proposals, tabiri dispute likelihood, exploit pre-and-post-dispute price asymmetry, na epuka disputed-market death spirals.
Sura hii inafunika nini
UMA Optimistic Oracle inaresolve Polymarket markets, na disputes zinaunda price anomalies kabla na baada ya kufira. Tradeable patterns zinakuwepo pande zote mbili za dispute, lakini strategy ni operationally complex na imechoma bots zaidi kuliko imelisha. Sura hii ni honest playbook.
- Jinsi UMA Optimistic Oracle inavyofanya kazi
- Kudetect proposal on-chain
- Dispute predictors (volume, ambiguity, history)
- Pre-dispute price asymmetry
- Post-dispute trade setups
- Wakati USITRADE disputed markets
- Code: jisajili kwa UMA proposed/disputed events
Jinsi UMA Optimistic Oracle inavyofanya kazi
UMA Optimistic Oracle (OO) ni dispute resolution layer ya Polymarket. Kila market resolution inapita kupitia OO; nyingi haziDisputewe na zinasettle automatically. ZinazoContestedwa - disputes - zinatrigger 24-72 hour voting period ambapo UMA token holders wanaamua outcome.
Lifecycle: Polymarket resolver inaipropose price (0 = NO won, 1 = YES won). Baada ya 2-hour challenge window, ikiwa hakuna anayedispute, price inafinalized na CTF contract inasambaza payouts. Ikiwa mtu anadispute, market inaenter voting window; UMA holders wanaweka votes, majority inashinda.
Kwa bot, relevant events ni ProposePrice (proposal entered, challenge window opens) na DisputePrice (dispute filed, voting period begins). Jisajili kwa hizi kufuatilia market resolution state in real time.
Kudetect proposal on-chain
UMA OO contract kwenye Polygon inaemit ProposePrice event na parameters (requester, identifier, timestamp, ancillaryData, proposer, proposedPrice). Chuja na Polymarket known requester address ku-limit kwa relevant proposals.
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}")
ancillaryData field ni hex-encoded JSON inayodescribe market question. Kuidecodi inakupa market identifier unayoweza kucross-reference dhidi ya open positions zako.
Dispute predictors (volume, ambiguity, history)
Pre-dispute signals tatu zinacorrelate na later actual disputes.
- Total volume: markets na > $1M lifetime volume zinadisputed kwa 4x rate ya small markets. Capital zaidi at stake = incentive zaidi ya kuchallenge.
- Ambiguous wording: market yoyote na "or similar," "officially confirmed," au compound conditions (date AND specific outcome) ina elevated dispute rates.
- Past disputes kwenye event sawa: ikiwa earlier proposal ilikuwa imedisputed na imere-proposed, second proposal inadisputed kwa 2-3x normal rate.
Bot inaweza kucompute "dispute probability" score kutoka features hizi na kuepuka kuchukua positions katika markets juu ya threshold karibu na resolution.
Pre-dispute price asymmetry
Katika masaa kabla ya likely dispute, market price mara nyingi inaonyesha asymmetric movement: side ambayo proposer aliname kama YES inadrift chini (kwa sababu traders wanaogopa dispute itaiflip), other side inadrift juu.
Ikiwa una directional view kwa namna ambavyo dispute itaresolve, hii ni tradeable window. Risk: ikiwa dispute haifanyiki, asymmetry inareverse wakati challenge window inafunga uneventfully na prices zinasnap nyuma kwa proposed direction.
Honest: pre-dispute asymmetry trades nyingi ni losing trades kwa sababu challenges nyingi zinaresolve in favor ya original proposal. Strategy inafanya kazi tu unapokuwa na specific information kuhusu kwa nini hii dispute ina likely kuSustainedwa.
Post-dispute trade setups
Baada ya dispute kufiled, market inatrade kwa masaa 24-72 katika "limbo" - known to be disputed, outcome to be voted. Setups mbili zinakuwepo.
Convergence kwa UMA consensus: ikiwa dispute resolution inasignaled mapema (mfano prominent UMA voter publicly anachukua side), price inahama kuelekea resolution hiyo. Bot inayoangalia UMA Discord / Twitter signals + price action inaweza kucapture hii 30-60% ya muda.
Volatility farming: limbo periods zina wide spreads. Patient market maker inaweza kupata spread tax katika traders kadhaa wanaorotate ndani na nje wakati wa voting window. Inventory risk ni juu; dimensione accordingly.
Zote zinahitaji comfort na genuine possibility ya resolution dhidi ya position yako. Treat dispute-period inventory kama half-size at most.
Wakati USITRADE disputed markets
Hali tatu ambapo dispute trade ni wrong by default.
- Huna UMA-specific view. Ikiwa edge yako pekee ni "original proposal inaonekana correct kwangu," huna edge juu ya original proposer - na dispute filer anafikiri opposite. Voting outcome ni coin flip huwezi kutabiri.
- Dispute iko kwenye ambiguous wording. UMA voters generally wanachukua side ya strict-reading-of-the-question. Ikiwa market ilisema "by January 31" na event ilitokea February 1, UMA itaresolve NO bila kujali intuition ya trader population.
- Unashikilia inventory kutoka kabla ya dispute. Kuongeza kwa existing position ku "average down" kupitia limbo ni classic capital-destruction pattern. Shikilia au exit, kamwe usiongeze.
Code: jisajili kwa UMA proposed/disputed events
Reference: WebSocket subscription kwa UMA OO events, gefilterd na Polymarket requester.
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)
Pattern: jisajili, decode, alert. Kuact kwenye disputes algorithmically ni high-risk; kazi ya bot kawaida ni kusurface event kwa human reviewer.





