מדריך Bot של Polymarket · פרק 20 מתוך 32
עקבו אחר ארנקים של לווייתני Polymarket ובצעו copy-trade לביצועים המובילים בצורה פרוגרמטית: זהו ארנקים רווחיים באמצעות leaderboard וניתוח on-chain, ושכפלו את העסקאות שלהם עם כללי גודל ותזמון.
על מה הפרק הזה עוסק
להעתיק ארנקים מנצחים ב־Polymarket זו מחשבה פופולרית, אבל הלווייתנים האמיתיים ב־Polymarket עושים בעיקר arbitrage בסוף חלון הזמן על שווקים שכבר הוכרעו, לא הימורים כיווניים. הפרק הזה מציג את המחקר הכנה שלנו מניתוח on-chain: אילו ארנקים באמת כדאי להעתיק, למה רובם לא שווים העתקה, ומהו מתמטיקת sizing של פוזיציה.
- זיהוי ארנקים רווחיים
- זיהוי עסקאות on-chain
- קביעת גודל פוזיציה ביחס ללווייתן
- Latency: כמה איחור זה כבר מאוחר מדי
- פילטרים: לעקוב רק אחרי ארנקים עם edge מוכח
- קוד: זיהוי אירוע קנייה של לווייתן, וביצוע copy בגודל מתאים
זיהוי ארנקים רווחיים
ההנחה מאחורי העתקת לווייתנים היא שחלק מהארנקים רווחיים באופן עקבי, והעתקת הכניסות שלהם תתפוס חלק מה־edge שלהם. ניתוח on-chain של ארנקי Polymarket המובילים ב־2025-26 הניב תוצאה מפוכחת: רוב הלווייתנים הנראים לעין עושים arbitrage בסוף חלון הזמן בשווקים שהוכרעו, לא מסחר כיווני.
הפרופיל שמדדנו בשלושה ארנקי לווייתן מועמדים:
- "hhhhhh6" (98.5% win rate, $n M volume) - 88% מהכניסות במחירים ≥0.95, חציון זמן כניסה 226 שניות מתוך חלון של 300 שניות. arbitrage טהור של tail-yield, לא כיווני.
- "anonymous" (20% win rate) - מהמר כפייתי. העתקה שלו מפסידה כסף.
- "Jkim123" (53.5% win rate) - הטלת מטבע. לא אות ששווה להעתיק.
0% מהעסקאות של הלווייתנים האלה התרחשו ב־120 השניות הראשונות של כל חלון של 5 דקות. אות חזוי (אם בכלל) היה מגיע מכניסות גדולות בתחילת החלון - אבל הארנקים האלה אינם אלה שנמצאים בראש ה־leaderboard, כי זה קשה.
זיהוי עסקאות on-chain
זיהוי העסקאות של ארנק יעד דורש או polling של ה־data-api של Polymarket או הרשמה לאירועי העברת CTF on-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 כל חמש שניות הוא הרצפה הפרקטית עבור ה־data-api. פחות מזה תיתקלו ב־rate limits. לצורך זיהוי בתת-שנייה, הירשמו לאירועי ERC-1155 TransferSingle on-chain מתוך חוזה ה־CTF, מסוננים לפי כתובת ה־proxy של הלווייתן.
קביעת גודל פוזיציה ביחס ללווייתן
אם אתם קובעים את גודל ההעתקה שלכם כחלק קבוע מהעסקה של הלווייתן, אתם יורשים את פרופיל הסיכון שלו. שתי חלופות מעשיות.
- מבוסס תקרה: קבעו לכל העתקה סכום דולרי קבוע ($10-50) בלי קשר לגודל העסקה של הלווייתן. צבירה איטית, אבל הפסד מוגבל לכל עסקה.
- ממושקל לפי win rate: קבעו את גודל ההעתקה כפונקציה של win rate עדכני של הלווייתן. מעל 60% → העתקה בגודל מלא; בין 40-60% → חצי גודל; מתחת ל־40% → דילוג.
הגישה המבוססת על תקרה היא הפריסה הראשונה והבטוחה יותר. עברו לגישה הממושקלת לפי win rate רק אחרי שמדדתם את win rate האמיתי של הלווייתן על ההעתקות שלכן/ם (שבדרך כלל נמוך יותר מהמספר בכותרת, כי אתם מגיעים מאוחר).
Latency: כמה איחור זה כבר מאוחר מדי
העסקה של הלווייתן גלויה לציבור בתוך 1-2 שניות מרגע הביצוע. כדי להעתיק אותה צריך latency מהירה יותר מזה בצד הקריאה, ועוד latency משלכם להצבת ההזמנה.
End-to-end עבור bot copy טיפוסי: polling של 5-10 שניות + הצבת הזמנה של 200ms = 5-15 שניות בסך הכול. עד שההעתקה שלכם מופעלת, האות של הלווייתן כבר מגולם במחיר.
עבור 99% מההעתקות, זה מאוחר מדי בשווקים הצרים של Polymarket. הכניסה של הלווייתן הזיזה את ה־mid ב־1-2 סנט; אתם משלמים פרמיה של 1-2 סנט ביחס למחיר שבו הוא נכנס. אם ה־edge שלו היה 3c, חצי ממנו כבר נעלם עד שהגעתם.
Bot-ים של copy שעובדים עושים אחד משני דברים: (a) מכוונים לשווקים איטיים שבהם latency של 30 שניות לא משנה, או (b) משתמשים בהרשמה לאירועי on-chain כדי להגיב בטווחי זמן של תת-שנייה.
פילטרים: עקבו רק אחרי ארנקים עם edge מוכח
שלושה פילטרים לפני שמוסיפים ארנק כלשהו לרשימת ההעתקה שלכם.
- 30+ עסקאות סגורות בהיסטוריה של הארנק. דגימות קטנות יותר הן רעש.
- win rate לכל החיים > 60%, או ערך צפוי חיובי לכל עסקה על בסיס מחירי הכניסה. כל תנאי מספיק; שניהם עדיפים.
- הדפוס הוא לא arbitrage בסוף חלון. בדקו את חציון השניות עד להכרעה בזמן הכניסה; אם הוא קרוב ל־0, הארנק עושה tail-yield arb שאי אפשר לשחזר.
רוב ארנקי המועמדים נופלים באחד משלושת אלה. המאגר של ארנקים שאפשר באמת להעתיק קטן. תחזוקת הרשימה דורשת בדיקה תקופתית מחדש - ארנקים שהיו רווחיים בחודש שעבר אולי לא יהיו כאלה החודש.
קוד: זיהוי אירוע קנייה של לווייתן, וביצוע copy בגודל מתאים
Reference: זיהוי אירוע CTF TransferSingle עבור לווייתן במעקב, והפעלת קניית 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)
הבחינו בין קנייה למכירה על ידי בדיקה של from (כתובת אפס = mint = הלווייתן קנה) לעומת to (כתובת אפס = burn = נמכר).





