Polymarket Bot Tutorial · บทที่ 20 จาก 32

ติดตาม whale wallets ของ Polymarket และ copy-trade ผู้ทำผลงานสูงสุดแบบโปรแกรม: ระบุ wallets ที่ทำกำไรได้ผ่าน leaderboard และการวิเคราะห์ on-chain แล้ว mirror การเทรดของพวกเขาด้วยกฎเรื่องขนาดและเวลาเข้าออก

บทนี้ครอบคลุมอะไรบ้าง

การก็อปปี้ wallets ที่ชนะบน Polymarket เป็นไอเดียยอดนิยม แต่ whale ตัวจริงบน Polymarket ส่วนใหญ่กำลังทำ late-window arb บนตลาดที่ปิดผลแล้ว ไม่ใช่การเดิมพันเชิงทิศทาง บทนี้คือการวิจัยแบบตรงไปตรงมาจากการวิเคราะห์ on-chain: wallets ไหนที่ควรจะก็อปปี้จริง ๆ, ทำไมส่วนใหญ่ถึงไม่คุ้มจะก็อปปี้, และคณิตศาสตร์การกำหนดขนาดโพซิชัน

  • การระบุ wallets ที่ทำกำไรได้
  • การตรวจจับ trade บน chain
  • การกำหนดขนาดโพซิชันเทียบกับ whale
  • Latency: ช้าแค่ไหนถึงเรียกว่าช้าเกินไป
  • Filters: ติดตามเฉพาะ wallets ที่พิสูจน์ edge ได้
  • Code: ตรวจจับ whale buy event แล้ววาง copy ตามขนาด

การระบุ wallets ที่ทำกำไรได้

แนวคิดของ whale-copying คือ wallets บางตัวทำกำไรได้อย่างสม่ำเสมอ และการก็อปปี้การเข้าโพซิชันของพวกเขาจะจับเอาบางส่วนของ edge นั้นได้ การวิเคราะห์ on-chain ของ wallets ชั้นนำบน Polymarket ในปี 2025-26 ให้ผลที่ค่อนข้างน่าผิดหวัง: whale ที่มองเห็นได้ส่วนใหญ่กำลังทำ arbitrage ช่วงท้ายของหน้าต่างเวลาบนตลาดที่ปิดผลแล้ว ไม่ใช่การเทรดเชิงทิศทาง

โปรไฟล์ที่เราวัดจาก whale wallets ผู้สมัคร 3 ราย:

  • "hhhhhh6" (win rate 98.5%, volume $n M)-88% ของการเข้าเกิดที่ราคามากกว่าเท่ากับ 0.95, median timestamp ของการเข้าคือ 226 วินาทีในหน้าต่าง 300 วินาที เป็น tail-yield arb ล้วน ๆ ไม่ใช่เชิงทิศทาง
  • "anonymous" (win rate 20%)-นักเสี่ยงโชคแบบไร้รูปแบบ ก็อปปี้แล้วขาดทุน
  • "Jkim123" (win rate 53.5%)-พอ ๆ กับการโยนเหรียญ ไม่ใช่สัญญาณที่คุ้มจะก็อปปี้

0% ของการเทรดจาก whales เหล่านี้เกิดขึ้นใน 120 วินาทีแรกของหน้าต่าง 5 นาทีใด ๆ สัญญาณเชิงคาดการณ์ (ถ้ามี) จะมาจากการเข้าโพซิชันขนาดใหญ่ในช่วงต้นหน้าต่าง-แต่ wallets พวกนั้นไม่ใช่ตัวที่อยู่บน top ของ leaderboard เพราะทำได้ยาก

การตรวจจับ trade บน chain

การตรวจจับการเทรดของ wallet เป้าหมายต้องอาศัย either polling data-api ของ Polymarket หรือ subscribing เหตุการณ์ transfer ของ CTF บน chain ตัวเลือก 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 ทุก 5 วินาทีคือขีดจำกัดที่ใช้งานได้จริงสำหรับ data-api ถ้าต่ำกว่านี้คุณจะชน rate limits หากต้องการตรวจจับระดับ sub-second ให้ subscribe to on-chain ERC-1155 TransferSingle events จาก CTF contract โดยกรองด้วย proxy address ของ whale

