背景

我在玩 Polymarket——一個基於加密貨幣的預測市場。你可以買入「某事件會發生」或「不會發生」的合約,價格反映市場共識的機率。如果你認為市場定價錯了,就有套利空間。

一開始是手動看新聞、手動下單。後來想自動化,畢竟我已經有一個跑在 VPS 上的 AI agent(用 OpenClaw 串接 Telegram),何不讓它幫我盯盤?


第一版:全自主 agent

最初的版本很粗暴:

  • 每 30 分鐘,cron 喚醒 AI agent
  • Agent 自己用 CLI 查持倉、掃新聞、分析信號、下單
  • 所有邏輯都在一個大 prompt 裡

問題很快浮現:

  1. 成本高:每次喚醒都用高階模型(因為需要推理能力),30 分鐘一次,token 消耗驚人
  2. 不可預測:同一組資料,不同次執行可能產生完全相反的結論
  3. 難以除錯:出了問題很難回溯「當時為什麼這樣決定」
  4. 浪費算力:90% 的時間市場沒有變化,agent 做了一堆分析然後什麼都沒做

核心矛盾:資料收集不需要推理能力,但決策需要。把兩者混在一起,等於用高階模型的價格做低階模型的工作。


第二版:分層架構

改版的核心想法:分離收集與決策,只在需要時才啟動高階模型。

┌─────────────┐     ┌──────────────┐     ┌─────────────┐
│  Cron 排程   │────▶│  資料收集層   │────▶│  決策層      │
│  (每 30 min) │     │  (低成本模型) │     │  (高階模型)  │
└─────────────┘     └──────────────┘     └─────────────┘
                           │                     │
                     有信號時才觸發          審閱 + 下單
                           │                     │
                    ┌──────▼──────┐        ┌─────▼──────┐
                    │  Exit 檢查  │        │  Telegram   │
                    │  新聞掃描   │        │  回報結果   │
                    │  跟單偵測   │        └────────────┘
                    └─────────────┘

資料收集層

一個 shell script 串接多個 Python 模組,每次執行輸出一份 JSON 摘要:

# collect.sh 的邏輯
# 1. 查餘額(CLI,不需要 LLM)
# 2. 跑 exit_manager.py(規則式,不需要 LLM)
# 3. 餘額夠才跑新聞掃描(需要 LLM,用低成本模型)
# 4. 輸出 JSON 到 stdout

Exit Manager 是純規則引擎,不需要任何 LLM:

# 三個出場條件,硬編碼
if percent_pnl >= 30:
    reason = "take_profit"
elif percent_pnl <= -50:
    reason = "stop_loss"
elif end_date and (end_date - now) < three_days:
    reason = "expiry"

新聞掃描器 才用到低成本模型。它從多個來源(自建的社群摘要 pipeline、公開新聞源)抓最新資訊,交給模型分析是否有市場還沒反映的事件:

# 只看不確定的市場(Yes 價格在 0.20-0.80)
# 只看有流動性的市場(volume > $10K)
# 用低成本模型分析新聞 vs 當前定價是否有偏差
markets = [m for m in markets 
           if 0.20 <= get_yes_price(m) <= 0.80 
           and get_volume(m) > 10000]

決策層

關鍵設計:沒有信號就不喚醒高階模型。

# cron-wrapper.sh
TOTAL=$((HAS_EXIT + HAS_NEWS + HAS_COPY))
if [ "$TOTAL" -gt 0 ]; then
    # 用 system event 通知高階 agent
    openclaw cron add \
        --name "polymarket-decision" \
        --at "1m" \
        --system-event "有 ${TOTAL} 個信號需要審閱..." \
        --session main \
        --wake now \
        --delete-after-run
else
    echo "No signals, skipping"
fi

高階模型收到通知後:

  1. 重新執行 collect.sh 取得最新資料
  2. 審閱每個信號的合理性
  3. 決定是否執行(可以否決低成本模型的建議)
  4. 用 CLI 下單
  5. 透過 Telegram 回報結果

為什麼不全部用規則?

既然 Exit Manager 已經是純規則,為什麼新聞掃描不也用規則?

因為新聞分析本質上需要語言理解。你要判斷「某則新聞是否已經被市場定價反映」,這不是 if-else 能處理的。但這個判斷的品質要求沒有最終決策那麼高——它只需要「發現可能的機會」,不需要「做出完美的決策」。

