项目快照: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

daily_stock_analysis 从代码、运行环境到实践流程的项目封面
daily_stock_analysis 的项目能力与实践流程示意。

项目速览(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 和环境变量模板可以确认,系统至少包含配置层、数据源层、分析层、报告层和输出层。仓库资料没有提供完整架构图或模块目录,因此下面的分层是根据已公开功能和配置项作出的结构化说明,并不等同于源码中的精确包名。

  1. 配置层:读取 .env 中的自选股、模型 Key、数据源 token、选股开关、超时和缓存目录等参数。
  2. 数据源层:按照市场和字段调用行情、K 线、技术指标、新闻、公告、基本面或舆情服务;多个来源可用于 fallback,但具体规则要以完整配置指南为准。
  3. 分析层:将结构化数据和检索结果组织为模型输入,执行单股分析、策略问股或选股重排。LLM_TIMEOUT_SECLLM_MAX_TOKENS 会影响模型请求边界。
  4. 报告层:生成包含结论、趋势、风险、催化因素、点位和检查清单的 Markdown 或仪表盘内容,并保存历史结果。
  5. 输出层:通过 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 入口命令。

最小准备步骤:安装、配置、运行、验证

Bash
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。

Bash
# 编辑 .env 后,仅在本地受控环境中检查关键配置是否已写入
grep -E '^(STOCK_LIST|ANSPIRE_API_KEYS|AIHUBMIX_KEY|GEMINI_API_KEY|OPENAI_API_KEY)=' .env

验证命令只显示配置项名称和等号后的内容,若终端会被记录,不建议在真实凭据环境中执行;更安全的做法是使用编辑器直接检查,并避免复制包含密钥的终端输出。项目实际启动命令、模块入口和工作流名称未在给定资料中出现,官方仓库未提供该信息,建议以最新 README 为准。

GitHub Actions 运行路径

  1. 在仓库页面选择 Fork,创建自己的仓库副本。
  2. 进入 Settings → Secrets and variables → Actions → New repository secret
  3. 至少选择一个模型服务并填写其 Key,至少配置一个通知渠道,具体渠道字段以完整 README 为准。
  4. 按照仓库已有 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_HOSTFUTU_OPEND_PORTFUTU_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_KEYOPENAI_BASE_URLOPENAI_MODEL;Anspire 还可通过 ANSPIRE_LLM_BASE_URLANSPIRE_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_KEYSAIHUBMIX_KEYGEMINI_API_KEYOPENAI_API_KEY。如果使用 OpenAI 兼容服务,还要核对 OPENAI_BASE_URLOPENAI_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、文档目录和许可证文件。