Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

多智能體AI交易系統 實際運作

多智能體AI交易系統使用LLM委員會處理交易。本文說明其架構、市場數據成本及回測陷阱,區分已發表證據與README中的宣稱。

一個多智能體AI交易系統會將單一交易決策拆分給數個大型語言模型實例,賦予每個實例特定角色,再將其輸出整合為單一委託單。常見的編制包括新聞閱讀員、基本面分析師、圖表分析師、風險檢查員,以及負責仲裁的管理者智能體。截至2026年7月,GitHub上演算法交易主題中已有數個此類架構的開源框架,各自獲得數百顆星。本文將說明其架構,區分已發表的證據與README中的宣稱,並提供任何版本都必須克服的市場數據成本。

多智能體AI交易系統的實際運作方式

此架構如同一個設有主席的委員會。每個智能體由一個提示模板、一個數據來源和一個輸出格式所構成。新聞智能體接收標題並回傳一個標籤。基本面智能體接收申報文件摘要並回傳一個分數。主席智能體接收這些標籤與分數,然後回傳一個委託單。

此設計衍生出三個特性,在討論任何績效宣稱前,都值得先點明。

每個智能體通常共享同一個基礎模型。對同一組權重使用五個不同的提示,會產生相關聯的意見,因此五個智能體的投票並非五個獨立的估計。委員會的架構暗示了多樣性,但實作上並未提供。

該系統是一個圍繞數值決策的文字管道。模型讀取文字並輸出一個標記。倉位規模、委託單類型、停損設定與出場邏輯,都是底層的一般程式碼,而決定最終結果的大部分因素存在於這些程式碼中,而非提示本身。

委員會的一次往返耗時數秒。這對於每週再平衡來說是可行的,但在高頻交易的速度下則毫無用處,因為造市商在微秒內就能報價與更新報價。

研究支持什麼,不支持什麼

關於語言模型在金融領域的已發表研究,可區分為強度差異極大的三種宣稱。

提取與分類是強宣稱。 模型能標記情緒、從申報文件中提取數據,並壓縮長篇文件,其準確度在幾年前還需要專門打造的模型才能達成。這可以在保留的文本上進行衡量,且結果經得起考驗。

市場狀態描述是混合型宣稱。 模型能流暢地描述市場狀態的文字報告,而這些報告通常與提供給模型的數據一致。但描述本身是否包含了價格尚未反映的資訊,則是另一個問題。仔細測試此點的論文,報告的效果都很小,且誤差區間很大。

獲利能力是弱宣稱。 大多數儲存庫的README文件報告的是回測結果,而非經過資金驗證的實際交易記錄。從樣本內權益曲線到真實帳戶之間的距離,是量化交易中最古老的距離。在流程中加入語言模型並不會縮短這個距離。

訊號必須跨越的成本底線

每筆交易都需支付買賣價差,這是任何策略在考慮其他因素前,必須先跨越的成本底線。以下是2026年6月22日至26日,常規交易時段內六檔美國上市股票的價差中位數:

查詢成本下限:2026年6月22日至26日正常交易時段中點報價價差中位數(基點)
每個數據背後的精確 SQL 語法
SELECT ticker,
       round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS spread_bps,
       round(2 * quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS round_trip_bps,
       round(count() / 1e6, 1) AS quote_updates_m
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'KO', 'F', 'RIOT')
  AND sip_timestamp >= toDateTime('2026-06-22 00:00:00')
  AND sip_timestamp < toDateTime('2026-06-27 00:00:00')
  AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY ticker
HAVING countIf(bid_price > 0 AND ask_price > bid_price) > 0
ORDER BY spread_bps
Run this yourself

一個基點是百分之一的百分之一。該組股票中,價差最窄的SPY,該週的價差中位數為0.27個基點。價差最寬的RIOT,則為7.09個基點。一次來回交易需支付兩次價差,因此,在第一檔股票進出場,一開始就落後0.55個基點;而在最後一檔股票進出場,則落後14.19個基點。一個每週週轉兩次的智能體,每年大約要支付這個成本一百次,而且無論判斷正確與否,這筆成本都必須支付。交易一支股票的成本詳細列出了其餘的費用。

方向性判斷必須戰勝的雜訊

方向性判斷的評分標準,是基於一個主要由小數字構成的分布。以下是2025日曆年度SPY所有交易日的收盤價到收盤價變動幅度,按大小排序:

