AI 工具 20 min read

TradingAgents 安裝教學:用 Claude 訂閱跑 AI 交易團隊分析台積電,兩次結論相反

TradingAgents 是 Tauric Research 開源的 Python 框架(Apache-2.0、12 萬星),讓分析師、多空研究員、交易員、風控和投資組合經理用 LangGraph 開會給出五級評等;我照 README 裝起來,用 173 行轉接程式接上 Claude 訂閱跑台積電。同一檔股票跑兩次,結論從減碼翻成加碼,差別只在財報有沒有被防前視機制擋掉——適合學多代理人設計,不適合照評等下單。

本文目錄 · 11
懶人包
  • TradingAgents 是 Tauric Research 開源的 Python 框架(Apache-2.0,2026-11-03 查 120,080 星,最新 v0.7.1),讓分析師、多空研究員、交易員、風控與投資組合經理等角色用 LangGraph 開會,最後給出五級評等。
  • 安裝只要三步:git clone、Python 3.11 以上建虛擬環境、pip install .;我在 Windows 11 + Python 3.11.9 裝完,tradingagents.__version__ 回 0.7.1。
  • 沒有 API key 也能跑:框架支援 openai_compatible 端點,我寫了 173 行的轉接程式把請求轉給 claude -p,扣的是 Claude 訂閱方案的用量。
  • 台股直接用 Yahoo Finance 代號 2330.TW;一次分析約 3.5 到 4 分鐘、15 到 16 次 LLM 呼叫、約 13 到 15 萬輸入 token。
  • 同一檔台積電跑兩次,結論從 Underweight(減碼)翻成 Overweight(加碼):第一次基準日在過去,框架的防前視機制擋掉了所有財報;第二次拿到財報才翻多。
  • 適合拿來學多代理人設計、讀多空論點;不適合照評等下單,論文的回測結果表只列 3 檔美股、約 3 個月。

Prism Research 在 IG 發了一篇 TradingAgents 的介紹(2026-10-29),封面寫著「GitHub 11 萬星的開源 AI 交易團隊」,要看安裝教學得先留言「分析」。我沒有留言,直接照 GitHub README 裝起來,接上自己的 Claude 訂閱,對台積電跑了兩次。

這篇是完整過程:怎麼裝、怎麼接模型、怎麼跑台股,以及兩次結論為什麼剛好相反。

TradingAgents 是什麼?

TradingAgents 是 Tauric Research 開源的多代理人交易分析框架,配套論文是 arXiv 2412.20138。它照交易公司的分工設計角色,每個角色是一個 LLM 呼叫,用 LangGraph 串成固定流程:

市場分析師

多方研究員

新聞分析師

基本面分析師

空方研究員

研究經理
寫投資計畫

交易員
寫交易提案

三位風控
辯論

投資組合經理
五級評等

階段角色產出
1 分析市場、情緒、新聞、基本面分析師(可自選)各自一份報告,並行產生
2 研究多方、空方研究員辯論,研究經理裁決投資計畫
3 交易交易員交易提案(進場區間、停損)
4 風控激進、保守、中立三位辯論風險意見
5 決策投資組合經理Buy/Overweight/Hold/Underweight/Sell
模型分兩級:quick_think_llm 給分析師、研究員、交易員和風控,deep_think_llm 給兩位經理。每個角色的報告都會存成 Markdown,跑完可以逐份讀,這是它比「丟一句提示詞問 AI 該不該買」有價值的地方。

我在 2026-11-03 用 gh api 查到的 repo 狀態:120,080 星、22,969 fork、Apache-2.0,最新版本 v0.7.1(2026-10-27 發布)。IG 封面寫的 11 萬星是貼文當時的數字。

安裝前要準備什麼?

項目需求我的環境
作業系統不限,官方另有 DockerWindows 11
Python3.11 以上(README 範例用 3.13)3.11.9
git用來 clone repo已安裝
LLMAPI key、ChatGPT 訂閱、Ollama 或任何 OpenAI 相容端點,四選一Claude 訂閱 + 自寫轉接程式
選配資料 keyFRED_API_KEY(免費,總經資料)、ALPHA_VANTAGE_API_KEY都沒設

TradingAgents 怎麼安裝?

