| .claude | ||
| config | ||
| src | ||
| web | ||
| .env.example | ||
| .gitignore | ||
| main.py | ||
| README.md | ||
| requirements.txt | ||
| start_web.sh | ||
股票分析筛选 AI Agent
基于 tushare 数据接口的智能股票筛选和分析系统,支持多种投资策略的量化评分。
功能特性
- 多策略筛选: 价值投资、成长投资、技术分析三大策略
- 实时数据: 基于 tushare API 获取最新股票数据
- 智能评分: AI 算法对股票进行综合评分和排名
- 可视化分析: 直观的图表展示和财务指标雷达图
- 缓存优化: Redis 缓存提升数据查询性能
技术栈
- 后端: FastAPI + Python 3.9+
- 数据源: Tushare API
- 数据处理: pandas, numpy, scikit-learn
- 缓存: Redis
- 数据库: SQLAlchemy (支持 SQLite/PostgreSQL)
- 前端: Streamlit
- 可视化: Plotly
快速开始
1. 环境配置
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置你的 tushare token
2. 配置 tushare token
在 .env 文件中设置:
TUSHARE_TOKEN=your_tushare_token_here
3. 启动服务
# 启动 API 服务
python main.py
# 启动 Web 界面 (新终端)
streamlit run src/web/streamlit_app.py
4. 访问应用
- API 文档: http://localhost:8000/docs
- Web 界面: http://localhost:8501
投资策略说明
价值投资策略
- 关注指标: PE、PB、ROE、负债率、净利率
- 适合: 寻找被低估的优质股票
- 评分权重: PE(25%) + PB(20%) + ROE(20%) + 负债(15%) + 其他(20%)
成长投资策略
- 关注指标: 营收增长、利润增长、ROE、研发投入
- 适合: 寻找高成长潜力的股票
- 评分权重: 营收增长(30%) + 利润增长(25%) + ROE(20%) + 其他(25%)
技术分析策略
- 关注指标: 移动平均线、RSI、MACD、成交量、波林带
- 适合: 短期交易和趋势跟踪
- 评分权重: 趋势(30%) + 动量(25%) + 成交量(20%) + 其他(25%)
API 接口
获取股票列表
GET /api/stocks
单股分析
POST /api/analyze
Content-Type: application/json
{
"ts_code": "000001.SZ",
"strategy": "value"
}
批量筛选
POST /api/screen
Content-Type: application/json
{
"strategy": "value",
"min_score": 60,
"limit": 50
}
项目结构
StockAgent/
├── src/
│ ├── data/ # 数据获取和存储
│ ├── analysis/ # 财务和技术指标计算
│ ├── strategies/ # 投资策略实现
│ ├── utils/ # 工具函数
│ └── web/ # Web 界面
├── config/ # 配置文件
├── tests/ # 测试文件
├── main.py # API 主程序
└── requirements.txt # 依赖包
使用示例
from src.data import TushareClient
from src.strategies import ValueStrategy
# 初始化数据客户端
client = TushareClient()
# 获取股票数据
stocks = client.get_stock_list()
financial_data = client.get_financial_data('000001.SZ')
# 使用价值投资策略评分
strategy = ValueStrategy()
score = strategy.calculate_score(stock_data)
print(f"投资评分: {score}")
许可证
MIT License