解密Prompt系列28. LLM Agent之金融領域摸索:FinMem & FinAgent

风雨中的小七發表於2024-05-06

本章介紹金融領域大模型智慧體,並梳理金融LLM的相關資源。金融領域的大模型智慧體當前集中在個股交易決策這個相對簡單的場景,不需要考慮多資產組合的複雜場景。交易決策被簡化成市場上各個資訊,包括技術面,訊息面,基本面等等在不同市場情況下,對資產價格變動正負面影響的綜合判斷。

而使用大模型智慧體最顯著的優勢,在於對海量資訊的高效處理,儲存,以及對相關歷史資訊的聯想。不要和Agent比知識廣度和工作效率這一點已經是普遍共識。 下面我們看下這兩篇論文使用了金融市場的哪些資訊,分別是如何處理,思考並形成交易決策的。

FinMEM

FINMEM: A PERFORMANCE-ENHANCED LLM TRADING AGENT WITH LAYERED MEMORY AND CHARACTER DESIGN
https://github.com/pipiku915/FinMem-LLM-StockTrading

FinMeM是使用文字模態資訊,透過差異化召回不同時效性,重要性,相關性的不同金融市場資訊,透過微調讓模型學習個股交易決策型Agent

1. Profiling

FinMem的Profile是交易Agent的全域性指令類似system-prompt ,包含兩個部分

  • 金融市場專家知識:包括個股的基本資訊例如行業,公司資訊,歷史股價走勢等等
  • 3種不同的風險偏好:保守,中性和激進,透過不同prompt,影響模型在不同資訊下的交易決策
    以及論文提出可以動態轉換風險偏好,例如開始虧損的時候可以轉換成保守策略,哈哈雖然感覺這難道不是散戶虧錢的常規邏輯,賺錢了激進,虧損了就保守~

請在此新增圖片描述

2. Memory

請在此新增圖片描述

雖然是叫記憶模組,但其實包含了資訊收集入庫,召回總結和反思的全部流程

  • Layered Long Term Memory:不同時效性的內容儲存
  • Working Memory:多路內容召回,排序,總結和反思
    • Summarization
    • Observation
    • Reflection2.1 Layered Long Term Memory上圖中的Bottom部分就是Memroy真正的儲存部分。這裡論文只使用了金融市場裡三種資料來源
  • 短時效(shallow Layer):市場新聞
  • 中時效(Intermediate Layer):公司季報
  • 長時效性(Deep Layer):公司年報

在真實場景中其實劃分遠遠不只這些,時效性從長到短還有例如研報,宏觀資料,行業資料,路演會議,機構調研,公告,政策,快訊,各種市場面技術指標等等,複雜程度要高的多。因此個人感覺直接按照資料來源來定義時效性可能更合適,畢竟不同資料來源之間的時效性幾乎都是不同的。

在召回以上不同時效性的內容時的打分排序策略借鑑了史丹佛小鎮裡面對於智慧體相關記憶的召回策略(不熟悉的同學看這裡LLM Agent之只有智慧體的世界)。核心就是隻基於相關性來進行記憶召回在時效性敏感的領域中是不可以的。因此召回內容的排序會基於多個因子進行打分,這裡其實傳統搜廣推藉助顯式的反饋,排序做的更加複雜。這裡因為相對缺乏顯式的直接反饋,所以只用了相關性,新鮮度,重要性這三個打分維度進行加總。

請在此新增圖片描述

其中新鮮度的計算會依賴於上面的時效性分層,不同分層的金融資料,會有不同的新鮮度計算公式。核心就是時效性更長,該資訊對金融市場資產價格的影響持續時間更長,資訊的時間敏感度更小,因此在計算新鮮度的時候它的指數衰減更慢。例如快訊可能當日就會時效,而年報效應可能持續好幾個月。論文分別用了2周,季度和一年作為指數衰減的係數。

相關性這裡用了text-embedding-ada-002計算cosine距離。而重要性論文同樣做了不同係數的時間衰減,但係數\(v\_l\)按不同分佈隨機取樣的操作屬實是沒看懂,但是哈哈這些都是細節不重要,咱重點看框架,看框架~

2.2 Working Memory

