Skip to content

基于微软QLib框架构建的一站式量化因子研究与策略回测解决方案,通过Streamlit提供友好的Web界面,降低量化研究的技术门槛。

Notifications You must be signed in to change notification settings

cn-vhql/qlib_factor_platform

Repository files navigation

QLib因子分析与回测可视化平台

基于微软QLib框架构建的一站式量化因子研究与策略回测解决方案,通过Streamlit提供友好的Web界面,降低量化研究的技术门槛。

🎯 项目特色

  • 🔗 深度集成QLib:基于微软QLib框架,使用qlib.contrib.data.handler进行因子计算
  • 📊 数据管理:集成akshare数据源,支持A股实时行情获取与本地缓存
  • 🧮 因子管理:内置Alpha158/360等经典因子,支持自定义因子编辑与验证
  • 📈 因子分析:IC分析、分层回测、相关性分析等完整因子评价体系
  • 🎯 策略回测:可视化策略配置、绩效分析、风险评估
  • 🔬 实验管理:集成QLib workflow,支持实验记录和结果管理
  • 📱 用户友好:Streamlit界面,操作简单,结果直观
  • ⚡ 高性能:并行计算、智能缓存,响应迅速

🚀 快速开始

环境要求

  • Python 3.8+
  • Windows/macOS/Linux

安装步骤

  1. 克隆项目
git clone <repository-url>
cd qlib_factor_platform
  1. 安装依赖
pip install -r requirements.txt
  1. 初始化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)
  1. 启动应用
streamlit run app.py

应用将在浏览器中打开:http://localhost:8501

📖 使用指南

1. 数据管理

  • 股票池选择:支持沪深300、中证500、中证800、中证1000、创业板指、科创50、全A股
  • 时间范围配置:支持预设时间范围和自定义日期选择
  • 数据字段选择:开盘价、最高价、最低价、收盘价、成交量、成交额、VWAP
  • 数据获取:一键获取数据,支持进度显示和错误处理
  • 数据验证:自动检查数据完整性、时间连续性、异常值等
  • 缓存管理:智能缓存机制,避免重复下载,支持缓存清理

2. 因子管理

预置因子库

  • 价格因子:MA5、MA10、MA20、MA60、价格位置等
  • 成交量因子:成交量均值、成交量比率、价量相关性等
  • 技术指标因子:RSI、MACD、布林带等
  • 动量因子:5日、10日、20日动量,价格加速度等
  • 波动率因子:收益率波动率、振幅波动率等
  • Alpha158因子:158个经典技术指标因子
  • Alpha360因子:360个价格序列因子

自定义因子

  • 在线编辑器:支持Python语法高亮,实时语法验证
  • 表达式验证:检查字段、函数、数学运算的合法性
  • 因子模板:提供常用因子模板,支持参数化配置
  • 导入导出:支持因子库的导入导出功能

因子计算

  • 批量计算:支持多因子并行计算
  • 缓存机制:计算结果自动缓存,避免重复计算
  • 结果预览:实时查看因子计算结果和统计信息

3. 因子分析

IC分析

  • IC计算:支持Pearson和Spearman相关系数
  • 滚动IC:可配置滚动窗口,观察IC稳定性
  • IC统计:IC均值、标准差、IR比率、胜率等指标
  • 可视化:IC时间序列图、分布直方图

分层分析

  • 分层回测:按因子值分层,计算各层收益
  • 收益曲线:展示各层累计收益走势
  • 统计对比:各层收益率、波动率、夏普比率、最大回撤
  • 收益分布:各层收益对比柱状图

相关性分析

  • 相关性矩阵:计算因子间相关系数
  • 热力图:可视化相关性矩阵
  • 高相关性检测:自动识别高相关性因子对
  • 相关性分布:相关系数分布直方图

4. 策略回测

策略配置

  • 因子选择:选择选股因子和因子方向
  • 选股参数:设置选股数量、调仓频率、加权方式
  • 交易成本:配置开仓成本、平仓成本、最小交易成本、滑点
  • 基准设置:选择基准指数进行对比

回测执行

  • 一键回测:基于配置自动执行回测
  • 进度显示:实时显示回测进度
  • 结果保存:回测结果自动保存,支持多次对比

绩效分析

  • 核心指标:总收益率、年化收益率、夏普比率、最大回撤
  • 基准对比:与基准指数的全面对比
  • 超额收益:超额收益、信息比率、跟踪误差、胜率
  • 净值曲线:策略净值与基准净值对比图
  • 回撤分析:回撤序列和最大回撤分析
  • 月度收益:月度收益热力图
  • 持仓分析:持仓数量变化和统计

🏗️ 项目结构

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秒
  • 并发支持:支持多用户同时使用

🛠️ 开发指南

环境配置

  1. 安装开发依赖:pip install -r requirements.txt
  2. 配置QLib数据路径
  3. 运行测试:python -m pytest tests/

添加新因子

  1. factors/presets.py中添加预置因子
  2. 或使用自定义因子编辑器创建
  3. 更新因子类别和描述信息

扩展数据源

  1. data/manager.py中添加新的数据源接口
  2. 实现数据获取和格式转换逻辑
  3. 更新缓存键生成规则

自定义分析

  1. analysis/目录下添加新的分析模块
  2. 实现分析算法和可视化逻辑
  3. 在UI页面中添加相应的入口

❓ 常见问题

Q: QLib数据下载失败怎么办?

A: 检查网络连接,尝试使用代理,或手动下载后放置到指定目录。

Q: 因子计算速度慢怎么办?

A:

  • 减少股票数量或时间范围
  • 使用缓存机制
  • 调整并行进程数配置

Q: 自定义因子验证失败怎么办?

A:

  • 检查表达式语法
  • 确保使用正确的字段名和函数名
  • 添加除零保护(+1e-12)

Q: 回测结果异常怎么办?

A:

  • 检查策略配置是否合理
  • 确认数据覆盖时间范围
  • 验证因子计算结果

📄 许可证

本项目采用MIT许可证,详见LICENSE文件。

🤝 贡献指南

欢迎提交Issue和Pull Request!

  1. Fork项目
  2. 创建特性分支
  3. 提交更改
  4. 推送到分支
  5. 创建Pull Request

📞 联系方式

  • 项目主页:[GitHub Repository]
  • 问题反馈:[Issues页面]
  • 邮箱联系:[联系邮箱]

🙏 致谢


⭐ 如果这个项目对您有帮助,请给我们一个Star!

About

基于微软QLib框架构建的一站式量化因子研究与策略回测解决方案,通过Streamlit提供友好的Web界面,降低量化研究的技术门槛。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages