




















上周发表了一篇LLM应用--微舆的应用剖析,收到一位读者的留言,想要了解基于LangGraph构建的多Agent应用,因此想起来了几个月前深入研究的LLM应用AI对冲基金(ai-hedge-fund),遂将以前的内容整理整理。
AI Hedge Fund是一个基于AI对冲基金的概念验证项目,github星标已达42K+, 探索如何利用人工智能进行交易决策。仅用于教育目的,不用于实操。
该项目基于LangGraph构建了多Agent的协作机制,包括18个投资领域的Agent,且每个Agent关注各自主题相关的投资指标进行评判,分组如下:
1)阿斯沃思·达莫达兰【估值院长】
通过严格的估值分析,关注内在价值和财务指标来评估投资机会。
2) 本杰明·格雷厄姆【价值投资之父】
通过系统价值分析,强调安全边际,投资于基本面强劲但被低估的公司。
3) 查理·芒格【理性思想家】
倡导价值投资,专注于优质企业和通过理性决策实现长期增长。
4) 沃伦·巴菲特【奥马哈先知】
通过价值投资和长期持有,寻找基本面强劲且具有竞争优势的公司。
5) 莫尼斯·帕伯莱【丹霍投资者】
通过基本面分析和安全边际,专注于价值投资和长期增长。
6) 迈克尔·伯里【大空头逆向投资者】
进行逆向押注,通常做空被高估的市场,并通过深入的基本面分析投资于被低估的资产。
7) 基本面分析【财务报表专家】
通过基本面分析,深入研读财务报表和经济指标,评估公司的内在价值。
8) 估值分析【公司估值专家】
专长于确定公司的公平价值,使用各种估值模型和财务指标进行投资决策。
1) 凯茜·伍德【增长投资女王】
关注颠覆性创新和增长,投资于引领技术进步和市场颠覆的公司。
2) 彼得·林奇【十倍股投资者】
使用“买你所知”策略,投资于业务模式易懂且增长潜力强劲的公司。
3) 菲利普·费雪【小道消息投资者】
强调投资于管理强大和产品创新的公司,通过小道消息研究专注于长期增长。
4) 成长分析【增长专家】
通过增长分析,分析增长趋势和估值,以识别增长机会。
1) 斯坦利·朱肯米勒【宏观投资者】
关注宏观经济趋势,通过自上而下分析,对货币、商品和利率进行大额押注。
2) 雷卡·拉凯什·朱朱瓦拉【印度大牛】
利用宏观经济洞察,投资于高增长行业,特别是在新兴市场和国内机会。
1) 新闻情感分析【新闻情绪专家】
通过新闻分析,分析新闻情绪来预测市场动向并识别机会。
2) 市场情感分析【市场情绪专家】
通过行为分析,评估市场情绪和投资者行为,以预测市场动向并识别机会。

整体流程如下:
(1) 输入股票名称及起止日期,选择指定模型和指定投资Agent。
(2) 每个Agent内部会从financialdatasets中拉取股票的相关数据并缓存在内存中,然后按照指定投资主题逻辑评估股票的投资价值。
(3) 每个Agent的内容汇总后,再经过风险管理Risk Manager,输出风险分析。
(4) 最后经过组合管理Portfolio Manager,决定最终的投资行为,包括买入、卖出、持有、看多、看空。
from langgraph.graph import END, StateGraph
from src.utils.analysts import get_analyst_nodes
from src.agents.portfolio_manager import portfolio_management_agent
from src.agents.risk_manager import risk_management_agent
def create_workflow(selected_analysts=None):
"""利用选择的分析师Agent创建工作流"""
workflow = StateGraph(AgentState)
workflow.add_node("start_node", start)
# 从配置文件中获取分析师Agent节点
analyst_nodes = get_analyst_nodes()
# 如果未选择,则默认是所有的分析师Agent
if selected_analysts is None:
selected_analysts = list(analyst_nodes.keys())
# 将节点和边加入工作流
for analyst_key in selected_analysts:
node_name, node_func = analyst_nodes[analyst_key]
workflow.add_node(node_name, node_func)
workflow.add_edge("start_node", node_name)
# 增加风险管理、投资组合管理节点
workflow.add_node("risk_management_agent", risk_management_agent)
workflow.add_node("portfolio_manager", portfolio_management_agent)
# 分析师Agent连接到风险节点
for analyst_key in selected_analysts:
node_name = analyst_nodes[analyst_key][0]
workflow.add_edge(node_name, "risk_management_agent")
workflow.add_edge("risk_management_agent", "portfolio_manager")
workflow.add_edge("portfolio_manager", END)
workflow.set_entry_point("start_node")
return workflow

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。