有了分層的資訊儲存,下一步就是在每一天進行交易決策的時候,進行一系列的資訊召回、總結、分析的流程了。這裡我們使用論文中的例子在2023-01-24日交易TSLA,inquery="Can you make an investment decision on TSLA on 1/24/2023",之後的流程如下

  • summary:資訊摘要和情緒分類

摘要會先基於inquery使用上面的打分排序邏輯,去儲存中召回相關資訊,並基於以下Prompt,對每條資訊進行總結。輸出是新聞總結和新聞對資產的正面,負面,中性的機率,機率加和為1,這裡可以直接取logprobs進行歸一化。單個人感覺直接使用機率最高的標籤,同時丟棄熵值較高的新聞可能噪聲更低一些。

請在此新增圖片描述

  • Observation:市場觀測和動量指標

這裡論文只使用了個股的動量因子作為市場觀測,也就是連續N天的累計漲跌幅。訓練樣本會給出未來一日動量,目的是讓模型學習什麼樣的訊息面情緒會帶來未來的價格變動,而測試樣本是歷史3天的動量,目標是讓模型預測未來的價格變動。個人感覺這裡訓練和測試其實應該對齊,也就是訓練樣本也提供歷史3天的動量因子。這樣在後面的反思中也會使用技術指標。

請在此新增圖片描述

  • Reflection:反思

反思分成兩個部分:

  • 及時思考:基於上面的summray和observation,給出交易建議(Buy,sell,hold),交易原因,和以上summary中具體哪條資訊(ID)影響了模型決策。
  • 延伸思考:基於最近M天的及時思考,決策後的收益,和股價走勢,但我似乎沒找到這部分的具體prompt.....延伸反思的結果會存到Deep layer用於後面的交易決策

請在此新增圖片描述

3. Decision

最終的交易決策會基於當前大模型的profile,Top-K的資訊召回,歷史累計收益,和延伸思考最終給出交易決策(Buy,SELL,HOLD)。而所謂的訓練階段,其實是依賴真實的資產價格變動,得到更準確的延伸思考(對交易決策的反思),在測試階段可以使用訓練階段儲存的歷史思考結果。這部分感覺FinAgent的邏輯更清晰些,看迷糊的朋友可以看後面FinAgent的流程。

請在此新增圖片描述

FinAgent

A Multimodal Foundation Agent for Financial Trading: Tool-Augmented, Diversified, and Generalist
只有論文無開原始碼

請在此新增圖片描述

FinAgent是加入了圖片模態資訊的個股交易決策型Agent,主要包括以下幾個模組

  • Market Intelligence:市場資訊收集和情緒識別彙總模組
  • Reflection:價格異動歸因和歷史交易決策歸因模組
  • Decision Making:買賣交易決策模組
  • Memeory:用於儲存以上模組的歷史資訊

FinAgent一定程度上參考了FinMeM,思路有些相似,不過Prompt輸入輸出的結構更加清晰和貼近真實市場,幾個核心的差異點如下

  • FinAgent無需微調,直接使用GPT4和GPT4V
  • 資料差異
    • 加入了圖片模態的資訊,包括K線圖和歷史交易圖
    • 加入了更多的技術面指標相關交易策略
  • 在時效性處理上,FinAgent使用大模型來對每個資訊源的時效性進行判斷
  • 在召回排序上,FinAgent沒有使用更復雜的打分排序,而是使用query改寫,召回當前資料相關的歷史資料,更遵從金融市場上歷史會重演的基本邏輯。

1. Market Intelligence

MI模組是特定金融主體的資訊收集,分析總結和情緒識別模組(類似FinMeM的summary,但加入了和歷史資訊的聯動)。它分成了當日市場資訊(Latest MI),和歷史市場資訊(Past MI)兩個部分。前者反映了最新的資產異動,後者利用金融市場中歷史會不斷重演的特性。例如上次蘋果產品釋出,對APPL股價帶來5%的提振,那如果今日輿情顯示蘋果又有新產品釋出,那我們可能會預期有相似的正向影響。

首先是當日市場資訊,主要做以下幾件事情

  1. 獲取資產當日(T)的資產價格,新聞輿情(透過FMPAPI介面)資訊,拼接後作為大模型的上文,填充到下面latest_market_intelligence
  2. Analysis:基於系統指令和任務描述,對以上所有資訊進行COT分析,論文透過prompt給出了分析方式,簡化成每條資訊對資產價格的正面/負面/中性影響,以及短/中/長的影響時效性
  3. Summary:對以上Analysis的分析結果進行總結,只保留核心投資觀點,並對上面相似的正負面和時效性進行聚合。
  4. Query生成:基於以上的總結內容,生成短/中/長不同時效性的檢索query(關鍵詞),用於搜尋該資產的歷史資訊。