照 README 的 Installation 段落,我在 Windows 的 Git Bash 實際跑的指令如下。python 要是 3.11 以上;裝了多個版本時,Windows 可以用 py -3.11 -m venv .venv 指定:

git clone --depth 1 https://github.com/TauricResearch/TradingAgents.git
cd TradingAgents
python -m venv .venv
source .venv/Scripts/activate   # macOS / Linux 改成 source .venv/bin/activate
pip install .

2026-11-03 我在全新目錄重跑一次這組指令,clone 加 pip install 共 5 分 9 秒。裝完先確認版本:

python -c "import tradingagents; print(tradingagents.__version__)"
0.7.1

README 也提供 conda、uv 和 Docker 三種裝法:

# Docker:先把 API key 填進 .env
cp .env.example .env
docker compose run --rm tradingagents

要接哪個 LLM?四種方式比較

方式設定費用我的結果
API keyexport OPENAI_API_KEY=...,另支援 Anthropic、Google、DeepSeek 等十多家按 token 計費手上的 OpenAI key 回 401,已失效
ChatGPT 訂閱tradingagents login chatgpt,在瀏覽器授權算進 Plus/Pro 方案用量沒試,需要人在瀏覽器前授權
Ollama 本機模型llm_provider: "ollama"免費本機 Ollama 啟動失敗(Unable to init instance)
OpenAI 相容端點llm_provider: "openai_compatible" + backend_url看端點採用:自寫轉接程式接 claude -p
第四種是 README 寫明支援的用法:vLLM、LM Studio 或「custom relay」都能接,本機端點不需要 key。

用 Claude 訂閱跑 TradingAgents:173 行轉接程式

TradingAgents 會對 backend_url 發 OpenAI 格式的 /v1/chat/completions 請求,其中分析師要呼叫工具抓股價、財報,所以請求會帶 function calling。我寫的 claude_relay.py 做三件事:

  1. 把 OpenAI 的 messages 攤平成一段對話文字,工具定義塞進 system prompt。
  2. 要求模型只回一個 JSON:要呼叫工具就回 {"tool_calls": [...]},要回答就回 {"content": "..."}。
  3. 把這個 JSON 轉回 OpenAI 的 tool_calls 或一般回應格式。
核心是呼叫 Claude Code 的非互動模式,關掉它自己的工具與 MCP,只當純 LLM 用:
cmd = ["claude", "-p", "--model", MODEL, "--tools", "", "--strict-mcp-config",
       "--no-session-persistence", "--setting-sources", "", "--output-format", "json",
       "--system-prompt", system_text]
proc = subprocess.run(cmd, input=prompt_text, capture_output=True, text=True,
                      encoding="utf-8", env=env, timeout=CLAUDE_TIMEOUT_SEC)

解析 JSON 時要加 strict=False。第一次跑完,市場分析報告開頭殘留了 {"content": ...} 外殼,原因是模型在 JSON 字串裡輸出真的換行字元,json.loads 預設會拒絕,程式就退回把整段原文當答案。改成 json.loads(..., strict=False) 後,第二次跑的報告沒有殘留。

obj = json.loads(cleaned[start:end + 1], strict=False)

轉接程式起在本機,再讓 TradingAgents 指過去:

python claude_relay.py 8765 sonnet
# claude relay on http://127.0.0.1:8765/v1 model=sonnet

這個做法扣的是 Claude 訂閱方案的用量,不另外產生 API 帳單。代價是轉接程式不支援串流,每次呼叫都要等 claude -p 整段跑完。同樣的轉接思路我之前也用在 MemPalace 接 claude -p。

怎麼用 TradingAgents 分析台股?

README 寫的是「Yahoo Finance 支援的市場都能用,代號要帶交易所後綴」,列出的例子沒有台股,但台股在 Yahoo Finance 的格式就是 代號.TW(上市)。台積電是 2330.TW,我實測可以跑。

我用 Python 呼叫,選三位分析師,辯論各 1 輪,輸出繁體中文:

from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG

