142 lines
9.8 KiB
Markdown
142 lines
9.8 KiB
Markdown
Polymarket 預測市場 Agent 完整流程
|
||
|
||
整個系統用 LangGraph 建構成一個 state machine,每一步是一個 LLM agent node。流程如下:
|
||
|
||
┌─────────────────────────────────────────────────────┐
|
||
│ 輸入 │
|
||
│ market_id + trade_date + market_question │
|
||
└────────────────────┬────────────────────────────────┘
|
||
│
|
||
┌──────────▼──────────┐
|
||
│ Phase 1: 分析團隊 │ (4 個 Analyst,依序執行)
|
||
└──────────┬──────────┘
|
||
│
|
||
┌────────────────┼────────────────┐
|
||
▼ ▼ ▼ ▼
|
||
┌─────────┐ ┌───────────┐ ┌─────────────┐ ┌───────────┐
|
||
│ Event │ │ Odds │ │ Information │ │ Sentiment │
|
||
│ Analyst │→ │ Analyst │→ │ Analyst │→ │ Analyst │
|
||
└─────────┘ └───────────┘ └─────────────┘ └───────────┘
|
||
│ │ │ │
|
||
│ 可多次呼叫 tools(loop until done) │
|
||
▼ ▼ ▼ ▼
|
||
event_report odds_report information_report sentiment_report
|
||
│
|
||
┌──────────▼──────────┐
|
||
│ Phase 2: 研究辯論 │ (YES vs NO Researcher)
|
||
└──────────┬──────────┘
|
||
│
|
||
┌──────┴──────┐
|
||
▼ ▼
|
||
┌──────────┐ ┌──────────┐
|
||
│ YES │◄►│ NO │ ← 來回辯論 N 輪
|
||
│Researcher│ │Researcher│ (max_debate_rounds)
|
||
└──────────┘ └──────────┘
|
||
│ │
|
||
└──────┬──────┘
|
||
▼
|
||
┌─────────────────┐
|
||
│Research Manager │ ← 綜合正反方,寫出投資計劃
|
||
│ (Judge) │ (用 deep_think_llm)
|
||
└────────┬────────┘
|
||
│
|
||
┌──────────▼──────────┐
|
||
│ Phase 3: 交易決策 │
|
||
└──────────┬──────────┘
|
||
▼
|
||
┌────────────┐
|
||
│ PM Trader │ ← 計算 edge、Kelly Criterion
|
||
│ │ 輸出 BUY_YES / BUY_NO / PASS
|
||
└──────┬─────┘
|
||
│
|
||
┌──────────▼──────────┐
|
||
│ Phase 4: 風險管理 │ (3 人辯論)
|
||
└──────────┬──────────┘
|
||
│
|
||
┌───────────────┼───────────────┐
|
||
▼ ▼ ▼
|
||
┌───────────┐ ┌──────────────┐ ┌─────────┐
|
||
│Aggressive │◄►│Conservative │◄►│ Neutral │ ← 三方辯論 N 輪
|
||
│ Analyst │ │ Analyst │ │ Analyst │
|
||
└───────────┘ └──────────────┘ └─────────┘
|
||
│
|
||
▼
|
||
┌──────────────┐
|
||
│ Risk Judge │ ← 最終裁決
|
||
│ │ (用 deep_think_llm)
|
||
└──────┬───────┘
|
||
│
|
||
▼
|
||
┌─────────────────┐
|
||
│ Signal Processor│ ← 把結果轉成結構化 JSON
|
||
└────────┬────────┘
|
||
▼
|
||
最終輸出 JSON
|
||
|
||
各階段詳解
|
||
|
||
Phase 1 — 四個 Analyst(用 quick_think_llm)
|
||
|
||
┌─────────────┬────────────────────────────────────────────────────────────────┬────────────────────────────────────────────────────┐
|
||
│ Analyst │ 工具 │ 職責 │
|
||
├─────────────┼────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────┤
|
||
│ Event │ get_market_info, get_resolution_criteria, get_event_context │ 分析事件本身:在預測什麼?解析條件是否清楚? │
|
||
├─────────────┼────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────┤
|
||
│ Odds │ get_market_info, get_market_price_history, get_order_book │ 分析市場微結構:價格、流動性、order book、定價效率 │
|
||
├─────────────┼────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────┤
|
||
│ Information │ get_news, get_global_news, get_related_markets, search_markets │ 搜尋尚未被 price in 的資訊、相關市場 │
|
||
├─────────────┼────────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────┤
|
||
│ Sentiment │ get_news, get_global_news │ 輿論和社群情緒分析 │
|
||
└─────────────┴────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────┘
|
||
|
||
每個 Analyst 可以多次呼叫工具(tool loop),直到它不再需要更多資料為止。
|
||
|
||
Phase 2 — YES/NO Researcher 辯論
|
||
|
||
- YES Researcher:建立「事件會發生」的論點
|
||
- NO Researcher:建立「事件不會發生」的論點
|
||
- 兩人來回辯論 max_debate_rounds 輪
|
||
- 都有 BM25 記憶系統,可以參考過去類似市場的分析經驗
|
||
- Research Manager(用 deep_think_llm):綜合正反方,產出 investment_plan
|
||
|
||
Phase 3 — PM Trader
|
||
|
||
- 收到所有報告 + 投資計劃
|
||
- 估計真實機率 vs 市場價格
|
||
- 計算 edge(差距)
|
||
- 用 0.25x Kelly Criterion 算部位大小
|
||
- 如果 edge < 5% → PASS
|
||
- 也會查詢過去的記憶來學習
|
||
|
||
Phase 4 — 風險管理三方辯論
|
||
|
||
- Aggressive Analyst:支持交易,強調 edge 和上行空間
|
||
- Conservative Analyst:反對交易,強調風險
|
||
- Neutral Analyst:平衡觀點
|
||
- 三人辯論 max_risk_discuss_rounds 輪
|
||
- Risk Judge(用 deep_think_llm):做最終裁決
|
||
|
||
最後 — Signal Processing
|
||
|
||
用 LLM 把 Risk Judge 的自然語言輸出,轉成結構化 JSON:
|
||
|
||
{
|
||
"signal": "BUY_YES | BUY_NO | PASS",
|
||
"estimated_probability": 0.65,
|
||
"market_price": 0.50,
|
||
"edge": 0.15,
|
||
"position_size": 0.03,
|
||
"confidence": "medium"
|
||
}
|
||
|
||
額外機制:反思學習(Reflection)
|
||
|
||
跑完交易後可以呼叫 pm.reflect_and_remember(returns),系統會:
|
||
- 回顧每個 agent 的決策是否正確
|
||
- 用 BM25 把學到的教訓存入記憶
|
||
- 下次遇到類似市場時,agent 會自動參考過去的經驗
|
||
|
||
資料來源
|
||
|
||
全部來自 Polymarket Gamma API(公開免費、不需 auth),包括市場資訊、價格歷史、order book 等。新聞工具則沿用股票版的 yfinance
|
||
news(所以政治類新聞通常搜不到)。 |