一个功能完整的多因子选股系统,集成了因子计算、机器学习建模、股票选择、组合优化和回测验证等功能。
- 📊 因子管理: 内置12个常用因子,支持自定义因子创建
- 🤖 机器学习: 支持随机森林、XGBoost、LightGBM等算法
- 🎯 智能选股: 基于因子和ML模型的多种选股策略
- 📈 组合优化: 等权重、均值-方差、风险平价等优化方法
- 🔄 回测验证: 完整的策略回测和多策略比较
- 📋 分析报告: 行业分析、因子贡献度等深度分析
- 后端: Python 3.8+ / Flask / SQLAlchemy
- 数据处理: Pandas / NumPy / Scikit-learn
- 机器学习: XGBoost / LightGBM / CVXPY
- 前端: Bootstrap 5 / JavaScript
- 数据库: MySQL / SQLite
- Python 3.8+
- MySQL 5.7或8.x
# 克隆项目
git clone <repository-url>
cd quantitative_analysis
# 安装依赖
pip install -r requirements.txt
# 使用启动脚本
python run_system.py
# 或者直接运行(推荐)
python app.py
Traceback (most recent call last):
File "/root/stock/run.py", line 9, in <module>
app = create_app(os.getenv('FLASK_ENV', 'default'))
执行:pip install eventlet
- Web界面: http://localhost:5000
- API文档: http://localhost:5000/api
运行 python run_system.py
后,选择相应操作:
- 检查系统依赖 - 验证Python版本和必需包
- 初始化数据库 - 创建数据表和内置因子
- 启动Web服务器 - 启动开发模式服务器
- 启动Web服务器(生产模式) - 启动生产模式服务器
- 运行系统演示 - 执行完整功能演示
- 显示系统信息 - 查看系统功能概览
- 查看系统状态和统计信息
- 快速访问主要功能
- 查看内置因子列表
- 创建自定义因子
- 计算因子值
- 创建机器学习模型
- 训练模型
- 模型预测
- 基于因子的选股
- 基于ML模型的选股
- 配置选股参数
- 多种优化方法
- 约束条件设置
- 权重分配结果
- 行业分析
- 因子贡献度分析
- 单策略回测
- 多策略比较
import requests
# 获取因子列表
response = requests.get('http://localhost:5000/api/ml-factor/factors/list')
# 创建自定义因子
factor_data = {
"factor_id": "custom_momentum",
"factor_name": "自定义动量因子",
"factor_type": "momentum",
"factor_formula": "close.pct_change(10)",
"description": "10日价格变化率"
}
response = requests.post('http://localhost:5000/api/ml-factor/factors/custom', json=factor_data)
# 计算因子值
calc_data = {
"trade_date": "2024-01-15",
"factor_ids": ["momentum_1d", "momentum_5d"]
}
response = requests.post('http://localhost:5000/api/ml-factor/factors/calculate', json=calc_data)
# 创建模型
model_data = {
"model_id": "my_xgb_model",
"model_name": "我的XGBoost模型",
"model_type": "xgboost",
"factor_list": ["momentum_1d", "momentum_5d", "volatility_20d"],
"target_type": "return_5d"
}
response = requests.post('http://localhost:5000/api/ml-factor/models/create', json=model_data)
# 训练模型
train_data = {
"model_id": "my_xgb_model",
"start_date": "2023-01-01",
"end_date": "2023-12-31"
}
response = requests.post('http://localhost:5000/api/ml-factor/models/train', json=train_data)
# 基于因子选股
selection_data = {
"trade_date": "2024-01-15",
"factor_list": ["momentum_1d", "momentum_5d"],
"method": "equal_weight",
"top_n": 50
}
response = requests.post('http://localhost:5000/api/ml-factor/scoring/factor-based', json=selection_data)
# 基于ML模型选股
ml_selection_data = {
"trade_date": "2024-01-15",
"model_ids": ["my_xgb_model"],
"top_n": 50
}
response = requests.post('http://localhost:5000/api/ml-factor/scoring/ml-based', json=ml_selection_data)
# 组合优化
optimization_data = {
"expected_returns": {"000001.SZ": 0.05, "000002.SZ": 0.03},
"method": "mean_variance",
"constraints": {
"max_weight": 0.1,
"risk_aversion": 1.0
}
}
response = requests.post('http://localhost:5000/api/ml-factor/portfolio/optimize', json=optimization_data)
stock_analysis/
├── app/ # 应用主目录
│ ├── api/ # API接口
│ ├── models/ # 数据模型
│ ├── services/ # 业务服务
│ ├── routes/ # 路由
│ └── utils/ # 工具函数
├── templates/ # HTML模板
├── static/ # 静态文件
├── examples/ # 使用示例
├── config.py # 配置文件
├── requirements.txt # 依赖包
├── run_system.py # 系统启动器
└── README.md # 说明文档
- 因子定义管理
- 因子值计算
- 支持自定义公式
- 模型创建和训练
- 预测和评估
- 支持多种算法
- 因子打分
- ML模型打分
- 综合评分
- 多种优化算法
- 约束条件支持
- 风险模型估计
- 策略回测
- 性能指标计算
- 多策略比较
momentum_1d
: 1日动量momentum_5d
: 5日动量momentum_20d
: 20日动量
volatility_20d
: 20日波动率
rsi_14
: RSI相对强弱指标
turnover_rate
: 换手率
pe_ratio
: 市盈率pb_ratio
: 市净率roe
: 净资产收益率debt_ratio
: 资产负债率current_ratio
: 流动比率gross_margin
: 毛利率
在 config.py
中修改数据库连接:
# SQLite (默认)
SQLALCHEMY_DATABASE_URI = 'sqlite:///stock_analysis.db'
# MySQL
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://user:password@localhost/stock_analysis'
LOG_LEVEL = 'INFO'
LOG_FILE = 'logs/app.log'
系统提供了完整的功能演示:
# 运行完整演示
python examples/complete_system_example.py
# 或通过启动器运行
python run_system.py
# 选择 "5. 运行系统演示"
演示内容包括:
- 因子管理演示
- 模型管理演示
- 股票选择演示
- 组合优化演示
- 集成选股和优化演示
- 回测验证演示
- 分析功能演示
系统支持的回测指标:
- 总收益率
- 年化收益率
- 年化波动率
- 夏普比率
- 最大回撤
- 胜率
- 卡尔玛比率
- 在因子管理界面创建因子定义
- 编写因子计算公式
- 测试因子计算结果
- 在
MLModelManager
中添加新算法 - 实现训练和预测方法
- 更新API接口
- 在
PortfolioOptimizer
中实现新方法 - 添加约束条件支持
- 测试优化结果
如果遇到 empyrical
或 TA-Lib
安装失败,请使用修复版启动脚本:
# 使用修复版快速启动(推荐)
python quick_start_fixed.py
# 或使用最小化依赖
pip install -r requirements_minimal.txt
详细解决方案请查看:安装指南
-
依赖包安装失败
# 方案1:使用修复版启动脚本 python quick_start_fixed.py # 方案2:手动安装核心依赖 pip install Flask pandas numpy scikit-learn # 方案3:使用国内镜像 pip install -r requirements_minimal.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
-
Python版本兼容性
- 推荐使用 Python 3.8-3.11
- Python 3.12 可能有部分包兼容性问题
- 使用修复版脚本可以自动处理
-
数据库连接失败
- 检查数据库配置
- 确保数据库服务运行
- 验证连接权限
-
因子计算失败
- 检查数据是否存在
- 验证因子公式语法
- 查看日志错误信息
-
模型训练失败
- 确保有足够的训练数据
- 检查因子数据完整性
- 调整模型参数
- 完整的多因子选股系统
- 支持因子管理和计算
- 机器学习模型集成
- 组合优化功能
- 回测验证引擎
- Web界面和API接口
本项目采用 MIT 许可证。
欢迎提交Issue和Pull Request来改进这个项目。
多因子选股系统 - 让量化投资更简单!