這裡論文使用了XML格式的prompt來承載各類資訊,整個Lastest MI的Prompt如下,其中iframe會填充具體的系統指令,任務描述,如何分析資產正負面影響,如何進行分析總結和query生成,以及輸出格式。iframe的具體內容實在是太長了,大家直接看論文附錄G

請在此新增圖片描述

其次是歷史市場資訊部分,主要做以下幾件事情

  1. 基於上面的Query,去搜尋該資產歷史(<T)不同時間視窗的各類資訊,包括但不限於:不同週期的資產價格變化,新聞輿情,研究報告等等
  2. 和上面當日市場資訊相同,對資訊進行分析和總結,不過不需要生成query了。

論文沒有提供具體的資料,只給了大致的分析結果如下

請在此新增圖片描述

2. Reflection

收集完資訊,就進入了反思模組,也分成了兩個階段low-level和high-level。前者基於上面的Market Intelligence提供的輿情正負面影響和股價變動,對短/中/長期股價異動進行歸因(類似FinMeM的及時分析)。後者基於Market Intelligence,歷史和當前的low-level的反思,對交易決策進行歸因(類似FinMeM的延伸思考)。論文只提供了簡化後的效果如下

請在此新增圖片描述

下面我們具體說下Low-Level和High-Level的輸入輸出

2.1 Low-Level Reflection

low-level的反思prompt的構成如下

1. 輸入

  • 以上Market Intelligence的總結,包括歷史和當前輿情對資產正負面的影響
  • 多模態K線圖,以下是用來幫助模型理解K線圖的Prompt指令

請在此新增圖片描述

  • 短/中/長期的價格走勢變動描述,描述模板如下:

請在此新增圖片描述

2. 輸出

  • reason:分別對短/中/長期的資產價格變動進行歸因,原因可以是Momentum等技術面原因,也可以是Market Intelligence中輿情帶來的訊息面原因
  • summary:對以上的分析進行總結,作為後面High-Level的輸入
  • query:和上面Market Intelligence相同,生成召回Query,用於召回Memory中的相關歷史Low-Level Reflection。

因為涉及到了K線圖的多模態理解,這裡論文使用了GPT-4V來完成以上prompt指令。具體Prompt指令,詳見附錄G。

2.2 High-Level Reflection

High Level的反思prompt構建如下

1. 輸入

  • Market Intelligence: 同Low Level
  • Low Level Relection:包括最新的Low-Level反思,和使用以上Low-Level query召回的歷史Low-Level對於該資產價格變動的反思
  • 多模態TradingChart,以下是用來幫助模型理解圖片的prompt指令:交易圖包括價格趨勢圖,和歷史買入和賣出的時間點。

請在此新增圖片描述

2. 輸出

  • reasoing:基於MI,Low-Level,價格變動,分析歷史每一筆交易決策是否正確(帶來收益),以及在各個時間點,影響交易決策因素有哪些,權重如何
  • improvement: 如果存在錯誤的交易決策,應該如何改進,並給出新的買賣時間點,例如 (2023-01-03: HOLD to BUY)
  • summary: 對以上分析進行總結
  • query:同樣生成query用於召回歷史high-level

3. Decision-making

最後的決策模組,基於以上三個模組的輸入和額外的技術指標,分析師觀點等補充資訊,進行交易決策。Prompt構建如下

1. 輸入

  • Market Intelligence
  • Low Level Reflection
  • High Level Reflection: 包括最新的交易反思和歷史的交易反思
  • Augmented Tools:這裡論文使用工具補充獲取了以下資訊
    • Expert guidance:論文似乎未說明專家資訊來源,只說是類似文章的資料來源。猜測可能是買方買方觀點,例如XX股買入推薦一類
    • strategy:傳統技術面交易策略,類似啥MACD穿越,KDJ金叉,這裡論文透過工具呼叫獲取證券的MACH,KDJ和均值迴歸等技術指標,指標相關描述如下

請在此新增圖片描述

  • prompt: 告訴模型如何利用以上的各個輸入資訊,來給出交易決策。

