TradingAgents 完整教學 2026:多代理 LLM 交易框架實戰

TradingAgents 是 Tauric Research 開源的多代理 LLM 交易研究框架(GitHub 114,387 星、Apache-2.0、Python),用基本面/情緒/新聞/技術四個分析師加上多空研究員辯論、交易員、風控與投資組合經理,模擬一家交易公司的決策流程。本文給你可直接複製的安裝指令、CLI 參數表、Python API 範例、回測寫法,以及官方明講的 5 個限制與台股支援的未實測部分。

  • Dennis
  • 12 分鐘閱讀
TradingAgents 完整教學 2026:多代理 LLM 交易框架實戰

TradingAgents 是 Tauric Research 開源的多代理 LLM 交易研究框架(GitHub 114,387 星、Apache-2.0、Python 撰寫、最新 v0.7.0)。它把「一家交易公司」拆成四個分析師、多空研究員辯論、交易員、風控團隊與投資組合經理,用 LangGraph 串成流程,一行指令就能對指定股票與日期產出完整研究報告。

為什麼需要「多代理」,而不是直接問 GPT 該不該買

如果你曾經拿股票問題去問 LLM,大概遇過這三件事:

  1. 它會編造事實——給你一個很具體但根本不存在的本益比
  2. 它沒有立場的張力——你問「該買嗎」,它傾向順著你的語氣回答
  3. 它不會記得上次錯在哪——同一支股票問十次,得到十份互不相關的樂觀報告

TradingAgents 的設計就是針對這三點。它不讓一個模型同時扮演所有角色,而是把「看財報的人」、「讀新聞的人」、「看線圖的人」、「唱多的人」、「唱空的人」、「負責風控的人」拆開,讓它們的結論互相打架,最後由投資組合經理裁決。

這個設計背後的假設很直白:一個模型很難同時是樂觀者與懷疑者,但兩個模型可以。

一表看懂:TradingAgents 基本資料

項目內容
專案TauricResearch/TradingAgents
定位多代理 LLM 金融交易研究框架
GitHub 星數114,387(2026-10-25 以 GitHub API 查詢)
Fork 數22,120
授權Apache-2.0
語言Python(需 3.11 以上,官方範例用 3.13)
最新版本v0.7.0(2026-10)
建立時間2024-12-28;最後推送 2026-10-16
底層框架LangGraph
論文arXiv 2412.20138(作者:Yijia Xiao、Edward Sun、Di Luo、Wei Wang)
官方網站https://TradingAgents-AI.github.io
授權範圍可商用(Apache-2.0),但官方定位是研究用途,不是投資建議

星數這種東西會浮動,而且 GitHub 網頁顯示的常是快取值。上面這個數字是 API 直接查的,如果你要引用,建議自己重查一次。

架構拆解:五個團隊、一條決策鏈

TradingAgents 的流程不是「問答」,而是「開會」。整條鏈是這樣的:

階段角色做什麼產出
① 分析基本面分析師讀公司財報與績效指標,找內在價值與紅旗基本面報告
① 分析情緒分析師彙整新聞標題、StockTwits、Reddit 討論成單一情緒讀數情緒報告
① 分析新聞分析師監控全球新聞與宏觀指標,判斷事件對市場的衝擊新聞報告
① 分析技術分析師用 MACD、RSI 等技術指標找型態、預測走勢技術報告
② 辯論多方研究員 vs 空方研究員對①的四份報告做批判性辯論,權衡潛在報酬與風險研究共識
③ 決策交易員(Trader)綜合分析師與研究員的結論,決定進出時機與部位大小交易提案
④ 風控風控團隊評估波動度、流動性等風險因子,提出調整建議風控報告
⑤ 裁決投資組合經理核准或駁回提案最終決策訊號
⑥ 執行模擬交易所通過的話送單到模擬交易所執行模擬成交紀錄

有一個細節值得注意:README 明寫四個分析師是同時跑(parallel)的,各自用自己的工具,等所有報告回來後才進入辯論階段。這是 v0.5.2 之後的改動,目的是縮短分析時間。

