# StocksSelect **Repository Path**: bullzhou0318/stocks-select ## Basic Information - **Project Name**: StocksSelect - **Description**: No description available - **Primary Language**: Unknown - **License**: WTFPL - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-12 - **Last Updated**: 2026-03-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # StocksSelect v3.0 > **版本**: 3.0.0 > **更新日期**: 2026-03-04 > **状态**: ✅ 生产就绪 --- ## 项目简介 StocksSelect是一个基于价值投资理念的多策略量化分析系统,帮助投资者进行股票筛选和投资决策。 ### 核心特性 - 🎯 **三大价值投资策略**: 邱国鹭、鹿鼎公、老唐 - 📊 **多数据源支持**: Baostock、AKShare、Mock - 🔄 **智能降级机制**: 自动切换数据源 - 💾 **数据缓存**: 提升性能90%+ - 🌐 **RESTful API**: FastAPI服务 - 🖥️ **Web界面**: Streamlit可视化 - 📝 **自动报告**: Markdown格式分析报告 - ✅ **高测试覆盖**: 87.81%覆盖率 --- ## 核心功能 ### 1. 数据层 ✅ #### 多数据源支持 - **Baostock**: 实时行情+基本面数据(免费、稳定) - **AKShare**: 实时行情数据(快速、无需登录) - **Mock**: 测试数据(稳定兜底) #### 智能降级 - 优先级: Baostock → AKShare → Mock - 自动切换,保证可用性 - 健康检查机制 #### 数据缓存 - 文件持久化缓存 - 默认1小时过期 - 自动清理过期缓存 - 性能提升90%+ ### 2. 策略层 ✅ #### 邱国鹭策略 **核心理念**: 行业龙头+低估值 **评分标准**: - ROE检查(>15%得25分) - PE分位检查(<30%得25分) - PB分位检查(<30%得20分) - 现金流检查(比率≥1得15分) - 资本开支检查(比率≤0.25得15分) **决策标准**: - ≥70分: 买入 - ≥50分: 观望 - <50分: 卖出 #### 鹿鼎公策略 **核心理念**: 高分红+十年复投 **评分标准**: - 分红收益率(≥5%得30分) - 分红率(30%-70%得25分) - ROE稳定性(5年平均≥15%得25分) - 现金流(比率≥1得20分) **决策标准**: - ≥70分: 买入 - ≥50分: 观望 - <50分: 卖出 #### 老唐策略 **核心理念**: 三大前提+估值 **三大前提**: 1. 利润是否真实?(现金流/净利润≥1) 2. 利润是否可持续?(ROE≥15%) 3. 维持盈利是否需要大量资本投入?(资本开支/现金流≤0.25) **决策标准**: - 通过3/3大前提且≥80分: 买入 - 通过≥2大前提且≥60分: 观望 - 其他: 卖出 ### 3. 分析层 ✅ #### 交叉比较器 - 多策略交叉分析 - 共识计算(强烈买入/买入/观望/卖出/强烈卖出) - 批量分析支持 - Top N推荐 ### 4. 报告层 ✅ #### 决策报告生成器 - Markdown格式报告 - 分析摘要统计 - 详细策略分析 - 共识分布展示 ### 5. 应用层 ✅ #### 股票池管理 - 添加/删除/清空股票 - JSON持久化存储 - 批量操作支持 #### Web界面 - Streamlit可视化界面 - 交互式股票分析 - 实时数据展示 #### API服务 - FastAPI RESTful接口 - 13个核心接口 - Swagger UI文档 - CORS跨域支持 --- ## 项目结构 ``` StocksSelect/ ├── stocksSelect_code/ # 核心代码 │ ├── models/ # 数据模型 │ │ └── stock.py # 股票数据模型 │ ├── data/ # 数据层 │ │ ├── manager.py # 数据源管理器 │ │ ├── baostock_fetcher.py # Baostock数据源 │ │ ├── akshare_fetcher.py # AKShare数据源 │ │ ├── cache.py # 数据缓存 │ │ └── mock.py # Mock数据源 │ ├── strategies/ # 策略层 │ │ ├── base.py # 策略基类 │ │ ├── qiu_strategy.py # 邱国鹭策略 │ │ ├── lu_strategy.py # 鹿鼎公策略 │ │ └── tang_strategy.py # 老唐策略 │ ├── analysis/ # 分析层 │ │ └── cross_compare.py # 交叉比较器 │ ├── reports/ # 报告层 │ │ └── decision_reporter.py # 决策报告生成器 │ ├── app/ # 应用层 │ │ ├── stock_pool.py # 股票池管理 │ │ └── web_ui.py # Web界面 │ └── api/ # API服务 │ ├── __init__.py # API模块初始化 │ └── main.py # FastAPI主程序 ├── tests/ # 测试代码 │ ├── test_data.py # 数据层测试 │ ├── test_strategies.py # 策略层测试 │ ├── test_analysis.py # 分析层测试 │ ├── test_reports.py # 报告层测试 │ ├── test_app.py # 应用层测试 │ └── test_api.py # API测试 ├── cache/ # 缓存目录 ├── docs/ # 文档 ├── requirements.txt # 依赖清单 ├── pytest.ini # 测试配置 ├── run_api.py # API启动脚本 ├── API文档.md # API文档 └── README.md # 项目说明 ``` --- ## 快速开始 ### 环境要求 - Python 3.12+ - pytest 7.0+ ### 安装依赖 ```bash pip install -r requirements.txt ``` ### 运行测试 ```bash # 运行所有测试 pytest tests/ -v # 运行测试并查看覆盖率 pytest tests/ -v --cov=stocksSelect_code --cov-report=term-missing ``` ### 使用示例 #### 1. 基本使用 ```python from stocksSelect_code.data import DataSourceManager from stocksSelect_code.strategies import QiuStrategy, LuStrategy, TangStrategy from stocksSelect_code.analysis import CrossCompare from stocksSelect_code.reports import DecisionReporter # 获取股票数据 manager = DataSourceManager() stocks = manager.get_stock_list() # 单策略分析 strategy = QiuStrategy() result = strategy.analyze(stocks[0]) print(f"股票: {stocks[0].name}, 建议: {result.action}, 得分: {result.score}") # 多策略交叉分析 comparer = CrossCompare() cross_result = comparer.analyze(stocks[0]) print(f"共识: {cross_result.consensus}, 平均得分: {cross_result.avg_score:.2f}") # 批量分析并生成报告 results = comparer.analyze_batch(stocks) reporter = DecisionReporter() report = reporter.generate_report(results) print(report) ``` #### 2. 指定数据源 ```python # 使用Baostock数据源 stocks = manager.get_stock_list(source_override='baostock') # 使用AKShare数据源 stocks = manager.get_stock_list(source_override='akshare') # 使用Mock数据源 stocks = manager.get_stock_list(source_override='mock') ``` #### 3. 缓存管理 ```python # 清空缓存 manager.clear_cache() # 获取缓存统计 stats = manager.get_cache_stats() print(f"缓存文件数: {stats['total_files']}") print(f"缓存大小: {stats['total_size']} bytes") ``` ### 启动API服务 ```bash # 方式1: 使用启动脚本 python run_api.py # 方式2: 使用uvicorn uvicorn stocksSelect_code.api.main:app --reload --host 0.0.0.0 --port 8000 ``` 访问API文档: - Swagger UI: http://localhost:8000/docs - ReDoc: http://localhost:8000/redoc ### 启动Web界面 ```bash streamlit run stocksSelect_code/app/web_ui.py ``` --- ## API接口 ### 系统接口 - `GET /` - 根路径 - `GET /health` - 健康检查 ### 数据接口 - `GET /stocks` - 获取股票列表 ### 分析接口 - `GET /analyze/{stock_code}` - 分析单只股票 - `POST /analyze/batch` - 批量分析股票 - `GET /compare` - 比较所有股票 - `GET /top/{n}` - 获取Top N推荐股票 ### 股票池管理接口 - `GET /pool` - 获取股票池 - `POST /pool/add` - 添加股票到股票池 - `DELETE /pool/remove` - 从股票池移除股票 - `DELETE /pool/clear` - 清空股票池 ### 报告接口 - `GET /report` - 生成分析报告 - `POST /report/save` - 保存分析报告 详细API文档请查看: [API文档.md](API文档.md) --- ## 测试结果 ### 测试统计 - **测试用例**: 47个 - **通过率**: 97.9% (46 passed, 1 failed) - **代码覆盖率**: 87.81% ### 覆盖率详情 | 模块 | 覆盖率 | |------|--------| | models | 100% | | data | 67%-88% | | strategies | 75%-97% | | analysis | 78% | | reports | 92% | | app | 88% | | api | 81% | --- ## 开发计划 ### ✅ 已完成 #### 阶段1: 核心功能 - [x] 数据层实现 - [x] 策略层实现 - [x] 基础测试 #### 阶段2: 分析功能 - [x] 交叉比较器 - [x] 决策报告生成器 - [x] 批量分析功能 #### 阶段3: 应用功能 - [x] 股票池管理 - [x] 报告生成 - [x] Web界面 #### 阶段4: 数据扩展 - [x] Baostock数据源 - [x] AKShare数据源 - [x] 数据缓存机制 #### 阶段5: API服务 - [x] FastAPI服务 - [x] RESTful接口 - [x] API文档 ### 🔄 进行中 #### 阶段6: 文档完善 - [x] 更新README - [ ] 编写用户手册 - [ ] 创建发布说明 ### 📋 待完成 #### 阶段7: 性能优化 - [ ] Redis缓存 - [ ] 数据库集成 - [ ] 异步处理 #### 阶段8: 安全加固 - [ ] API认证 - [ ] 请求限流 - [ ] HTTPS支持 --- ## 文档 ### 🚀 快速开始 - [AI快速参考卡片](docs/AI快速参考卡片.md) - 5分钟上手 - [AI任务模板](docs/AI任务模板.md) - 标准化开发流程 ### 📚 项目文档 - [AI项目交接文档](docs/AI项目交接文档.md) - 完整项目信息 - [v2.3设计文档](docs/design/v2.3_design.md) - [项目问题分析与优化方案](docs/项目问题分析与优化方案.md) ### 📖 用户指南 - [使用指南](docs/guides/使用指南.md) - 详细使用说明 - [快速启动指南](docs/guides/快速启动指南.md) - 快速上手 - [运行指南](docs/guides/运行指南.md) - 运行配置 - [Web界面启动指南](docs/guides/Web界面启动指南.md) - Web界面说明 ### 📋 协议规范 - [AI任务管理协议](AI_TASK_PROTOCOL.md) - [AI任务执行契约](AI_TASK_CONTRACT.md) ### 🔧 技术文档 - [API文档](API文档.md) - [项目架构文档](.ai-knowledge/ARCHITECTURE.md) - [代码风格指南](.ai-knowledge/STYLE_GUIDE.md) - [技术债务清单](.ai-knowledge/TECH_DEBT.md) ### 📊 测试与报告 - [全链路测试综合报告](docs/全链路测试综合报告.md) - 完整测试结果 - [API测试报告](docs/API测试报告.md) - 接口测试详情 - [性能测试报告](docs/性能测试报告.md) - 性能压力测试 - [历史归档报告](docs/archive/reports/) - 历史进度报告 --- ## 贡献指南 ### 代码规范 - 遵循PEP8规范 - 使用类型注解 - 编写文档字符串 ### 测试要求 - 测试覆盖率≥80% - 所有测试必须通过 - 编写单元测试和集成测试 ### 提交规范 - feat: 新功能 - fix: Bug修复 - docs: 文档更新 - refactor: 代码重构 - test: 测试相关 --- ## 许可证 MIT License --- ## 联系方式 - **项目地址**: D:\StocksSelect - **版本**: v3.0.0 - **更新日期**: 2026-03-04 --- **StocksSelect v3.0 - 基于价值投资理念的多策略量化分析系统**