本章介紹金融領域大模型智能體,並梳理金融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%的提振,那如果今日輿情顯示蘋果又有新產品發佈,那我們可能會預期有相似的正向影響。
首先是當日市場信息,主要做以下幾件事情
- 獲取資產當日(T)的資產價格,新聞輿情(通過FMPAPI接口)信息,拼接後作爲大模型的上文,填充到下面latest_market_intelligence
- Analysis:基於系統指令和任務描述,對以上所有信息進行COT分析,論文通過prompt給出了分析方式,簡化成每條信息對資產價格的正面/負面/中性影響,以及短/中/長的影響時效性。
- Summary:對以上Analysis的分析結果進行總結,只保留核心投資觀點,並對上面相似的正負面和時效性進行聚合。
- Query生成:基於以上的總結內容,生成短/中/長不同時效性的檢索query(關鍵詞),用於搜索該資產的歷史信息。
這裏論文使用了XML格式的prompt來承載各類信息,整個Lastest MI的Prompt如下,其中iframe會填充具體的系統指令,任務描述,如何分析資產正負面影響,如何進行分析總結和query生成,以及輸出格式。iframe的具體內容實在是太長了,大家直接看論文附錄G
其次是歷史市場信息部分,主要做以下幾件事情
- 基於上面的Query,去搜索該資產歷史(<T)不同時間窗口的各類信息,包括但不限於:不同週期的資產價格變化,新聞輿情,研究報告等等
- 和上面當日市場信息相同,對信息進行分析和總結,不過不需要生成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