收益率86%?如何利用機器人在Polymarket上「躺賺」

12-30 , 12:03 分享


几周前,我决定构建属于我自己的 Polymarket 机器人。完整版本花了我几个星期的时间。


我愿意投入这些精力,是因为 Polymarket 上确实存在效率漏洞,虽然市面上已经有一些机器人在利用这些低效获利,但还远远不够,这个市场的机会仍然远多于机器人的数量。


机器人搭建逻辑


该机器人的逻辑基于我过去手动执行的一套策略,为了提高效率,我将其进行了自动化。该机器人运行在「BTC 15 分钟 涨 / 跌(BTC 15-minute UP/DOWN)」市场上。


机器人运行着一个实时监控程序,能够自动切换到当前的 BTC 15 分钟轮次,通过 WebSocket 流式传输最优买价 / 卖价(best bid/ask),显示一个固定的终端 UI,并允许通过文本命令进行全面控制。



在手动模式下,你可以直接下单。


buy up <usd> / buy down <usd>:买入特定美元金额。


buyshares up <shares> / buyshares down <shares>:购买精确数量的股数,使用对用户界面友好的 LIMIT(限价)+ GTC(取消前有效)订单,按当前最优卖价(best ask)成交。


自动模式运行一个重复的两段式(two-leg)循环。


第一步,它仅在每轮开始后的 windowMin 分钟内观察价格波动。如果任何一方跌得足够快(在大约 3 秒内跌幅至少达到 movePct),它就会触发「第一段(Leg 1)」,买入暴跌的那一方。


在完成 Leg 1 之后,机器人绝不会再次购买同一侧。它会等待「第二段(Leg 2,即对冲)」,并且仅在满足以下条件时触发:leg1EntryPrice + oppositeAsk <= sumTarget。


当满足此条件时,它购买相反的一侧。在 Leg 2 完成后,该循环结束,机器人返回观察状态,等待下一个使用相同参数的暴跌信号。


如果在循环过程中轮次发生了变化,机器人会放弃该打开的循环,并在下一轮中使用相同的设置重新开始。


自动模式的参数设置如下:auto on <shares> [sum=0.95] [move=0.15] [windowMin=2]


· shares:用于两段交易的仓位大小。

· sum:允许对冲的阈值。

· move (movePct):暴跌阈值(例如 0.15 = 15%)。

· windowMin:从每轮开始算起,允许执行 Leg 1 的时长。


回測


机器人的邏輯很簡單:等待暴力砸盤,買入剛跌完的那一方,然後等待價格穩定並通過購買相反一側進行對沖,同時保證:priceUP + priceDOWN < 1。


但這個邏輯需要經過測試。它在長期內真的有效嗎?更重要的是,機器人有很多參數(股數、總和、移動百分比、窗口分鐘數等)。哪組參數集是最優的並能使利潤最大化?


我的第一個想法是讓機器人實盤運行一周並觀察結果。問題是這耗時太長,且只能測試一組參數,而我需要測試很多組。


我的第二個想法是使用來自 Polymarket CLOB API 的線上歷史數據進行回測。不幸的是,對於 BTC 15 分鐘漲 / 跌市場,歷史數據端點一直返回空數據集。沒有歷史價格跳動(ticks),回測就無法檢測到「大約 3 秒內的暴跌」,無法觸發 Leg 1,無論參數如何,都會產生 0 次循環和 0% 的投資回報率(ROI)。



經過進一步調查,我發現其他使用者在獲取某些市場的歷史數據時也遇到了同樣的問題。我測試了其他確實返回歷史數據的市場,並得出結論:對於這個特定的市場,歷史數據根本沒有被保留。


由於這個限制,回測該策略唯一可靠的方法是在機器人運行時,通過記錄實時最優賣價(best-ask)來創建我自己的歷史數據集。



記錄器將快照寫入磁盤,包含以下內容:


· 時間戳記

· 輪次標識(round s