另一個關鍵設計是「兩層模型」(quick / deep):

模型層服務的對象建議用途
quick_think分析師、研究員、辯論者、交易員量大、任務明確,用便宜快的模型
deep_think研究經理、投資組合經理量少、要綜合判斷,用強的推理模型

這兩層還可以分別掛在不同供應商上。README 給的例子是:經理層用 Claude,其餘用 OpenAI。實務上這代表你可以「便宜的跑量、貴的跑關鍵判斷」,是控制成本最有效的一個開關。

安裝:官方指令原文,照貼就好

方式一:本機安裝

git clone https://github.com/TauricResearch/TradingAgents.git
cd TradingAgents

需要 Python 3.11 以上。建立虛擬環境(官方給 conda 與 uv 兩種):

conda create -n tradingagents python=3.13
conda activate tradingagents

或用 uv:

uv venv --python 3.13
source .venv/bin/activate

安裝套件(用 uv 的話是 uv pip install .):

pip install .

方式二:Docker

cp .env.example .env  # add your API keys
docker compose run --rm tradingagents

更新 repo 後要重建映像:

docker compose build

Docker 模式下,結果、報告、記憶日誌與快取都存在 tradingagents_data volume。想改存到主機資料夾:

mkdir -p data && TRADINGAGENTS_DATA_DIR=./data docker compose run --rm tradingagents

要用本機 Ollama 模型:

docker compose --profile ollama run --rm tradingagents-ollama

需要哪些 API Key

這是我覺得最值得先看的一段,因為它直接決定你的成本結構。官方支援的供應商非常廣:

export OPENAI_API_KEY=...          # OpenAI (GPT)
export GOOGLE_API_KEY=...          # Google (Gemini)
export ANTHROPIC_API_KEY=...       # Anthropic (Claude)
export XAI_API_KEY=...             # xAI (Grok)
export DEEPSEEK_API_KEY=...        # DeepSeek
export DASHSCOPE_API_KEY=...       # Qwen (international)
export ZHIPU_API_KEY=...           # GLM via Z.AI (international)
export MINIMAX_API_KEY=...         # MiniMax (global)
export OPENROUTER_API_KEY=...      # OpenRouter
export MOONSHOT_API_KEY=...        # Kimi (Moonshot)
export GROQ_API_KEY=...            # Groq
export NVIDIA_API_KEY=...          # NVIDIA NIM
export FRED_API_KEY=...            # FRED macro data (free, optional)
export ALPHA_VANTAGE_API_KEY=...   # Alpha Vantage
export TYPESAFE_API_KEY=...        # Jev social-post screening (optional)

其中兩個是免費且建議加上的:

  • FRED_API_KEY:宏觀資料(免費)
  • SEC EDGAR:不需要 key、不需要帳號,美國公司財報直接讀

如果你是 ChatGPT Plus / Pro 訂閱者,v0.7.0 新增了一條路:直接用自己的訂閱額度跑,不用 API key。

tradingagents login chatgpt

登入資訊存在 ~/.tradingagents/chatgpt-auth.json,tradingagents logout chatgpt 可撤銷。代價是:跑的量會計入你的方案用量上限,而且該方案不接受 temperature 與 max_tokens 參數。

想用本機模型(完全不出網、不燒 API 費)則設 llm_provider: "ollama",預設端點 http://localhost:11434/v1。任何 OpenAI 相容的伺服器(vLLM、LM Studio、llama.cpp)都可以走 openai_compatible:

config["llm_provider"] = "openai_compatible"
config["backend_url"] = "http://localhost:8000/v1"   # vLLM

CLI 用法:互動式與無人值守兩種

互動式

tradingagents          # installed command
python -m cli.main     # alternative: run directly from source

會出現選單,讓你挑 ticker、分析日期、LLM 供應商、研究深度等。上一次的答案會變成下次的預設值,直接按 Enter 就是沿用。

無人值守(排程/腳本用)

