项目快照:ZhuLinsen/daily_stock_analysis,约 65,295 个 Star,54,628 个 Fork;最新推送时间 2026-09-19T15:09:08Z。本文基于仓库公开资料撰写。
项目地址:https://github.com/ZhuLinsen/daily_stock_analysis · https://dsa.zhulinsen.tech

项目速览(TL;DR)
daily_stock_analysis 是一个使用 Python 编写的多市场股票智能分析系统,核心流程包括行情与新闻数据获取、人工智能(Artificial Intelligence,AI)模型分析、报告生成以及消息推送。项目面向 A 股、港股、美股、日股、韩股、台股和交易所交易基金(Exchange Traded Fund,ETF)等场景,支持通过 GitHub Actions、Docker、本地定时任务或 FastAPI 服务运行。
仓库元信息显示,项目采用 MIT 许可证,默认分支为 main,语言为 Python,公开信息中的 Star 数为 65295、Fork 数为 54628。README 将它定位为“每日自动分析并推送决策仪表盘”的工具,但报告内容属于数据与模型处理结果,不构成投资建议,也不应替代用户对数据质量、交易规则和风险承受能力的判断。
基于 AI 大模型的 A股/港股/美股/日股/韩股/台股自选股智能分析系统,每日自动分析并推送「决策仪表盘」到企业微信/飞书/Telegram/Discord/Slack/邮箱。
来源:README
定位与目标用户
该项目的主要价值在于把多市场数据采集、新闻检索、模型分析和通知分发组合成一个可定时执行的流程。用户可以维护自选股列表,也可以通过 Web 工作台、Bot 或 API 发起手动分析和多轮问股。
适合使用的信号
- 需要同时跟踪 A 股、港股、美股或其他 README 已列出的市场,并希望把行情、新闻和分析报告放在同一流程中。
- 已经使用 GitHub Actions、Docker、Python 或 FastAPI,希望采用仓库提供的自动化部署方向,而不是从零实现定时任务和消息推送。
- 能够申请至少一个模型服务或配置本地 Ollama,并愿意自行维护 API Key、数据源权限和通知渠道。
- 希望保存历史报告、查看任务进度、管理持仓或使用技术策略进行问股,而不是只调用单一行情接口。
不适合使用的信号
- 要求系统提供保证收益、自动替用户下单或替代持牌投资顾问服务;资料中没有这些能力或承诺。
- 需要严格的商业服务等级协议(Service Level Agreement,SLA)、固定数据延迟、明确的实时行情覆盖或可审计的模型输出;仓库资料未提供相应保证。
- 无法接受第三方模型、搜索服务或行情服务接收请求数据,且没有条件部署本地模型和自有数据源。
- 需要高并发、多租户权限体系或大规模生产数据管道,但没有为数据源限流、任务隔离和凭据管理进行二次开发。
核心功能
功能可以按“数据输入—分析处理—结果呈现—通知输出”四个环节理解。每项能力依赖的组件不同,免费数据源、模型服务和通知渠道的实际可用性也会受到上游权限、限流和网络环境影响。
AI 决策报告
系统将股票行情、K 线、技术指标、新闻、公告、基本面及报告辅助数据交给模型处理,输出核心结论、评分、趋势、买卖点位、风险警报、催化因素和操作检查清单。输入通常来自自选股列表或用户发起的分析请求,输出可在 Web 工作台查看,也可以经配置后发送到通知渠道。
“评分”属于项目报告中的分析字段,并不是对证券、发行人或投资方案的监管评级。模型服务至少需要配置一个来源,例如 Anspire、AIHubMix、Gemini、OpenAI 兼容服务、DeepSeek、通义千问、Claude 或 Ollama;资料没有给出所有模型的统一接口细节,因此具体模型名、网关和权限应以服务商配置为准。
多市场数据聚合
README 列出的数据能力包括行情、K 线、技术指标、新闻、公告、基本面和报告辅助数据。系统内置或可选接入 AkShare、Baostock、YFinance、Tushare、Pytdx、TickFlow 和 Longbridge 等数据源,并根据市场和字段选择相应来源。
免费源可在不填写 token 的情况下运行,但 README 明确指出其会受到上游限流、接口变动和网络波动影响。对于长期定时、批量分析或更稳定的行情获取,应根据市场覆盖和权限配置 TickFlow、Tushare 或 Longbridge;具体优先级和 fallback 规则以仓库的市场支持边界和完整配置指南为准。
新闻搜索与社交舆情
新闻检索可以使用 Anspire、SerpAPI、Tavily、Bocha、Brave、MiniMax 或 SearXNG。美股场景还可以选用 Stock Sentiment API 获取 Reddit、X 和 Polymarket 相关舆情;README 标明该社交舆情能力仅用于美股,且为可选能力。
新闻不是模型结论的独立保证。检索结果的完整性、时间范围、语言、站点可访问性和服务商额度都会影响输入,因此在排查报告差异时,应同时检查新闻服务配置、数据源日志和模型请求是否成功。
Web/桌面工作台与 Agent 策略问股
工作台提供手动分析、任务进度、历史报告、完整 Markdown、回测、持仓、配置管理以及浅色和深色主题。Agent 策略问股支持多轮追问,并列出均线、缠论、波浪、趋势、热点、事件、成长、预期等 15 种内置策略,覆盖 Web、Bot 和 API 入口。
这类交互的输入是用户问题、股票标识或策略选择,输出是模型结合可用数据生成的回答或报告。资料没有给出 Web 端口、API 路由、鉴权方式和部署命令,不能据此补写固定 URL 或接口签名。
智能导入、持仓和自动推送
智能导入支持图片、CSV、Excel 和剪贴板,股票标识支持代码、名称、拼音和别名补全。持仓导入部分可通过 Futu OpenD 读取 ACTIVE REAL NORMAL/MASTER 账户中的沪深 A 股、港股和美股 LONG 正股持仓;该行为受账户状态、OpenD 连接和相关配置约束。
自动化运行方向包括 GitHub Actions、Docker 和本地定时任务,推送渠道包括企业微信、飞书、Telegram、Discord、Slack 和邮箱。每个渠道都需要单独配置凭据或 webhook 等信息;资料截取部分没有提供完整通知字段表,因此不虚构字段名。
系统架构与关键模块
从 README 和环境变量模板可以确认,系统至少包含配置层、数据源层、分析层、报告层和输出层。仓库资料没有提供完整架构图或模块目录,因此下面的分层是根据已公开功能和配置项作出的结构化说明,并不等同于源码中的精确包名。
- 配置层:读取
.env中的自选股、模型 Key、数据源 token、选股开关、超时和缓存目录等参数。 - 数据源层:按照市场和字段调用行情、K 线、技术指标、新闻、公告、基本面或舆情服务;多个来源可用于 fallback,但具体规则要以完整配置指南为准。
- 分析层:将结构化数据和检索结果组织为模型输入,执行单股分析、策略问股或选股重排。
LLM_TIMEOUT_SEC和LLM_MAX_TOKENS会影响模型请求边界。 - 报告层:生成包含结论、趋势、风险、催化因素、点位和检查清单的 Markdown 或仪表盘内容,并保存历史结果。
- 输出层:通过 Web、Bot、API 或企业微信、飞书、Telegram、Discord、Slack、邮箱发送结果。
选股配置还显示了全市场快照、日线历史、行业/概念 provider 缓存和 last-good 快照机制。根据环境变量注释,重复选股可以在 5 分钟内复用最近一次成功的全市场快照;这是一项缓存策略,不代表行情实时性承诺。
依赖与运行环境
README 的徽章声明项目支持 Python 3.10+,并列出 GitHub Actions Ready 和 Docker Ready。pyproject.toml 还配置了 Black、isort 和 Bandit 的代码质量工具,其中格式化目标版本包含 Python 3.10、3.11 和 3.12。
依赖可按功能划分为模型服务、行情服务、新闻搜索服务、可选的社交舆情服务,以及运行载体。项目默认内置 AkShare、Baostock 和 YFinance 等免费行情源,但这不等于所有市场、字段和运行环境都无需配置;权限型数据源仍需 token 或其他凭据。
仓库资料没有提供完整的依赖锁定文件、最低 Docker 镜像版本、操作系统矩阵或资源需求。部署前应以当前分支的 README、文档目录和实际构建结果为准。
快速开始
资料明确推荐 GitHub Actions 作为无需服务器的部署方式:Fork 仓库后,在仓库设置中添加 Secrets,再使用项目已有的工作流。下面的本地步骤只完成仓库准备和环境变量初始化,不虚构未在资料中给出的 Python 入口命令。
最小准备步骤:安装、配置、运行、验证
git clone https://github.com/ZhuLinsen/daily_stock_analysis.git
cd daily_stock_analysis
cp .env.example .env
python --version上面的命令完成仓库获取、进入项目目录、复制环境变量模板和运行环境检查。README 要求 Python 3.10+;命令输出应符合该要求。.env 只应保存在本机受控位置,不要把真实 API Key 提交到 Git。
# 编辑 .env 后,仅在本地受控环境中检查关键配置是否已写入
grep -E '^(STOCK_LIST|ANSPIRE_API_KEYS|AIHUBMIX_KEY|GEMINI_API_KEY|OPENAI_API_KEY)=' .env验证命令只显示配置项名称和等号后的内容,若终端会被记录,不建议在真实凭据环境中执行;更安全的做法是使用编辑器直接检查,并避免复制包含密钥的终端输出。项目实际启动命令、模块入口和工作流名称未在给定资料中出现,官方仓库未提供该信息,建议以最新 README 为准。
GitHub Actions 运行路径
- 在仓库页面选择 Fork,创建自己的仓库副本。
- 进入
Settings → Secrets and variables → Actions → New repository secret。 - 至少选择一个模型服务并填写其 Key,至少配置一个通知渠道,具体渠道字段以完整 README 为准。
- 按照仓库已有 Actions 工作流触发运行,并在 Actions 页面查看任务结果;工作流名称、定时表达式和日志字段未在资料截取中给出。
配置说明
配置文件模板是理解项目运行边界的主要依据。下表只列出资料中明确出现的字段;“默认值”使用模板中给出的值,空值表示模板要求用户自行填写或未配置。
| 字段名 | 类型 | 默认值 | 作用 |
|---|---|---|---|
STOCK_LIST |
逗号分隔字符串 | 600519,300750,002594 |
自选股列表;模板注释说明支持沪深两市代码。 |
ANSPIRE_API_KEYS |
逗号分隔字符串 | 空 | Anspire Open API Keys;模板说明支持多个 Key。 |
SCREENING_ENABLED |
布尔值 | false |
是否启用选股能力。 |
LLM_TIMEOUT_SEC |
整数 | 60 |
单次模型请求超时秒数,选股会复用该配置。 |
LLM_MAX_TOKENS |
整数 | 2048 |
选股模型重排请求的输出上限。 |
SCREENING_SNAPSHOT_CACHE_TTL_SEC |
整数 | 300 |
全市场快照缓存时长;模板说明设为 0 可关闭。 |
INDUSTRY_PROVIDER |
字符串 | none |
行业/概念 provider;模板说明开启 akshare 后可提供更多板块信息。 |
TUSHARE_TOKEN |
字符串 | 空 | Tushare Pro token,可用于数据源接入。 |
TICKFLOW_API_KEY |
字符串 | 空 | TickFlow API Key,用于 A 股日 K、实时行情、股票列表/名称和大盘复盘增强。 |
SCREENING_DATA_DIR |
路径字符串 | data/screening |
选股相关数据目录。 |
配置多个模型或数据源时,应同时核对服务商的权限和项目文档中的优先级。模板特别提示,非官方 Tushare 接入地址会使 token 和全部请求内容经过第三方服务器,使用前需要自行评估数据安全风险。
进阶用法
进阶配置的重点不是增加字段数量,而是明确每类数据的职责和失败处理。使用者可以从选股、持仓导入、多模型路由和缓存控制四个方向扩展。
选股与缓存
启用 SCREENING_ENABLED=true 后,可配置快照源优先级、热点调用超时、日线历史缓存和行业 provider。模板列出了 Tushare、Sina、Efinance、AkShare Eastmoney 和 Eastmoney datacenter 等快照来源,并说明是否配置 Tushare token 会影响运行时默认注入的优先级。
当第三方快照暂时失败时,last-good 快照和缓存目录可以减少重复请求,但缓存数据存在时间边界。对热点搜索,模板还规定了端到端等待上限和可终止子进程硬截止;这意味着不能把单次等待时间无限延长来解决所有上游问题。
Futu OpenD 持仓导入
需要持仓导入时,可以配置 FUTU_OPEND_HOST、FUTU_OPEND_PORT、FUTU_SECURITY_FIRM 和可选的 FUTU_ACC_ID。模板明确提示,Docker 连接宿主机 OpenD 时不能把容器内的 127.0.0.1 当作宿主机地址,且 futu-api 10.8 仅支持 IPv4。
该功能只读取模板注释中列出的账户状态、市场和多头正股范围。它不应被理解为交易执行接口;给定资料没有描述自动下单能力,不能据此扩展为交易机器人。
多模型与本地模型
GitHub Actions 场景适合云端 API,Ollama 更适合本地或 Docker 部署,这是 README 给出的使用建议。OpenAI 兼容服务需要同时考虑 OPENAI_API_KEY、OPENAI_BASE_URL 和 OPENAI_MODEL;Anspire 还可通过 ANSPIRE_LLM_BASE_URL 和 ANSPIRE_LLM_MODEL 覆盖示例网关与模型。
模型路由、图片识别和多模型组合需要参考仓库的 LLM 配置指南。资料没有给出不同模型的成本、延迟、上下文窗口或准确率对比,因此不对模型作性能排名。
可观测性与运维
项目提供的可观测信息主要来自 GitHub Actions 任务、Web 工作台中的任务进度与历史报告,以及数据源和模型请求的运行结果。Longbridge 配置还指出,其 SDK 日志写入 LOG_DIR/longbridge_sdk.log,因此排查该数据源时应检查日志目录和连接冷却配置。
- 任务层:确认 Actions 工作流是否启动、是否因 Secrets 缺失而失败,以及任务日志中的数据源或模型错误。
- 数据层:确认行情源权限、新闻搜索 Key、fallback 顺序和上游限流状态;免费源不提供稳定性保证。
- 模型层:检查模型 Key、Base URL、模型名称、
LLM_TIMEOUT_SEC和输出 token 上限。 - 缓存层:确认
data/screening或自定义目录具有读写权限,并判断报告是否使用了 last-good 快照。 - 通知层:将报告生成成功与消息发送成功分开验证,避免把推送失败误判为分析失败。
资料未提供指标系统、链路追踪、告警规则、日志保留周期或 SLA。需要长期运行时,应根据自身合规要求补充凭据轮换、失败重试、运行记录和人工复核机制。
安全与合规边界
该项目处理 API Key、市场数据、新闻检索请求和可选的持仓信息,安全重点是凭据保护、数据最小化和第三方服务边界。本文只讨论用户拥有授权的账户、数据和通知渠道,不提供未授权访问、绕过检测或获取他人数据的方法。
- 不要把
.env、Actions Secrets、OAuth token 缓存或通知 webhook 提交到公开仓库。 - 使用第三方模型、搜索服务和行情服务前,应确认其隐私条款、数据保留政策和地域要求。
- 持仓导入只应连接本人或组织明确授权的 Futu OpenD 账户,并限制容器、脚本和日志的访问权限。
- 报告中的新闻、指标和模型结论应保留来源核验环节,不把生成内容直接当成交易指令。
- 涉及个人信息、内部研究资料或未公开投资信息时,应在发送到企业微信、飞书、邮箱或其他第三方渠道前进行脱敏和权限审查。
项目资料没有给出金融牌照、投资顾问资质、隐私合规认证或数据授权保证。部署者需要根据所在地区的证券法规、组织制度和数据服务条款自行完成合规评估。
许可证与商用条款
仓库标注许可证为 MIT,README 也提供了 MIT License 徽章。MIT 许可证通常允许使用、复制、修改、合并、发布、分发、再许可和销售软件,但使用和再分发必须遵守仓库 LICENSE 文件中的具体版权声明、许可声明和免责声明要求。
如果将项目用于商业服务、内部系统或二次分发,应保留 LICENSE 规定的版权与许可文本,并核对第三方数据源、模型服务、新闻搜索服务和通知平台各自的商业条款。项目许可证不自动授予这些外部服务的使用权,也不替代数据授权或金融合规审查;具体法律义务以仓库 LICENSE 和相关服务条款为准。
局限性与已知限制
已知限制首先来自数据源。README 明确说明免费行情源会受到上游限流、接口变动和网络波动影响,长期定时或批量分析不应把免费源的可用性当作固定承诺。
- 不同市场的数据字段、覆盖范围和 fallback 规则并不完全相同,应查看市场支持边界文档。
- 模型输出质量依赖输入数据、新闻检索结果、模型本身和提示上下文;资料未提供准确率、召回率或投资收益 Benchmark。
- 项目支持自动推送,但资料未提供通知送达 SLA、重试次数、去重策略和消息保留周期。
- 资料未提供统一的 API 端口、完整接口签名、生产集群拓扑或并发上限。
- 资料未提供完整依赖清单、锁定版本、Docker 编排文件和系统资源基线。
- 报告中的点位、评分和操作检查清单不能证明未来价格走势,也不代表项目作者的投资建议。
对于仓库资料没有覆盖的操作系统、云平台、模型网关或通知供应商组合,官方仓库未提供该信息,建议以最新 README 和对应文档为准。
常见问题与排查(FAQ / Troubleshooting)
为什么本地复制了模板后仍然不能运行?
.env.example 只是配置模板,模型、通知和部分数据源的 Key 默认为空。先确认至少一个模型服务和至少一个通知渠道已经配置;实际本地启动入口未出现在给定资料中,官方仓库未提供该信息,不能使用未经确认的模块命令替代。
为什么免费行情源偶尔失败?
README 已说明免费源受上游限流、接口变动和网络波动影响。应查看任务日志,确认是否存在可用 fallback,并根据场景配置 TickFlow、Tushare 或 Longbridge;不要把一次成功运行理解为持续可用保证。
为什么选股结果没有行业或热点信息?
模板中 INDUSTRY_PROVIDER 默认值为 none,行业/概念 provider 默认关闭。需要更多板块信息时,应按文档启用相应 provider,并检查热点调用超时、快照源和缓存目录是否可用。
为什么 Actions 中模型调用失败?
先确认 Secret 名称与 README 中的名称完全一致,例如 ANSPIRE_API_KEYS、AIHUBMIX_KEY、GEMINI_API_KEY 或 OPENAI_API_KEY。如果使用 OpenAI 兼容服务,还要核对 OPENAI_BASE_URL 和 OPENAI_MODEL;不要在日志中打印真实 Key。
Docker 中为什么连接不到 Futu OpenD?
模板特别提示,容器内的 127.0.0.1 不是宿主机地址。应按照完整配置指南处理宿主机网络和 OpenD 地址,并注意 futu-api 10.8 仅支持 IPv4;资料没有提供特定平台的网络命令。
能否根据报告自动交易?
给定资料只描述分析、回测、持仓、策略问股和通知,没有提供自动下单接口或交易执行流程。不能据此推断系统具备自动交易能力;若进行任何外部扩展,应在授权的测试账户和隔离环境中单独设计权限、风控与审计。
适合的部署决策
部署方式应由运行频率、数据稳定性、凭据管理和交互需求决定,而不是只看是否能够启动。下面的判断基于仓库明确列出的运行方式和数据源边界;涉及组织规模和合规要求的部分属于根据本文作者的经验判断。
- 选择 GitHub Actions:需要每日或定时执行、没有常驻服务器,并能接受通过仓库 Secrets 管理云端 API Key。
- 选择 Docker 或本地部署:需要使用 Ollama、本地保存数据、接入 Futu OpenD,或希望控制运行环境和缓存目录。
- 增加 token 型数据源:需要更稳定的长期定时、批量分析或特定市场字段,而免费源的限流和波动已经影响任务完成率。
- 先保持最小配置:处于试用和验证阶段,只需要少量自选股、一个模型服务和一个通知渠道。
项目地址与资源
以下链接均来自仓库资料或 README 中列出的项目相关站点。部署前应优先查看仓库当前分支的 README、文档目录和许可证文件。



