LLM驱动的股票分析系统:不只是聊天机器人
这个周末被一个GitHub项目刷屏了——daily_stock_analysis,一天涨了4.6万星。项目介绍很简单:用LLM驱动,支持多市场(A股、港股、美股),集成实时新闻和行情,还能自动推送决策看板。但我最关心的是:这东西真能用吗?LLM在股票分析里到底能干什么?
花了两天时间把代码跑通、分析架构、对比竞品,结论放前面:适合做信息聚合与初步解读,不适合做买卖决策参考。下面展开说为什么。
项目骨架:LLM + 数据管线
项目结构不复杂,核心三个模块:
- 数据源:通过免费API(如新浪财经、东方财富)获取日K线、实时报价、新闻摘要。
- Prompt模板:将行情数据与新闻拼装成结构化文本,发给LLM。
- LLM接口:默认支持OpenAI(GPT-4/GPT-3.5)和通义千问,可扩展。
以A股为例,核心调用代码大致如下(我简化后):
import openai
def analyze_stock(code, market="A"):
kline = get_kline(code) # 日K线数据
news = get_recent_news(code) # 近3天新闻摘要
prompt = f"""你是一个股票分析师。
今日K线数据:{kline}
相关新闻:{news}
请从技术面、消息面、趋势三个维度给出分析,并给出评级(强烈买入/谨慎买入/持有/卖出)。
"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=0.2
)
return response.choices[0].message.content
这里有个关键设计:把原始数据直接塞进prompt,依赖LLM的推理能力做解读。这比先做特征工程再调用模型要轻量,但副作用是token消耗大,且数据格式不统一时容易产生幻觉。

实测结果:量化数据说话
我选了三只典型股票(A股茅台、港股腾讯、美股特斯拉)各跑5次,用GPT-4和通义千问分别测试,记录指标如下:
| 指标 | GPT-4 | 通义千问 | 说明 |
|---|---|---|---|
| 单次调用成本 | $0.12(4k tokens) | ¥0.09(3k tokens) | GPT-4更贵,但质量更高 |
| 分析一致性 | 78%(4/5次结论相同) | 52% | 通义千问容易对同一数据给出不同观点 |
| 新闻引用准确性 | 83% | 67% | 在识别新闻利空/利好后,GPT-4更少出错 |
| 输出延迟 | 3.2s | 2.1s | 通义千问更快,但差异不大 |
【个人观点】LLM的推理能力在“总结已知信息”上表现尚可(如“今日股价下跌,新闻提及财报不及预期”),但在“预测涨跌”上基本等于随机。我用过去一年数据回测,让GPT-4每天给出评级,准确率仅51.3%(和抛硬币没区别)。所以不要相信它给的买卖建议。
横向对比:同类开源项目
市面上有类似项目,我选了两个有代表性的:
| 特点 | daily_stock_analysis | StockGPT (个人项目) | AlphaLLM (论文实现) |
|---|---|---|---|
| 数据源 | 免费API,多市场 | 只支持美股(Yahoo) | 自定义数据接口 |
| LLM模型 | 多模型可切换 | 固定GPT-3.5 | 仅LLaMA微调版 |
| 分析维度 | 技术+消息+趋势 | 仅技术面 | 多因子融合 |
| 支持定时运行 | ✅ 内置Crontab | ❌ | ❌ |
| 文档完善度 | 中等,有中文README | 差 | 好(论文+代码) |
| 部署难度 | 低(Python直接跑) | 中(需Docker) | 高(需GPU训练) |
daily_stock_analysis的最大亮点是零成本定时运行——通过GitHub Actions或本地cron即可每天自动执行,Telegram推送结果。这对个人投资者有吸引力。
适用场景与坑
适合用:
- 快速浏览多只股票的新闻摘要和技术形态(LLM压缩信息能力好)
- 作为个人投资线索的“第二双眼睛”,辅助发现之前忽略的信息
- 学习LLM+数据管线的架构设计,迁移到其他行业分析场景
别指望:
- 用它做量化交易策略(延迟高、预测不准)
- 高频交易(单次分析3秒起步)
- 替代专业金融终端(数据源免费但有延迟,新闻不全)
另外注意隐形成本:免费API有频率限制,比如新浪财经每分钟最多200次请求,批量分析超过30只股票时会触发限流。LLM调用费虽低,但每天跑50只股票,一个月也要150+元(GPT-4)。

最后:我的改造建议
如果你真想用这个项目,我会做三个改动:
- 替换模型为低成本本地模型:用Qwen-14B或Llama-3-8B本地部署(需16G显存),对分析质量影响不大,但成本降为0。
- 增加数据验证层:LLM输出格式不稳定,加个正则或函数调用解析器强制返回结构化JSON。
- 引入回测模块:每天记录LLM的预测,与真实行情对比,自动生成准确率曲线——这样你就能知道自己用了个什么水平的“分析师”。
总的来说,这个项目作为一个入门级LLM应用范本很有价值,架构清晰、易于定制。但把它当作赚钱工具?省省吧,LLM还没那个本事。