基于微软QLib框架构建的一站式量化因子研究与策略回测解决方案,通过Streamlit提供友好的Web界面,降低量化研究的技术门槛。
- 🔗 深度集成QLib:基于微软QLib框架,使用qlib.contrib.data.handler进行因子计算
- 📊 数据管理:集成akshare数据源,支持A股实时行情获取与本地缓存
- 🧮 因子管理:内置Alpha158/360等经典因子,支持自定义因子编辑与验证
- 📈 因子分析:IC分析、分层回测、相关性分析等完整因子评价体系
- 🎯 策略回测:可视化策略配置、绩效分析、风险评估
- 🔬 实验管理:集成QLib workflow,支持实验记录和结果管理
- 📱 用户友好:Streamlit界面,操作简单,结果直观
- ⚡ 高性能:并行计算、智能缓存,响应迅速
- Python 3.8+
- Windows/macOS/Linux
- 克隆项目
git clone <repository-url>
cd qlib_factor_platform- 安装依赖
pip install -r requirements.txt- 初始化QLib数据
import qlib
from qlib.constant import REG_CN
from qlib.tests.data import GetData
# 下载QLib数据(首次运行需要)
GetData().qlib_data(target_dir="~/.qlib/qlib_data/cn_data", region=REG_CN)
# 初始化QLib
qlib.init(provider_uri="~/.qlib/qlib_data/cn_data", region=REG_CN)- 启动应用
streamlit run app.py应用将在浏览器中打开:http://localhost:8501
- 股票池选择:支持沪深300、中证500、中证800、中证1000、创业板指、科创50、全A股
- 时间范围配置:支持预设时间范围和自定义日期选择
- 数据字段选择:开盘价、最高价、最低价、收盘价、成交量、成交额、VWAP
- 数据获取:一键获取数据,支持进度显示和错误处理
- 数据验证:自动检查数据完整性、时间连续性、异常值等
- 缓存管理:智能缓存机制,避免重复下载,支持缓存清理
- 价格因子:MA5、MA10、MA20、MA60、价格位置等
- 成交量因子:成交量均值、成交量比率、价量相关性等
- 技术指标因子:RSI、MACD、布林带等
- 动量因子:5日、10日、20日动量,价格加速度等
- 波动率因子:收益率波动率、振幅波动率等
- Alpha158因子:158个经典技术指标因子
- Alpha360因子:360个价格序列因子
- 在线编辑器:支持Python语法高亮,实时语法验证
- 表达式验证:检查字段、函数、数学运算的合法性
- 因子模板:提供常用因子模板,支持参数化配置
- 导入导出:支持因子库的导入导出功能
- 批量计算:支持多因子并行计算
- 缓存机制:计算结果自动缓存,避免重复计算
- 结果预览:实时查看因子计算结果和统计信息
- IC计算:支持Pearson和Spearman相关系数
- 滚动IC:可配置滚动窗口,观察IC稳定性
- IC统计:IC均值、标准差、IR比率、胜率等指标
- 可视化:IC时间序列图、分布直方图
- 分层回测:按因子值分层,计算各层收益
- 收益曲线:展示各层累计收益走势
- 统计对比:各层收益率、波动率、夏普比率、最大回撤
- 收益分布:各层收益对比柱状图
- 相关性矩阵:计算因子间相关系数
- 热力图:可视化相关性矩阵
- 高相关性检测:自动识别高相关性因子对
- 相关性分布:相关系数分布直方图
- 因子选择:选择选股因子和因子方向
- 选股参数:设置选股数量、调仓频率、加权方式
- 交易成本:配置开仓成本、平仓成本、最小交易成本、滑点
- 基准设置:选择基准指数进行对比
- 一键回测:基于配置自动执行回测
- 进度显示:实时显示回测进度
- 结果保存:回测结果自动保存,支持多次对比
- 核心指标:总收益率、年化收益率、夏普比率、最大回撤
- 基准对比:与基准指数的全面对比
- 超额收益:超额收益、信息比率、跟踪误差、胜率
- 净值曲线:策略净值与基准净值对比图
- 回撤分析:回撤序列和最大回撤分析
- 月度收益:月度收益热力图
- 持仓分析:持仓数量变化和统计
qlib_factor_platform/
├── app.py # 主应用入口
├── requirements.txt # 依赖清单
├── README.md # 项目说明
├── config/ # 配置管理
│ ├── __init__.py
│ └── settings.py # 应用配置
├── data/ # 数据管理
│ ├── __init__.py
│ ├── manager.py # 数据管理器
│ └── cache.py # 缓存管理
├── factors/ # 因子管理
│ ├── __init__.py
│ ├── manager.py # 因子管理器
│ ├── presets.py # 预置因子库
│ └── custom.py # 自定义因子
├── ui/ # 用户界面
│ ├── __init__.py
│ ├── data_page.py # 数据管理页面
│ ├── factor_page.py # 因子管理页面
│ ├── analysis_page.py # 因子分析页面
│ └── backtest_page.py # 策略回测页面
└── utils/ # 工具函数
├── __init__.py
├── plots.py # 可视化工具
└── helpers.py # 辅助函数
- DataManager:统一的数据获取和管理接口
- CacheManager:智能缓存系统,支持过期清理
- 数据源集成:支持akshare、QLib等多种数据源
- FactorManager:因子计算和管理的核心类
- PresetFactors:预置因子库,包含经典技术指标
- CustomFactor:自定义因子编辑器和验证器
- IC分析:信息系数计算和可视化
- 分层分析:因子分层回测和收益分析
- 相关性分析:因子相关性矩阵和热力图
- 策略配置:灵活的策略参数配置
- 回测引擎:高效的回测执行引擎
- 绩效分析:全面的绩效指标计算和可视化
- 单因子IC分析:≤10秒(3年日线数据,500+股票)
- 分层回测:≤30秒(5层分析,3年数据)
- 多因子计算:支持并行计算,显著提升效率
- 内存使用:智能缓存管理,支持大数据量处理
- 响应时间:界面操作响应时间≤2秒
- 并发支持:支持多用户同时使用
- 安装开发依赖:
pip install -r requirements.txt - 配置QLib数据路径
- 运行测试:
python -m pytest tests/
- 在
factors/presets.py中添加预置因子 - 或使用自定义因子编辑器创建
- 更新因子类别和描述信息
- 在
data/manager.py中添加新的数据源接口 - 实现数据获取和格式转换逻辑
- 更新缓存键生成规则
- 在
analysis/目录下添加新的分析模块 - 实现分析算法和可视化逻辑
- 在UI页面中添加相应的入口
A: 检查网络连接,尝试使用代理,或手动下载后放置到指定目录。
A:
- 减少股票数量或时间范围
- 使用缓存机制
- 调整并行进程数配置
A:
- 检查表达式语法
- 确保使用正确的字段名和函数名
- 添加除零保护(+1e-12)
A:
- 检查策略配置是否合理
- 确认数据覆盖时间范围
- 验证因子计算结果
本项目采用MIT许可证,详见LICENSE文件。
欢迎提交Issue和Pull Request!
- Fork项目
- 创建特性分支
- 提交更改
- 推送到分支
- 创建Pull Request
- 项目主页:[GitHub Repository]
- 问题反馈:[Issues页面]
- 邮箱联系:[联系邮箱]
⭐ 如果这个项目对您有帮助,请给我们一个Star!