深入 ai-hedge-fund:多智能体 LLM 如何做出投资决策
一份关于 ai-hedge-fund 开源项目的实操指南。了解多智能体 LLM 如何模拟巴菲特、格雷厄姆、林奇和伍德的投资风格来生成投资信号。
如果你最近关注过算法交易圈子,很可能见过一些截图:某个 LLM 宣称苹果是"以合理价格买入的优秀企业",或者特斯拉是"颠覆性成长故事"。这些截图大多来自 ai-hedge-fund,一个开源项目,它会将单一股票变成一场由 AI 智能体扮演的投资大师之间的董事会辩论。
这不是一个承诺被动收入的实盘交易机器人,而是一个研究沙盒:它让你看到当每个参与者都是大语言模型时,不同投资哲学是如何碰撞的。在本指南中,我们将使用 Poetry 安装该项目、运行回测、解读巴菲特、格雷厄姆、林奇和伍德角色的代码分配方式,并调整智能体权重,以便你分析不同市场环境下的行为。读完本文后,你将清楚了解多智能体 LLM 如何用于探索投资决策——以及它们的局限性在哪里。
ai-hedge-fund 是什么?
ai-hedge-fund 是一个基于 Python 的对冲基金研究部门模拟系统。其架构刻意保持简洁:一组由大语言模型驱动的分析师智能体,各自从某位投资传奇的角度评估一只股票。这些智能体不仅仅总结报告,而是返回结构化信号、置信度评分和书面理由。然后,一个风险管理智能体审查集体输出,决定是买入、持有、卖出还是放弃。
它的教育价值在于让投资哲学变得明确。与预测收益的黑箱神经网络不同,你可以阅读"沃伦·巴菲特"智能体的推理,看看它为什么喜欢或不喜欢一家公司。当多个智能体意见分歧时,最终决策就成为价值、成长、质量和动量之间的透明权衡,而不是一个神秘的分数。
这种透明性也是大多数批评的来源。智能体只是在角色扮演。它们不是真实的投资者,也无法接触私人会议、管理层气质或实时渠道调研。它们拥有的是系统提示中编码的一致风格,以及一组共享的财务指标。如果使用得当,这个项目是一个头脑风暴伙伴。如果使用不当,它就会成为一种令人信服的方式,为你原本就想持有的仓位寻找合理化解释。
请将 ai-hedge-fund 视为灵感生成器,而非投资组合经理。它产生的每一个信号 都应与你自己的基本面分析、技术分析和风险管理规则交叉验证。
为什么多智能体架构很重要?
单智能体 LLM 系统容易出现一种微妙的失败模式:模型会把所有相互矛盾的事实平均成 bland 的中庸答案。如果你问一个模型,某只估值较高的科技股是否值得买入,它可能会给你一篇五段的文章,结论是"看情况"。这话不算错,但也没有可操作性。
多智能体系统在一定程度上解决了这个问题:它为不同智能体分配强烈且相互冲突的观点。格雷厄姆智能体必须从深度价值标准出发进行论证,伍德智能体必须从颠覆性和指数级增长出发进行论证。辩论形式会暴露单一模型可能掩盖的紧张关系。最终决策则由一个专门设计的独立智能体或加权聚合函数来明确解决冲突。
另一个好处是可解释性。当系统推荐买入英伟达时,你可以打开日志看到:巴菲特智能体因估值问题而保持中性,林奇智能体因可理解的业务驱动而看涨,伍德智能体因 AI 顺风而强烈看涨。这种组合比简单的"买入"评级提供了更多信息。
该架构还让回测更清晰。因为每个智能体都产生结构化输出,你可以准确记录哪种哲学驱动了每个决策,并衡量某些智能体在牛市、熊市或特定行业中的表现是否更好。这种反馈循环很难用单一的整体提示来复现。
智能体角色:系统内部的投资风格
默认的 ai-hedge-fund 发行版包含模仿四位知名投资者的智能体。在更改权重或解读信号之前,理解每种风格至关重要。以下是各人格的拆解。
| 智能体 | 灵感来源 | 核心哲学 | 关键指标 | 典型偏见 |
|---|---|---|---|---|
| 价值型智能体 | 沃伦·巴菲特 | 以合理价格买入优秀企业 | 净资产收益率、安全边际、自由现金流、护城河质量 | 避免高价买入;可能错过动量反弹 |
| 深度价值型智能体 | 本杰明·格雷厄姆 | 以安全边际买入低于内在价值的资产 | 市盈率、市净率、净营运资本、债务比率、股息记录 | 对成长故事持怀疑态度;在狂热中提前退出 |
| 成长型智能体 | 凯茜·伍德 | 投资具有指数级上涨潜力的颠覆性创新 | 总可寻址市场、收入增长、研发强度、平台潜力 | 高信念;可能忽视短期估值 |
| 优质成长型智能体 | 彼得·林奇 | 买入你理解的业务;合理价格下的成长 | PEG 比率、盈利增长、内部人持股、可理解的业务 | 平衡成长与估值;避免炒作 |
这些人格通过系统提示实现,在某些分支中还会提供基本面数据的工具访问权限。提示工程是最重要的部分。弱提示会让每个投资者标签都产生泛泛而谈的答案,而强提示会迫使模型引用具体比率、解释安全边际,或阐述护城河为何持久。
巴菲特风格智能体
巴菲特智能体通常被配置为以合理价格追求优质的投资人。它希望拥有宽阔护城河、稳定净资产收益率、可控债务和以股东为导向的管理层。在实践中,这意味着如果一家快速成长科技公司的自由现金流转化率较弱,或竞争地位看起来脆弱,该智能体通常会放弃。
典型的巴菲特智能体理由可能是:"该企业产生强劲自由现金流,在核心细分市场具有定价权,且估值相对历史倍数只有适度溢价。我谨慎看涨,但希望有更大的安全边际。"这种细致的信号很有用,因为它表明模型是从企业持久性而非股价走势进行推理。
格雷厄姆风格智能体
格雷厄姆智能体更为严格。它寻找统计上便宜的股票:低市盈率、低市净率、稳健的资产负债表,以及长期稳定的股息或盈利记录。在原始《证券分析》框架中,只有当股票能够以显著低于保守估计内在价值的价格买入时,才具有吸引力。
在现代市场中,纯粹的格雷厄姆筛选可能让智能体对银行、工业和消费品以外的几乎所有股票持续看跌。这不是 bug,而是深度价值的忠实体现。如果你在 2020-2021 年的成长股反弹期间运行回测,可以预期该智能体会产生大量"持有"或"卖出"信号,而伍德智能体则在旁边欢呼。
伍德风格智能体
伍德智能体模拟颠覆性创新投资。它关注总可寻址市场、技术采用曲线、平台潜力,以及管理层是否愿意大力投入研发。估值倍数也会被考虑,但相对于机会规模而言是次要的。
这个智能体在牛市中通常最为看涨,在下跌中也最容易犯错。这正是你想要研究多智能体系统时的理想行为。目标不是让每个智能体都正确,而是理解当它们被组合时,信念、波动性和回撤容忍度如何相互作用。
林奇风格智能体
林奇智能体介于巴菲特和伍德之间。它喜欢成长,但希望以合理价格买入成长,并且希望模型能够简单解释的业务。"买入你理解的业务"规则意味着,该智能体被鼓励拒绝复杂的财务工程或投机性的 pre-revenue 公司。
林奇风格的信号通常包含 PEG 比率讨论:"盈利年增长率为 18%,市盈率为 22,PEG 比率约为 1.2。业务可理解,但估值几乎没有容错空间。"这种结构化推理让你更容易信任或质疑输出结果。
使用 Poetry 安装
在运行回测之前,你需要一个可用的 Python 环境和项目依赖。该仓库推荐使用 Poetry,它能保持依赖图可复现,并避免污染你的全局 Python 安装。
第一步:克隆仓库
打开终端并克隆项目。如果你愿意,也可以先 fork 一份,以便跟踪自己的修改。
git clone https://github.com/virattt/ai-hedge-fund.git
cd ai-hedge-fund第二步:安装 Poetry
如果你还没有安装 Poetry,官方安装器是最安全的方式。在 macOS 和 Linux 上可以运行:
curl -sSL https://install.python-poetry.org | python3 -然后将 Poetry 添加到路径并验证版本:
poetry --version第三步:安装依赖
在项目目录中安装依赖。这会自动创建虚拟环境。
poetry install如果项目包含可选的数据提供商包,你可能需要显式安装它们。请检查 pyproject.toml 中是否有 yfinance 或 financial-modeling-prep 等 extras。
第四步:配置 API 密钥
智能体需要 LLM 提供商,数据获取器需要市场数据。复制示例环境文件并填写你的密钥:
cp .env.example .env用你喜欢的编辑器编辑 .env。最小配置如下所示:
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
FINANCIAL_MODELING_PREP_API_KEY=your_key_here切勿将 .env 文件提交到版本控制。它包含付费 API 密钥,可能会泄露你的账户。
仓库应已将 .env 列入 .gitignore,但在推送前请再次确认。
第五步:激活环境
要在 Poetry 环境中运行命令,请使用:
poetry shell现在你已经准备好运行第一次回测了。
运行第一次回测
观察系统运行的最简单方式是对单一股票在一段历史窗口内运行回测。这样你可以在不承担资金风险的情况下观察智能体辩论和最终决策。
基本回测命令
大多数分支提供一个命令行入口。具体命令可能不同,但常见模式如下:
python src/main.py --ticker AAPL --start-date 2024-01-01 --end-date 2024-12-31运行后,系统将执行以下步骤:
- 获取苹果的历史价格数据和基本面指标。
- 向每个分析师智能体发送格式化提示。
- 收集每个智能体的结构化信号。
- 运行风险管理智能体,生成最终操作。
- 打印或保存决策摘要和模拟绩效。
解读输出
典型的输出块如下所示:
Ticker: AAPL
Date: 2024-03-15
Buffett Agent: NEUTRAL (confidence 0.55) — valuation full, moat intact
Graham Agent: NEUTRAL (confidence 0.50) — P/E above historical median
Wood Agent: BULLISH (confidence 0.75) — ecosystem and AI integration
Lynch Agent: BULLISH (confidence 0.65) — understandable growth, PEG near 1.3
Risk Manager: BUY (position size 3%)
Rationale: Two of four agents are bullish; valuation concerns are offset by quality and growth visibility.请注意,最终操作不是简单投票。风险管理器会考虑置信度、相互冲突的信号和持仓集中度。即使所有智能体一致看涨,如果波动率较高,最终仓位也可能被调小。
比较多只股票
你还可以运行一篮子回测,比较同一组智能体在不同行业中的表现。例如:
python src/main.py --ticker AAPL,MSFT,JPM,XOM --start-date 2024-01-01 --end-date 2024-12-31这有助于发现风格漂移。一个偏重伍德智能体所选名字的投资组合可能表现得像成长基金,而一个由格雷厄姆信号主导的投资组合可能表现得像深度价值基金。多智能体格式让这种漂移在日志中可见,而不是隐藏在一个单一模型内部。
智能体权重在代码中的位置
你可以进行的最有力实验之一是更改每个智能体的影响力。默认配置通常给予每个分析师相同权重,但这可能与你想要研究的市场环境不匹配。
找到编排器
聚合逻辑通常位于编排器或投资组合经理模块中。在仓库中搜索提到智能体权重或信号聚合的文件:
grep -r "weight" src/
grep -r "aggregate" src/你要找的是一个接收智能体信号列表并返回最终得分的函数。它可能看起来像这样:
def aggregate_signals(signals: list[Signal]) -> Action:
weights = {
"buffett": 0.25,
"graham": 0.25,
"wood": 0.25,
"lynch": 0.25,
}
...按市场环境调整权重
假设你认为当前环境更有利于优质复利者而非投机性成长。你可以提高巴菲特权重并降低伍德权重:
weights = {
"buffett": 0.35,
"graham": 0.30,
"wood": 0.15,
"lynch": 0.20,
}如果你在研究 2020-2021 年期间,可以反转该配置,看看伍德智能体的信号是否会主导投资组合。这个练习的目的不是找到唯一正确的权重,而是理解最终决策对每个哲学有多么敏感。
根据单一回测来过度拟合权重很容易。如果你不断调整智能体权重直到权益曲线 看起来完美,你只是在拟合噪音。在得出结论之前,务必在样本外期间测试修改后的权重。
添加置信度阈值
另一个有用的修改是设置最低置信度阈值。智能体微弱的看涨信号应该比强烈看涨信号权重更低。一个简单的实现方式:
weighted_score = sum(
weights[s.agent] * s.confidence * (1 if s.signal == "BULLISH" else -1)
for s in signals
if s.confidence >= 0.60
)这个过滤机制迫使智能体在能够影响最终得分之前必须有信念。它往往会减少交易次数,并可能提高震荡市中的信噪比。
实操实验:2024 年价值 vs. 成长
为了让本教程更具体,下面是一个你可以运行的示例实验。目标是在同一时期比较两种智能体权重配置。
| 配置 | 巴菲特 | 格雷厄姆 | 伍德 | 林奇 | 预期行为 |
|---|---|---|---|---|---|
| 均衡配置 | 25% | 25% | 25% | 25% | 在各风格间保持适度敞口 |
| 优质价值配置 | 35% | 35% | 10% | 20% | 偏好盈利能力强、现金流充沛的企业 |
| 颠覆成长配置 | 10% | 10% | 50% | 30% | 偏好高成长、高波动性的标的 |
用每种配置对相同的股票列表运行回测,并记录最终投资组合。你很可能会发现,优质价值配置在强劲反弹中表现落后,但在回调中表现优异;而颠覆成长配置则相反。记录这些权衡比找到夏普比率最高的配置更有价值。
实验期间要思考的问题
- 哪个智能体在大多数决策中扮演了关键一票?
- 是否有智能体持续产生低置信度信号?这可能表明其风格与当前市场不匹配。
- 当智能体意见分歧时,风险管理器如何调整仓位大小?
- 最终投资组合是否曾在三个智能体都不看好的标的上重仓?如果是,原因是什么?
回答这些问题能将回测从记分牌变成学习练习。
需要警惕的常见失败模式
多智能体 LLM 系统并非魔法。它们继承了大语言模型和委员会决策两者的失败模式。以下是你会遇到的最常见问题。
虚构基本面
大语言模型可能会引用与你提供的数据不符的市盈率。这通常发生在模型的训练知识与检索到的数字冲突时。最安全的修复方式是强制模型仅引用提示中提供的数据,并将其输出与你的数据源核对。
智能体之间的提示泄漏
如果系统提示过于模糊,每个智能体都可能趋同于平庸的中间观点。你可以通过向智能体提供相互矛盾的数据并检查它们是否仍然一致来测试这一点。强大的人格在事实模糊时应该产生分歧。
牛市中的过度自信
在强劲反弹期间,每个智能体都可能因为近期价格趋势影响大语言模型的推理而变得看涨。这是多智能体版本的近因偏见。设计良好的风险管理器应在信号高度相关时减小仓位规模。
昂贵的 API 账单
使用 GPT-4o 或 Claude 运行数百次回测迭代可能会迅速累积费用。在探索阶段使用更便宜的模型,首次测试时限制股票数量,并积极缓存数据。一旦提示稳定,通过 Ollama 运行的本地模型是一个不错的选择。
常见问题
以下是关于 ai-hedge-fund 最常见问题的解答。
ai-hedge-fund 是什么,由谁开发?
ai-hedge-fund 是一个开源教育项目,使用多个由大语言模型驱动的智能体来模拟一家对冲基金。每个智能体模仿一位著名投资者的风格——沃伦·巴菲特、本杰明·格雷厄姆、凯茜·伍德或彼得·林奇——并共同辩论得出最终的买入、持有或卖出决策。它不是一个实盘交易系统,应被视为研究沙盒。
使用 ai-hedge-fund 需要真实证券账户吗?
不需要。该项目默认以回测模式运行,基于历史价格数据进行分析。你只需要本地 Python 环境、Poetry 包管理器,以及来自 OpenAI 或 Anthropic 等 LLM 提供商的 API 密钥即可运行。
ai-hedge-fund 最适合用哪个 LLM 提供商?
该代码库支持 OpenAI、Anthropic、Groq 以及通过 Ollama 运行的本地模型。为了获得可靠的 JSON 输出和推理能力,GPT-4o 或 Claude 3.5 Sonnet 是最常见的选择。本地模型适合实验,但在遵循结构化输出模式方面可能表现较弱。
智能体如何做出最终决策?
每个智能体都收到相同的股票代码和基本面数据,然后基于自身的投资哲学进行推理,并返回带有置信度和理由的看涨、看跌或中性信号。随后,风险管理层汇总这些信号,检查投资组合约束,并输出最终操作。
我可以调整每个智能体的权重吗?
可以。智能体权重在编排器代码中是可配置的。你可以根据想要模拟的市场环境,增加格雷厄姆等深度价值型智能体的权重,或提高伍德等成长型智能体的权重。我们在“修改智能体权重”一节中介绍了具体方法。
ai-hedge-fund 开箱即用就能盈利吗?
不一定。该项目主要用于教育和实验。过去的回测结果不能保证未来收益,默认智能体可能会过度拟合一些众所周知的市场叙事。务必用你自己的研究和风险控制来验证信号。
ai-hedge-fund 使用哪些数据源?
默认实现从 Yahoo Finance 和 Financial Modeling Prep 等公共 API 获取财务数据。你需要为部分数据提供商准备有效的 API 密钥,并在运行大规模回测之前仔细阅读其服务条款。
总结
ai-hedge-fund 是最清晰地展示多智能体 LLM 如何应用于投资研究的案例之一。通过为每个智能体分配一种源自历史的投资哲学,该项目将单一股票转化为关于价值、成长、质量和风险的结构化辩论。透明性是其最大优势:你可以准确读取系统为何做出某个决策、哪些智能体达成一致、分歧在哪里。
这种透明性也设定了它的上限。智能体只是用公开数据和大语言模型进行角色扮演。它们无法接触管理团队、专有数据集,或在回撤期间坚持策略所需的情感纪律。请利用这个项目来磨砺自己的推理能力,测试不同哲学如何权衡相同事实,并提出你独自不会想到的问题。不要在没有独立尽职调查的情况下用它配置真实资金。
本指南最有价值的成果不是一次盈利的回测,而是养成这样的习惯:当前是哪个智能体在发言?它的置信度有多高?什么会让它改变主意?这是每位投资者,无论人类还是机器,都应该能够回答的问题。