การกำหนดขนาดโพซิชันเทียบกับ whale

ถ้าคุณกำหนดขนาด copy ของคุณเป็นสัดส่วนคงที่ของการเทรดของ whale คุณก็จะรับความเสี่ยงแบบเดียวกับเขาไปด้วย มีสองทางเลือกที่ใช้งานได้จริง

  • Cap-based: กำหนดขนาดแต่ละ copy เป็นจำนวนเงินคงที่ ($10-50) ไม่ว่า whale จะเทรดใหญ่แค่ไหนก็ตาม โตช้าแต่จำกัดการขาดทุนต่อเทรด
  • Win-rate-weighted: กำหนดขนาด copy ตาม win rate ล่าสุดของ whale ถ้า WR 60%+ → copy เต็มขนาด; 40-60% → ครึ่งขนาด; ต่ำกว่า 40% → ข้าม

แนวทางแบบ cap-based ปลอดภัยกว่าสำหรับการใช้งานครั้งแรก ค่อยย้ายไปใช้ win-rate-weighted ก็ต่อเมื่อคุณวัด win rate จริงของ whale จาก copy ของคุณเองแล้วเท่านั้น ซึ่งโดยมากจะแย่กว่าตัวเลขหัวข้อข่าว เพราะคุณมาช้า

Latency: ช้าแค่ไหนถึงเรียกว่าช้าเกินไป

การเทรดของ whale จะมองเห็นสาธารณะภายใน 1-2 วินาทีหลัง execution การก็อปปี้มันต้องมี latency ฝั่งอ่านที่เร็วกว่านั้น บวกกับ latency การส่งคำสั่งของคุณเอง

End-to-end สำหรับ copy bot ทั่วไป: polling 5-10 วินาที + ส่งคำสั่ง 200ms = รวม 5-15 วินาที พอถึงเวลาที่ copy ของคุณยิงออก สัญญาณของ whale ก็ได้สะท้อนเข้าไปในราคาแล้ว

สำหรับ 99% ของการ copy นี่ถือว่าช้าเกินไปสำหรับตลาดที่แคบของ Polymarket การเข้าโพซิชันของ whale ขยับ mid ไป 1-2 เซนต์; คุณจ่าย premium 1-2 เซนต์จากจุดที่เขาเข้าจริง ถ้า edge ของเขาอยู่ที่ 3c ครึ่งหนึ่งก็หายไปแล้วตอนที่คุณมาถึง

copy bots ที่ใช้งานได้จริงจะ either (a) เลือกตลาดที่เคลื่อนไหวช้า ซึ่ง latency 30 วินาทีไม่สำคัญ, หรือ (b) ใช้ on-chain event subscription เพื่อโต้ตอบใน timeframe ระดับ sub-second

Filters: ติดตามเฉพาะ wallets ที่พิสูจน์ edge ได้

มี 3 ฟิลเตอร์ก่อนจะเพิ่ม wallet ใด ๆ เข้า copy list ของคุณ

  • มี closed trades 30+ ครั้ง ในประวัติของ wallet ตัวอย่างที่น้อยกว่านี้เป็น noise
  • win rate ตลอดอายุบัญชี > 60% หรือ EV ต่อเทรดเป็นบวกจากราคาเข้าเงื่อนไขอย่างใดอย่างหนึ่ง ถ้าได้ทั้งคู่ยิ่งดี
  • รูปแบบไม่ใช่ late-window arb ตรวจสอบ median seconds-to-resolution ตอนเข้า ถ้าใกล้ 0 แปลว่า wallet นั้นกำลังทำ tail-yield arb ซึ่งคุณไม่สามารถทำซ้ำได้

ผู้สมัคร whale ส่วนใหญ่ไม่ผ่านอย่างน้อยหนึ่งในสามข้อนี้ กลุ่ม wallets ที่ก็อปปี้ได้จริงมีจำนวนน้อย การรักษารายชื่อจำเป็นต้องตรวจซ้ำเป็นระยะ-wallets ที่ทำกำไรได้เมื่อเดือนที่แล้วอาจไม่ทำกำไรในเดือนนี้