請在此新增圖片描述

2. 輸出

  • analysis:step-by-step的分析以上各個資訊輸入的綜合影響
  • reasoning:針對以上分析給出買賣操作的原因
  • action:基於分析原因給出交易行為,BUY,SELL,HOLD

請在此新增圖片描述

4. 效果

最後說下效果評估,這裡論文使用個股交易的累計收益率作為評價指標,對比基於技術指標的規則交易,基於RL的方案,以及上面的FinMem,在年化收益率,夏普比率上均有顯著提升,在最大回撤上基本持平。

請在此新增圖片描述

同時論文進行了消融實驗,對比只使用M(MI市場資訊),只使用T(Tools買賣方觀點+技術面),和加入反思,加入交易決策的效果。資料就比較有意思了,只使用M和T的效果竟然差不多,核心提升來自反思模組。不過這裡結論和市場有很大關係,哈哈美國市場的實驗結論沒有直接遷移到A股的可能~

請在此新增圖片描述

金融領域大模型資源梳理

金融大模型應用

  • Reportify: 金融領域公司公告,新聞,電話會的問答和摘要總結
  • Alpha派: kimi加持會議紀要 + 投研問答 +各類金融資訊綜合的一站式平臺
  • 況客FOF智慧投顧:基金大模型應用,基金投顧,支援nl2sql類的資料查詢,和基金資訊對比查詢等
  • ScopeChat:虛擬幣應用,對話式元件互動和問答
  • AInvest:個股投資類檢索增強問答,ChatBI金融資料分析做的有點厲害
  • HithinkGPT:同花順發布金融大模型問財,覆蓋查詢,分析,對比,解讀,預測等多個問題領域
  • FinChat.io:超全的個股資料,個股投資助手
  • TigerGPT: 老虎證券,GPT4做個股分析,財報分析,投資知識問答
  • ChatFund:韭圈兒釋出的第一個基金大模型,看起來是做了多工指令微調,和APP已有的資料功能進行了全方位的打通,從選基,到持倉分析等等
  • 無涯Infinity :星環科技釋出的金融大模型
  • 曹植:達觀釋出金融大模型融合data2text等金融任務,賦能報告寫作
  • 妙想: 東方財富自研金融大模型開放試用,但似乎申請一直未透過
  • 恆生LightGPT:金融領域繼續預訓練+外掛化設計
  • bondGPT: GPT4在細分債券市場的應用開放申請中
  • IndexGPT:JPMorgan在研的生成式投資顧問
  • Alpha: ChatGPT加持的金融app,支援個股資訊查詢,資產分析診斷,財報彙總etc
  • Composer:量化策略和AI的結合,聊天式+拖拽式投資組合構建和回測
  • Finalle.ai: 實時金融資料流接入大模型

金融Agent論文

  • WeaverBird: Empowering Financial Decision-Making with Large Language Model, Knowledge Base, and Search Engine
  • FinGPT: Open-Source Financial Large Language Models
  • FinMem: A Performance-Enhanced LLM Trading Agent with Layered Memory and Character Design
  • AlphaFin:使用檢索增強股票鏈框架對財務分析進行基準測試
  • A Multimodal Foundation Agent for Financial Trading: Tool-Augmented, Diversified, and Generalist
  • Can Large Language Models Beat Wall Street? Unveiling the Potential of AI in stock Selection

金融SFT論文

  • BloombergGPT: A Large Language Model for Finance
  • XuanYuan 2.0: A Large Chinese Financial Chat Model with Hundreds of Billions Parameters
  • FinVis-GPT: A Multimodal Large Language Model for Financial Chart Analysis
  • CFBenchmark: Chinese Financial Assistant Benchmark for Large Language Model
  • CFGPT: Chinese Financial Assistant with Large Language Model
  • InvestLM: A Large Language Model for Investment using Financial Domain Instruction Tuning
  • BBT-Fin: Comprehensive Construction of Chinese Financial Domain Pre-trained Language Model, Corpus and Benchmark
  • PIXIU: A Large Language Model, Instruction Data and Evaluation Benchmark for Finance
  • https://sota.jiqizhixin.com/project/deepmoney

想看更全的大模型相關論文梳理·微調及預訓練資料和框架·AIGC應用,移步Github >> DecryPrompt

相關文章