被動做市, 不主動開新倉。
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 通知
依訂單簿深度與獎勵誘因,重新定價既有限價單, 過程不建立新倉位。
建立虛擬環境, 填入金鑰,啟動。
前置條件: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每個模組只負責一件事。
核心邏輯拆在 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 |
用 Telegram 即時調整掛單。
以下要點均來自專案 README 與模組結構。控制面以 Telegram 為主:可在不重啟程式的情況下設定定價規則、查詢狀態與損益。下列指令與機制皆為官方文件所載,未經文件確認的用法不列入。
自訂定價規則
以 /set_rule <order_id> 為特定掛單設定定價規則,/get_rule 查詢、/clear_rule 清除。規則以 JSON 持久化,重啟後仍保留。
來源 · lihanyu81/polymarket_lp_tool README
狀態與損益查詢
/status 看執行狀態、/orders 列出目前掛單、/pnl 查損益。程式需要回應輸入時,以 /input <answer> 回覆。
來源 · README · Telegram 指令
粗 / 細 tick 兩段定價
simple_price_policy.py 內建粗 tick 與細 tick 兩種重新定價策略,對應不同的掛單調整幅度。
來源 · passive_liquidity 模組
成交與部分成交通知
程式會偵測掛單的成交與部分成交,並透過 Telegram 主動通知,免去手動盯盤。
來源 · README · 功能列表
防狙擊與跳動過濾
內建 midpoint jump 過濾與 anti-sniping 機制,在中間價劇烈跳動時抑制不利的重新掛單。
來源 · README · 風險監控
Web 控制台與 Rust 版
選用的 Flask 控制台預設在 http://127.0.0.1:8765;實驗性的 rust_mm_bot/ 以 WebSocket 串接市場與用戶事件。
來源 · README · run_web_panel.py / rust_mm_bot
啟動主迴圈, 用 Telegram 下規則。
以下示範一段典型流程:啟動被動做市主迴圈後,程式持續監控既有掛單;接著在 Telegram 為某張掛單設定定價規則、查詢狀態,並在成交時收到通知。指令與進入點均取自官方文件,實際輸出視市場與設定而異。
$ python run_passive_bot.py
ok: passive loop started · 監控中
ok: repriced ✓
$ You › /status
claude: 運行中 · 監控掛單與獎勵區間 · 自上次重新定價 12s
$ You › /set_rule <order_id>
claude: 請輸入此掛單的定價規則。
$ You › /input (你的定價規則參數)
ok: 規則已儲存 · JSON 持久化 · 重啟後沿用
$ You › /orders
claude: 列出目前掛單與其套用的規則 …
hl: 🔔 FILL · 掛單部分成交
$ You › /pnl
claude: 回報目前損益與已累積的流動性獎勵 …
工具只重新定價既有掛單。 初始倉位與下單條件,仍由你決定。
這段流程的重點
被動做市的價值在於持續把掛單維持在可領取獎勵的位置,而不主動建立方向性倉位。reward_monitor.py 判斷掛單是否落在獎勵區間,simple_price_policy.py 決定如何微調,order_manager.py 執行取消與重掛。
Telegram 是即時控制層:不需停掉程式就能改規則、查狀態。規則以 JSON 落地,因此重啟後設定不會遺失。成交與部分成交都會主動通知,無須持續盯著終端機。
上線前, 先確認這些邊界。
把工具調成你的策略。
核心邏輯集中在 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 重寫版。
依訂單簿與獎勵調整既有掛單, 把盯盤交給程式。