查詢典型交易日波動幅度:SPY 依規模區分之收盤價變動,2025曆年
每個數據背後的精確 SQL 語法
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           argMax(close, window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2025-01-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2025-12-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY d
),
paired AS (
    SELECT d, close_px,
           any(close_px) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
    FROM daily
),
rets AS (
    SELECT d, round(100 * (toFloat64(close_px) / toFloat64(prev_px) - 1), 3) AS ret_pct
    FROM paired
    WHERE prev_px > 0
)
SELECT multiIf(abs(ret_pct) < 0.25, 'under 0.25%',
               abs(ret_pct) < 0.5, '0.25 to 0.5%',
               abs(ret_pct) < 1.0, '0.5 to 1%',
               abs(ret_pct) < 2.0, '1 to 2%',
               '2% and up') AS move_bucket,
       count() AS sessions,
       round(100 * count() / sum(count()) OVER (), 1) AS pct_of_sessions
FROM rets
GROUP BY move_bucket
ORDER BY min(abs(ret_pct))
Run this yourself

全年有一半的交易日的變動幅度在0.5%以內。under 0.25%的區間包含了24.9%的交易日,而0.25 to 0.5%的區間則包含了另外24.1%的交易日。在另一端,有13個交易日的變動幅度達到2% and up,佔全年的5.2%。

將此與價差數據對照。一個基點是0.01%。一個典型的0.3%的日內變動,是窄價差的三十倍,大約是寬價差的四倍。這個算術結果為耐心且正確的判斷留下了空間,但對於快速且邊際性的判斷則幾乎沒有空間。

可交易標的的實際分布

智能體框架常宣稱其覆蓋範圍廣泛,通常每天掃描數百檔股票。美元成交量顯示了這份清單中有多少標的能夠吸收較大的交易規模。以下是2026年6月30日常規交易時段內,所有美國上市股票按其當日美元成交量排名分組的情況:

查詢資金交易分布:2026年6月30日正常交易時段依流動性等級排名之美元交易量
每個數據背後的精確 SQL 語法
WITH tv AS (
    SELECT ticker,
           sum(toFloat64(close) * toFloat64(volume)) AS dollar_volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker
    HAVING sum(toFloat64(close) * toFloat64(volume)) > 0
),
ranked AS (
    SELECT ticker, dollar_volume,
           row_number() OVER (ORDER BY dollar_volume DESC) AS rk
    FROM tv
)
SELECT multiIf(rk <= 10, 'top 10 names',
               rk <= 50, 'ranks 11 to 50',
               rk <= 200, 'ranks 51 to 200',
               rk <= 1000, 'ranks 201 to 1000',
               'ranks beyond 1000') AS liquidity_tier,
       count() AS tickers,
       round(sum(dollar_volume) / 1e9, 2) AS dollar_volume_bn,
       round(100 * sum(dollar_volume) / (SELECT sum(dollar_volume) FROM tv), 1) AS pct_of_dollar_volume
FROM ranked
GROUP BY liquidity_tier
ORDER BY min(rk)
Run this yourself

前十檔股票貢獻了該時段22.5%的美元成交量,約為205.04億美元。接下來的40檔貢獻了20.5%。而在另一端,排名在1000名之後的10966檔股票,總共只佔了12.9%,約117.83億美元分散在整個長尾中。

宣稱廣度很容易,但實際交易成本高昂。一個對三千檔股票進行排名的委員會,其大部分排名工作都集中在這個長尾區域,而前面提到的價差數據在該區域是真實的成本,而非可以忽略的誤差。

為何這些回測結果美化了系統

美化回測結果的最大單一來源是時間區間的選擇。以下是2016年至2025年SPY的日曆年度數據,並附上每年最高與最低收盤價之間的差距:

查詢時間區間決定答案:SPY 2016年至2025年曆年價格報酬率與年內高低區間
每個數據背後的精確 SQL 語法
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           argMax(close, window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2016-01-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2025-12-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY d
),
yr AS (
    SELECT toYear(d) AS year,
           argMin(close_px, d) AS first_close,
           argMax(close_px, d) AS last_close,
           max(close_px) AS high_close,
           min(close_px) AS low_close,
           count() AS sessions
    FROM daily
    GROUP BY year
)
SELECT year,
       sessions,
       round(100 * (toFloat64(last_close) / toFloat64(first_close) - 1), 1) AS price_return_pct,
       round(100 * (toFloat64(high_close) / toFloat64(low_close) - 1), 1) AS high_low_range_pct
FROM yr
ORDER BY year
Run this yourself

一個僅在2021年(當年收盤28.7%)進行測試的系統,繼承了一個上漲的趨勢。同一個系統若僅在2022年(當年收盤-20%)進行測試,則繼承了一個下跌的趨勢。每年最高與最低收盤價之間的差距,在2020年達到了68%,即使在較平穩的年份也維持在25.3%以上。

