Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md
🚀 CrewAI 股票分析系统
基于 CrewAI 框架构建的智能股票分析系统,采用多 Agent 协作架构和智能流程控制,提供全面的股票投资分析服务。系统充分利用 CrewAI 的 Crews(团队模式) 和 Flows(流程模式) 实现高效的股票分析。
📊 系统特性
🔥 核心功能
- 智能股票分析: 基于 AI 的多维度股票分析,包括基本面、技术面、行业分析
- 批量处理: 支持多只股票并行分析,提高效率
- 实时监控: 股票价格和指标实时监控与预警
- 智能决策: 基于综合分析的投资建议生成
- 报告生成: 自动生成详细的投资分析报告
- Web界面: 直观的 Web 管理界面和监控面板
🛠️ 技术亮点
- 多 Agent 协作: 9 个专业化 Agent 分工协作
- 双重架构模式: Crews 模式(团队协作)+ Flows 模式(流程控制)
- 智能数据源: 集成 AkShare、OpenAI、Serper 等数据源
- 缓存机制: 智能缓存提高分析效率
- 错误处理: 完善的异常处理和重试机制
- 扩展性: 模块化设计,易于扩展新功能
🏗️ 系统架构
Agent 团队结构
┌─────────────────────────────────────────────────────────────┐
│ CrewAI 股票分析系统 │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 数据收集团队 │ │ 分析团队 │ │ 决策团队 │ │
│ │ │ │ │ │ │ │
│ │ • 市场研究员 │ │ • 基本面分析师 │ │ • 投资顾问 │ │
│ │ • 财务数据专家 │ │ • 风险评估师 │ │ • 报告生成器 │ │
│ │ • 技术分析师 │ │ • 行业专家 │ │ • 质量监控员 │ │
│ │ • 数据验证专家 │ │ │ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │ │ │ │
│ └─────────────────────┼─────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 核心工具集 │ │
│ │ • AkShare数据工具 • 技术分析工具 • 基本面分析工具 │ │
│ │ • 报告生成工具 • 风险评估工具 • 市场情绪分析 │ │
│ └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
核心组件说明
1. 数据收集团队 (DataCollectionCrew)
- 市场研究员: 收集市场新闻、行业信息和公司动态
- 财务数据专家: 获取财务报表、关键财务指标
- 技术分析师: 收集价格数据、技术指标
- 数据验证专家: 验证数据质量、处理异常值
2. 分析团队 (AnalysisCrew)
- 基本面分析师: 评估公司基本面、财务健康状况
- 风险评估师: 分析投资风险、风险因素识别
- 行业专家: 分析行业地位、竞争环境
3. 决策团队 (DecisionCrew)
- 投资策略顾问: 生成投资建议、策略制定
- 报告生成器: 生成详细分析报告
- 质量监控员: 质量控制、结果验证
🔄 核心流程
1. 单股票分析流程
┌─────────────────────────────────────────────────────────────────────────────┐
│ 单股票分析主流程 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 📥 INPUT: [公司名称, 股票代码] │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ StockAnalysisSystem │ │
│ │ 分析协调器 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 🏗️ 系统初始化 │ │
│ │ • 加载环境变量 │ │
│ │ • 初始化三个Crew团队 │ │
│ │ • 设置缓存机制 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 🔍 缓存检查 (可选) │ │
│ │ • 检查是否有缓存结果 │ │
│ │ • 验证缓存是否过期 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ (缓存未命中) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 📊 第一阶段:数据收集 (DataCollectionCrew) │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │
│ │ │ 市场研究员 │ │ 财务数据专家 │ │ 技术分析师 │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ • 收集市场新闻 │ │ • 获取财务报表 │ │ • 获取价格数据 │ │ │
│ │ │ • 行业信息分析 │ │ • 关键指标提取 │ │ • 技术指标计算 │ │ │
│ │ │ • 公司动态跟踪 │ │ • 同行业对比 │ │ • 趋势分析 │ │ │
│ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │
│ │ │ │ │ │
│ │ └────────────────────┼───────────────────────────┘ │
│ │ │ │
│ │ ┌─────────────────────────┴─────────────────────────┐ │
│ │ │ 数据验证专家 │ │
│ │ │ • 数据质量验证 │ │
│ │ │ • 异常值处理 │ │
│ │ │ • 数据清洗 │ │
│ │ └─────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 📈 第二阶段:综合分析 (AnalysisCrew) │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │
│ │ │ 基本面分析师 │ │ 风险评估师 │ │ 行业专家 │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ • 财务比率分析 │ │ • 风险识别 │ │ • 行业地位分析 │ │ │
│ │ │ • 盈利能力评估 │ │ • 风险量化 │ │ • 竞争环境分析 │ │ │
│ │ │ • 成长性预测 │ │ • 风险因素分析 │ │ • 发展趋势预测 │ │ │
│ │ │ • 估值分析 │ │ • 风险控制建议 │ │ • 政策影响评估 │ │ │
│ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │
│ │ │ │ │ │ │
│ │ └─────────────────────┼─────────────────────┘ │ │
│ │ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ 综合评分计算 │ │ │
│ │ │ • 基本面评分 (40%) • 风险评分 (30%) • 行业评分 (30%) │ │ │
│ │ └─────────────────────────────────────────────────────────────────────┘ │ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 🎯 第三阶段:投资决策 (DecisionCrew) │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │
│ │ │ 投资顾问 │ │ 报告生成器 │ │ 质量监控员 │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ • 投资建议生成 │ │ • 报告撰写 │ │ • 质量检查 │ │ │
│ │ │ • 目标价位设定 │ │ • 格式标准化 │ │ • 准确性验证 │ │ │
│ │ │ • 置信度评估 │ │ • 可读性优化 │ │ • 完整性检查 │ │ │
│ │ │ • 策略建议 │ │ • 数据可视化 │ │ • 一致性验证 │ │ │
│ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 📋 结果整合与输出 │ │
│ │ • 投资评级 (强烈买入/买入/增持/持有/减持/卖出) │ │
│ │ • 综合评分 (0-100分) │ │
│ │ • 详细分析报告 │ │
│ │ • 投资建议和风险提示 │ │
│ │ • 数据导出 (JSON/Markdown) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 💾 缓存存储 │ │
│ │ • 存储分析结果到缓存 │ │
│ │ • 设置过期时间 (1小时) │ │
│ │ • 记录分析历史 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 📤 OUTPUT: 分析结果 │ │
│ │ { │ │
│ │ 'success': true/false, │ │
│ │ 'company': '公司名称', │ │
│ │ 'ticker': '股票代码', │ │
│ │ 'overall_score': 75.5, │ │
│ │ 'investment_rating': {'rating': '买入', 'code': 'BUY'}, │ │
│ │ 'report_path': 'reports/report_XXX.md', │ │
│ │ 'data_path': 'data/data_XXX.json', │ │
│ │ 'timestamp': '2024-01-01 12:00:00' │ │
│ │ } │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
2. 批量分析流程
┌─────────────────────────────────────────────────────────────────────────────┐
│ 批量分析流程 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 📥 INPUT: [股票列表, 并发数] │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ BatchStockAnalyzer │ │
│ │ 批量分析器 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 📋 任务队列管理 │ │
│ │ • 解析股票列表 │ │
│ │ • 创建任务队列 │ │
│ │ • 设置并发限制 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 🔀 智能策略选择 │ │
│ │ ┌─────────────────┐ │ │
│ │ │ 并发策略 │ ←─ 股票数量多,系统负载低 │ │
│ │ │ • 多线程处理 │ │ │
│ │ │ • 资源利用率高 │ │ │
│ │ └─────────────────┘ │ │
│ │ ┌─────────────────┐ │ │
│ │ │ 串行策略 │ ←─ 股票数量少,需要精确控制 │ │
│ │ │ • 顺序处理 │ │ │
│ │ │ • 错误易追踪 │ │ │
│ │ └─────────────────┘ │ │
│ │ │
│ ▼ (根据策略选择) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ ⚡ 并发执行 │ │
│ │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │
│ │ │ Worker 1 │ │ Worker 2 │ │ Worker 3 │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ Stock 1 │ │ Stock 2 │ │ Stock 3 │ │ │
│ │ │ • 数据收集 │ │ • 数据收集 │ │ • 数据收集 │ │ │
│ │ │ • 分析处理 │ │ • 分析处理 │ │ • 分析处理 │ │ │
│ │ │ • 决策生成 │ │ • 决策生成 │ │ • 决策生成 │ │ │
│ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │
│ │ │ │ │ │ │
│ │ └─────────────────────┼─────────────────────┘ │ │
│ │ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ 进度监控 │ │
│ │ │ • 实时进度回调 │ │
│ │ │ • 错误处理与重试 │ │
│ │ │ • 资源使用监控 │ │
│ │ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 📊 结果聚合 │ │
│ │ • 收集所有分析结果 │ │
│ │ • 统计成功率/失败率 │ │
│ │ • 计算平均评分 │ │
│ │ • 识别最佳/最差表现 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 📈 批量报告生成 │ │
│ │ • 生成摘要报告 │ │
│ │ • 排行榜分析 │ │
│ │ • 投资组合建议 │ │
│ │ • 数据导出 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 📤 OUTPUT: 批量结果 │ │
│ │ { │ │
│ │ 'success': true, │ │
│ │ 'total_stocks': 5, │ │
│ │ 'successful': 4, │ │
│ │ 'failed': 1, │ │
│ │ 'success_rate': 80.0, │ │
│ │ 'average_score': 72.5, │ │
│ │ 'top_performers': [...], │ │
│ │ 'bottom_performers': [...], │ │
│ │ 'summary_path': 'reports/batch_XXX.md' │ │
│ │ } │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
3. 智能投资流程 (Flows模式)
┌─────────────────────────────────────────────────────────────────────────────┐
│ 智能投资流程 (Flows) │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 📥 INPUT: [用户输入] │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ SmartInvestmentFlow │ │
│ │ 智能投资流程 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 🎯 初始化分析 (@start) │ │
│ │ • 获取用户输入 (公司名称) │ │
│ │ • 初始化分析状态 │ │
│ │ • 设置分析参数 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 🔍 数据质量评估 (@router) │ │
│ │ • 评估数据可获得性 │ │
│ │ • 检查数据完整性 │ │
│ │ • 分析公司重要性 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ├─── 数据质量高 ──► ┌─────────────────────────────────────────────────┐ │
│ │ │ 📊 深度分析 │ │
│ │ │ • 完整基本面分析 │ │
│ │ │ • 详细风险评估 │ │
│ │ │ • 行业深度分析 │ │
│ │ │ • 竞争对手分析 │ │
│ │ └─────────────────────────────────────────────────┘ │
│ │ │
│ └─── 数据质量中等 ─► ┌─────────────────────────────────────────────────┐ │
│ │ 📈 标准分析 │ │
│ │ • 基本面分析 │ │
│ │ • 基础风险评估 │ │
│ │ • 行业概况分析 │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ └─── 数据质量低 ──► ┌─────────────────────────────────────────────────┐ │
│ │ 📋 快速分析 │ │
│ │ • 关键指标分析 │ │
│ │ • 简单风险评估 │ │
│ │ • 基本面快照 │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ ▼ (根据分析深度) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 🎯 智能决策 (@router) │ │
│ │ • 基于分析结果评分 │ │
│ │ • 评估投资价值 │ │
│ │ • 风险收益分析 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ├─── 评分 ≥ 80 ──► ┌─────────────────────────────────────────────────┐ │
│ │ │ 💰 强烈买入 │ │
│ │ │ • 详细投资建议 │ │
│ │ │ • 目标价位设定 │ │
│ │ │ • 持有时间建议 │ │
│ │ └─────────────────────────────────────────────────┘ │
│ │ │
│ ├─── 评分 60-79 ──► ┌─────────────────────────────────────────────────┐ │
│ │ │ 📈 买入 │ │
│ │ │ • 适度投资建议 │ │
│ │ │ • 风险提示 │ │
│ │ │ • 分批建仓建议 │ │
│ │ └─────────────────────────────────────────────────┘ │
│ │ │
│ └─── 评分 < 60 ──► ┌─────────────────────────────────────────────────┐ │
│ │ ⚠️ 观望/卖出 │ │
│ │ • 风险警告 │ │
│ │ • 减持建议 │ │
│ │ • 替代方案 │ │
│ └─────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 📋 报告生成 (@listen) │ │
│ │ • 生成结构化报告 │ │
│ │ • 包含图表和数据 │ │
│ │ • 投资建议总结 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 📤 OUTPUT: 个性化分析结果 │ │
│ │ • 根据用户风险偏好调整建议 │ │
│ │ • 提供多种投资策略选择 │ │
│ │ • 持续监控建议 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
📋 详细功能说明
1. 数据收集功能
AkShare数据集成
- 实时数据获取: 通过 AkShare 获取 A 股实时数据
- 历史数据: 支持多种时间周期的历史数据查询
- 财务数据: 财务报表、财务指标、行业对比数据
- 市场数据: 行情数据、资金流向、市场情绪
数据验证与清洗
- 质量评估: 自动评估数据质量和完整性
- 异常检测: 识别和处理异常数据点
- 数据标准化: 统一数据格式和单位
- 缓存机制: 智能缓存减少重复请求
2. 分析功能
基本面分析
- 财务比率分析: PE、PB、ROE、ROA 等关键比率
- 盈利能力: 营收增长、净利润率、毛利率分析
- 估值分析: DCF估值、相对估值、行业对比
- 财务健康: 负债率、现金流、偿债能力评估
技术分析
- 趋势分析: 移动平均线、趋势线、支撑阻力位
- 技术指标: RSI、MACD、KDJ、BOLLINGER 等指标
- 图表分析: K线形态、成交量分析、价格形态
- 交易信号: 买入/卖出信号生成
行业分析
- 行业地位: 市场份额、竞争力分析
- 行业趋势: 发展前景、政策影响、技术变革
- 对比分析: 同行业公司对比分析
- SWOT分析: 优势、劣势、机会、威胁分析
3. 风险评估功能
风险识别
- 市场风险: 系统性风险、市场波动风险
- 财务风险: 偿债风险、流动性风险、盈利风险
- 经营风险: 管理风险、战略风险、运营风险
- 行业风险: 政策风险、技术风险、竞争风险
风险量化
- 风险评分: 0-100分风险量化评分
- VaR计算: 风险价值评估
- 压力测试: 极端情况下的风险评估
- 敏感性分析: 关键因素变动影响分析
4. 投资决策功能
投资建议生成
- 评级系统: 六级评级体系(强烈买入到卖出)
- 目标价位: 基于估值的目标价格设定
- 投资策略: 长期持有、波段操作、价值投资等策略
- 资产配置: 建议配置比例和分散化建议
智能推荐
- 个性化推荐: 基于用户风险偏好的个性化建议
- 时机选择: 买入/卖出时机建议
- 组合优化: 投资组合优化建议
- 替代方案: 备选投资标的建议
5. 报告生成功能
自动报告生成
- 结构化报告: 标准化的分析报告格式
- 图表可视化: 自动生成图表和数据可视化
- 多格式输出: 支持 Markdown、PDF、HTML 等格式
- 模板定制: 可定制的报告模板
智能摘要
- 执行摘要: 关键结论和投资建议摘要
- 亮点突出: 重点关注的数据和发现
- 风险提示: 重要风险因素提示
- 行动建议: 具体的投资行动建议
6. 监控预警功能
实时监控
- 价格监控: 实时价格变动监控
- 指标监控: 关键指标变动监控
- 新闻监控: 相关新闻和公告监控
- 情绪监控: 市场情绪变化监控
智能预警
- 价格预警: 价格突破预警
- 指标预警: 技术指标信号预警
- 新闻预警: 重要新闻公告预警
- 组合预警: 投资组合风险预警
通知系统
- 邮件通知: 邮件预警通知
- 短信通知: 短信预警通知
- App推送: 移动端推送通知
- Webhook: 自定义 Webhook 通知
🛠️ 安装和配置
1. 环境要求
- Python: 3.8+
- 操作系统: Windows/MacOS/Linux
- 内存: 建议 4GB 以上
- 网络: 需要访问 OpenAI API 和数据源
2. 依赖安装
# 克隆项目 git clone <repository-url> cd crewai_stock_analysis_system # 安装依赖 pip install -r requirements.txt # 安装 AkShare (可选,用于 A 股数据) pip install akshare
3. 环境配置
创建 .env 文件:
# OpenAI 配置 OPENAI_API_KEY=your-openai-api-key-here OPENAI_MODEL_NAME=gpt-4o # Serper API (可选,用于网络搜索) SERPER_API_KEY=your-serper-api-key-here # 系统配置 CACHE_TTL=3600 MAX_WORKERS=5 LOG_LEVEL=INFO
4. 验证安装
# 运行系统测试 python test_final_system.py # 检查系统信息 python main.py info
📖 使用指南
1. 命令行界面
单股票分析
# 基本用法 python main.py single --company "贵州茅台" --ticker "600519" python main.py single --company "紫光股份" --ticker "000938" # 不使用缓存 python main.py single --company "贵州茅台" --ticker "600519" --no-cache
批量分析
# 使用默认股票列表 python main.py batch # 使用自定义股票列表文件 python main.py batch --stocks-file stocks.txt # 设置并发数 python main.py batch --max-workers 5
交互式流程
# 启动智能投资流程 python main.py interactive # 启动批量分析流程 python main.py batch-flow
股票列表文件格式 (stocks.txt):
# 公司名,股票代码
苹果公司,AAPL
微软,MSFT
谷歌,GOOGL
亚马逊,AMZN
特斯拉,TSLA
2. Web界面使用
# 启动Web应用 python src/web_app.py # 访问地址 http://localhost:5000
Web界面功能:
- 实时监控面板: 显示监控股票的实时状态
- 分析管理: 创建和管理分析任务
- 报告查看: 查看和下载分析报告
- 系统设置: 配置系统参数和预警规则
3. 编程接口使用
基础使用
from src.stock_analysis_system import StockAnalysisSystem # 创建系统实例 system = StockAnalysisSystem() # 分析单只股票 result = system.analyze_stock("贵州茅台", "600519") if result['success']: print(f"投资评级: {result['investment_rating']['rating']}") print(f"综合评分: {result['overall_score']:.1f}/100") print(f"报告路径: {result['report_path']}")
批量分析
# 批量分析 stocks = [ {'company': '微软', 'ticker': 'MSFT'}, {'company': '谷歌', 'ticker': 'GOOGL'}, {'company': '亚马逊', 'ticker': 'AMZN'} ] results = system.analyze_multiple_stocks(stocks, max_workers=3) # 处理结果 for result in results: if result['success']: print(f"{result['company']}: {result['investment_rating']['rating']}")
实时监控
from src.utils.monitor import StockMonitor # 创建监控器 monitor = StockMonitor() # 添加监控股票 monitor.add_stock_to_monitor("苹果公司", "AAPL", interval=300) # 添加预警规则 monitor.add_alert_rule( "price_alert", "AAPL", "price", "above", 180.0, "苹果股价突破180美元" ) # 启动监控 monitor.start_monitoring()
4. 高级功能使用
自定义分析流程
from src.flows.investment_flow import SmartInvestmentFlow # 创建智能流程 flow = SmartInvestmentFlow() # 自定义分析参数 flow.set_analysis_depth("deep") flow.set_risk_tolerance("medium") flow.set_investment_horizon("long_term") # 运行流程 result = flow.kickoff()
批量分析优化
from src.utils.batch_analyzer import BatchStockAnalyzer # 创建批量分析器 analyzer = BatchStockAnalyzer(max_workers=5) # 设置进度回调 def progress_callback(progress): print(f"进度: {progress['percentage']:.1f}%") print(f"已完成: {progress['completed']}/{progress['total']}") analyzer.set_progress_callback(progress_callback) # 执行分析 stocks = [ {'company': '苹果公司', 'ticker': 'AAPL'}, {'company': '微软', 'ticker': 'MSFT'}, # ... 更多股票 ] result = analyzer.analyze_multiple_stocks( stocks, strategy="adaptive", # 自适应策略 timeout=300 # 超时时间 )
📊 工具和Agent详解
1. 核心工具列表
数据获取工具
- AkShareTool: A股数据获取,支持实时和历史数据
- MarketDataTool: 市场数据获取,包括行情和资金流向
- NewsSearchTool: 新闻搜索,获取相关新闻和公告
分析工具
- FundamentalAnalysisTool: 基本面分析,财务指标和估值分析
- TechnicalAnalysisTool: 技术分析,技术指标和图表分析
- RiskAssessmentTool: 风险评估,风险识别和量化分析
- SentimentAnalysisTool: 情绪分析,市场情绪和新闻情绪分析
决策工具
- InvestmentAdvisorTool: 投资建议,策略制定和目标价位设定
- ReportGenerationTool: 报告生成,自动化报告生成和格式化
- QualityControlTool: 质量控制,分析结果验证和质量评估
2. Agent配置说明
数据收集团队Agent
market_researcher: role: "市场研究员" goal: "收集{company}的市场新闻、行业信息和公司动态" backstory: "资深市场分析师,精通市场研究和行业分析" tools: [akshare_tool, serper_dev_tool, sentiment_analysis_tool] financial_data_expert: role: "财务数据专家" goal: "获取并分析{company}的财务报表和关键财务指标" backstory: "金融数据专家,精通财务数据分析和处理" tools: [akshare_tool, financial_calculator_tool]
分析团队Agent
fundamental_analyst: role: "基本面分析师" goal: "评估{company}的财务状况和内在价值" backstory: "基本面分析专家,擅长财务分析和价值评估" tools: [fundamental_analysis_tool, financial_calculator_tool] risk_assessment_specialist: role: "风险评估师" goal: "识别和量化{company}的投资风险" backstory: "风险管理专家,精通风险识别和量化分析" tools: [risk_assessment_tool, financial_calculator_tool]
决策团队Agent
investment_advisor: role: "投资策略顾问" goal: "基于综合分析为{company}提供投资建议" backstory: "资深投资顾问,擅长投资策略制定和风险控制" tools: [investment_advisor_tool, risk_assessment_tool] report_generator: role: "报告生成器" goal: "生成{company}的详细投资分析报告" backstory: "专业报告撰写员,擅长数据可视化和报告撰写" tools: [report_generation_tool, charting_tool]
🔧 高级配置
1. 性能优化
缓存配置
# 在 StockAnalysisSystem 中配置 system = StockAnalysisSystem() system.cache_ttl = 7200 # 2小时缓存 system.max_cache_size = 1000 # 最大缓存数量
并发配置
# 批量分析并发配置 analyzer = BatchStockAnalyzer( max_workers=10, # 最大并发数 timeout=600, # 超时时间(秒) retry_count=3, # 重试次数 strategy="adaptive" # 自适应策略 )
2. 自定义工具开发
创建自定义工具
from src.tools.base_tool import BaseTool class CustomAnalysisTool(BaseTool): name: str = "Custom Analysis Tool" description: str = "自定义分析工具" def _run(self, input_data: str) -> str: # 实现自定义分析逻辑 result = self.custom_analysis(input_data) return result def custom_analysis(self, data): # 自定义分析实现 return "分析结果"
注册自定义工具
# 在 config/tools.yaml 中添加 custom_analysis_tool: name: "自定义分析工具" description: "执行自定义分析逻辑" module: "src.tools.custom_tools" class: "CustomAnalysisTool"
3. 预警规则配置
价格预警
monitor.add_alert_rule( "price_breakout", "AAPL", "price", "above", 180.0, "苹果股价突破180美元" )
技术指标预警
monitor.add_alert_rule( "rsi_oversold", "AAPL", "indicator", "below", 30, "RSI指标低于30,超卖信号" )
评分预警
monitor.add_alert_rule( "score_drop", "AAPL", "score", "below", 60, "综合评分低于60分" )
🧪 测试和调试
1. 单元测试
# 运行所有测试 python -m pytest tests/ # 运行特定测试 python -m pytest tests/test_stock_analysis_system.py -v # 运行性能测试 python -m pytest tests/test_performance.py -v
2. 集成测试
# 运行系统集成测试 python test_final_system.py # 测试特定功能 python main.py single --company "测试公司" --ticker "TEST"
3. 调试模式
# 启用调试日志 export LOG_LEVEL=DEBUG python main.py single --company "苹果公司" --ticker "AAPL" # 查看详细执行过程 python src/flows/investment_flow.py
🔒 安全和合规
1. API密钥管理
- 使用环境变量存储敏感信息
- 定期轮换API密钥
- 监控API使用情况
- 设置使用限额
2. 数据安全
- 本地数据加密存储
- 安全的文件权限设置
- 敏感信息脱敏处理
- 访问日志记录
3. 合规性考虑
- 遵守数据使用条款
- 投资建议免责声明
- 风险提示和警示
- 监管合规要求
📈 性能监控
1. 系统监控
- CPU和内存使用率
- 网络请求延迟
- API调用成功率
- 缓存命中率
2. 业务监控
- 分析成功率
- 平均响应时间
- 错误率和异常
- 用户满意度
3. 性能优化
- 数据库查询优化
- 缓存策略优化
- 并发处理优化
- 内存使用优化
🚨 故障排除
1. 常见错误
API密钥错误
错误:缺少必要的环境变量: OPENAI_API_KEY
解决方案:在.env文件中设置正确的API密钥
网络连接错误
错误:网络请求失败
解决方案:检查网络连接,设置代理,或重试
数据获取失败
错误:数据获取失败
解决方案:检查股票代码格式,确认数据源可用
2. 性能问题
响应缓慢
- 减少并发数量
- 启用缓存机制
- 优化数据查询
- 升级硬件配置
内存不足
- 减少批量处理数量
- 清理缓存数据
- 优化数据结构
- 增加虚拟内存
3. 数据质量问题
数据不完整
- 检查数据源状态
- 验证股票代码
- 重试数据获取
- 使用备用数据源
数据异常
- 启用数据验证
- 设置异常阈值
- 手动数据修正
- 质量监控报警
🤝 贡献指南
1. 开发环境设置
# 克隆项目 git clone <repository-url> cd crewai # 创建虚拟环境 python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows # 安装开发依赖 pip install -r requirements-dev.txt
2. 代码规范
- 遵循PEP 8代码规范
- 使用类型注解
- 编写单元测试
- 添加文档注释
3. 提交流程
- Fork 项目
- 创建功能分支
- 提交代码变更
- 创建 Pull Request
- 代码审查和合并
📄 许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
🙏 致谢
📞 支持和反馈
- 📧 邮箱支持:support@example.com
- 🐛 问题报告:GitHub Issues
- 📖 文档:项目Wiki
- 💬 社区讨论:GitHub Discussions
⚠️ 免责声明
重要提醒:本系统提供的分析结果和建议仅供参考,不构成投资建议。投资有风险,决策需谨慎。
- 本系统基于公开数据和AI模型分析,可能存在误差
- 股票市场具有不确定性,历史表现不代表未来结果
- 用户应根据自身风险承受能力做出投资决策
- 建议结合多方信息和专业投资顾问建议
- 开发者不对使用本系统造成的投资损失负责
使用本系统即表示您已理解并同意以上免责声明。
最后更新时间:2025-09-18 版本号:v1.0.0 维护者:CrewAI股票分析系统团队