cat README.md
daily_stock_analysis
LLM 做股票分析不该预测涨跌,该帮你把混乱变成可执行的判断。45K Star、41K Fork——Fork 数几乎等于 Star 数,这是 GitHub 上罕见的"不是来学习的,是来用的"信号。
// 目录
// 概览
每天收盘后那半小时
我做股票分析有个痛点,说出来可能很多人有共鸣:收盘后打开三个 App 看行情,两个网站翻新闻,一个软件查资金流,再切到公众号读分析师观点——半小时过去,脑子里全是碎片,没一条能直接告诉我「明天该怎么操作」。
这不是懒,是结构化能力的问题。所有信息都在那儿,但它们散在不同的数据源、不同的格式、不同的时间维度里。人脑处理碎片信息的上限大概是 7 条,可你面对的是 30 条新闻 + 5 张 K 线 + 3 个技术指标 + 2 份公告。最后你做的决策,多半是凭直觉,而不是凭逻辑。
LLM 在这个场景能干什么?不是预测涨跌——这事儿它干不了,也不该干。它该干的是把 30 条碎片信息压缩成一个结构化的判断框架:这只股票现在是看多还是看空?依据是什么?风险在哪?催化因素是什么?操作清单是什么?
我拆完 daily_stock_analysis 之后才意识到,它做的事情跟我每天手动干的活儿一模一样——只不过它把「半小时碎片浏览」压缩成了「一份带评分、带依据、带操作建议的决策报告」,而且这个过程可以是全自动的。
先给判断:LLM 做股票分析的核心价值不是预测
我看了太多「AI 选股」「AI 预测涨跌」的项目,它们的问题都一样:把 LLM 当预言家用。模型没有明天股价的信息,预测涨跌本质上是在猜。但 daily_stock_analysis 的设计哲学不一样——它让 LLM 做的是「信息聚合 + 结构化推理」:从 7 个数据源拉行情、K 线、资金流、新闻、公告、筹码分布、基本面,然后压缩成一份决策报告。
关键差异:输出不是「这只股票明天涨」,而是「这只股票评分 65,看多,风险是主力净卖出 3.63 亿,催化因素是扣非净利润暴涨 407%,操作建议:观望,等筹码集中度降到 30% 以下再考虑入场」。决策框架,不是预言。
还有一个让我服气的设计:零成本运行。你 Fork 仓库 → 配几个 Secret → 开 GitHub Actions,每个工作日 18:00 自动跑,推送结果到企业微信/飞书/Telegram/Discord/Slack/邮件。一分钱不花。Fork 数 41K 跟 Star 数 45K 几乎持平——这个信号非常明确:用户不是来 Star 收藏的,是来 Fork 运行的。
它到底做了什么
先把数据面铺开:
市场覆盖:A股(沪深/北交所)、港股、美股、ETF,还有日股和韩股(v3.19 新增)。6 个市场全覆盖。
数据源:7 个行情数据源(TickFlow/AkShare/Tushare/Pytdx/Baostock/YFinance/Longbridge),7 个新闻搜索源(Anspire/SerpAPI/Tavily/Bocha/Brave/MiniMax/SearXNG),外加 Stock Sentiment API 拉社交舆情。
分析策略:15 种内置策略——均线、缠论、波浪、趋势、热点、事件、成长、预期、资金流、筹码、技术指标组合、综合……每种策略对应不同的分析维度和推理框架。你可以在 Web 工作台里用 Agent 问股,多轮追问深挖。
输出格式:决策仪表盘 + 完整 Markdown 报告。仪表盘给结论(评分 / 买卖信号 / 风险警报 / 催化因素 / 操作清单),Markdown 报告给推理过程。你可以只看仪表盘做快速决策,也可以翻报告验证逻辑。
推送渠道:6 种——企业微信、飞书、Telegram、Discord、Slack、邮件。基本上你日常用的通讯工具都能推。
部署方式:4 种——GitHub Actions(零成本推荐)、Docker、本地定时任务、FastAPI 服务。其中 GitHub Actions 那条路径是真的零成本,Fork 仓库就能跑。
代码示例跑一遍:
Web 工作台功能很全:手动分析、任务监控、历史报告、Agent 问股、回测、持仓管理、智能导入(图片/CSV/Excel/剪贴板)、浅色/深色主题。基本上你能想到的日常分析需求都塞进去了。
架构拆解
daily_stock_analysis 的架构是个典型的「数据聚合 → LLM 推理 → 结构化输出 → 多渠道推送」四层管道。它的核心不是 LLM有多强,而是数据源适配层做得厚——7 个行情源 + 7 个新闻源 + 舆情 API,每个都有 fallback。行情数据挂了换下一个,新闻源限流了换 SearXNG 自建实例。
策略层也很讲究:15 种策略不是 15 个 prompt,而是 15 个独立的推理框架,每种策略有自己的数据权重、分析维度和输出模板。均线策略看技术指标多,事件策略看新闻催化多,缠论策略看 K 线结构多。Agent 问股的「多轮追问」本质上是在不同策略之间切换视角,从不同维度验证同一个判断。
有一个细节让我觉得作者真的在用:AlphaSift(多因子选股扫描)和 AlphaEvo(策略回测进化)是同一作者的另外两个项目,三个项目形成「选股 → 分析 → 回测验证」闭环。这不是一个 demo 项目,是一整套投资决策工具链的前端入口。
// 架构
// 竞品对比
| 项目 | 定位 | 优势 | 劣势 |
|---|---|---|---|
| daily_stock_analysis | LLM 驱动多市场分析 零成本全自动 |
7 行情源 + 7 新闻源 fallback 15 策略多维度 GitHub Actions 零成本 6 渠道推送 Fork 即用 |
不预测涨跌 策略偏模板化 依赖 LLM 质量 日韩股高阶功能降级 |
| TradingAgents | Multi-Agent 对冲基金 模拟(UCLA 论文) |
四维分析师并行 多空辩论机制 LangGraph 检查点 学术严谨 |
研究原型非生产就绪 每次决策多轮 API 费用高 Alpha Vantage 限速 无推送/无 Web UI |
| FinRL | 深度强化学习 量化交易框架 |
DRL 学术前沿 多环境支持 论文支撑 |
需训练数据和时间 上手门槛高 无实时新闻 无推送 |
| Qlib | 微软量化投资 平台 |
生产级基础设施 Alpha 360 因子 模型丰富 |
面向机构非散户 无 LLM 集成 无新闻/舆情 学习曲线陡 |
| AKShare | 开源金融数据 接口库 |
数据源覆盖广 社区活跃 纯数据层 |
仅数据无分析 无 LLM 无报告生成 无推送 |
定位差异很清晰:daily_stock_analysis 是「散户的 AI 分析助手」,TradingAgents 是「研究者的对冲基金模拟器」,FinRL 是「量化策略训练框架」,Qlib 是「机构量化平台」,AKShare 是「纯数据源」。五个项目互补不冲突,但 daily_stock_analysis 是唯一面向散户且真正能零成本跑起来的。
// 数据
跟我做的事有什么关系
我每天跑 GitHub AI 项目评测自动化,本质上也是一条「数据聚合 → LLM 推理 → 结构化输出 → 多渠道推送」的管道。daily_stock_analysis 的架构跟我这条管道几乎同构:7 个数据源对我的 WebFetch + WebSearch,15 个策略对我的 skill 选择,6 个推送渠道对我的 Obsidian 同步 + 文件保存。
最大的启发是它的数据源 fallback 设计。我目前用的是单一 WebFetch,如果目标网站挂了或格式变了,整条管道就断了。daily_stock_analysis 的 7 源 + 7 新闻 + SearXNG 兜底,让我开始想:我该不应该也在评测管道里加 fallback 层?至少 GitHub API + WebFetch + gh CLI 三条路应该互为备份。
另一个启发是 Fork/Star 比值这个信号。41K Fork / 45K Star = 0.92。在我的评测历史里,这个比值一般是 0.05-0.15。比值超过 0.5 的项目,意味着用户是来用的,不是来收藏的。这应该是我在评测项目时加的一个新维度——不只看 Star 数量,看 Star 和 Fork 的比例,比值高的项目实用性更强。
最后是 AlphaSift + AlphaEvo 的闭环设计。选股 → 分析 → 回测验证,跟我「调研 → 评测 → 去AI味重写」的三步流程异曲同工。作者不是做了一个单点工具,是做了一个决策链的入口。这种闭环思维,我应该在评测流程中也落地——评测不只是写文章,应该是「调研 → 评测 → 实战验证 → 迭代优化」的闭环。
// verdict
✅ 7 行情源 + 7 新闻源 + fallback(数据层厚度碾压竞品)
✅ Fork/Star 0.92 实用信号极强
✅ 15 策略多维度推理(不是单一 prompt)
✅ 6 渠道推送覆盖主流通讯工具
✅ MIT 许可证 + 纯 Python + 零 GPU
✅ AlphaSift + AlphaEvo 闭环生态
✅ 5 个月 45K Star 增速惊人
❌ 策略偏模板化,创意叙事场景弱
❌ 不预测涨跌(但这本来就是设计哲学,不是 bug)
❌ 日韩股高阶功能降级(K 线/资金流/筹码缺)
❌ Bus Factor ≈ 2(主力作者 ZhuLinsen 占 45% commits)
❌ 免费数据源限速/不稳定(AkShare/Tushare 免费版都有上限)