最近在总结金融领域Finance AI Agents方面的工作,发现很多行业需求和用户输入的 query都是和查询股价/行情/指数/财报汇总/金融理财建议相关。其中LLM大语言模型擅长于总结文本,但是数据都是训练样本中的,不会实时更新,如果需要准确的 金融实时数据就不能只依赖LLM 来生成了。常规的方案包括 RAG (包括调用API )再把对应数据和prompt 一起拼接送给大模型来做文本生成。稳定的一些商业机构的金融数据API基本都是收费的,如果是以科研和demo性质有一些开放爬虫API可以使用,另外之前 yFinance的python包因为yahoo财经 yahoo finance 不再提供免费服务也不能继续使用了。
这里主要介绍一下 FinanceAgent 这个 python库 (github地址 https://github.com/AI-Hub-Admin/FinanceAgent,pypi地址:https://pypi.org/project/FinanceAgent/),里面封装了基于公开网站和网页抓取来获得最新股票/指数行情数据。提供了比如 A股 (雪球 xueqiu.com),美股 (morningstar.com),港股 (hkex.com) 等全球股票市场访问的 Open API,抓取页面,解析结果统一接口的工作。
1. 调用雪球API获取A股实时股价
以A股为例,用户query 解析后的需求是,查询雪球数据来源的 贵州茅台(SH600519)和 招商银行 (SH600036) 两个股票代码的实时股价。
import FinanceAgent as fa cn_stock_info_json = fa.api(symbol_list=['SH600519', 'SH600036'], market="CN_MAINLAND") keys = ["symbol", "avg_price", "high", "low", "previous_close", "update_time", "market_capitalization", "pe_ratio", "source_url", "data_source"] print ("#### CN Shanghai and Shenzhen Stock Exchange LSE") for stock_info in cn_stock_info_json: print ("-----------------------------------") for key in keys: value = stock_info[key] if key in stock_info else "" print (key + "|" + value)
得到的输出是
#### CN MAINLAND Stock Info ----------------------------------- symbol|SH600036 avg_price|39.265919080336076 CNY high|39.8 CNY low|38.69 CNY previous_close|38.43 CNY update_time|2024-10-14 15:00:00 market_capitalization|9918.97 亿 CNY pe_ratio| source|XUEQIU.COM, https://xueqiu.com/S/SH600036 data_source|xueqiu.com ----------------------------------- symbol|SH600519 avg_price|1602.5501242724608 CNY high|1620.63 CNY low|1581.17 CNY previous_close|1604.99 CNY update_time|2024-10-14 15:00:00 market_capitalization|20124.16 亿 CNY pe_ratio| source|XUEQIU.COM, https://xueqiu.com/S/SH600519 data_source|xueqiu.com
从开源代码中发现,代码库提供的数据来源是 雪球提供的API,包括页面 茅台(https://xueqiu.com/S/SH600036) 和 招商银行 (https://xueqiu.com/S/SH600519),具体的抓取和API解析都可以从这个文件里看到。接口返回的数据标准化后得到一个json,可以根据字段来获取数据,包括 https://github.com/AI-Hub-Admin/FinanceAgent/blob/main/src/FinanceAgent/stock/request_stock_price_cn.py
2. 调用港交所(HKEX)的网页API获取港股实时股价
假设用户的需求输入的问题是 "帮我查一下腾讯的股价和市值"。我们在准备给LLM大模型数据前,需要把 腾讯最新的 股价 (price) 市值 (market_cap)的信息查询到,再和prompt合并喂给大模型产出回答。
腾讯股票代码(700),快手的股票代码是(1024),港交所官网的地址在这里(https://www.hkex.com.hk/Market-Data/Securities-Prices/Equities/Equities-Quote?sym=700&sc_lang=en),港交所没有提供官方查询的API,因此代码库基于爬虫来实时更新 Token,模拟请求来抓取数据。
FinanceAgent库封装和调用API,获取Token等方法 fetch_clean_token_by_force() ,以及解析的过程。地址:https://github.com/AI-Hub-Admin/FinanceAgent/blob/main/src/FinanceAgent/stock/request_hk_stock_price_py3.py
import FinanceAgent as fa hk_stock_info_json = fa.api(symbol_list=['700', '1024'], market="HK") keys = ["symbol", "avg_price", "high", "low", "previous_close", "update_time", "market_capitalization", "pe_ratio", "source_url", "data_source"] print ("#### HongKong Stock Exchange LSE") for stock_info in hk_stock_info_json: print ("-----------------------------------") for key in keys: value = stock_info[key] if key in stock_info else "" print (key + "|" + value)
返回结果包括
----------------------------------- symbol|700 avg_price|436.000 HKD high|440.800 HKD low|424.000 HKD previous_close|438.800 HKD update_time|14 Oct 2024 18:33 market_capitalization|4,045.91 B HKD pe_ratio|33.32 source|HKEX, https://www.hkex.com.hk/Market-Data/Securities-Prices/Equities/Equities-Quote?sym=700&sc_lang=en data_source|hkex.com ----------------------------------- symbol|1024 avg_price|49.650 HKD high|50.950 HKD low|47.600 HKD previous_close|50.850 HKD update_time|14 Oct 2024 18:33 market_capitalization|214.06 B HKD pe_ratio|31.15 source|HKEX, https://www.hkex.com.hk/Market-Data/Securities-Prices/Equities/Equities-Quote?sym=1024&sc_lang=en data_source|hkex.com
FinanceAgent 代码库和地址
https://github.com/AI-Hub-Admin/FinanceAgent
http://www.deepnlp.org/blog/chatgpt-stock-global-market
http://www.deepnlp.org/blog/fin-chatbot-first-spider-hkex
http://www.deepnlp.org/blog/financial-chatbot-chatgpt-1
http://www.deepnlp.org/blog/generative-ai-search-engine-optimization-how-to-improve-your-content
http://www.deepnlp.org/workspace/dialogue_visualization
http://www.deepnlp.org/workspace/agent_visualization
http://www.deepnlp.org/store/pub/pub-openai-o1
http://www.deepnlp.org/store/pub/pub-chatgpt-openai
http://www.deepnlp.org/blog/introduction-to-multimodal-generative-models
https://pypi.org/project/FinanceAgent/