LLM驱动的股票分析系统:不只是聊天机器人

这个周末被一个GitHub项目刷屏了——daily_stock_analysis,一天涨了4.6万星。项目介绍很简单:用LLM驱动,支持多市场(A股、港股、美股),集成实时新闻和行情,还能自动推送决策看板。但我最关心的是:这东西真能用吗?LLM在股票分析里到底能干什么?

花了两天时间把代码跑通、分析架构、对比竞品,结论放前面:适合做信息聚合与初步解读,不适合做买卖决策参考。下面展开说为什么。

项目骨架:LLM + 数据管线

项目结构不复杂,核心三个模块:

  1. 数据源:通过免费API(如新浪财经、东方财富)获取日K线、实时报价、新闻摘要。
  2. Prompt模板:将行情数据与新闻拼装成结构化文本,发给LLM。
  3. LLM接口:默认支持OpenAI(GPT-4/GPT-3.5)和通义千问,可扩展。

以A股为例,核心调用代码大致如下(我简化后):

python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
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消耗大,且数据格式不统一时容易产生幻觉。

LLM prompt engineering for stock analysis example

实测结果:量化数据说话

我选了三只典型股票(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)。

cost comparison chart GPT-4 vs Qwen vs local model

最后:我的改造建议

如果你真想用这个项目,我会做三个改动:

  1. 替换模型为低成本本地模型:用Qwen-14B或Llama-3-8B本地部署(需16G显存),对分析质量影响不大,但成本降为0。
  2. 增加数据验证层:LLM输出格式不稳定,加个正则或函数调用解析器强制返回结构化JSON。
  3. 引入回测模块:每天记录LLM的预测,与真实行情对比,自动生成准确率曲线——这样你就能知道自己用了个什么水平的“分析师”。

总的来说,这个项目作为一个入门级LLM应用范本很有价值,架构清晰、易于定制。但把它当作赚钱工具?省省吧,LLM还没那个本事。