آموزش Polymarket Bot · فصل 20 از 32

به‌صورت programmatic کیف‌پول‌های whale در Polymarket را track کنید و از top performers copy-trade بگیرید: کیف‌پول‌های سودآور را از طریق leaderboard و on-chain analysis شناسایی کنید و tradeهای آن‌ها را با قوانین size و timing mirror کنید.

این فصل چه چیزهایی را پوشش می‌دهد

کپی‌کردن کیف‌پول‌های برنده در Polymarket ایده محبوبی است، اما whaleهای واقعی در Polymarket عمدتاً در حال انجام late-window arb روی markets حل‌شده هستند، نه directional bets. این فصل، research صادقانه از on-chain analysis است: کدام کیف‌پول‌ها واقعاً ارزش copy کردن دارند، چرا بیشترشان ارزشش را ندارند، و math مربوط به position-sizing.

  • شناسایی کیف‌پول‌های سودآور
  • تشخیص trade روی chain
  • Position sizing نسبت به whale
  • Latency: چقدر دیر، زیادی دیر است
  • Filters: فقط walletهایی را follow کنید که verified edge دارند
  • Code: تشخیص whale buy event، ثبت copy با size مناسب

شناسایی کیف‌پول‌های سودآور

فرض اصلی whale-copying این است که برخی کیف‌پول‌ها consistently سودآور هستند و copy کردن entryهای آن‌ها بخشی از edgeشان را capture می‌کند. On-chain analysis از top walletهای Polymarket در سال‌های 2025-26 نتیجه‌ای واقع‌بینانه‌تر نشان داد: بیشتر whaleهای قابل‌مشاهده در حال انجام arbitrage در انتهای window روی markets حل‌شده هستند، نه directional trading.

Profile‌ای که برای سه کیف‌پول whale candidate اندازه‌گیری کردیم:

  • "hhhhhh6" (98.5% win rate, $n M volume) - 88% از entryها با قیمت‌های ≥0.95، median entry timestamp برابر 226s از یک window 300s. صرفاً tail-yield arb، نه directional.
  • "anonymous" (20% win rate) - gambler از نوع degenerate. Copy کردنش باعث ضرر می‌شود.
  • "Jkim123" (53.5% win rate) - coin-flip. سیگنال ارزشمند برای copy کردن نیست.

0% از tradeهای این whaleها در 120 ثانیه اول هیچ window پنج‌دقیقه‌ای رخ داده‌اند. سیگنال predictive (اگر اصلاً وجود داشته باشد) از entryهای بزرگ در EARLY-window می‌آید - اما آن walletها همان‌هایی نیستند که در top leaderboard قرار دارند، چون کار سختی است.

تشخیص trade روی chain

تشخیص tradeهای wallet هدف نیازمند polling کردن data-api Polymarket یا subscribe شدن به on-chain CTF transfer eventهاست. گزینه data-api ساده‌تر است.

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)

Polling با فاصله پنج ثانیه، کف عملی برای data-api است. پایین‌تر از این، rate limit می‌خورید. برای تشخیص زیرثانیه‌ای، باید به on-chain ERC-1155 TransferSingle eventها از contract CTF subscribe شوید و آن‌ها را با proxy address whale filter کنید.

Position sizing نسبت به whale

اگر copy خود را به‌صورت یک fraction ثابت از trade whale size کنید، profile ریسک آن‌ها را به ارث می‌برید. دو alternative عملی وجود دارد.

  • Cap-based: هر copy را به یک مبلغ ثابت دلاری ($10-50) size کنید، فارغ از اندازه whale. برای compound کردن کند است، اما loss هر trade محدود می‌ماند.
  • Win-rate-weighted: copy size را تابع win rate اخیر whale قرار دهید. win rate بالای 60% → copy با full-size؛ 40-60% → half-size؛ زیر 40% → skip.

رویکرد cap-based، انتخاب امن‌تر برای first deploy است. فقط بعد از اینکه win rate واقعی whale را روی copyهای خودتان اندازه‌گیری کردید، به سراغ win-rate-weighted بروید (که معمولاً از عدد headline آن‌ها بدتر است، چون شما دیر می‌رسید).

Latency: چقدر دیر، زیادی دیر است

Trade whale ظرف 1-2 ثانیه پس از اجرا به‌صورت public قابل مشاهده است. Copy کردن آن نیاز به latency سریع‌تر از این در سمت read دارد، به‌علاوه latency خودتان برای ثبت order.

End-to-end برای یک copy bot معمولی: polling پنج تا ده ثانیه + ثبت order در 200ms = در مجموع 5-15 ثانیه. وقتی copy شما اجرا می‌شود، signal whale دیگر در price منعکس شده است.