export TRADINGAGENTS_LLM_PROVIDER=openai TRADINGAGENTS_QUICK_THINK_LLM=gpt-6-luna TRADINGAGENTS_DEEP_THINK_LLM=gpt-6-sol
export TRADINGAGENTS_OUTPUT_LANGUAGE=English TRADINGAGENTS_MAX_DEBATE_ROUNDS=1 TRADINGAGENTS_MAX_RISK_ROUNDS=1
tradingagents --ticker NVDA --date 2026-09-23 --analysts market,news,fundamentals --save --no-show

這行是本文最實用的一行。TRADINGAGENTS_OUTPUT_LANGUAGE=English 特別值得注意——如果你想要中文報告,這裡可以改(官方支援多語言輸出)。

常用參數一覽

參數作用實務建議
--ticker指定股票代號支援交易所後綴,見下方市場表
--date分析基準日一定要指定,否則會用到當下資料
--analysts選哪些分析師(market,news,fundamentals 等)只想要技術面就少開幾個,省 token
--save儲存報告建議開,會產出可讀的 HTML
--no-show不自動開瀏覽器排程必開
--no-html不產出單頁 HTML只要 markdown 時用
--checkpoint啟用斷點續跑長時間跑或怕中斷時用
--clear-checkpoints跑前清掉所有 checkpoint懷疑狀態污染時用
--portfolio帶入你的實際持倉 JSON想讓建議對應真實部位時用

--save 會多產出一份 complete_report.html,把整份報告排成單頁、旁邊列章節,可印、可手機讀。這對「把報告丟給主管看」這件事滿方便的。

Python API:把 TradingAgents 塞進你自己的系統

最短的用法只有四行:

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

ta = TradingAgentsGraph(debug=True, config=DEFAULT_CONFIG.copy())

# forward propagate
state, decision = ta.propagate("NVDA", "2026-09-01")
print(decision)

# the same report tree the CLI saves, under results_dir/reports
ta.save_reports(state, "NVDA")

要調參數的話:

config = DEFAULT_CONFIG.copy()
config["llm_provider"] = "openai"
config["deep_think_llm"] = "gpt-6-sol"     # Model for complex reasoning
config["quick_think_llm"] = "gpt-6-luna"   # Model for quick tasks
config["max_debate_rounds"] = 2

ta = TradingAgentsGraph(debug=True, config=config)
_, decision = ta.propagate("NVDA", "2026-09-01")
print(decision)

把兩層模型掛到不同供應商:

config["deep_think_provider"] = "anthropic"
config["deep_think_llm"] = "claude-opus-5-5"

帶入真實持倉

預設情況下,代理不知道你手上有什麼,所以建議是寫給「會自己套用到部位上的讀者」。想讓它針對你的實際部位給建議,要傳 portfolio:

from tradingagents.portfolio import PortfolioContext

portfolio = PortfolioContext.model_validate({
    "cash": 25000.0,
    "currency": "USD",
    "positions": [{"ticker": "NVDA", "quantity": 120, "average_price": 150.0}],
})

_, decision = ta.propagate("NVDA", "2026-09-01", portfolio=portfolio)

CLI 版則吃 JSON 檔:tradingagents --portfolio my_book.json。

README 特別強調一個容易搞錯的細節:空 positions 陣列代表「空手」,與「沒有傳 portfolio」是不同的兩件事。 沒傳的情況永遠不會被當成空手。

支援哪些市場(以及台股的未解問題)

README 的說法是「works with any market Yahoo Finance covers, using the exchange-suffixed ticker」,公司識別與 alpha 基準會自動依市場解析。官方列出的範例:

市場代號範例
美股AAPL、SPY
港股0700.HK
東京7203.T
倫敦AZN.L
印度RELIANCE.NS、.BO
加拿大.TO
澳洲.AX
中國 A 股上海 .SS、深圳 .SZ(例:600519.SS 貴州茅台)
加密貨幣BTC-USD、ETH-USD

注意:官方範例裡沒有台股。 依 Yahoo Finance 的代號規則,台股是 .TW(上市)與 .TWO(上櫃),理論上落在「any market Yahoo Finance covers」的範圍內,但 README 沒有列、我也沒有實測,所以要把它當成「需要自行驗證」的項目,而不是保證可用。如果你要試,第一步就是拿 2330.TW 跑一次 --date 指定到某個過去日期,看基本面資料抓不抓得到——抓不到的話,這個框架對台股就只能用技術面與新聞面。