Code: ตรวจจับ whale buy event แล้ววาง copy ตามขนาด

ตัวอย่างอ้างอิง: ตรวจจับเหตุการณ์ CTF TransferSingle สำหรับ whale ที่เฝ้าดู แล้วส่ง buy copy ตามขนาด

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 = ขายแล้ว)

คำถามที่พบบ่อย

ฉันจะหา Polymarket wallets ที่ทำกำไรได้สำหรับ copy ได้อย่างไร?
leaderboard ของ Polymarkets เองจะแสดง top wallets ตาม PnL ในหลายช่วงเวลา (week, month, all-time) เครื่องมือวิเคราะห์ on-chain อิสระ (DeFiLlama, Dune dashboards) ก็จัดอันดับ Polymarket wallets เช่นกัน เลือก wallets ที่พิสูจน์ผลกำไรได้ต่อเนื่องหลายเดือน ไม่ใช่หลายสัปดาห์-ช่วงที่กำลังฟอร์มแรงมักย้อนกลับ
ฉันจะตรวจจับ whale trade แบบ real time ได้อย่างไร?
Subscribe to Polygon transaction logs สำหรับที่อยู่ของ wallet (web3.py / ethers eth_subscribe), กรองหา matchOrder calls บน Polymarket exchange contracts จากนั้น decode event เพื่อให้ได้ market, side, และ size latency โดยประมาณ: 2-10 วินาทีจากการยืนยันบน chain จน bot ของคุณตอบสนอง
ฉันสามารถ copy การเทรดของ whale แบบตรงเป๊ะได้ไหม?
ไม่ได้ตรงเป๊ะ-พอคุณตรวจจับและส่งคำสั่งแล้ว ราคามักเคลื่อนไปแล้ว การ copy ที่สมจริงคือแบบ "scale-in": ค่อย ๆ เข้าโดยใช้สัดส่วนหนึ่งของโพซิชันของ whale ในช่วงไม่กี่นาทีหลังเขาเทรด ยอมรับการเสื่อมของราคาเป็นต้นทุนของการ copy ขนาด: 1-5% ของขนาดโพซิชันเขาต่อหนึ่ง copy
ถ้าครั้งนี้ whale ผิดล่ะ?
คุณก็ขาดทุน copy trading รับความเสี่ยงทั้งหมดของกลยุทธ์ต้นทาง พร้อมกับการสูญเสียจาก latency วิธีป้องกันคือ copy หลาย whales และถือแต่ละตัวเป็นสัดส่วนเล็ก ๆ ของพอร์ต-ถ้า 5 whales แต่ละตัวมี win rate 60% แบบอิสระ พอร์ตก็จะทบต้นไปได้ แต่ถ้าคุณ copy whale เดียวที่ win rate 60% แล้วกระจุกตัว ความผันผวนจะเล่นงานคุณ
Polymarket ห้าม copy trading ไหม?
ไม่ห้าม เงื่อนไขของ Polymarket อนุญาตให้ดู leaderboard และ trades ที่เป็นสาธารณะ สิ่งที่ห้ามคือ multi-accounting (รันหลาย wallets ให้เหมือนเป็นคนเดียวเพื่อเลี่ยงข้อจำกัด) การ copy wallet ของคนอื่นจาก wallet เดียวของคุณทำได้
ฉันจะกำหนดขนาดเทียบกับ whale อย่างไร?
ใช้ bankroll-fraction sizing: อย่าคัดลอกการเทรดเดียวเกิน 2-5% ของ bankroll รวมของคุณ ไม่ว่า whale จะเทรดใหญ่แค่ไหนก็ตาม มองสัญญาณจาก whale เป็นเพียงหนึ่งในหลายสัญญาณ ไม่ใช่ของที่ชัวร์ Whale ที่มี bankroll มากกว่าคุณ 10 เท่ายังขาดทุนได้-drawdown แบบสัมพัทธ์ของคุณจะแย่มากถ้าคุณกำหนดขนาดเชิงรุกเกินไป