cfg = DEFAULT_CONFIG.copy()
cfg.update({
    "llm_provider": "openai_compatible",
    "backend_url": "http://127.0.0.1:8765/v1",
    "quick_think_llm": "claude-sonnet-via-relay",
    "deep_think_llm": "claude-sonnet-via-relay",
    "max_debate_rounds": 1,
    "max_risk_discuss_rounds": 1,
    "output_language": "Traditional Chinese",
    "results_dir": "./results",
})
ta = TradingAgentsGraph(selected_analysts=["market", "news", "fundamentals"], config=cfg)
state, decision = ta.propagate("2330.TW", "2026-11-03")
print(decision)
ta.save_reports(state, "2330.TW")

不想寫程式也可以用 CLI。README 的非互動範例是用旗標帶參數:

tradingagents --ticker NVDA --date 2026-09-23 --analysts market,news,fundamentals --save --no-show

save_reports() 會照階段輸出資料夾,另附一份 complete_report.html:

2330.TW_20261103_111143/
├── 1_analysts/   market.md  news.md  fundamentals.md
├── 2_research/   bull.md  bear.md  manager.md
├── 3_trading/    trader.md
├── 4_risk/       aggressive.md  conservative.md  neutral.md
├── 5_portfolio/  decision.md
├── complete_report.md
└── complete_report.html

實測:台積電跑兩次,結論為什麼相反?

兩次設定完全相同,只差分析基準日。數字來自執行 log 與轉接程式記下的每次呼叫紀錄:

第 1 次第 2 次
分析基準日2026-10-30(收盤 2370)2026-11-03(收盤 2325)
耗時203.3 秒232.5 秒
LLM 呼叫/工具呼叫16/2715/24
輸入/輸出 token約 134k/23k約 153k/27k
基本面資料無,全部被擋有:2026Q3 營收年增約 51%、毛利率 66.4%
最終評等Underweight(減碼 15–20%)Overweight(分批小量加碼)
TradingAgents 分析台積電 2330.TW 的成果頁:第 2 次評等 Overweight、耗時 3.9 分、15 次 LLM 呼叫,下方表格對照兩次分析的基準日、基本面資料與評等

技術面兩次都偏空:股價在 10 EMA 與 50 SMA 之下、MACD 柱狀圖為負。差別在基本面。

第 1 次的基本面分析師回報「五項基本面工具全部回傳資料被保留(withheld)」。原因在 tradingagents/dataflows/date_window.py 的防前視機制:當基準日是過去,Yahoo 這類只用報表期間標日期、沒有申報日的資料源,框架無法確定那天財報是否已經公開,所以整份不給。美股可以改走 SEC EDGAR 的實際申報版本;2330.TW 這次沒有走到這條路,五項工具全被擋。

第 2 次基準日是當天,財報照常讀到。投資組合經理的結論直接寫「基本面證據明顯勝出」,把評等翻成加碼。

這個機制本身是對的,它防止模型讀到「當時還不知道的數字」。但結果是:同一套框架、同一檔股票,評等可以只因為一類資料有沒有進來就整個翻面。只看最後那個字,會漏掉這件事;把五個資料夾的報告讀過一遍才看得出來。

兩份完整報告我做成了一個網頁:TradingAgents 台積電實測成果頁。

跑的時候會踩到哪些坑?資料缺口一覽

兩次執行都出現下面三個訊息,框架會換下一個資料源或略過,不會中斷:

訊息影響處理方式
yfinance 新聞回 YFDataException新聞分析師拿不到 Yahoo 新聞換其他新聞資料源,或接受新聞報告較薄
Polymarket 回 self-signed certificate預測市場資料連不上憑證鏈出現自簽憑證,通常是網路環境或代理造成,我沒有再排查
FRED_API_KEY 沒設定沒有總經數據(利率等)到 FRED 申請免費 key,設成環境變數
這些缺口不會讓程式報錯,只會讓某份報告變薄。跑完一定要翻報告看「資料取得狀況」,不要只看 decision。

TradingAgents 的建議能拿來下單嗎?

我的判斷是不行,原因有三個:

  1. 論文的回測範圍小。論文的回測期間是 2024-01-01 到 2024-03-29,結果表列的是 AAPL、GOOGL、AMZN 三檔。AAPL 的 Sharpe ratio 8.21,作者在註腳自己寫「最高的 Sharpe ratio 超出我們預期的經驗範圍」。
  2. 前視偏誤的疑慮。回測期間在 LLM 的訓練資料範圍內,模型可能早就「看過」那段行情。新版框架對資料做了防前視處理,但模型本身的知識擋不掉。
  3. 我的實測就是反例。兩次相隔兩個交易日,評等從減碼翻到加碼,主因是資料有沒有進來,不是行情變了。
