Polymarket Bot Tutorial · Chapter 20 of 32

Polymarket whale wallets को ट्रैक करें और top performers को programmatically copy-trade करें: leaderboard और on-chain analysis के ज़रिए profitable wallets पहचानें, size और timing rules के साथ उनके trades को mirror करें।

यह chapter क्या cover करता है

Winning Polymarket wallets को copy करना एक popular idea है, लेकिन Polymarket पर असल whales ज़्यादातर resolved markets में late-window arb करते हैं, directional bets नहीं। यह chapter on-chain analysis से निकला honest research है: कौन-से wallets सच में copy करने लायक हैं, ज़्यादातर क्यों worth copying नहीं हैं, और position-sizing math क्या है।

  • Profitable wallets की पहचान
  • On-chain trade detection
  • Whale के relative position sizing
  • Latency: कितना late बहुत late है
  • Filters: सिर्फ verified edge वाले wallets follow करें
  • Code: whale buy event detect करें, sized copy place करें

Profitable wallets की पहचान

Whale-copying का premise यह है कि कुछ wallets लगातार profitable होते हैं और उनके entries को copy करने से उनकी edge का एक हिस्सा capture हो जाता है। 2025-26 में Polymarket के top wallets के on-chain analysis का नतीजा काफी sobering था: दिखाई देने वाले ज़्यादातर whales directional trading नहीं, बल्कि resolved markets पर late-window arbitrage कर रहे हैं।

हमने तीन candidate whale wallets पर यह profile measure की:

  • "hhhhhh6" (98.5% win rate, $n M volume) - entries का 88% price ≥0.95 पर, median entry timestamp 300s window के 226s पर। Pure tail-yield arb, directional नहीं।
  • "anonymous" (20% win rate) - degenerate gambler. Copy करने से पैसा lose होता है।
  • "Jkim123" (53.5% win rate) - coin-flip. Copy करने लायक signal नहीं।

इन whales के trades का 0% किसी 5-minute window के पहले 120s में हुआ। Predictive signal (अगर कोई हो) EARLY-window large entries से आएगा - लेकिन ऐसे wallets leaderboard के top पर नहीं होते, क्योंकि यह hard है।

On-chain trade detection

Target wallet के trades detect करने के लिए या तो Polymarket की data-api poll करनी पड़ती है, या on-chain CTF transfer events subscribe करने होते हैं। data-api option ज़्यादा simple है।

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)

Data-api के लिए five-second polling practical floor है। इससे कम पर आपको rate limits hit होंगी। Sub-second detection के लिए, whale के proxy address से filtered CTF contract के on-chain ERC-1155 TransferSingle events subscribe करें।

Whale के relative position sizing

अगर आप अपनी copy को whale के trade के constant fraction के रूप में size करते हैं, तो आप उनके risk profile को inherit करते हैं। इसके दो practical alternatives हैं।

  • Cap-based: whale size चाहे जो हो, हर copy को एक fixed dollar amount ($10-50) तक size करें। Compounding धीमा होगा, लेकिन प्रति trade loss bounded रहेगा।
  • Win-rate-weighted: whale के recent win rate के function के रूप में copy size करें। 60%+ WR → full-size copy; 40-60% → half-size; 40% से नीचे → skip.

Cap-based approach पहले deploy करने के लिए ज़्यादा safe है। Win-rate-weighted पर तब ही जाएँ जब आपने whale का actual win rate YOUR copies पर measure कर लिया हो (जो आमतौर पर उनके headline number से खराब होता है, क्योंकि आप late आते हैं)।

Latency: कितना late बहुत late है

Whale का trade execution के 1-2 seconds के भीतर publicly visible हो जाता है। उसे copy करने के लिए read side पर उससे तेज latency चाहिए, और उसके ऊपर आपकी own order placement latency भी।

Typical copy bot के लिए end-to-end: 5-10 second polling + 200ms order placement = कुल 5-15 seconds। जब तक आपकी copy fire करती है, whale का signal price में already embed हो चुका होता है।

99% copies के लिए, Polymarket के narrow markets में यह बहुत late है। Whale की entry ने mid को 1-2 cents move किया; आप उनके entry price की तुलना में वही 1-2 cents premium चुकाते हैं। अगर उनकी edge 3c थी, तो आपके पहुँचने तक उसका आधा हिस्सा already चला जाता है।

