# FactorHub **Repository Path**: qianglegend/FactorHub ## Basic Information - **Project Name**: FactorHub - **Description**: FactorHub是一个自研的现代化量化因子分析平台,专为量化投资研究者设计。平台完全自主研发,集成了「数据获取-因子管理-因子分析-策略回测-因子挖掘」的完整工作流程,通过直观的Web界面和强大的计算引擎,大幅降低量化分析的门槛,提高研究效率。 FactorHub = Factor(因子) + Hub(中心),意为因子分析和管理的核心枢纽。 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-10 - **Last Updated**: 2025-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FactorHub - 量化因子分析平台
![FactorHub Logo](https://img.shields.io/badge/FactorHub-量化因子分析平台-blue?style=for-the-badge) ![Python](https://img.shields.io/badge/Python-3.8%2B-green?style=for-the-badge) ![License](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge) [![Stars](https://img.shields.io/github/stars/cn-vhql/FactorHub?style=social)](https://github.com/cn-vhql/FactorHub) [![Forks](https://img.shields.io/github/forks/cn-vhql/FactorHub?style=social)](https://github.com/cn-vhql/FactorHub) [![Issues](https://img.shields.io/github/issues/cn-vhql/FactorHub)](https://github.com/cn-vhql/FactorHub/issues) ![Code Size](https://img.shields.io/github/languages/code-size/cn-vhql/FactorHub)
## 📖 项目简介 FactorHub是一个**完全开源的现代化量化因子分析平台**,专为量化投资研究者设计。平台完全开源,集成了「数据获取-因子管理-因子分析-策略回测-因子挖掘」的完整工作流程,通过直观的Web界面和强大的计算引擎,大幅降低量化分析的门槛,提高研究效率。 **FactorHub** = **Factor**(因子) + **Hub**(中心),意为因子分析和管理的核心枢纽。 ### 🎯 核心价值 - **全流程覆盖**: 从原始数据到投资策略的一站式解决方案 - **可视化驱动**: 直观的图表和界面,无需编程经验即可操作 - **高性能计算**: 多进程并行计算,支持大规模数据处理 - **模块化设计**: 灵活的组件架构,易于扩展和定制 - **专业级分析**: 涵盖IC分析、分层回测、相关性分析等专业方法 - **自研引擎**: 完全自主研发的因子计算和回测引擎,确保灵活性 ## 🚀 核心功能 ### 📊 数据管理模块 - **智能数据获取**: 集成AKShare API,免费获取A股市场数据 - **自动化预处理**: 智能复权处理、缺失值填充、异常值检测与清洗 - **高效缓存系统**: 本地文件缓存,支持增量更新和过期管理 - **多源数据支持**: 支持本地文件、数据库、API接口等多种数据源 ### 🔧 因子管理模块 - **丰富因子库**: 内置200+预置因子(技术指标、基本面、量价等) - **自定义因子**: 支持Python代码编辑器、CSV文件上传、公式编辑器 - **批量计算引擎**: 多进程并行计算,自动任务调度和负载均衡 - **因子版本管理**: 支持因子历史版本追踪和回滚 ### 📈 因子分析模块 - **IC/IR分析**: 信息系数、信息比率、IC胜率、IC衰减分析 - **分层回测**: 十层分组回测、多空收益分析、换手率统计 - **稳定性检验**: 滚动窗口分析、分布特征、因子衰减分析 - **相关性分析**: 因子间相关性矩阵、聚类分析、多重共线性检测 - **归因分析**: Brinson模型、Barra风险模型、行业中性化 ### 🎯 策略回测模块 - **多策略支持**: 因子加权、等权重、市值加权、风险平价、动量反转 - **完整绩效指标**: 收益分析、风险指标、归因分析、基准比较 - **交易成本模拟**: 手续费、滑点、冲击成本、资金限制 - **动态再平衡**: 支持日频、周频、月频等多种再平衡频率 ### ⚡ 因子挖掘模块 - **组合生成**: 基于预置因子的数学组合生成新因子 - **遗传算法**: 智能因子发现、参数优化、适应度评估 - **机器学习**: 特征工程、LASSO回归、随机森林重要性分析 - **因子合成**: 多因子模型构建、因子权重优化 ### 🎨 可视化界面 - **现代化UI**: 基于Streamlit的响应式Web界面 - **交互式图表**: Plotly驱动的动态图表、支持缩放、筛选、导出 - **实时监控**: 任务进度条、系统状态监控、错误提示 - **多主题支持**: 明暗主题切换、个性化界面配置 ## 系统截图 ![alt text](docs/png/image.png) ![alt text](docs/png/image-1.png) ![alt text](docs/png/image-2.png) ![alt text](docs/png/image-3.png) ![alt text](docs/png/image-4.png) ![alt text](docs/png/image-5.png) ![alt text](docs/png/image-6.png) ![alt text](docs/png/image-7.png) ## 🏗️ 技术架构 ### 🔧 核心技术栈 - **AKShare**: 国内好用又免费的金融数据接口,覆盖A股、港股、美股市场 - **Streamlit**: 快速构建数据应用的Web框架,提供现代化UI体验 - **Plotly**: 交互式数据可视化库,支持复杂图表展示 - **Pandas/Numpy**: 高性能数据处理和数值计算的核心引擎 - **Scipy**: 科学计算库,提供统计分析功能 - **Scikit-learn**: 机器学习算法库,支持因子挖掘和特征工程 - **Concurrent.Futures**: Python并行计算框架,支持多进程任务调度 ### 🏛️ 自研核心组件 #### 📊 数据处理引擎 - **AKShareDataProvider**: 封装AKShare API,提供统一的数据获取接口 - **DataPreprocessor**: 数据清洗、预处理、标准化处理模块 - **缓存系统**: 智能缓存机制,避免重复数据请求 #### 🔧 因子计算引擎 - **FactorCalculator**: 高性能因子计算引擎,支持并行计算 - **FactorLibrary**: 预置因子库,包含20+常用技术指标 - **CustomFactorManager**: 自定义因子管理系统 - **BaseFactor**: 因子基类,支持扩展新的因子类型 #### 📈 分析引擎 - **FactorAnalyzer**: IC分析、分层回测、相关性分析 - **PortfolioAnalyzer**: 投资组合分析和绩效评估 - **统计分析工具**: 完整的统计检验和显著性分析 #### 🎯 回测引擎 - **Backtester**: 事件驱动的回测引擎 - **FactorStrategy**: 因子策略实现框架 - **风险管理**: 止损、仓位管理、交易成本模拟 #### ⚡ 因子挖掘引擎 - **GeneticFactorMiner**: 遗传算法因子挖掘系统 - **FactorGenerator**: 因子组合生成器 - **适应度评估**: 多维度因子有效性评价体系 ### 📁 项目结构 (7,500+ 行代码) ``` FactorHub/ # 📊 量化因子分析平台 ├── 📂 data_processor/ # 🔗 数据获取与预处理模块 │ ├── akshare_data.py # AKShare数据接口封装 (330行) │ ├── data_preprocessor.py # 数据清洗与预处理 (280行) │ └── __init__.py # 模块导出 ├── 📂 factor_manager/ # ⚙️ 因子管理与计算引擎 │ ├── factor_calculator.py # 高性能因子计算引擎 (330行) │ ├── factor_lib.py # 预置因子库实现 (400行) │ ├── custom_factor.py # 自定义因子管理 (200行) │ └── __init__.py # 模块导出 ├── 📂 analyzer/ # 📈 因子分析与投资组合分析 │ ├── factor_analyzer.py # IC分析、分层回测、相关性分析 (450行) │ ├── portfolio_analyzer.py # 投资组合绩效评估 (380行) │ └── __init__.py # 模块导出 ├── 📂 backtester/ # 🎯 策略回测引擎 │ ├── backtester.py # 事件驱动回测引擎 (520行) │ ├── factor_strategy.py # 因子策略实现框架 (300行) │ ├── __init__.py # 模块导出 │ └── strategy.py # 策略基类定义 (150行) ├── 📂 factor_miner/ # ⚡ 因子挖掘算法 │ ├── factor_generator.py # 因子组合生成器 (280行) │ ├── genetic_miner.py # 遗传算法挖掘系统 (450行) │ └── __init__.py # 模块导出 ├── 📂 ui/ # 🖥️ Streamlit Web界面 │ ├── app.py # 主应用入口 (1,200行) │ └── __init__.py # 模块导出 ├── 📂 utils/ # 🛠️ 核心工具函数库 │ ├── config.py # 全局配置管理 (90行) │ ├── logger.py # 统一日志系统 (40行) │ ├── helpers.py # 辅助函数集合 (200行) │ └── __init__.py # 模块导出 ├── 📂 data/ # 💾 数据存储目录 │ ├── cache/ # 智能缓存数据 │ ├── factors/ # 计算因子存储 │ └── results/ # 分析结果存储 ├── 📂 docs/ # 📚 项目文档 │ ├── QUICKSTART.md # 快速开始指南 │ ├── NETWORK_SETUP.md # 网络配置说明 │ └── PROJECT_SUMMARY.md # 项目详细说明 ├── 📂 scripts/ # 🚀 启动脚本 │ └── start_app.py # 应用启动脚本 ├── 📂 tests/ # 🧪 单元测试 │ ├── test_*.py # 各模块测试文件 │ └── run_tests.py # 测试运行器 ├── 📂 examples/ # 💡 使用示例 │ └── example_usage.py # 基础使用示例 ├── 📄 requirements.txt # 📦 依赖包列表 (14个核心依赖) ├── 📄 setup.py # ⚙️ 项目安装配置 ├── 📄 main.py # 🎮 主程序入口 ├── 📄 imports.py # 📥 统一导入管理 (安全导入机制) ├── 📄 run_streamlit.py # 🌐 Streamlit启动器 ├── 📄 __init__.py # 📦 包初始化 └── 📄 README.md # 📖 项目说明文档 ``` ### 🏗️ 系统架构图 ```mermaid graph TB subgraph "数据层 Data Layer" A[AKShare API] --> B[AKShareDataProvider] B --> C[DataPreprocessor] C --> D[智能缓存系统] end subgraph "计算层 Compute Layer" E[FactorCalculator
因子计算引擎] F[FactorAnalyzer
分析引擎] G[Backtester
回测引擎] H[GeneticFactorMiner
因子挖掘引擎] end subgraph "展示层 Presentation Layer" I[Streamlit Web UI] J[Plotly可视化] K[交互式图表] end D --> E E --> F E --> G E --> H F --> I G --> I H --> I I --> J J --> K style A fill:#ff9999 style I fill:#99ccff style E fill:#99ff99 style F fill:#ffcc99 style G fill:#cc99ff style H fill:#ff99cc ``` ### 🔄 数据流架构 ```mermaid graph TD subgraph "外部数据源 External Data Sources" A[AKShare API
A股实时数据] B[本地文件
CSV/Excel] C[数据库
MySQL/PostgreSQL] end subgraph "数据处理管道 Data Processing Pipeline" D[AKShareDataProvider
数据获取器] E[DataPreprocessor
数据预处理器] F[智能缓存系统
Smart Cache System] end subgraph "因子计算系统 Factor Computing System" G[FactorCalculator
因子计算引擎] H[FactorLibrary
预置因子库] I[CustomFactorManager
自定义因子管理] J[GeneticFactorMiner
因子挖掘引擎] end subgraph "分析回测系统 Analysis & Backtesting" K[FactorAnalyzer
因子分析器] L[Backtester
回测引擎] M[PortfolioAnalyzer
组合分析器] end subgraph "用户界面 User Interface" N[Streamlit Web UI
用户交互界面] O[Plotly Charts
可视化图表] P[Export Functions
结果导出] end A --> D B --> D C --> D D --> E E --> F F --> G H --> G I --> G J --> G G --> K G --> L G --> M K --> N L --> N M --> N N --> O N --> P style A fill:#ffcccc style D fill:#ccffcc style G fill:#ccccff style K fill:#ffccff style N fill:#ffffcc ``` ## 🎯 应用场景 ### 👥 目标用户 - **量化研究员**: 专业量化投资研究团队 - **个人投资者**: 具备一定量化知识的个人投资者 - **金融机构**: 基金、券商、保险等投资机构 - **学术研究者**: 金融学院、研究所的学术人员 - **金融科技开发者**: 量化系统开发工程师 ### 💼 典型应用场景 #### 1. 因子研究与开发 - **因子有效性验证**: 测试新因子的IC、IR表现 - **因子组合优化**: 多因子模型构建与权重优化 - **因子稳定性分析**: 跨周期、跨市场因子表现检验 - **自定义因子开发**: 基于Python代码的因子快速原型开发 #### 2. 策略回测与验证 - **多策略对比**: 不同策略类型的风险收益特征对比 - **参数敏感性分析**: 策略参数优化与鲁棒性检验 - **交易成本分析**: 考虑滑点、手续费等实际交易成本 - **风险控制测试**: 止损、仓位管理等风险控制措施验证 #### 3. 投资组合管理 - **行业配置优化**: 基于因子的行业轮动策略 - **风格因子配置**: 大小盘、价值成长等风格因子配置 - **风险预算管理**: 基于风险模型的投资组合优化 - **绩效归因分析**: 投资组合收益来源分解 #### 4. 市场研究与监控 - **市场风格分析**: 市场主流风格识别与跟踪 - **因子估值监测**: 各类因子的估值水平跟踪 - **异常因子检测**: 因子表现异常的及时发现与预警 - **定期报告生成**: 自动化的研究分析报告生成 ## 🚀 快速开始 ### 📋 系统要求 - **操作系统**: Windows 10+, macOS 10.14+, Ubuntu 18.04+ - **Python版本**: Python 3.8或更高版本 - **内存要求**: 至少4GB RAM(推荐8GB+) - **存储空间**: 至少10GB可用磁盘空间 - **网络要求**: 稳定的互联网连接(用于数据获取) ### 🛠️ 环境安装 #### 方式一:使用虚拟环境(推荐) ```bash # 1. 克隆项目 git clone https://github.com/cn-vhql/FactorHub.git cd FactorHub # 2. 创建虚拟环境 python -m venv factorhub_env # 3. 激活虚拟环境 # Windows: factorhub_env\Scripts\activate # macOS/Linux: source factorhub_env/bin/activate # 4. 升级pip pip install --upgrade pip # 5. 安装项目依赖 pip install -r requirements.txt # 注意:本项目为自研系统,不依赖QLib框架 # 如需额外功能,可选择性安装: # pip install qlib # 可选:如需QLib兼容性 ``` #### 方式二:使用conda环境 ```bash # 1. 创建conda环境 conda create -n qlib_lab python=3.9 # 2. 激活环境 conda activate qlib_lab # 3. 安装依赖 pip install -r requirements.txt ``` ### 🎮 启动应用 #### 方式1:使用启动脚本(推荐新手) ```bash python scripts/start_app.py ``` #### 方式2:使用主程序 ```bash python main.py ``` #### 方式3:直接使用Streamlit ```bash streamlit run ui/app.py --server.address=0.0.0.0 --server.port=8501 ``` #### 方式4:使用Docker(生产环境) ```bash # 构建镜像 docker build -t qlib-lab . # 运行容器 docker run -p 8501:8501 qlib-lab ``` ### 🌐 访问界面 启动成功后,在浏览器中打开以下地址: - **本地访问**: http://localhost:8501 - **局域网访问**: http://[你的IP地址]:8501 - **云服务器**: http://[云服务器公网IP]:8501 > **💡 提示**: 如果在云服务器上运行,请确保安全组已开放8501端口。 ## 📚 技术原理 ### 🔬 因子分析理论基础 #### 信息系数(IC)分析 **信息系数(Information Coefficient)**是衡量因子预测能力的核心指标: ```math IC_t = Corr(F_t, R_{t+1}) ``` 其中: - `F_t` 是因子在t期的值 - `R_{t+1}` 是股票在t+1期的收益率 **信息比率(IR)**: ```math IR = \frac{Mean(IC)}{Std(IC)} \times \sqrt{252} ``` #### 分层回测原理 将股票按照因子值分为N层,通过比较各层收益表现来评估因子单调性: 1. **排序分层**: 按因子值将股票分为10层 2. **构建组合**: 每层等权重构建投资组合 3. **收益计算**: 计算各层的收益率序列 4. **绩效评估**: 分析多空收益、夏普比率等指标 #### 因子中性化 消除因子与常见风险因子的相关性: ```math F^{neutralized} = F - \beta \cdot X ``` 其中: - `F` 是原始因子值 - `X` 是中性化因子(市值、行业等) - `β` 是回归系数 ### 🧬 因子挖掘算法 #### 遗传算法(Genetic Algorithm) ```mermaid graph TD A[初始种群] --> B[适应度评估] B --> C[选择操作] C --> D[交叉操作] D --> E[变异操作] E --> F[新一代种群] F --> B B --> G{终止条件} G -->|是| H[输出最优因子] G -->|否| C ``` **核心操作**: - **选择(Selection)**: 按适应度概率选择优秀个体 - **交叉(Crossover)**: 两个个体交换基因产生新个体 - **变异(Mutation)**: 随机改变个体基因增加多样性 #### 因子组合生成 基于数学运算符生成复合因子: ``` 新因子 = 运算符(因子1, 因子2, ..., 因子N) 运算符类型: - 算术运算: +, -, *, / - 比较运算: >, <, = - 逻辑运算: AND, OR, NOT - 统计运算: MEAN, STD, RANK ``` ### 📊 回测引擎架构 #### 事件驱动回测 ```mermaid sequenceDiagram participant Market as 市场数据 participant Strategy as 策略模块 participant Portfolio as 投资组合 participant Risk as 风险管理 loop 每个交易日 Market->>Strategy: 新市场数据 Strategy->>Strategy: 生成交易信号 Strategy->>Portfolio: 提交交易订单 Portfolio->>Risk: 风险检查 Risk-->>Portfolio: 风险控制结果 Portfolio->>Portfolio: 执行交易 Portfolio->>Strategy: 更新组合状态 end ``` #### 绩效分析指标 - **收益率指标**: 总收益率、年化收益率、超额收益率 - **风险指标**: 波动率、最大回撤、VaR、CVaR - **风险调整收益**: 夏普比率、索提诺比率、卡尔玛比率 - **交易指标**: 换手率、交易成本、胜率 ### 🖥️ 用户界面设计 #### 响应式布局 - **自适应设计**: 支持桌面、平板、手机多种设备 - **组件化架构**: 模块化的UI组件,便于维护和扩展 - **主题系统**: 明暗主题切换,保护用户视力 #### 交互设计原则 - **即时反馈**: 所有操作都有明确的状态反馈 - **进度提示**: 长时间任务显示进度条和预估时间 - **错误处理**: 友好的错误提示和恢复建议 - **操作引导**: 新手引导和帮助文档 ## 📖 使用指南 ### 📊 数据获取模块 #### 基础数据获取 1. **选择市场范围**: - 沪市(上交所):6xxxxx股票 - 深市(深交所):0xxxxx、3xxxxx股票 - 全部A股:包含所有上市股票 2. **选择股票池**: - 沪深300:沪深两市市值最大的300只股票 - 中证500:沪深两市第301-800只股票 - 创业板:创业板上市股票 - 自定义:手动输入股票代码列表 3. **设置时间参数**: - 开始日期:建议选择3年以上历史数据 - 结束日期:最新交易日 - 数据频率:日频、周频、月频 4. **数据质量检查**: - 自动检测缺失值 - 异常值处理 - 复权方式选择(前复权、后复权、不复权) ### 🔧 因子计算模块 #### 预置因子使用 1. **技术指标类**: - 趋势指标:MACD、MA、EMA、DMA - 动量指标:RSI、CCI、ROC、MOM - 成交量指标:VOL、OBV、VRSI - 波动率指标:ATR、BOLL、STD 2. **基本面类**: - 估值指标:PE、PB、PS、PCF - 盈利指标:ROE、ROA、毛利率、净利率 - 成长指标:营收增长率、净利润增长率 3. **自定义因子**: - Python代码编辑器 - 语法高亮和错误提示 - 实时预览功能 ### 📈 因子分析模块 #### IC分析步骤 1. **选择因子**:从因子库中选择要分析的因子 2. **设置参数**: - 回溯期:通常为20个交易日 - 分组方式:等权重分组 - 中性化处理:市值中性化、行业中性化 3. **结果解读**: - IC均值:因子预测能力的平均水平 - IC标准差:因子稳定性 - IC胜率:IC>0的比例 - IR比率:风险调整后的预测能力 #### 分层回测步骤 1. **分层设置**: - 分层数量:通常为5层或10层 - 分层方式:等样本数、等权重 - 再平衡频率:日频、周频、月频 2. **绩效指标**: - 各层年化收益率 - 多空组合收益率 - 夏普比率和最大回撤 - 换手率和交易成本 ### 🎯 策略回测模块 #### 策略配置 1. **因子选择**:选择1-5个相关性较低的因子 2. **权重分配**: - 等权重:所有因子权重相同 - IR加权:按信息比率分配权重 - 风险平价:等风险贡献分配 3. **组合构建**: - 持仓数量:50-200只股票 - 再平衡频率:月频或季频 - 交易成本:佣金0.03%,滑点0.1% #### 风险控制 1. **止损机制**:单日亏损超过5%强制平仓 2. **仓位限制**:单只股票权重不超过5% 3. **行业偏离**:相对于基准的行业偏离不超过10% ### ⚡ 因子挖掘模块 #### 遗传算法设置 1. **种群参数**: - 种群大小:50-100个个体 - 迭代代数:20-50代 - 变异概率:0.1-0.3 2. **适应度函数**: - IC均值:权重40% - IR比率:权重30% - 稳定性:权重20% - 复杂度:权重10% 3. **结果筛选**: - IC均值 > 0.05 - IR比率 > 0.5 - 换手率 < 100% ## 🎮 使用方法 ### 💻 快速上手流程 #### 第一步:数据准备 1. **启动应用**:在浏览器中打开FactorHub界面 2. **进入数据管理**:点击侧边栏"📊 数据管理" 3. **选择数据范围**: - 市场:选择"全部"获取完整A股数据 - 股票池:选择"沪深300"作为示例 - 时间范围:2020-01-01 到 2024-01-01 4. **下载数据**:点击"开始获取数据"按钮 5. **等待完成**:观察进度条,等待数据下载完成 #### 第二步:因子计算 1. **进入因子管理**:点击侧边栏"🔧 因子管理" 2. **选择因子**: - 勾选"RSI"(相对强弱指标) - 勾选"MACD"(移动平均收敛发散) - 勾选"PE_RATIO"(市盈率) 3. **批量计算**:点击"计算选中因子"按钮 4. **查看结果**:等待计算完成,查看因子统计信息 #### 第三步:因子分析 1. **进入因子分析**:点击侧边栏"📈 因子分析" 2. **选择分析目标**:选择刚计算的"RSI"因子 3. **设置分析参数**: - IC回溯期:20天 - 分层数量:10层 - 中性化:选择"市值中性化" 4. **执行分析**:点击"开始分析"按钮 5. **查看结果**:分析完成后查看IC图表和分层回测结果 #### 第四步:策略回测 1. **进入策略回测**:点击侧边栏"🎯 策略回测" 2. **配置策略**: - 策略名称:RSI_MACD组合策略 - 选择因子:RSI、MACD - 权重分配:等权重 - 持仓数量:100只股票 3. **设置回测参数**: - 回测区间:2021-01-01 到 2024-01-01 - 初始资金:100万 - 交易成本:0.3% 4. **执行回测**:点击"开始回测"按钮 5. **分析结果**:查看回测报告和绩效指标 ### 🔧 高级功能使用 #### 自定义因子开发 1. **在因子管理页面点击"自定义因子"** 2. **编写因子代码**: ```python def custom_momentum_factor(data, window=20): """ 自定义动量因子:20日收益率除以波动率 """ # 计算20日收益率 returns = data['close'].pct_change(window) # 计算20日波动率 volatility = data['close'].pct_change().rolling(window).std() # 动量因子 = 收益率 / 波动率 momentum_factor = returns / volatility return momentum_factor.fillna(0) ``` 3. **测试和保存**:点击"测试因子"验证代码正确性 #### 因子挖掘自动化 1. **进入因子挖掘页面**:点击侧边栏"⚡ 因子挖掘" 2. **选择挖掘方法**:选择"遗传算法" 3. **设置参数**: - 种群大小:50 - 迭代代数:30 - 目标因子数量:10 4. **开始挖掘**:点击"开始因子挖掘" 5. **结果分析**:挖掘完成后查看发现的新因子排名 ### 📱 界面操作技巧 #### 导航技巧 - **侧边栏导航**:使用左侧导航栏快速切换功能模块 - **进度监控**:长时间运行的任务会显示进度条和预估完成时间 - **状态提示**:所有操作都有明确的成功/失败提示 #### 数据可视化 - **图表交互**:支持缩放、平移、数据点悬停查看详情 - **数据导出**:支持将分析结果导出为CSV、Excel格式 - **报告生成**:一键生成PDF格式的研究报告 #### 配置管理 - **参数保存**:常用参数组合可以保存为配置模板 - **历史记录**:自动保存操作历史,支持结果回溯 - **缓存管理**:可查看和管理缓存数据,清理过期缓存 ## 💡 示例演示 ### 示例1: 基本因子分析流程
📖 点击展开详细代码示例 ```python # 导入FactorHub核心模块 from data_processor.akshare_data import AKShareDataProvider from factor_manager.factor_calculator import FactorCalculator from analyzer.factor_analyzer import FactorAnalyzer import pandas as pd # 1. 获取股票数据 print("🔄 正在获取数据...") data_provider = AKShareDataProvider() data = data_provider.get_multiple_stocks_data( symbols=['000001', '000002', '000858'], # 平安银行、万科A、五粮液 start_date='2020-01-01', end_date='2023-12-31' ) print(f"✅ 数据获取完成,共{len(data)}条记录") print(f"📊 包含股票: {data['symbol'].unique().tolist()}") # 2. 计算RSI因子(使用自研因子计算引擎) print("🔧 正在计算RSI因子...") calculator = FactorCalculator() factor_data = calculator.calculate_single_factor('RSI', data) if not factor_data.empty: print(f"✅ RSI因子计算完成,有效数据: {len(factor_data)}条") # 3. IC分析(信息系数分析) print("📈 正在进行IC分析...") analyzer = FactorAnalyzer() # 首先计算收益率列 factor_data['return_20d'] = factor_data.groupby('symbol')['close'].pct_change(20).shift(-20) ic_results = analyzer.calculate_ic_analysis( factor_data, 'RSI', return_col='return_20d', method='spearman' ) if 'error' not in ic_results: print(f"📊 IC分析结果:") print(f" IC均值: {ic_results['ic_mean']:.4f}") print(f" IC标准差: {ic_results['ic_std']:.4f}") print(f" IC胜率: {ic_results['ic_win_rate']:.2%}") print(f" IR比率: {ic_results['ir_ratio']:.4f}") print(f" 正IC天数: {ic_results['positive_ic_days']}") print(f" 总天数: {ic_results['total_days']}") else: print(f"❌ IC分析失败: {ic_results['error']}") # 4. 因子统计摘要 print("📋 因子统计摘要:") summary = calculator.get_factor_summary(factor_data, 'RSI') if 'error' not in summary: print(f" 因子名称: {summary['factor_name']}") print(f" 数据范围: {summary['date_range']['start']} 至 {summary['date_range']['end']}") print(f" 股票数量: {summary['symbol_count']}") print(f" 有效数据: {summary['valid_count']:,} 条") print(f" 缺失率: {summary['missing_rate']:.2%}") print(f" 均值: {summary['mean']:.4f}") print(f" 标准差: {summary['std']:.4f}") print(f" 最小值: {summary['min']:.4f}") print(f" 最大值: {summary['max']:.4f}") else: print("❌ RSI因子计算失败") print("\n🎉 示例分析完成!") print("💡 提示: 使用FactorHub Web界面可以获得更丰富的可视化分析结果") ```
### 示例2: 多因子策略回测
📖 点击展开详细代码示例 ```python # 导入FactorHub回测模块 from data_processor.akshare_data import AKShareDataProvider from factor_manager.factor_calculator import FactorCalculator from backtester.backtester import Backtester from backtester.factor_strategy import FactorStrategy import pandas as pd import numpy as np # 1. 数据准备 print("📊 准备回测数据...") data_provider = AKShareDataProvider() data = data_provider.get_multiple_stocks_data( symbols=['000001', '000002', '000858', '002415', '600036'], # 平安银行、万科A、五粮液、海康威视、招商银行 start_date='2020-01-01', end_date='2023-12-31' ) print(f"✅ 数据准备完成: {len(data)}条记录,{data['symbol'].nunique()}只股票") # 2. 批量计算因子(使用自研并行计算引擎) print("⚙️ 计算多因子数据...") calculator = FactorCalculator() factor_names = ['RSI', 'MACD', 'MA5', 'MA20'] # 使用预置因子 factor_data = calculator.calculate_multiple_factors( factor_names=factor_names, data=data, parallel=True # 启用并行计算 ) print(f"✅ 因子计算完成,包含因子: {[col for col in factor_data.columns if col in factor_names]}") # 3. 创建因子策略(使用自研策略框架) print("🎯 构建多因子策略...") strategy = FactorStrategy( name='RSI_MACD_MA组合策略', factor_names=factor_names, factor_weights={ 'RSI': 0.4, # 相对强弱指标权重 'MACD': 0.3, # MACD指标权重 'MA5': 0.15, # 5日均线权重 'MA20': 0.15 # 20日均线权重 }, top_percent=0.4, # 选择因子综合评分前40%的股票 rebalance_frequency='monthly', # 月度调仓 long_only=True # 只做多 ) # 4. 执行回测(使用自研事件驱动回测引擎) print("🚀 开始策略回测...") backtester = Backtester( initial_capital=1000000, # 100万初始资金 commission=0.0003, # 万分之三手续费 slippage=0.001, # 千分之一滑点 benchmark="000300" # 沪深300作为基准 ) # 计算目标收益率 factor_data['return_1d'] = factor_data.groupby('symbol')['close'].pct_change(1) results = backtester.run_backtest( strategy=strategy, data=factor_data, start_date='2021-01-01', end_date='2023-12-31' ) # 5. 分析回测结果 if 'error' not in results: print("📈 回测结果分析:") print(f" 总收益率: {results.get('total_return', 0):.2%}") print(f" 年化收益率: {results.get('annual_return', 0):.2%}") print(f" 年化波动率: {results.get('annual_volatility', 0):.2%}") print(f" 夏普比率: {results.get('sharpe_ratio', 0):.4f}") print(f" 最大回撤: {results.get('max_drawdown', 0):.2%}") print(f" 胜率: {results.get('win_rate', 0):.2%}") print(f" 交易次数: {results.get('total_trades', 0)}") print(f" 平均换手率: {results.get('avg_turnover', 0):.2%}") # 6. 风险指标分析 print("🎯 风险指标:") print(f" VaR(95%): {results.get('var_95', 0):.2%}") print(f" 最大连续亏损: {results.get('max_consecutive_losses', 0)} 天") print(f" 卡尔玛比率: {results.get('calmar_ratio', 0):.4f}") else: print(f"❌ 回测失败: {results['error']}") print("\n🎉 策略回测完成!") print("💡 提示: FactorHub Web界面提供更详细的回测报告和可视化图表") ```
### 示例3: 遗传算法因子挖掘
📖 点击展开详细代码示例 ```python # 导入FactorHub因子挖掘模块 from data_processor.akshare_data import AKShareDataProvider from factor_manager.factor_calculator import FactorCalculator from factor_miner.genetic_miner import GeneticFactorMiner from factor_miner.factor_generator import FactorGenerator import pandas as pd import numpy as np # 1. 准备挖掘数据 print("📊 准备因子挖掘数据...") data_provider = AKShareDataProvider() data = data_provider.get_multiple_stocks_data( symbols=['000001', '000002', '000858', '002415', '600036', '600519'], # 6只代表性股票 start_date='2020-01-01', end_date='2023-12-31' ) print(f"✅ 数据准备完成: {len(data)}条记录,{data['symbol'].nunique()}只股票") # 2. 计算基础因子池 print("🔧 计算基础因子池...") calculator = FactorCalculator() base_factors = ['RSI', 'MACD', 'MA5', 'MA20', 'VOL', 'STD'] # 使用预置因子 factor_data = calculator.calculate_multiple_factors(base_factors, data) print(f"✅ 基础因子计算完成: {base_factors}") # 3. 计算目标收益率(20日远期收益率) print("📈 计算目标收益率...") factor_data['forward_return_20d'] = factor_data.groupby('symbol')['close'].pct_change(20).shift(-20) # 清理数据 factor_data = factor_data.dropna(subset=['forward_return_20d'] + base_factors) print(f"✅ 有效数据样本: {len(factor_data)}条") # 4. 配置遗传算法挖掘器(使用自研算法) print("🧬 配置遗传算法参数...") miner = GeneticFactorMiner( population_size=30, # 种群大小 generations=15, # 迭代代数 mutation_rate=0.15, # 变异率 crossover_rate=0.7, # 交叉率 elitism_rate=0.1, # 精英保留比例 max_complexity=3 # 最大因子复杂度 ) print(f"📋 挖掘参数:") print(f" 种群大小: {miner.population_size}") print(f" 迭代代数: {miner.generations}") print(f" 变异率: {miner.mutation_rate}") print(f" 交叉率: {miner.crossover_rate}") # 5. 执行因子挖掘 print("⚡ 开始遗传算法因子挖掘...") print("🔄 这可能需要几分钟时间,请耐心等待...") mined_factors = miner.mine_factors( data=factor_data, returns=factor_data['forward_return_20d'], target_count=5 # 目标发现5个优质因子 ) # 6. 分析挖掘结果 if mined_factors: print("🎉 因子挖掘完成!发现以下优质因子:") for i, factor in enumerate(mined_factors, 1): print(f"\n🏆 因子 #{i}: {factor.name}") print(f" 📝 表达式: {factor.expression}") print(f" 📊 适应度: {factor.fitness:.4f}") print(f" 🎯 代数: 第{factor.generation}代") # 计算因子统计 if hasattr(factor, 'factor_values') and not factor.factor_values.empty: ic_mean = factor.factor_values.corr(factor_data['forward_return_20d']) print(f" 📈 IC均值: {ic_mean:.4f}") # IC胜率 daily_ic = factor_data.groupby('date').apply( lambda x: factor.factor_values.loc[x.index].corr(x['forward_return_20d']) ) ic_win_rate = (daily_ic > 0).mean() print(f" 🎯 IC胜率: {ic_win_rate:.2%}") # 换手率估算 rank_changes = factor.factor_values.rank().pct_change().abs().mean() turnover = rank_changes * 2 # 粗略估算 print(f" 🔄 换手率: {turnover:.2%}") else: print("❌ 未发现有效的因子") print("\n💡 挖掘说明:") print(" - 遗传算法通过选择、交叉、变异操作优化因子表达式") print(" - 适应度函数综合考量IC均值、稳定性、换手率等指标") print(" - 发现的因子可以直接用于策略构建和进一步分析") print(" - 建议在Web界面中使用因子挖掘功能获得更好的体验") # 7. 因子验证(可选) if mined_factors: print("\n🔍 因子验证:") best_factor = mined_factors[0] print(f"最佳因子: {best_factor.name}") print(f"表达式: {best_factor.expression}") print("✅ 可在因子管理页面进一步验证该因子的有效性") ```
## 配置说明 ### 数据配置 ```python DEFAULT_CONFIG = { "data": { "default_start_date": "2020-01-01", "default_end_date": "2023-12-31", "frequency": "daily", "adjust_type": "qfq", } } ``` ### 回测配置 ```python DEFAULT_CONFIG = { "backtest": { "commission": 0.0003, "slippage": 0.001, "rebalance_frequency": "monthly", } } ``` ## 性能优化 ### 并行计算 - 因子计算支持多进程并行 - 自动检测CPU核心数 - 任务负载均衡分配 ### 缓存机制 - 数据获取结果缓存 - 因子计算结果缓存 - 分析结果缓存 ### 内存管理 - 分批处理大数据集 - 及时释放中间结果 - 可配置内存限制 ## 故障排除 ### 常见问题 1. **数据获取失败** - 检查网络连接 - 确认股票代码格式 - 查看AKShare接口状态 2. **因子计算错误** - 检查数据完整性 - 确认因子名称正确 - 查看错误日志 3. **回测结果异常** - 检查时间范围 - 确认策略参数 - 验证数据格式 ### 日志查看 ```bash # 查看应用日志 tail -f logs/app.log # 查看错误日志 tail -f logs/error.log ``` ## 扩展开发 ### 添加新因子 ```python class CustomFactor(BaseFactor): def calculate(self, data): # 实现因子计算逻辑 return factor_values # 注册因子 factor_lib.add_factor(CustomFactor("Custom", "自定义因子")) ``` ### 添加新策略 ```python class CustomStrategy(BaseStrategy): def generate_signals(self, data, date): # 实现信号生成逻辑 return signals ``` ### 添加新分析 ```python def custom_analysis(self, factor_data, factor_name): # 实现自定义分析逻辑 return results ``` ## 许可证 本项目采用MIT许可证。 ## 贡献指南 欢迎提交Issue和Pull Request来改进项目。 ## 联系方式 - 项目主页: - 问题反馈: - 邮箱: yl_zhangqiang@foxmail.com> --- **注意**: 本项目仅用于学习和研究目的,不构成投资建议。使用本工具进行实盘交易的风险由用户自行承担。