基于LLM与量化分析的股票智能分析系统daily_stock_analysis

📅 2026/7/16 13:09:56 👁️ 阅读次数 📝 编程学习
基于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 Key
  • GEMINI_API_KEY: Google Gemini API Key
  • OPENAI_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 workflow

4.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 --webui

4.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:latest

5. 功能测试与效果验证

部署完成后,需要验证系统是否正常工作。以下是完整的测试流程:

5.1 基础功能测试

测试目的:验证核心分析功能是否正常操作步骤:

  1. 配置最少3只不同市场的股票(如A股、港股、美股各一只)
  2. 运行分析命令:python main.py --stocks 600519,hk00700,AAPL
  3. 观察日志输出,确认数据获取和分析过程正常

预期结果:

  • 成功获取股票行情数据
  • AI模型生成分析报告
  • 报告包含评分、趋势判断、风险提示等要素

成功标准:

  • 无错误日志
  • 生成完整的分析报告
  • 报告内容结构清晰,包含具体数据支撑

5.2 Web界面测试

测试目的:验证Web工作台功能完整性操作步骤:

# 启动Web界面 python main.py --webui-only # 访问 http://127.0.0.1:8000

功能验证清单:

  • [ ] 配置管理页面可正常访问
  • [ ] 股票代码输入和补全功能正常
  • [ ] 历史报告页面可查看过往分析
  • [ ] Agent问股功能可交互
  • [ ] 主题切换(浅色/深色)正常

5.3 推送功能测试

测试目的:验证消息推送渠道配置正确操作步骤:

  1. 配置至少一个推送渠道(推荐先测试邮件)
  2. 运行分析命令
  3. 检查是否收到推送消息

邮件推送验证要点:

  • 邮件主题包含日期和股票数量
  • 正文包含决策仪表盘摘要
  • 格式正确,无乱码
  • 链接可正常访问

5.4 Agent策略问股测试

测试目的:验证智能问答功能操作步骤:

  1. 访问Web界面的/chat页面
  2. 输入问题如"贵州茅台当前技术面如何?"
  3. 观察AI回复的准确性和完整性

验证标准:

  • 回复包含具体数据引用
  • 分析逻辑清晰
  • 支持多轮对话
  • 可调用实时行情和技术指标

6. 接口API与批量任务

项目提供完整的API接口,支持程序化调用和批量任务处理。

6.1 API服务启动

# 启动API服务 python server.py # 或者使用FastAPI方式 uvicorn api.main:app --host 0.0.0.0 --port 8000

6.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.py

7. 资源占用与性能观察

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只熟悉的股票进行测试,熟悉系统工作流程后再逐步扩展股票数量和功能模块。系统的模块化设计也便于根据实际需求进行功能裁剪和定制开发。