它值得的用法是:
  • 學多代理人設計:角色分工、多空辯論、風控辯論、結構化輸出,全部有原始碼和逐角色報告可對照。
  • 當成論點檢查清單:多方、空方、保守派風控各自提出的論點整理得不錯,可以拿來檢查自己有沒有漏看什麼。
如果你對 AI 交易工具的報酬數字有興趣,我之前也用蒙地卡羅模擬拆過一個 AI 交易機器人 22 小時翻 3.5 倍的說法。

本文只分享工具安裝與實測過程,不構成任何投資建議。

延伸資源

常見問題

TradingAgents 一定要付 API 費嗎?

不一定。它支援 ChatGPT Plus/Pro 訂閱登入、Ollama 本機模型,以及任何 OpenAI 相容端點。我用自寫的轉接程式接 claude -p,扣的是 Claude 訂閱方案的用量。

TradingAgents 可以分析台股嗎?

可以。代號用 Yahoo Finance 格式,上市股票加 .TW,例如台積電是 2330.TW。要注意基準日設在過去時,台股財報會被防前視機制擋掉,基本面報告會是空的。

跑一次 TradingAgents 要多久?

我的設定是三位分析師、辯論各 1 輪、全部角色用 Claude Sonnet,一次 203 到 233 秒,15 到 16 次 LLM 呼叫。分析師越多、辯論輪數越多,時間和 token 都會增加。

為什麼同一檔股票跑兩次結果不一樣?

我的兩次實測差在基本面資料:基準日在過去的那次財報全被擋,只能靠偏空的技術面,所以給減碼;拿到財報的那次翻成加碼。另外 LLM 輸出本來就有隨機性,就算資料完全相同,兩次的論點和評等也可能不同。

author
陳
陳彥彤

AI 工程師 · AI 顧問。Java 後端 8 年、AI 工程師 2 年。AI 內訓 · AI 導入顧問 · 前後端與雲端培訓。

support

覺得文章有用可以到 GitHub 給個 star,或是透過信箱聊聊 AI 內訓、AI 導入顧問或前後端 / 雲端培訓。

related

相關文章

[AI 工具] · 17min
MiroFish 是什麼?拆解大四生的群體智能預測引擎,我用 122 行 Python 讓 8 個 AI 推演珍奶漲價
MiroFish 是大四生郭航江開源的群體智能預測引擎(AGPL-3.0、8.3 萬星),把新聞或公告變成一群有人設的 AI 在模擬社群裡互動,再由 ReportAgent 寫推演報告。我用 122 行 Python 做了縮小版,8 個 AI 推演珍奶漲 10 元,平均購買機率從 49% 到 55%——適合預演公告話術,數字是 AI 自評,別當市調。
[AI 教學] · 13min
awesome-agentic-ai-zh 實測:8.4k 星中文 AI Agent 學習地圖,50 支範例跑過 49 支
awesome-agentic-ai-zh 是 Lehigh 博士研究生 Wenyu Chiou 在 2026-05 開的 MIT 授權 repo,用繁中、英文、簡中三語把 AI Agent 從零排到上線,分「用 CLI Agent 做事」和「自己寫 Agent」兩條路,每題附 mock 測試。半年 8.4k 星,我不帶 API key 跑完 50 支測試 49 支通過——當自學或開課骨架可以直接用,只是 Stage 4 框架要一題一個環境裝。
[AI 工具] · 16min
instagram-agent-skill 中文實測:137 字腳本被算成 2.9 秒,我寫補丁修好估時和套話清理
instagram-agent-skill 是 Jake Schincariol 9 月開源的 MIT Claude Skill 包,13 個 IG 經營指令加 5 支本機 Python 工具,只產出文字、不幫你發文。英文實測跟 README 一致,中文卻幾乎全失效——137 字腳本被算成 8 個字、2.9 秒,提示詞能照用,工具的數字要換中文補丁才能信。