TradingAgents 是什么?
简单说,它是一个用一群 LLM 智能体模拟交易公司分工的开源框架。
这期本来想跳过它。一个"让 AI 替你炒股"的仓库,看着就像那类靠 demo 攒星的东西。翻完它今年二月到九月的版本日志,我改主意了。
它长什么样
分析师分四个方向:基本面、情绪、新闻、技术。技术那个用 MACD、RSI 这类常见指标找形态。情绪那个把 StockTwits 和 Reddit 上的讨论压成一个短期情绪判断。
再上面是研究员,分看多和看空两拨,结构化辩论一轮,把分析师的结论过一遍。再往上是交易员,定时机和仓位。最后风控算波动率和流动性,投资组合经理批或者拒。
点评:分工图很好看。拆开就是几段 prompt 串起来互相看输出。"看多和看空研究员辩论",本质是让模型把正反两个方向各写一遍,再让第三个模型评。它的用处是逼模型把反面也写出来。
这不是华尔街。
版本日志里反复出现的一个词
前视偏差。
简单说:回测跑的是三月一日的分析,却读到了三月一日之后才公布的数据。结果全是假的,还假得特别好看。
这事谁都懂。难的是每个数据源单独修一遍。五月给情绪分析师做接地,七月加 Alpha Vantage 的前视过滤,八月回头修 FRED 宏观数据、社交情绪和决策日志记忆里的前视偏差。一个版本一个版本,一条一条。
所谓接地,就是把模型的每句价格断言拴到一份验证过的数据快照上。不让它跨两次运行给出不同的公司,或者编出来的价位。
点评:愿意花半年干这个的,和只想发个 demo 的,是两种人。
苹果 2008 年总资产的两种数字
v0.5.0 里有个细节,我看了两遍。
苹果 2008 年的总资产,最初申报是 396 亿美元。2010 年被重述为 362 亿。回测日期落在中间那几年,当时该读到的是 396 亿,不是后来那个修正过的数。
TradingAgents 专门按申报时点去 SEC EDGAR 取数。这个源不要账号也不要 key,但 SEC 要求调用方表明身份。项目默认带一个联系方式,也能换成你自己的。
点评:没有任何 demo 会展示这种东西。一个回测系统的诚实程度,基本等于它对"我当时知道什么"的较真程度。
同一个股票同一天,跑两次可能不一样
它自己写在文档里。原因是 LLM 采样的随机性,加上新闻、StockTwits、Reddit 这些数据实时在变。
给的解法是降 temperature。紧接着又补一句:现在主流模型以推理为主,大多忽略 temperature。想要严格复现,得换成非推理模型。
点评:这句坦白比整个架构图值钱。一个不能复现的回测,不太该叫策略。但你至少知道它不能,而不是被蒙着。
backtest 和那句免责
有个 run_backtest,在股票代码和日期的网格上跑同一套流程,算相对区域基准的 alpha,按评级分组。同一 run_id 重跑会跳过已跑过的格子。命令行是 tradingagents backtest,配上起止日期和间隔。
官方一句话说死:不保证跟任何已发布数字一致,把它当研究多智能体分析的脚手架,不是能复制的收益策略。
点评:这句该被截图。开源量化最缺的就是这句。
一份年初的技术报告
今年一月还有一份 Trading-R1。
这个我还没读,先放在这里。看懂了再补。
回到十万星
十万八千多星,两万多次 fork。
这些数字代表的不是代码质量,是需求。大家想要的是一台替我赚钱的机器。而这个仓库真正在做的事,跟这个需求关系不大。
一个项目越是被一个漂亮的形状描述,你越该去看它的版本日志。值得看的东西全在那条鸿沟里。
README 里明写了:仅用于研究,不构成投资建议。
想装来试试,conda 或 uv 建个 Python 3.12 环境,pip install . 就能跑,也可以走 docker compose,本地模型挂 Ollama。支持的提供商名单长得离谱,OpenAI、Anthropic、Google、DeepSeek、Qwen、GLM、Kimi、Groq、NVIDIA NIM 都在里面,vLLM、LM Studio、llama.cpp 这类 OpenAI 兼容端点也能接,把 llm_provider 设成 openai_compatible、backend_url 指过去就行。
本周就这些。
上面有任何一条你试过、或者觉得我讲错了,欢迎告诉我。
下周见。
