實戰手冊 · Field Manual 2026 春季號
github.com/lihanyu81/polymarket_lp_tool · 261 ★
L
開源工具 · Polymarket / 流動性做市

Polymarket 流動性的
被動做市工具。

polymarket_lp_tool 監控你在 Polymarket 已掛出的限價單,依訂單簿深度與流動性獎勵誘因自動重新定價,過程不建立新倉位。核心迴圈以 Python 實作,另附實驗性 Rust 重寫版;掛單規則、風控與成交通知都能透過 Telegram 指令或 Web 控制台操作。

261
GitHub Stars
49
Forks
Python · Rust
核心語言
未標示
授權條款
01
這是什麼

被動做市,
不主動開新倉。

polymarket_lp_tool 是針對 Polymarket 流動性提供(LP)設計的被動掛單工具。它的職責很窄:監控你已經掛在市場上的限價單,依訂單簿深度與流動性獎勵區間自動重新定價,讓掛單持續落在能賺取獎勵的位置。它不會替你開新倉位,初始掛單仍需由你建立。

Polymarket 是運行於 Polygon 的 CLOB(中央限價訂單簿)預測市場,並對提供流動性的掛單發放獎勵。手動盯盤重新掛單既耗時又容易錯過區間,這支工具把「讀訂單簿 → 比對獎勵條件 → 調整既有掛單 → 偵測成交 → 通知」這條迴圈自動化。核心以 Python 實作(passive_liquidity/ 模組),另有一個實驗性的 Rust 重寫版 rust_mm_bot/,以 WebSocket 串接市場與用戶事件。

