Polymarket Bot Tutorial · Sura ya 20 kati ya 32
Track Polymarket whale wallets na copy-trade top performers programmatically: identify profitable wallets kupitia leaderboard na on-chain analysis, mirror trades zao na size na timing rules.
Sura hii inafunika nini
Kunakili winning Polymarket wallets ni idea popular, lakini actual whales kwenye Polymarket wengi wanafanya late-window arb kwenye resolved markets, sio directional bets. Sura hii ni honest research kutoka on-chain analysis: ni wallets zipi za kunakili kweli, kwa nini wengi haifai kunakili, na position-sizing math.
- Kuidentify profitable wallets
- On-chain trade detection
- Position sizing relative kwa whale
- Latency: late kiasi gani ni too late
- Filters: fuata tu wallets na verified edge
- Code: detect whale buy event, weka sized copy
Kuidentify profitable wallets
Premise ya whale-copying ni kwamba baadhi ya wallets ni consistently profitable na kunakili entries zao kunacapture sehemu ya edge yao. On-chain analysis ya Polymarket top wallets mwaka 2025-26 ilizalisha sobering result: visible whales wengi wanafanya late-window arbitrage kwenye resolved markets, sio directional trading.
Profile tuliyopima kwenye candidate whale wallets tatu:
- "hhhhhh6" (98.5% win rate, $n M volume) - 88% ya entries kwenye prices ≥0.95, median entry timestamp 226s ya 300s window. Pure tail-yield arb, sio directional.
- "anonymous" (20% win rate) - degenerate gambler. Kunakili kunapoteza pesa.
- "Jkim123" (53.5% win rate) - coin-flip. Sio signal worth kunakili.
0% ya trades za hizi whales ilitokea katika first 120s ya 5-minute window yoyote. Predictive signal (ikiwa yoyote) ingekuja kutoka EARLY-window large entries - lakini hizo wallets sio zile zilizo juu ya leaderboard, kwa sababu ni ngumu.
On-chain trade detection
Kudetect trades ya target wallet inahitaji ofuli polling Polymarket data-api au kujisajili kwa on-chain CTF transfer events. Data-api option ni simpler.
def watch_wallet(wallet_addr, last_seen_ts=0):
while True:
url = f"https://data-api.polymarket.com/activity?user={wallet_addr}&limit=100"
events = requests.get(url).json()
for ev in events:
ts = int(ev.get("timestamp", 0))
if ts <= last_seen_ts: continue
if ev["type"] == "TRADE":
process_whale_trade(ev)
last_seen_ts = max(last_seen_ts, ts)
time.sleep(5)
Five-second polling ni practical floor kwa data-api. Chini ya hapo utahit rate limits. Kwa sub-second detection, jisajili kwa on-chain ERC-1155 TransferSingle events kutoka CTF contract gefiltered na proxy address ya whale.
Position sizing relative kwa whale
Ikiwa unasize copy yako kama constant fraction ya whale trade, unaherit risk profile yao. Alternatives mbili practical.
- Cap-based: size kila copy kwa fixed dollar amount ($10-50) bila kujali whale size. Slow ku-compound lakini bounded loss per trade.
- Win-rate-weighted: size copy kama function ya recent win rate ya whale. 60%+ WR → full-size copy; 40-60% → half-size; chini ya 40% → skip.
Cap-based approach ni safer first deploy. Hamia kwa win-rate-weighted tu baada ya kupima actual win rate ya whale kwenye YOUR copies (ambayo kawaida ni mbaya kuliko headline number yao kwa sababu unakwafika late).
Latency: late kiasi gani ni too late
Trade ya whale inaweza kuonekana publicly ndani ya sekunde 1-2 ya execution. Kunakili kunahitaji faster latency kuliko hiyo kwenye read side, pamoja na order placement latency yako.
End-to-end kwa typical copy bot: polling ya sekunde 5-10 + 200ms order placement = sekunde 5-15 jumla. Kufikia wakati copy yako inafire, signal ya whale iko katika price.
Kwa 99% ya copies, hii ni too late kwenye Polymarket narrow markets. Entry ya whale ilihama mid 1-2 cents; unalipa 1-2 cents premium hiyo relative kwa walipoingia. Ikiwa edge yao ilikuwa 3c, nusu tayari imeenda kufikia wakati unakuja.
Copy bots zinazofanya kazi ofuli (a) target slow-moving markets ambapo 30s latency hairuhusu, au (b) tumia on-chain event subscription ku-itikia katika sub-second timeframes.
Filters: fuata tu wallets na verified edge
Filters tatu kabla ya kuongeza wallet yoyote kwenye copy list yako.
- 30+ closed trades katika history ya wallet. Smaller samples ni noise.
- Lifetime win rate > 60%, AU positive expected value per trade based on entry prices. Condition yoyote; zote ni bora.
- Pattern SIO late-window arb. Check median seconds-to-resolution kwenye entry; ikiwa iko karibu na 0, wallet inafanya tail-yield arb usiyoweza kureproduce.
Candidate whales wengi wanafail moja ya hizi tatu. Pool ya actually-copyable wallets ni ndogo. Kudumisha list inahitaji periodic recheck - wallets zilizokuwa profitable mwezi uliopita zinaweza zisiwe mwezi huu.
Code: detect whale buy event, weka sized copy
Reference: detect CTF TransferSingle event kwa watched whale, fire sized copy buy.
from web3 import Web3
w3 = Web3(Web3.WebsocketProvider(POLYGON_WSS))
ctf = w3.eth.contract(address=CTF_ADDR, abi=CTF_ABI)
WHALES = {"0xabc...": {"fraction": 0.05, "cap": 50}}
def on_transfer(event):
to = event.args["to"].lower()
if to not in WHALES: return
cfg = WHALES[to]
token_id = event.args.id
whale_size = event.args.value / 1e6
copy_size = min(cfg["cap"], whale_size * cfg["fraction"])
if copy_size < 5: return # not worth fees
book = fetch_book(str(token_id))
if book.best_ask:
place_fok(str(token_id), "BUY", book.best_ask + 0.01, copy_size)
# subscribe to ERC-1155 TransferSingle events from CTF
filt = ctf.events.TransferSingle.create_filter(fromBlock="latest")
while True:
for ev in filt.get_new_entries(): on_transfer(ev)
time.sleep(0.5)
Distinguish buy kutoka sell kwa kucheck from (zero address = mint = whale alinunua) vs to (zero address = burn = aliuza).





