基于LLM与量化分析的股票智能分析系统daily_stock_analysis
这次我们来看一个基于AI大模型的股票智能分析系统——daily_stock_analysis。这个开源项目由ZhuLinsen开发,专注于用数据驱动的方式分析A股、港股、美股等多市场股票,而不是依赖主观感觉。
项目最核心的价值在于将LLM(大语言模型)与量化分析结合,提供每日自动化的股票分析报告。支持零成本部署,可以通过GitHub Actions实现完全免费的定时运行,也支持本地Docker部署和Web界面操作。
1. 核心能力速览
| 能力项 | 具体说明 |
|---|---|
| 支持市场 | A股、港股、美股、日股、韩股、台股和ETF |
| AI模型支持 | Anspire、AIHubMix、Gemini、OpenAI兼容、DeepSeek、通义千问、Claude、Ollama本地模型等 |
| 数据来源 | TickFlow、AkShare、Tushare、Pytdx、Baostock、YFinance、Longbridge等多源行情数据 |
| 新闻搜索 | Anspire、SerpAPI、Tavily、Bocha、Brave、MiniMax、SearXNG等 |
| 部署方式 | GitHub Actions(零成本)、本地运行、Docker部署 |
| 推送渠道 | 企业微信、飞书、Telegram、Discord、Slack、邮箱 |
| 硬件要求 | 云端部署无硬件要求,本地部署依赖Python环境 |
| 核心功能 | AI决策报告、多市场数据聚合、Web工作台、Agent策略问股、自动化推送 |
2. 适用场景与使用边界
这个系统特别适合需要定期跟踪多只股票的投资者。如果你每天要手动查看十几只甚至几十只股票的行情、新闻和技术指标,这个工具可以大幅提升效率。
适合场景:
- 个人投资者管理自选股组合
- 量化交易爱好者进行策略验证
- 金融从业者需要快速获取市场洞察
- 想要从主观判断转向数据驱动决策的用户
使用边界:
- 不提供具体的买卖建议,所有分析结果仅供参考
- 数据源稳定性受上游接口影响,免费源可能存在限流
- 需要基本的配置能力,非完全一键式解决方案
- 分析结果依赖AI模型的准确性和数据质量
重要提醒:本项目仅供学习和研究使用,不构成任何投资建议。股市有风险,投资需谨慎。
3. 环境准备与前置条件
根据不同的部署方式,环境要求有所不同:
3.1 GitHub Actions部署(推荐新手)
- GitHub账号
- 基本的Git操作知识
- 至少一个AI模型的API Key(如Anspire、AIHubMix等)
- 至少一个消息推送渠道的配置
3.2 本地部署
- Python 3.8+
- 4GB以上内存
- 稳定的网络连接
- 可选:CUDA环境(如果使用本地AI模型)
3.3 Docker部署
- Docker环境
- Docker Compose(可选)
- 足够的磁盘空间存储模型和数据
4. 安装部署与启动方式
4.1 GitHub Actions部署(零成本方案)
这是最推荐的部署方式,完全免费且无需服务器:
# 1. Fork项目到自己的GitHub账户 # 访问:https://github.com/ZhuLinsen/daily_stock_analysis # 点击右上角Fork按钮 # 2. 配置Secrets # 进入Fork后的仓库 → Settings → Secrets and variables → Actions # 点击New repository secret添加以下配置:需要配置的关键参数:
AI模型配置(至少一个):
ANSPIRE_API_KEYS: Anspire API Key(推荐,同时支持模型和搜索)AIHUBMIX_KEY: AIHubMix API KeyGEMINI_API_KEY: Google Gemini API KeyOPENAI_API_KEY: OpenAI兼容API Key
自选股配置(必填):
STOCK_LIST: 股票代码,如600519,hk00700,AAPL,7203.T,005930.KS,2330.TW
通知渠道配置(至少一个):
WECHAT_WEBHOOK_URL: 企业微信机器人FEISHU_WEBHOOK_URL: 飞书机器人EMAIL_SENDER+EMAIL_PASSWORD: 邮件推送
# 3. 启用Actions # Actions标签 → I understand my workflows, go ahead and enable them # 4. 手动测试 # Actions → 每日股票分析 → Run workflow → Run workflow4.2 本地部署
适合需要定制化功能或本地数据处理的用户:
# 克隆项目 git clone https://github.com/ZhuLinsen/daily_stock_analysis.git cd daily_stock_analysis # 安装依赖 pip install -r requirements.txt # 配置环境变量 cp .env.example .env # 编辑.env文件,配置API密钥等参数 # 运行分析 python main.py常用运行命令:
# 调试模式 python main.py --debug # 干跑测试(不实际发送通知) python main.py --dry-run # 指定股票分析 python main.py --stocks 600519,hk00700,AAPL,2330.TW # 启动Web界面 python main.py --webui4.3 Docker部署
适合希望环境隔离的用户:
# 使用Docker Compose(推荐) docker-compose up -d # 或者直接使用Docker docker run -d --name stock-analysis \ -v $(pwd)/config:/app/config \ -p 8000:8000 \ zhulinsen/daily_stock_analysis:latest5. 功能测试与效果验证
部署完成后,需要验证系统是否正常工作。以下是完整的测试流程:
5.1 基础功能测试
测试目的:验证核心分析功能是否正常操作步骤:
- 配置最少3只不同市场的股票(如A股、港股、美股各一只)
- 运行分析命令:
python main.py --stocks 600519,hk00700,AAPL - 观察日志输出,确认数据获取和分析过程正常
预期结果:
- 成功获取股票行情数据
- AI模型生成分析报告
- 报告包含评分、趋势判断、风险提示等要素
成功标准:
- 无错误日志
- 生成完整的分析报告
- 报告内容结构清晰,包含具体数据支撑
5.2 Web界面测试
测试目的:验证Web工作台功能完整性操作步骤:
# 启动Web界面 python main.py --webui-only # 访问 http://127.0.0.1:8000功能验证清单:
- [ ] 配置管理页面可正常访问
- [ ] 股票代码输入和补全功能正常
- [ ] 历史报告页面可查看过往分析
- [ ] Agent问股功能可交互
- [ ] 主题切换(浅色/深色)正常
5.3 推送功能测试
测试目的:验证消息推送渠道配置正确操作步骤:
- 配置至少一个推送渠道(推荐先测试邮件)
- 运行分析命令
- 检查是否收到推送消息
邮件推送验证要点:
- 邮件主题包含日期和股票数量
- 正文包含决策仪表盘摘要
- 格式正确,无乱码
- 链接可正常访问
5.4 Agent策略问股测试
测试目的:验证智能问答功能操作步骤:
- 访问Web界面的/chat页面
- 输入问题如"贵州茅台当前技术面如何?"
- 观察AI回复的准确性和完整性
验证标准:
- 回复包含具体数据引用
- 分析逻辑清晰
- 支持多轮对话
- 可调用实时行情和技术指标
6. 接口API与批量任务
项目提供完整的API接口,支持程序化调用和批量任务处理。
6.1 API服务启动
# 启动API服务 python server.py # 或者使用FastAPI方式 uvicorn api.main:app --host 0.0.0.0 --port 80006.2 基础API调用示例
获取股票分析报告:
import requests import json url = "http://127.0.0.1:8000/api/analyze" payload = { "stocks": ["600519", "hk00700"], "include_news": True, "include_technical": True } headers = { "Content-Type": "application/json", "Authorization": "Bearer your_api_key" } response = requests.post(url, json=payload, headers=headers, timeout=120) result = response.json() print(f"分析完成,共处理 {len(result['reports'])} 只股票") for report in result['reports']: print(f"{report['symbol']}: 评分{report['score']}, 趋势{report['trend']}")批量任务处理:
# 批量分析股票列表 def batch_analyze_stocks(stock_list, batch_size=5): results = [] for i in range(0, len(stock_list), batch_size): batch = stock_list[i:i+batch_size] try: response = requests.post(url, json={"stocks": batch}, timeout=180) results.extend(response.json()['reports']) print(f"已完成批次 {i//batch_size + 1}") except Exception as e: print(f"批次 {i//batch_size + 1} 处理失败: {e}") return results # 使用示例 all_stocks = ["600519", "000858", "hk00700", "AAPL", "7203.T"] analysis_results = batch_analyze_stocks(all_stocks)6.3 定时任务配置
使用GitHub Actions的定时任务:
# 在.github/workflows/daily-analysis.yml中配置 on: schedule: # 每个工作日18点(北京时间)运行 - cron: '0 10 * * 1-5' workflow_dispatch: # 允许手动触发本地crontab配置:
# 编辑crontab crontab -e # 添加以下行(工作日18点运行) 0 18 * * 1-5 cd /path/to/daily_stock_analysis && python main.py7. 资源占用与性能观察
7.1 GitHub Actions资源使用
在GitHub Actions环境下运行,主要资源限制:
- 运行时间:最长6小时
- 内存:7GB RAM
- 存储:14GB SSD
性能优化建议:
- 控制单次分析的股票数量(建议不超过20只)
- 合理配置数据源优先级,避免频繁切换
- 使用缓存减少重复数据请求
7.2 本地部署资源占用
内存占用观察:
# 监控Python进程内存使用 ps aux | grep python | grep main.py # 或者使用htop实时监控 htop典型资源占用:
- 基础运行:200-500MB内存
- 全功能分析:1-2GB内存(依赖数据量)
- 数据库缓存:随时间增长,建议定期清理
7.3 网络资源优化
数据源访问策略:
- 优先使用本地缓存数据
- 设置合理的请求超时时间
- 配置多个数据源fallback机制
- 避免交易时间段的高频请求
8. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| Actions运行失败 | Secrets配置错误 | 检查Actions日志 | 重新配置API Key和参数 |
| 股票数据获取失败 | 数据源接口变动 | 查看具体错误信息 | 切换备用数据源或更新依赖 |
| AI分析超时 | 模型API响应慢 | 检查网络连接和API限额 | 增加超时时间或更换模型 |
| 推送消息未收到 | 渠道配置错误 | 测试推送渠道单独功能 | 检查Webhook URL或邮件配置 |
| Web界面无法访问 | 端口被占用 | 检查端口占用情况 | 更换端口或关闭冲突程序 |
| 依赖安装失败 | 网络问题或版本冲突 | 查看pip错误信息 | 使用国内镜像源或调整版本 |
8.1 详细排查步骤
API密钥配置问题:
# 测试API密钥有效性 python -c " import os from src.llm.providers.anspire import AnspireProvider provider = AnspireProvider(api_key=os.getenv('ANSPIRE_API_KEYS')) print('API密钥测试:', provider.test_connection()) "数据源连接测试:
# 测试AkShare数据源 python -c " import akshare as ak try: data = ak.stock_zh_a_spot_em() print(f'A股实时数据获取成功,共{len(data)}只股票') except Exception as e: print(f'数据获取失败: {e}') "9. 最佳实践与使用建议
9.1 配置优化建议
AI模型选择策略:
- 新手推荐使用Anspire或AIHubMix,一Key多模型
- 需要高质量分析时使用Claude或GPT-4
- 本地部署推荐Ollama+开源模型
数据源配置优先级:
# 推荐的数据源fallback顺序 DATA_SOURCE_PRIORITY = { 'A股': ['tushare', 'akshare', 'baostock'], '港股': ['longbridge', 'akshare'], '美股': ['yfinance', 'longbridge'] }9.2 股票组合管理
自选股配置技巧:
- 按行业分散配置,避免过度集中
- 包含不同市值的股票(大盘、中盘、小盘)
- 定期审查和更新股票列表
- 设置合理的分析频率(避免过度分析)
示例股票组合:
# 均衡型组合示例 600519,000858,601318, # 消费+金融 hk00700,hk00941, # 科技港股 AAPL,MSFT, # 美股科技 7203.T,005930.KS # 日韩市场9.3 风险控制设置
分析参数调整:
# 在配置文件中调整风险参数 RISK_CONFIG = { 'max_stocks_per_run': 20, # 单次分析最大股票数 'timeout_per_stock': 300, # 单股票分析超时时间 'fallback_enabled': True, # 启用降级方案 'data_quality_check': True # 数据质量检查 }10. 进阶功能与扩展应用
10.1 自定义分析策略
项目支持自定义分析策略,可以基于技术指标、基本面数据或市场情绪创建个性化分析逻辑:
# 自定义策略示例 from src.strategies.base import BaseStrategy class CustomTechnicalStrategy(BaseStrategy): def analyze(self, stock_data): # 实现自定义分析逻辑 if stock_data['rsi'] < 30 and stock_data['volume'] > stock_data['avg_volume']: return {'action': 'BUY', 'confidence': 0.8} return {'action': 'HOLD', 'confidence': 0.5}10.2 与其它系统集成
与量化平台集成:
# 将分析结果导入量化平台 def export_to_quant_platform(analysis_results): for stock in analysis_results: # 生成量化信号 signal = { 'symbol': stock['symbol'], 'action': stock['recommendation'], 'score': stock['score'], 'timestamp': datetime.now().isoformat() } # 发送到量化交易系统 # ...数据导出与分析:
# 导出历史分析数据用于进一步研究 import pandas as pd from src.utils.history import get_analysis_history history_data = get_analysis_history(days=30) df = pd.DataFrame(history_data) df.to_csv('stock_analysis_history.csv', index=False)这个股票分析系统最大的优势在于将复杂的多维度分析自动化,让投资者能够基于数据而不是感觉做出决策。无论是个人投资者还是专业机构,都能通过这个系统提升投资决策的效率和科学性。
建议初次使用者先从GitHub Actions部署开始,配置3-5只熟悉的股票进行测试,熟悉系统工作流程后再逐步扩展股票数量和功能模块。系统的模块化设计也便于根据实际需求进行功能裁剪和定制开发。
