TradingAgents/0323.md

9.8 KiB
Raw Blame History

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 │ └─────────┘ └───────────┘ └─────────────┘ └───────────┘ │ │ │ │ │ 可多次呼叫 toolsloop 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所以政治類新聞通常搜不到