在時間區間問題之上,還有四個陷阱,其中一個是語言模型所獨有的。

  • 透過訓練資料產生的前瞻偏差。 一個基於截至2025年文本訓練的模型,已經「讀過」2023年的交易結果如何。在2023年數據上進行回測,等於是在問一個模型已經知道答案的問題,而任何對價格序列的隨機化處理都無法消除這個知識。
  • 股票清單的倖存者偏差。 從今日上市股票中組成的標的池,遺漏了那些在過程中已下市的股票。
  • 成交假設。 一個假設所有委託單都以中間價成交的回測,完全抹去了上述整個成本數據。
  • 提示變體的選擇。 嘗試二十種提示措辭,然後報告表現最好的一種,這與語言模型出現之前困擾參數搜尋的過擬合同出一轍。

語言模型智能體可能真正發揮作用的地方

這個概念誠實的版本比README文件所描述的範圍更窄,但仍然有用。

閱讀大量資訊是最明確的優勢。 一個能在一夜之間處理觀察清單上所有申報文件和頭條新聞,並回傳結構化摘要的智能體,可以節省數小時的人力注意力,而且其輸出可以與原始資料進行比對。

用白話描述市場狀態是第二個優勢。 根據人類也會閱讀的相同數據,每日生成一段關於分散度、廣度與波動性的文字報告,即使不帶任何預測,也是一份有用的簡報文件。

流程紀律是第三個優勢。 一個會拒絕違反設定倉位限制的委託單,或標記出即將在財報日進行交易的策略的智能體,能夠強制執行分心的人類可能忽略的規則。

以上三點都不是市場上的優勢。它們都是研究與營運工作,而這正是今日可衡量效益所在。像低波動異常這樣有文獻記載的效應,需要大量的樣本和反覆的樣本外驗證,才有人將其視為真實存在。一個新的智能體框架也必須達到同樣的標準,否則就無法證明其價值。錯過最佳交易日說明了頻繁轉換對長期持有者造成的成本。

實務操作者描述的紀律

公開運行這些系統的團隊,通常會描述相同的流程。先在模擬成交的環境中進行數月而非數天的前向測試,因為紙上記錄只能以真實時間的速度累積。保留一個提示從未見過的樣本外區間。記錄每一次的提示、每一次的回應以及每一筆委託單,因為一個無法重播的委員會是無法除錯的。使用模型之外的固定規則來決定倉位規模。在宣稱任何一段時期獲利之前,先將上述數據中的所有成本計算在內。

常見問題

多智能體AI交易系統真的能賺錢嗎?

公開的證據很薄弱。大多數開源專案發布的是回測結果,而非經過審計的真實交易記錄,而語言模型策略的回測有一個特定缺陷:模型是在描述測試期間的文本上訓練的。未經審計的權益曲線只能證明軟體能運作,無法證明其優勢。

LLM智能體委員會比單一模型更好嗎?

委員會可以減少一些格式化和解析錯誤,並為輸出增加結構。但當每個智能體都基於相同的底層數據查詢同一個基礎模型時,它並不會增加獨立資訊。五個相關聯的意見投票,大致相當於一個意見,同時還增加了延遲和額外的Token成本。

AI智能體的交易速度能比造市商更快嗎?

不能。語言模型的一次往返耗時數秒,而專業報價系統則是在共置的硬體上以微秒為單位運作。任何依賴速度獲利的策略都超出了這些系統的能力範圍,因此,以天或週為單位的持有期才是它們可能發揮作用的領域。

針對LLM交易智能體,最大的回測陷阱是什麼?

訓練資料的前瞻偏差。傳統回測會防止未來價格洩漏到決策中,但模型的權重已經編碼了關於測試期間的已發布評論。滾動視窗和樣本外分割並不能消除已嵌入權重中的知識,唯一乾淨的測試是訓練截止日期之後的時期。

紙上交易階段需要運行多久?

有用的衡量標準是樣本大小,而非日曆長度。一個每週交易的策略,每年約產生五十個觀察值,這對於任何關於優勢的宣稱來說都是很小的樣本。實務操作者通常希望有足夠多的交易,以便經歷過一次回撤,而不僅僅是一段表現良好的時期。


此頁面上的每個數據面板,都是針對真實美國市場數據執行、經過儲存與版本控制的查詢結果。打開任何一個面板即可查看其背後的SQL語法,或是在Strasmore終端機上針對相同資料表執行你自己的查詢。

#ai agents#llm#algorithmic trading#automation#backtesting