برای 99% copyها، این در Polymarket و marketهای باریک آن زیادی دیر است. Entry whale mid را 1-2 cent جابه‌جا کرده است؛ شما نسبت به نقطه ورود آن‌ها همان premium یک تا دو سنتی را می‌پردازید. اگر edge آن‌ها 3c بوده باشد، تا زمانی که شما برسید، نیمی از آن از بین رفته است.

Copy botهایی که واقعاً کار می‌کنند یا (a) بازارهای slow-moving را target می‌کنند که latency سی ثانیه‌ای در آن‌ها مهم نیست، یا (b) از on-chain event subscription استفاده می‌کنند تا در timeframe زیرثانیه واکنش نشان دهند.

Filters: فقط walletهایی را follow کنید که verified edge دارند

قبل از اضافه کردن هر wallet به list copy، سه filter را اعمال کنید.

  • 30+ closed trades در history wallet. نمونه‌های کوچک noise هستند.
  • Lifetime win rate > 60%، یا EV مثبت به‌ازای هر trade بر اساس entry priceها. یکی از این دو شرط؛ هر دو بهتر است.
  • Pattern نباید late-window arb باشد. median seconds-to-resolution را هنگام entry بررسی کنید؛ اگر نزدیک 0 باشد، wallet در حال انجام tail-yield arb است که شما نمی‌توانید آن را بازتولید کنید.

بیشتر whaleهای candidate یکی از این سه شرط را رد می‌کنند. pool walletهایی که واقعاً قابل copy هستند کوچک است. نگه‌داری این list نیاز به recheck دوره‌ای دارد - walletهایی که ماه گذشته سودآور بودند، ممکن است این ماه نباشند.

Code: تشخیص whale buy event، ثبت copy با size مناسب

Reference: تشخیص یک ERC-1155 TransferSingle event برای whale تحت نظر و ثبت یک buy copy با size مناسب.

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)

برای تشخیص buy از sell، from را بررسی کنید (zero address = mint = whale خریده است) در مقابل to (zero address = burn = فروخته شده است).

سوالات متداول

چطور walletهای سودآور Polymarket را برای copy پیدا کنم؟
leaderboard خود Polymarkets top walletها را بر اساس PnL در بازه‌های مختلف (هفته، ماه، all-time) نمایش می‌دهد. ابزارهای مستقل on-chain analytics مثل DeFiLlama و Dune dashboardها هم walletهای Polymarket را rank می‌کنند. walletهایی را انتخاب کنید که سودآوری آن‌ها در چند ماه تایید شده باشد، نه فقط چند هفته - streakهای داغ برمی‌گردند و از بین می‌روند.
چطور یک whale trade را در real time تشخیص بدهم؟
به transaction logهای Polygon برای address wallet subscribe شوید (web3.py / ethers eth_subscribe) و callهای matchOrder روی contractهای exchange Polymarket را filter کنید. event را decode کنید تا market، side و size به‌دست آید. Latency: از تایید on-chain تا واکنش bot شما 2-10 ثانیه.
آیا می‌توانم trade یک whale را دقیقاً copy کنم؟
نه دقیقاً - تا وقتی که trade را تشخیص بدهید و ثبت کنید، قیمت اغلب جابه‌جا شده است. copy واقع‌بینانه همان "scale-in" است: بخشی از position whale را طی چند دقیقه بعد از trade آن‌ها بگیرید و افت قیمت ناشی از تأخیر را به‌عنوان هزینه copy بپذیرید. Sizing: 1-5% از position size آن‌ها در هر copy.
اگر این بار whale اشتباه کرده باشد چه؟
شما ضرر می‌کنید. Copy trading همه ریسک‌های strategy زیرین را به‌علاوه loss ناشی از latency به ارث می‌برد. Hedging این است که چند whale را copy کنید و هر کدام را بخشی کوچک از portfolio خود در نظر بگیرید - اگر 5 whale هر کدام independently win rate برابر 60% داشته باشند، portfolio compound می‌شود. اگر یک whale با win rate 60% را copy کنید و concentration بالا باشد، variance شما را نابود می‌کند.
آیا copy trading در Polymarket ممنوع است؟
خیر. terms Polymarket اجازه مشاهده leaderboardها و tradeهای public را می‌دهند. چیزی که ممنوع است multi-accounting است (اجرای چند wallet توسط یک نفر برای دور زدن limitها). Copy-trading walletهای دیگران از wallet شخصی خودتان مشکلی ندارد.
چطور نسبت به یک whale size بگیرم؟
Bankroll-fraction sizing: هیچ‌وقت یک trade را بیشتر از 2-5% از total bankroll خود copy نکنید، فارغ از اینکه whale چقدر trade کرده است. سیگنال whale را یکی از چندین سیگنال بدانید، نه یک چیز قطعی. Whaleهایی با bankroll ده برابر شما هم ضرر می‌کنند - اگر aggressivly size کنید، drawdown نسبی شما بسیار بدتر خواهد بود.