記憶日誌:它會記得上次錯在哪

這是我認為 TradingAgents 最被低估的功能。記憶日誌預設開啟,位置在 ~/.tradingagents/memory/trading_memory.md。

運作方式是這樣:

  1. 每次跑完,把當次決策寫進日誌
  2. 下一次跑的時候,趁分析師還在工作的空檔,去結算「持有期已過」的舊決策
  3. 結算內容包含:實際報酬(原始報酬,以及相對於該市場基準的 alpha)
  4. 然後為每筆舊決策生成一段反思
  5. 投資組合經理會讀同標的的近期決策 + 其他標的的近期教訓

翻成白話:它會回頭檢查自己上次說買是對的還是錯的,並把教訓帶進這次的判斷。 這件事人類分析師會做,多數 LLM 工具不會。

想在不跑分析的情況下單獨結算(例如放在每日排程裡):

ta.settle_all_pending()

回測:一次跑一格沒有意義

一次跑出一個決策,無法判斷這個系統決策得好不好。TradingAgents 提供了 run_backtest,對一組「ticker × 日期」的網格跑同一條流程,然後只評分那些「持有窗口已經過去、可被驗證」的決策。

from tradingagents.backtest import iter_grid, run_backtest, summarize

dates = iter_grid("2026-06-01", "2026-08-01", every_n_days=7)
result = run_backtest(["NVDA", "AAPL"], dates, config, selected_analysts=["market", "news"])
print(summarize(result).render())

CLI 版:

tradingagents backtest NVDA,AAPL --start 2026-06-01 --end 2026-08-01 --every 7

兩個設計細節值得知道:

  • 每一格的評分基準是相對於該標的所屬市場基準的實質 alpha,不是絕對報酬
  • 決策的進場點是「該日期之後的第一個收盤價」,因為一次分析會讀到當天收盤後才發布的新聞。這個設計是為了避免「當天就進場」造成的前視偏誤(look-ahead bias)

還有一個省錢設計:重跑同一組網格時帶 run_id=result.run_id,會跳過已經跑過的格子,中斷的掃描可以續跑。

五個必須知道的限制(官方自己寫的)

這一節是本文最該讀的部分。以下五點全部來自 README 或官方說明,不是我自己的推測:

① 兩次跑同一支股票,結果會不一樣

“TradingAgents is LLM-driven, so two runs of the same ticker and date can differ. This is expected for a research tool built on language models, not a defect.”

變異有三個來源:模型取樣本身不確定(推理型模型變異最大,因為它的內部推理也在取樣)、即時資料會動(今天跑和上週跑,看到的新聞與社群貼文不同)、以及溫度設定。

官方緩解方式:把 temperature 調低。但它也老實說了——目前精選的模型都是推理優先,大多忽略 temperature。想要更穩定,就得換成非推理型模型。這是個誠實但令人不太舒服的答案。

已經修掉的老問題也值得知道:README 提到早期報告曾出現「不同次跑到不同公司」與「編造價格水準」的狀況,現在靠兩個機制解決——公司身份在跑之前就由 ticker 決定性解析,市場分析師的價格與指標說法必須對齊一個已驗證的資料快照。

② 回測結果不保證能重現

“Backtest results are not guaranteed to match any published figure.”

論文裡的累積報酬、Sharpe、最大回撤,是在論文的實驗條件下量到的。你的模型、溫度、日期區間、資料品質都不一樣,跑出來就不一樣。官方建議把這個框架當成「研究多代理分析的鷹架」,而不是一個有固定可複製報酬的策略。

③ 它是研究工具,不是投資建議

README 與官網都有明確免責:設計目的是研究用途,交易績效會因底層模型、溫度、交易期間、資料品質等因素而變動,不構成財務、投資或交易建議。

④ 這不是「全自動交易機器人」

