Polymarket Bot 教程 · 第 20 章,共 32 章

通过程序化方式跟踪 Polymarket 鲸鱼钱包并复制交易顶级表现者:通过排行榜和链上分析识别有盈利能力的钱包,按照仓位大小和时机规则镜像他们的交易。

本章内容

复制表现最好的 Polymarket 钱包是一个很受欢迎的想法,但 Polymarket 上真正的鲸鱼,大多数是在已结算市场上做窗口末期 arb,而不是方向性交易。本章基于链上分析给出诚实的研究结果:哪些钱包真的值得复制,为什么大多数不值得复制,以及仓位管理的数学。

  • 识别有盈利能力的钱包
  • 链上交易检测
  • 相对于鲸鱼的仓位大小
  • Latency:多晚算太晚
  • 筛选:只跟随经过验证有 edge 的钱包
  • 代码:检测鲸鱼买入事件,执行按仓位复制

识别有盈利能力的钱包

鲸鱼复制的前提是某些钱包持续盈利,复制它们的入场可以捕捉到一部分 edge。对 2025-26 年 Polymarket 顶级钱包进行的链上分析给出了一个令人清醒的结果:大多数可见鲸鱼都在已结算市场上做 late-window arbitrage,而不是方向性交易。

我们对三个候选鲸鱼钱包测得的画像:

  • "hhhhhh6"(98.5% 胜率,$n M 成交量)-88% 的入场价格 ≥0.95,中位入场时间为 300 秒窗口中的第 226 秒。纯粹的尾部收益 arb,不是方向性交易。
  • "anonymous"(20% 胜率)-纯粹的赌博者。复制会亏钱。
  • "Jkim123"(53.5% 胜率)-抛硬币水平。不是值得复制的信号。

这些鲸鱼的交易中,有 0% 发生在任意 5 分钟窗口的前 120 秒内。可预测信号(如果有的话)会来自早期窗口的大额入场-但排在榜首的并不是这些钱包,因为这很难做到。

链上交易检测

检测目标钱包的交易,需要轮询 Polymarket 的 data-api,或者订阅链上的 CTF transfer events。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)

5 秒轮询是 data-api 的实际下限。更低的话就会触发 rate limits。若要亚秒级检测,请订阅来自 CTF 合约、按鲸鱼 proxy 地址过滤的链上 ERC-1155 TransferSingle events。

相对于鲸鱼的仓位大小

如果你把复制仓位设为鲸鱼交易的固定比例,你就会继承它们的风险结构。这里有两个更实用的替代方案。

  • 基于上限:无论鲸鱼有多大,每笔复制都固定为一个美元金额($10-50)。复利较慢,但单笔亏损有上限。
  • 按胜率加权:把复制仓位设为鲸鱼近期胜率的函数。胜率 60%+ → 全仓复制;40-60% → 半仓;低于 40% → 跳过。

基于上限的方法更适合首次上线。只有在你测量了鲸鱼在“你的复制交易”上的实际胜率之后,才把策略切换到按胜率加权(通常会比他们的 headline 数字更差,因为你到得更晚)。

Latency:多晚算太晚

鲸鱼的交易通常会在执行后的 1-2 秒内公开可见。要复制它,你在读取侧需要比这个更快的 latency,再加上你自己的下单 latency。

典型 copy bot 的端到端:5-10 秒轮询 + 200ms 下单 = 总计 5-15 秒。等到你的复制单触发时,鲸鱼的信号已经体现在价格里了。

对于 99% 的复制单来说,在 Polymarket 这种窄市场里这已经太晚了。鲸鱼入场把 mid 推动了 1-2 美分;相对于他们的进场价,你要多付这 1-2 美分的溢价。如果他们的 edge 是 3c,那么你到达时其中一半已经没了。

真正能工作的 copy bot 要么 (a) 目标是慢速变化的市场,在那里 30s latency 无所谓;要么 (b) 使用链上 event subscription,以亚秒级时间框架响应。

筛选:只跟随经过验证有 edge 的钱包

在把任何钱包加入复制列表之前,先过这三个筛选条件。

  • 30+ 笔已平仓交易:钱包历史里至少要有这么多。更小的样本只是噪音。
  • 终身胜率 > 60%,或者基于入场价格计算出的每笔交易正期望值。满足任一条件即可;两个都满足更好。
  • 模式不是 late-window arb。检查入场时距离结算的中位秒数;如果接近 0,这个钱包做的是你无法复现的尾部收益 arb。

大多数候选鲸鱼会在这三个条件中的某一个上失败。真正可复制的钱包池很小。维护列表需要定期复查-上个月有盈利的钱包,这个月未必还行。

代码:检测鲸鱼买入事件,执行按仓位复制

参考实现:检测一个被关注鲸鱼的 CTF TransferSingle event,发出一个按仓位大小的复制买单。

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 = 卖出)。

常见问题

我如何找到可复制的 Polymarket 盈利钱包?
Polymarkets 自己的 leaderboard 会在多个时间窗口(周、月、all-time)里按 PnL 展示顶级钱包。独立的链上分析工具(DeFiLlama、Dune dashboards)也会对 Polymarket 钱包进行排名。应选择经过数月验证有盈利能力的钱包,而不是几周的短期热手感-热 streak 往往会反转。
我如何实时检测鲸鱼交易?
订阅钱包地址的 Polygon transaction logs(web3.py / ethers eth_subscribe),过滤 Polymarket exchange contracts 上的 matchOrder 调用。解码 event 以获取市场、方向和 size。延迟:从链上确认到你的 bot 响应,通常是 2-10 秒。
我能精确复制鲸鱼的交易吗?
不能精确复制-等你检测并提交时,价格通常已经移动了。现实中的复制是“分批跟进”:在鲸鱼交易后的几分钟内,用其仓位的一小部分逐步建仓,把价格恶化视为复制的成本。仓位大小:每次复制为其仓位的 1-5%。
如果鲸鱼这次错了怎么办?
你会亏损。复制交易会继承底层策略的全部风险,再加上 latency 损失。对冲方法是复制多个鲸鱼,并把每个都当作你组合中的一小部分-如果 5 个鲸鱼彼此独立地都有 60% 胜率,组合就能复利增长。如果你只集中复制一个 60% 胜率的鲸鱼,方差会把你打垮。
Polymarket 禁止复制交易吗?
不禁止。Polymarkets 的条款允许查看公开 leaderboard 和交易。被禁止的是 multi-accounting(一个人运行多个钱包以规避限制)。用你的单一钱包去复制别人的钱包是可以的。
我该如何相对于鲸鱼来设置仓位大小?
按 bankroll 的比例来控制:无论鲸鱼交易了多少,单笔复制都不要超过你总 bankroll 的 2-5%。把鲸鱼信号当作众多信号之一,而不是必然正确的事情。即便鲸鱼的 bankroll 比你大 10 倍,他们也会亏;如果你激进加仓,你的相对回撤会糟糕得多。