जो copy bots काम करते हैं, वे या तो (a) slow-moving markets target करते हैं जहाँ 30s latency matter नहीं करती, या (b) on-chain event subscription का उपयोग करके sub-second timeframe में react करते हैं।

Filters: सिर्फ verified edge वाले wallets follow करें

किसी भी wallet को अपनी copy list में जोड़ने से पहले तीन filters लगाएँ।

  • 30+ closed trades wallet history में। छोटे samples noise होते हैं।
  • Lifetime win rate > 60%, OR entry prices के आधार पर trade-दर-trade positive expected value। कोई एक condition; दोनों हों तो बेहतर।
  • Pattern late-window arb नहीं होना चाहिए. Entry पर median seconds-to-resolution check करें; अगर यह 0 के पास है, तो wallet tail-yield arb कर रहा है जिसे आप reproduce नहीं कर सकते।

ज़्यादातर candidate whales इन तीन में से किसी एक filter में fail हो जाते हैं। सच में copyable wallets का pool छोटा है। List maintain करने के लिए periodic recheck चाहिए - जो wallets पिछले महीने profitable थे, ज़रूरी नहीं कि इस महीने भी हों।

Code: whale buy event detect करें, sized copy place करें

Reference: किसी watched whale के लिए CTF TransferSingle event detect करें, और sized copy buy fire करें।

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)

from की जाँच करके buy और sell में फर्क करें (zero address = mint = whale ने खरीदा) बनाम to (zero address = burn = sold)।

अक्सर पूछे जाने वाले प्रश्न

Profitable Polymarket wallets कैसे ढूँढूँ जिन्हें copy किया जा सके?
Polymarkets का अपना leaderboard कई windows (week, month, all-time) में PnL के हिसाब से top wallets दिखाता है। Independent on-chain analytics tools (DeFiLlama, Dune dashboards) भी Polymarket wallets rank करते हैं। ऐसे wallets चुनें जिनकी profitability months तक verified हो, weeks तक नहीं - hot streaks उलट जाते हैं।
Whale trade को real time में कैसे detect करूँ?
Wallet address के लिए Polygon transaction logs subscribe करें (web3.py / ethers eth_subscribe), Polymarket exchange contracts पर matchOrder calls filter करें। Event decode करके market, side, और size निकालें। Latency: on-chain confirmation से आपके bot के react करने तक 2-10 seconds।
क्या मैं whale के trade को exactly copy कर सकता हूँ?
Exactly नहीं - detect करने और submit करने तक price अक्सर move कर चुका होता है। Realistic copy "scale-in" है: उनके trade के कुछ minutes बाद उनकी position का एक fraction लें, और price degradation को copying की cost मानकर accept करें। Sizing: हर copy में उनकी position size का 1-5%.
अगर इस बार whale गलत निकला तो?
आप lose करते हैं। Copy trading underlying strategy के सभी risks के साथ latency loss भी inherit करता है। Hedge यह है कि multiple whales copy करें और हर एक को portfolio का छोटा हिस्सा मानें - अगर 5 whales का independently 60% win rate है, तो portfolio compound करेगा। अगर आप एक whale को 60% win rate के साथ copy करते हैं और concentrate करते हैं, तो variance आपको हरा देगा।
क्या Polymarket पर copy trading prohibited है?
नहीं। Polymarkets की terms public leaderboards और trades देखने की अनुमति देती हैं। Prohibited multi-accounting है (limits circumvent करने के लिए एक व्यक्ति द्वारा multiple wallets चलाना)। अपने single wallet से दूसरे लोगों के wallets copy-trade करना ठीक है।
Whale के relative size कैसे set करूँ?
Bankroll-fraction sizing: whale ने कितना भी trade किया हो, कभी भी single trade को अपने total bankroll के 2-5% से ज़्यादा copy न करें। Whale signal को कई में से एक signal मानें, न कि sure thing। जिन whales के पास आपसे 10x bankroll है, वे भी lose करते हैं - aggressive sizing करने पर आपका relative drawdown बहुत worse होगा।