它下單到的是模擬交易所(simulated exchange)。框架裡沒有任何券商 API 串接。想接實盤你得自己寫,而且要自己承擔所有風險與法規問題。

⑤ 我沒有實測的部分(誠實揭露)

為了避免把別人的文件寫成自己的測試心得,這裡明列本文沒有做的事:

  • 沒有實際安裝並跑完一次完整分析(需要 API key 與實際 token 費用,本文以官方 README、arXiv 論文摘要與 GitHub API 資料為依據)
  • 沒有實測台股 .TW / .TWO(官方範例未列,見上方說明)
  • 沒有驗證論文中的績效數字,也沒有重跑回測
  • 沒有比較過各供應商的實際花費——README 不公布單次跑的 token 用量,而一次完整分析會經過 4 個分析師、多輪辯論、交易員、風控與經理,呼叫次數是數十次量級,實際成本強烈取決於你選的模型與辯論輪數

成本怎麼估(給不想要帳單驚喜的人)

官方沒有公布單次分析的成本,但架構本身就給了省錢的槓桿:

槓桿做法影響
減少分析師--analysts market,news 只開兩個直接砍掉分析階段的呼叫量
降低辯論輪數TRADINGAGENTS_MAX_DEBATE_ROUNDS=1、MAX_RISK_ROUNDS=1這兩輪是最容易失控的地方
分層用模型quick 層掛便宜模型、deep 層才用強模型通常是成本降最多的一招
用訂閱額度tradingagents login chatgpt不另計 API 費,但吃方案上限
完全本機Ollama + 開源模型零 API 費,但品質與速度要自己接受

我的建議是:第一次跑先關掉一半分析師、辯論只跑一輪,用最便宜的模型確認流程通不通,再一次一項加回去。 反過來做(一開始就全開最強模型)很容易在還沒看懂報告之前就先被帳單嚇到。

誰適合、誰不適合

適合不適合
想研究「多代理系統怎麼協作」的工程師想要一個能直接接券商、自動下單的機器人
已經有交易想法,想找一個「唱反調的系統」來壓力測試期待它告訴你明天該買什麼
想做 LLM 應用的 side project,需要一個成熟的多代理範例不能接受付 API 費用或等報告跑完
在研究 agent 的記憶機制、辯論機制、風控機制需要嚴格可重現的回測(LLM 本質上不保證)
想學 LangGraph 怎麼串複雜的有狀態流程完全沒有程式基礎

如果你屬於右邊那一欄,這篇文章的價值可能只剩下「知道有這個東西」——那也夠了,至少你不會花三個週末安裝它然後失望。

站內延伸閱讀

資料來源與查證方法

  • GitHub repo:TauricResearch/TradingAgents(README 全文,v0.7.0 版本說明)
  • GitHub API 資料:api.github.com/repos/TauricResearch/TradingAgents,2026-10-25 查詢(星數 114,387、fork 22,120、Apache-2.0、最後推送 2026-10-16)
  • 論文:TradingAgents: Multi-Agents LLM Financial Trading Framework(arXiv 2412.20138,q-fin.TR)
  • 官方網站:https://TradingAgents-AI.github.io
  • 官方免責聲明:https://tauric.ai/disclaimer/

查證說明:本文的安裝指令、CLI 參數、Python 範例與限制說明全部取自官方 README 原文,未經改寫。星數與授權以 GitHub API 為準(網頁顯示值可能是快取)。所有「未實測」項目已在第 ⑤ 點明確列出,不與官方文件混淆。

⚠️ 本文為工具教學與技術研究整理,不構成任何投資建議。TradingAgents 官方定位為研究框架,下單對象為模擬交易所,其回測與論文績效不保證重現。實際投資決策請自行判斷並承擔風險。

📬 訂閱 most.tw 電子報

每週精選 AI 工具教學與技術乾貨,直接送到你的信箱。免費、隨時可退訂。

訂閱即表示同意收到 most.tw 電子報,隨時可一鍵退訂。

💬 有問題想討論?加 LINE 聯絡我

歡迎透過 LINE 官方帳號直接留言,我會盡快回覆你的問題。

加入 LINE 好友