Polymarket Bot Tutorial · Sura ya 16 kati ya 32
Statistical arbitrage kwenye Polymarket: cross-market pairs (correlated events), Polymarket-vs-Kalshi spreads, mean reversion, na jinsi ya kudimension stat-arb positions wakati markets hatimaye zinaresolve.
Sura hii inafunika nini
Statistical arbitrage kwenye Polymarket inaexploit transient mispricings kati ya correlated markets - event sawa kwenye Polymarket vs Kalshi, au related markets ndani ya Polymarket yenyewe. Edges ni ndogo (1-3 cents typical) na operationally fragile. Sura hii ni honest kuhusu kinachofanya kazi, kisichofanya kazi, na multi-leg execution risk inayoua majaribio mengi.
- Stat-arb inamaanisha nini katika prediction markets
- Polymarket-vs-Kalshi spread examples
- Pairs ndani ya Polymarket (correlated events)
- Mean reversion vs trend continuation
- Sizing kwa resolving (sio perpetual) markets
- Risk: divergence past resolution
- Code: pairs monitor na threshold-trigger
Stat-arb inamaanisha nini katika prediction markets
Statistical arbitrage kwenye prediction markets inamaanisha kutrade spread kati ya markets mbili ambazo zinapaswa kupricewa consistently. Flavors tatu ni gangbana kwenye Polymarket.
- Cross-venue: event sawa kwenye Polymarket na Kalshi (au Manifold, PredictIt). Pricing inapaswa kuconverge; kivitendo inadrift 2-5 cents.
- Same-event-pair: parent vs sum ya legs katika NegRisk multi-outcome markets. Sum-to-1 invariant inakuruhusu kuarb wakati legs zinajumlika hadi chini ya 1.0.
- Correlated-event-pair: markets mbili kuhusu related outcomes (mfano "Trump president on Jan 1" vs "Trump president on Mar 1"). Zinapaswa kupricewa ndani ya 2-3 cents za kila moja.
Edges ni ndogo. Operational complexity ni real. Majaribio mengi yanafa katika execution, sio katika theory.
Polymarket-vs-Kalshi spread examples
Kutoka observation katika 2025-26, Polymarket na Kalshi zinalist same major US events lakini zinaprice 1-4 cents apart kwa steady basis. Gap ipo kwa structural reasons unahitaji kumodel katika arb yoyote.
Structural drivers:
- Fee asymmetry: Kalshi inachukua 4-7% kwenye winning trades (inatofautiana per market); Polymarket inachukua 0 taker fee. Arb math lazima inet out Kalshi bite.
- Settlement risk premium: wakati market resolution ni ambiguous, UMA ya venue moja inaweza kuresolve tofauti na judges ya nyingine. Market inaprice hii ndani.
- Trader population: Polymarket inatrend younger na more crypto-native; Kalshi inatrend professional / hedge. Wanapoteza juu ya same events systematically.
Arb inafanya kazi wakati gap inaexceed structural premium plus fees. 5-cent gap kwenye market ambapo structural premium ni 1c na combined fees ni 1c ni 3c real edge.
Pairs ndani ya Polymarket (correlated events)
Ndani ya Polymarket, correlated-event pairs ni easier kuarb kuliko cross-venue. Fee structure sawa, wallet sawa, atomic execution feasible.
Mifano inayoprice consistently inconsistently:
- Trump president on date A vs Trump president on date B (ambapo B ni later kuliko A kwa < siku 90).
- Will Bitcoin hit $100k by July 31 vs $100k by August 31.
- Yes vs No legs kwenye binary market sawa (sum inapaswa = 1.0; wakati mwingine inadrift kama 1.04 katika thin books).
Yes+No=1 arb ni cleanest: soma legs zote kutoka market sawa, fire FOK kwenye zote ikiwa sum inadrop chini ya 0.97 (ikiruhusu spread tax). Capital required ni roughly sawa kwenye kila leg; execution ni atomic wakati fills zote zinakuja katika response sawa.
Mean reversion vs trend continuation
Stat-arb regimes mbili. Mean reversion: pair imedrift apart kwa noise reason; unabeti kwenye convergence. Trend continuation: pair imeanza kudiverge kwa sababu new information ilifika; unabeti kwenye further divergence.
Kuzitofautisha ni hard part. Heuristic: ikiwa divergence ilitokea kwenye visible volume (whale aliwalk leg book moja), ni news - fade tu ikiwa una model. Ikiwa ilidrift polepole na low volume, ni noise - trade reversion kwa confidence.
Kwa new builders: trade mean reversion tu, kwenye pairs ambapo divergence ni < 1 standard deviation ya historical drift. Trend continuation inahitaji model inayokamata news; bila moja, unatrade dhidi ya informed flow.
Sizing kwa resolving (sio perpetual) markets
Prediction markets zinaresolve. Crypto pairs hazifanyi. Hii inabadilisha math.
Pair-arb position kwenye Polymarket ina fixed payout schedule: wakati markets zote zinaresolve, tofauti kati ya predicted spread na actual spread imelocked. Hakuna rolling, hakuna infinite holding.
Sizing implication: maximum unayoweza kushikilia inabounded na time-to-resolution, kwa sababu capital imelocked hadi hapo. Pair inayoresolve katika miezi 6 inaweza kukulipa 3c per share lakini huwezi kuweka capital zaidi kwa kazi katikati ikiwa markets zote zimedimensioned kabisa.
Right framing: stat-arb kwenye Polymarket ni series ya bounded-time trades, sio continuous strategy. Compare PnL per unit ya locked capital per day, sio gross PnL.
Risk: divergence past resolution
Worst stat-arb outcome ni prediction-of-convergence prediction yako ni wrong kwa sababu underlying premise ilikuwa wrong. Mifano:
- Ulishort "Trump president on Apr 1" ukitarajia ingeconverge kwa "Trump president on Mar 1" - lakini date 1 market inaresolve YES na date 2 inaresolve NO kwa sababu ya March impeachment. "Spread should be flat" thesis yako ilikuwa wrong.
- Ulibarbiarb Polymarket vs Kalshi kwenye NBA Finals winner sawa. Polymarket inaresolve kwa team iliyoshinda official series; Kalshi inaresolve kwenye slightly different definition inayojumuisha overtime tie-breakers tofauti. Zote zinaresolve YES kwenye stated terms zao, lakini katika opposite directions.
Soma kila market resolution criteria kwa makini. Cross-venue arb iko resolution-mismatch moja kutoka full loss kwenye legs zote mbili.
Code: pairs monitor na threshold-trigger
Reference: monitor tokens mbili correlated, fire arb wakati spread inacross threshold.
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 ni critical. Bila, partial execution inaacha bot directionally exposed, ambayo ni opposite ya whole point ya stat-arb.





