「QuantCode-Bench: A Benchmark for Evaluating the Ability of Large Language Models to Generate Executable Algorithmic Trading Strategies」
大型語言模型在通用程式設計任務上表現出色,但生成可執行的演算法交易策略能力仍有待探索。本文提出 QuantCode-Bench 基準,圍繞 Backtrader 框架,包含 400 個任務,並設計了單輪和多輪互動設定。採用四階段評估流程,可區分模型的四種能力。實驗顯示,單輪設定中,前沿模型編譯通過率高,但後續表現不佳;多輪設定則有顯著性能提升,但部分失敗源於對自然語言規範的錯誤解讀。
摘要
大型語言模型在通用程式設計任務上表現良好,但生成可執行演算法交易策略的能力仍待探索。本文提出 QuantCode-Bench 基準,用於系統性評估現代大型語言模型根據英文文本描述,為 Backtrader 框架生成策略的能力。該基準包含 400 個不同難度的任務,透過多階段流程進行評估,對比單輪和智能多輪兩種設定下的模型表現。單輪表現最佳模型的「Judge Pass」約為 70%-76%,而多輪可達 95%-98%。分析指出,當前模型的主要限制在於交易邏輯操作、API 使用和任務語意遵循;交易策略生成是特殊的代碼生成任務,需兼顧技術正確性與多方面的一致性。
簡介
現有的代碼基準測試多關注通用程式設計等任務,未能充分體現模型在特定領域應用場景中的行為。演算法交易策略生成任務十分特殊,需理解主題、遵循 API 並產生意義明確的行為,現有基準無法滿足其評估需求。
本文提出 QuantCode-Bench 基準,圍繞 Backtrader 框架,包含 400 個任務,並設計了單輪和多輪互動設定。採用四階段評估流程,可區分模型四種能力。實驗顯示,單輪設定中前沿模型編譯通過率高,但後續表現不佳;多輪設定性能提升,但部分失敗源於對自然語言規範的錯誤解讀。
本文引入了專為生成可執行演算法交易策略而設計的基準。提出了一個能區分技術可執行性、交易行為存在性,以及與任務規範語意對齊的多層級評估框架。對比了現代模型在單輪和智能體設定下的表現。進行了詳細的錯誤分析,以確定流程各階段的主要失敗模式。發布此基準,供金融領域特定代碼生成的研究重複使用。
QuantCode-Bench
任務定義
QuantCode-Bench 評估模型根據文本描述生成 Backtrader 交易策略的能力,包含四項嵌套要求:策略語法正確、能在回測環境成功執行、於歷史數據上至少完成一筆交易、符合交易思路。此基準比一般編碼任務更為嚴格,各驗證階段層層遞進,主要指標「Judge Pass」表示策略通過整個評估流程的任務比例。
數據集
QuantCode-Bench 數據集包含 400 個交易策略生成任務,描述來自多個來源,其形式、結構和詳細程度各異。每個任務均經過結構化豐富,提取了指標、進出場條件和額外規則,並劃分了難度等級(易、中、難)。
Backtrader
選擇 Backtrader 的原因是它作為一個開源框架,在回測和交易策略原型開發中被廣泛使用,且其 API 具有一定複雜度。它要求模型正確處理指標、數據行、訂單執行方法和索引約定,使得基準測試更貼近實際代碼生成,降低了僅靠套用模板取得成功的可能性。
評估方法
驗證過程
QuantCode-Bench 採用四階段流程進行評估:
1.)編譯:代碼語法正確,可被解譯。
2.)回測:策略在基準歷史數據上執行時無運行時錯誤。
3.)交易:策略至少完成一筆交易。
4.)評判:由大型語言模型法官確認策略與任務描述相符。
此過程可以定位失敗點、分解不成功的生成結果,避免在領域特定任務中,因單一指標而掩蓋了不同的失敗原因。
大型語言模型裁判
流程的最後階段用於驗證生成策略與原始任務描述的語意一致性,因為策略可能在技術上可行,但實質內容是錯誤的。為此,本研究使用大型語言模型來評判代碼,評判標準包括:指標是否與原描述對應或等價;策略的關鍵進出場及行為邏輯是否被實現;代碼是否為相關實作,而非通用模板的替換。此方法與「大型語言模型評判器」的相關文獻一致。
評估設定
考慮兩種互動設定:
單輪設定:模型接收任務描述後,首次嘗試即需生成正確策略,衡量一次性生成的品質,對模型的領域知識、函式庫熟悉度及常見策略模板的初始知識較為敏感。
智能多輪設定:每次失敗後,模型會收到包含錯誤類型和系統訊息的結構化回饋,最多可修改重試 10 次。此設定衡量模型迭代糾錯、局部搜尋和利用診斷資訊的能力。類似的評估機制已在代碼和軟體工程基準測試中被證明是有用的。
結果
單輪
表 3 展示了 QuantCode-Bench 的單輪結果,呈現出此基準測試的核心模式:前沿模型普遍在編譯階段表現強勁,但在評估流程後期的差異甚大。單輪結果顯示流程前後階段差異明顯,對多數強大模型而言,編譯已不再構成瓶頸,但高編譯通過率並不意味著高評判通過率。這表明現代前沿模型的主要品質損耗發生在回測和交易階段。
多輪
表 4 的結果顯示,模型的主要差異不在於句法正確性,而在於執行、交易訊號生成和語意合規這幾個層面。迭代回饋對於強大模型尤其有效,其大量錯誤可以在少量嘗試內進行局部修復。
錯誤分析
故障階段分佈(單輪)
表 5 根據生成過程中第一個發生失敗的階段,彙整了單輪結果,顯示了整體流程中難點集中的地方。現代模型的編譯不再是主要問題,主要的失敗點在於回測和無交易等後期階段。這顯示交易策略生成的核心難點,已從 Python 語法轉向策略在特定執行環境中的正確實施。
回測錯誤和後期失敗的分類
表 6 對運行時和後期失敗進行了細粒度的分類,揭示了在「回測錯誤」、「無交易」和「後期評判失敗」這幾個類別中的主導模式。最常見的失敗類型是策略通過編譯和回測,卻沒有產生任何交易,原因多為進場條件過於嚴格、特徵計算所需的歷史脈絡不足,或是指標邏輯操作有誤。次常見的錯誤是 __bool__ / Line 物件錯誤,反映出在布林條件下,對 Backtrader 的 Line 物件處理不當。遺失屬性/方法錯誤佔比較小,這表示直接的 API 幻覺問題,不如邏輯啟用和 Line 物件處理失敗來得普遍。
智能體設定下的錯誤
表格 7 和 8 總結了智能體設定下的最終結果分佈,對比了單輪錯誤類別與失敗的智能體軌跡中,最後一輪的構成情況。與單輪情況相比,最後一輪未被解決的失敗構成,明顯移向那些反映持續性語意和邏輯問題的類別,部分錯誤佔比增大,而「遺失屬性/方法」仍較少見。在 10 次嘗試後仍無法解決的策略中,「評判拒絕」成了主要的失敗原因。迭代除錯主要對修復技術錯誤有效,但若模型從根本上誤解了任務,則效果不佳。這表示智能體設定主要解決的是程式修復問題,尚未能完全消除自然語言規範在語意解釋上的侷限。
討論
演算法交易策略生成涉及程式設計、金融邏輯和智能搜尋。QuantCodeBench 顯示,強大的模型雖能掌握部分問題,但仍存在侷限。
現代大型語言模型已基本解決表層語法生成的問題,主要挑戰轉向操作的形式化,這將影響後續代碼生成評估基準的發展。
單輪與智能互動設定的對比表明,大量錯誤屬於可局部修復的類型;模型的實用性取決於其單輪準確性和迭代代碼修復能力的結合。
在自然語言轉化為代碼或策略的基準測試中,難度不僅取決於概念深度,規範的品質也至關重要。
通用模型與代碼專用模型的對比顯示,程式設計的專業化並不保證在特定領域的策略生成上更優;當通用模型的語意理解和指令遵循能力更強時,其表現可能更好。
裁判環節非常重要,若無語意驗證,將會高估成功率;對於開放性任務,必須將語意驗證作為主要的評估程序。
限制
QuantCode-Bench 雖涵蓋了重要的實用任務,但當前版本仍存在一些侷限:
策略僅在 Backtrader 框架和環境中進行評估,這限制了結果向其他演算法交易庫(如 QuantConnect/LEAN 和 Zipline)和環境的可遷移性。擴展至多框架評估將有助於區分模型的策略合成能力與 API 適配能力。
最終的語意評估依賴大型語言模型法官,雖然這比純技術驗證更強,但無法保證語意的絕對正確。法官可能會忽略細微的不匹配之處,且存在大型語言模型評判中常見的偏差。
未對生成策略的盈利能力、風險穩健性和經濟品質進行評估。本工作的重點在於模型從描述生成可執行策略的能力,而非策略本身的投資品質。
總結
本文提出 QuantCode-Bench,用於評估大型語言模型生成可執行演算法交易策略的能力。它將任務形式化為一系列嵌套要求,能夠同時評估代碼品質,以及模型將自然語言交易想法轉化為有效實作的能力。
結果顯示,前沿模型在單次生成中遠未能完全解決任務,最佳的單次 Judge Pass 大約只有四分之三。然而,具備迭代回饋的智能體設定能顯著提升表現,最佳模型可達 95%-98%,顯示大量錯誤是可修復的。這也說明在互動式除錯迴圈中的模型行為,至少與其單次生成的準確性同等重要。
交易策略生成需要掌握專業 API、建構可執行代碼、制定符合現實的交易邏輯,並遵循自然語言規範的語意。現代模型在語法和基礎層面表現良好,但在單次嘗試中準確形式化交易意圖,以及精確地實作策略方面仍存在侷限。
QuantCode-Bench 可被用於未來在特定領域代碼生成、智能體軟體修復,以及金融領域大型語言模型評估等方面的研究。