這就是分層的意義:

任務需要 LLM?品質要求適合的模型
查餘額、查持倉N/ACLI 直接跑
止盈/止損判斷規則即可Python 腳本
新聞掃描中(召回率 > 精確率)低成本模型
最終交易決策高(要考慮多因素)高階模型

實際效果

成本下降

舊版:每 30 分鐘喚醒高階模型 → 一天 48 次 → 大量 token 消耗 新版:低成本模型跑收集,90% 的時間沒信號 → 高階模型一天可能只被喚醒 2-3 次

可追溯性

每次收集的 JSON 都寫 log,可以回溯:

[2026-03-02 17:00:05] === 資料收集開始 ===
[2026-03-02 17:00:06] 餘額: $41.11
[2026-03-02 17:00:08] Exit signals: 1
[2026-03-02 17:00:08] 執行進場掃描...
[2026-03-02 17:00:15] News: 0 signals

實戰成績

架構上線後的幾筆交易:

  • 某地緣政治事件合約 No:+41.4%(23 shares,自動止盈賣出)
  • 某軍事行動合約 No:+40.7%(33 shares,自動止盈賣出)

兩次都是 Exit Manager 偵測到獲利超過門檻 → 通知高階模型 → 審閱確認 → 執行市價賣出 → Telegram 回報。整個流程從偵測到執行大約 2 分鐘。


踩過的坑

1. 低成本模型的 thinking 行為

我用的低成本模型(某家 API 相容服務)有個特性:它永遠會產生 thinking block,即使你設定 thinking: disabled 也沒用。

當輸入資料量大時(150+ 篇文章),thinking 會膨脹到 16000+ tokens,直接吃完 max_tokens 配額,導致實際回應被截斷。

解法: 設定 budget_tokens 限制 thinking 長度(我設了 2000),強制模型把 token 預算留給實際輸出。

2. 已結算倉位的幽靈信號

Exit Manager 會遍歷所有持倉,但已經結算的倉位(合約到期、結果確定)會顯示 cur_price: 0。如果不跳過,每次都會產生「虧損 100%」的假信號。

# 簡單但重要的一行
if cur_price == 0:
    continue

3. 餘額不足時的無效掃描

新聞掃描需要呼叫 LLM API,有成本。如果餘額只剩 $5,就算找到機會也沒錢買。所以加了門檻:

if (( $(echo "$BALANCE >= 30" | bc -l) )); then
    # 才跑新聞掃描
fi

4. Agent 自己把自己搞混

第一版讓 agent 同時負責分析和執行時,偶爾會出現它「說服自己」的情況:分析完覺得不該買,但在同一個 context 裡又找到一個理由,然後就買了。

分離收集和決策後,高階模型收到的是「乾淨的信號列表 + 原始資料」,沒有前一輪的分析結果干擾,決策品質明顯提升。


下一步構想

Copy Trading 模組

Polymarket 上有些大戶的勝率很高。計畫追蹤特定錢包的交易紀錄,當他們建倉時產生信號。這也是「收集層」的工作,不需要高階模型。

多市場關聯分析

目前每個市場獨立分析,但現實中事件是關聯的。例如「A 國是否出兵」和「B 資產是否漲」可能高度相關。這需要更複雜的推理,適合高階模型處理。

自動調整門檻

止盈 30%、止損 50% 是硬編碼的。理想的做法是根據市場類型(政治 vs 體育 vs 金融)和到期時間動態調整。規則式引擎可以做到一定程度,但完整的動態策略可能需要 LLM 輔助。


總結

這個專案最大的收穫不是交易本身,而是驗證了一種 AI agent 的架構模式

能用腳本的不用 LLM。能用便宜模型的不用貴模型。把決策權留給品質最高的環節。

這不只適用於預測市場。任何需要「監控 → 篩選 → 決策 → 執行」的場景都可以套用:

  • 監控: cron + CLI(零 LLM 成本)
  • 篩選: 規則引擎 + 低成本模型(低成本)
  • 決策: 高階模型(只在需要時啟動)
  • 執行: CLI + API(零 LLM 成本)

最貴的資源應該花在最需要判斷力的地方。其他的,自動化就好。