操作面分三層:run_passive_bot.py 啟動主迴圈;Telegram 機器人負責即時設定規則與查詢狀態;選用的 Flask Web 控制台(預設 http://127.0.0.1:8765)提供圖形介面。定價規則以 JSON 持久化,重啟後仍保留。

被動做市 · 核心迴圈
讀訂單簿深度 比對獎勵區間 重新定價既有掛單 偵測成交 Telegram 通知
依訂單簿深度與獎勵誘因,重新定價既有限價單,
過程不建立新倉位。
— polymarket_lp_tool 的功能定位
02
安裝

建立虛擬環境,
填入金鑰,啟動。

前置條件:Python 3、一個 Polygon 錢包私鑰,以及你的 Polymarket funder 位址。把 repo 取回後建立虛擬環境、安裝相依套件,再從範本複製 .env 並填入金鑰。

# 進入專案、建立並啟用虛擬環境 cd polymarket_lp_tool python3 -m venv .venv source .venv/bin/activate # 安裝相依套件 pip install -r requirements.txt # 從範本建立 .env,填入 PRIVATE_KEY 與 POLYMARKET_FUNDER cp .env.example .env # 啟動被動做市主迴圈 ./.venv/bin/python run_passive_bot.py

選用介面:Web 控制台與實驗性 Rust 版

除了純命令列,專案另提供一個 Flask Web 控制台,以及一個以 Rust 重寫、透過 WebSocket 串接市場與用戶事件的實驗性版本。兩者依需求啟動即可。

# 啟動 Web 控制台,預設 http://127.0.0.1:8765 python run_web_panel.py # 以模組方式啟動主迴圈(等同 run_passive_bot.py) python -m passive_liquidity.main_loop # 實驗性 Rust 版(rust_mm_bot/) cd rust_mm_bot && PASSIVE_UI_MODE=web RUST_LOG=info cargo run
.env 內含真實私鑰。PRIVATE_KEYPOLYMARKET_FUNDER 直接對應一個有資金的 Polygon 錢包。請勿將 .env 提交進版本控制,並在受信任的機器上執行。授權條款未在 repo 標示,商用或再散布前請先向作者確認。
03
能力總覽

每個模組
只負責一件事。

核心邏輯拆在 passive_liquidity/ 之下,各模組對應做市迴圈的一個環節:擷取訂單簿、決定定價、管理掛單、追蹤獎勵、偵測成交。控制面則由 Telegram 與選用的 Web 控制台組成。下方依職責列出主要模組與進入點。

Data · 擷取
orderbook_fetcher.py
訂單簿擷取
讀取目標市場的訂單簿深度,作為重新定價的輸入資料。
Rewards · 獎勵
reward_monitor.py
獎勵監控
追蹤 Polymarket 流動性獎勵的區間與條件,判斷掛單是否落在可領獎位置。
Policy · 定價
simple_price_policy.py
定價策略
內建粗 tick 與細 tick 兩種重新定價邏輯,決定掛單的目標價格。
Orders · 掛單
order_manager.py
掛單管理
依策略更新或取消既有限價單,並偵測成交與部分成交。
Risk · 風控
風控過濾
風險控制
midpoint jump 過濾與防狙擊(anti-sniping)機制,降低不利成交。
Rules · 規則
custom_pricing_rules_store.py
自訂規則
透過 Telegram 設定的定價規則以 JSON 持久化,重啟後仍保留。
Control · 控制
Telegram Bot
即時控制
以 /set_rule、/get_rule、/clear_rule 設定規則,/status、/orders、/pnl 查詢狀態。
UI · 介面
web_panel/
Web 控制台
選用的 Flask 圖形介面,預設 http://127.0.0.1:8765,提供瀏覽器端監控。

從哪個進入點啟動

你要做什麼 指令
啟動被動做市主迴圈 python run_passive_bot.py
以模組方式啟動主迴圈 python -m passive_liquidity.main_loop
開啟 Web 控制台(預設埠 8765) python run_web_panel.py
執行實驗性 Rust 版 cd rust_mm_bot && PASSIVE_UI_MODE=web RUST_LOG=info cargo run
04
操作要點 · Telegram 指令

用 Telegram
即時調整掛單。

以下要點均來自專案 README 與模組結構。控制面以 Telegram 為主:可在不重啟程式的情況下設定定價規則、查詢狀態與損益。下列指令與機制皆為官方文件所載,未經文件確認的用法不列入。

01

自訂定價規則

/set_rule <order_id> 為特定掛單設定定價規則,/get_rule 查詢、/clear_rule 清除。規則以 JSON 持久化,重啟後仍保留。

來源 · lihanyu81/polymarket_lp_tool README
02

狀態與損益查詢

/status 看執行狀態、/orders 列出目前掛單、/pnl 查損益。程式需要回應輸入時,以 /input <answer> 回覆。

來源 · README · Telegram 指令
03

粗 / 細 tick 兩段定價

simple_price_policy.py 內建粗 tick 與細 tick 兩種重新定價策略,對應不同的掛單調整幅度。

來源 · passive_liquidity 模組
04

成交與部分成交通知

程式會偵測掛單的成交與部分成交,並透過 Telegram 主動通知,免去手動盯盤。

來源 · README · 功能列表
05

防狙擊與跳動過濾

內建 midpoint jump 過濾與 anti-sniping 機制,在中間價劇烈跳動時抑制不利的重新掛單。

來源 · README · 風險監控
06

Web 控制台與 Rust 版

選用的 Flask 控制台預設在 http://127.0.0.1:8765;實驗性的 rust_mm_bot/ 以 WebSocket 串接市場與用戶事件。

來源 · README · run_web_panel.py / rust_mm_bot
05
使用實例

啟動主迴圈,
用 Telegram 下規則

以下示範一段典型流程:啟動被動做市主迴圈後,程式持續監控既有掛單;接著在 Telegram 為某張掛單設定定價規則、查詢狀態,並在成交時收到通知。指令與進入點均取自官方文件,實際輸出視市場與設定而異。

~/polymarket_lp_tool · passive liquidity
$ source .venv/bin/activate $ python run_passive_bot.py
[載入 .env · PRIVATE_KEY / POLYMARKET_FUNDER 已讀取] [連線 Polymarket CLOB · Polygon] [掃描既有掛單 · 讀取訂單簿深度] passive loop started · 監控中
[掛單偏離獎勵區間 → 觸發重新定價] policy=fine(細 tick)· 取消舊單 → 掛入新價 repriced ✓
──────────── Telegram ──────────── You › /status 運行中 · 監控掛單與獎勵區間 · 自上次重新定價 12s
You › /set_rule <order_id> 請輸入此掛單的定價規則。 You › /input (你的定價規則參數) 規則已儲存 · JSON 持久化 · 重啟後沿用
You › /orders 列出目前掛單與其套用的規則 …
🔔 FILL · 掛單部分成交 [偵測成交 → Telegram 通知 → 更新持倉]
You › /pnl 回報目前損益與已累積的流動性獎勵 …
工具只重新定價既有掛單。
初始倉位與下單條件,仍由你決定。
— polymarket_lp_tool 的職責邊界

這段流程的重點

被動做市的價值在於持續把掛單維持在可領取獎勵的位置,而不主動建立方向性倉位。reward_monitor.py 判斷掛單是否落在獎勵區間,simple_price_policy.py 決定如何微調,order_manager.py 執行取消與重掛。

Telegram 是即時控制層:不需停掉程式就能改規則、查狀態。規則以 JSON 落地,因此重啟後設定不會遺失。成交與部分成交都會主動通知,無須持續盯著終端機。

06
使用前須知

上線前,
先確認這些邊界

  • 它不會替你開新倉。工具只重新定價既有掛單;初始倉位與掛單需由你自行建立。沒有掛單時,它沒有可調整的對象。
  • 處理真實私鑰與資金。.env 內的 PRIVATE_KEY 對應實際的 Polygon 錢包。請妥善保管、切勿提交進版本控制,並在受信任的機器上執行。
  • 授權條款未標示。repo 未附 LICENSE 檔。再散布、商用或製作衍生品之前,請先向作者確認授權範圍。
  • Rust 版為實驗性質。rust_mm_bot/ 是實驗性重寫版,功能覆蓋與穩定度可能與 Python 版不一致;正式環境建議以 Python 版為主。
  • 重新定價不保證成交或獲利。獎勵區間與市場深度會持續變動。工具負責把掛單維持在目標位置,但不保證被成交,也不保證最終獲利。
  • 防狙擊不等於免疫。midpoint jump 過濾與 anti-sniping 機制能降低、但無法消除逆選擇與毒性流(toxic flow)造成的不利成交。
  • 承擔鏈上與市場風險。Polymarket 為 Polygon 上的鏈上 CLOB 市場,操作涉及鏈上交易、gas 成本與智能合約風險,請自行評估。
07
進階路徑

把工具調成你的策略。

核心邏輯集中在 passive_liquidity/ 之下,皆為純 Python,可直接閱讀與修改。下面的方向可作為調整與延伸的起點。

進階調整地圖

1. 調整定價策略。修改 simple_price_policy.py 的粗 tick / 細 tick 邏輯,改變掛單貼近中間價的程度與重新定價頻率。

2. 管理 Telegram 規則。/set_rule 為個別掛單設定規則,規則以 JSON 落地;可將規則檔納入備份或版本管理。

3. 啟用 Web 控制台。執行 python run_web_panel.py,在瀏覽器端(預設 http://127.0.0.1:8765)監控掛單與狀態。

4. 試用實驗性 Rust 版。rust_mm_bot/ 以 WebSocket 串接市場與用戶事件,延遲較低;屬實驗性質,評估後再用於正式環境。

5. 檢視風控門檻。檢查 midpoint jump 過濾與 anti-sniping 的參數,依目標市場的波動性調整觸發條件。

最該讀的三個位置

README——安裝、Telegram 指令與功能總覽。
passive_liquidity/——主迴圈與定價、掛單、獎勵各模組原始碼。
rust_mm_bot/——實驗性 Rust 重寫版。

依訂單簿與獎勵調整既有掛單,
把盯盤交給程式。
— polymarket_lp_tool 的用途定位