henrylzl
Factor_analysis_system
Python

本项目是一个完整的量化投资因子分析系统,专注于中国股票市场的因子研究和指数增强策略。系统从原始数据获取开始,经过因子生成、预处理、单因子测试,最终实现因子合成和正交化,提供指数增强模型的构建。整个系统采用模块化设计,各个组件之间有明确的数据流转关系,形成了一个完整的量化投资研究框架。

Last updated Jun 3, 2026
20
Stars
9
Forks
0
Issues
0
Stars/day
Attention Score
19
Language breakdown
Python 100.0%
Files click to expand
README

量化投资因子分析系统

项目概述

本项目是一个完整的量化投资因子分析系统,专注于中国股票市场的因子研究和指数增强策略。系统从原始数据获取开始,经过因子生成、预处理、单因子测试,最终实现因子合成和正交化,提供指数增强模型的构建。整个系统采用模块化设计,各个组件之间有明确的数据流转关系,形成了一个完整的量化投资研究框架。

项目架构

核心模块

  • 原始数据获取模块 (rawdatafetch.py)
- 负责从Tushare API获取股票市场原始数据 - 实现数据缓存和更新机制 - 提供数据重试和错误处理机制
  • 因子生成模块 (factor_generate.py)
- 定义基础数据结构和属性 - 实现各类因子的计算逻辑 - 提供延迟加载机制优化性能
  • 因子预处理模块 (factor_preprocess.py)
- 实现因子数据的清洗和标准化 - 提供缺失值处理、去极值、中性化等功能 - 支持因子数据可视化和质量检查
  • 单因子测试模块 (singlefactortest.py)
- 实现因子有效性检验 - 提供分层回测功能 - 计算IC、IR等因子评价指标
  • 因子合成模块 (factor_synthesis.py)
- 实现多因子模型构建 - 提供因子合成和正交化功能 - 支持指数增强策略回测

类结构

  • Data类 (factor_generate.py)
- 定义数据日期范围和频率 - 管理数据文件路径和文件名 - 定义各类因子指标
  • FactorGenerater类 (factor_generate.py)
- 继承自Data类 - 实现因子计算的核心逻辑 - 提供交易日历和数据获取方法
  • RawDataFetcher类 (rawdatafetch.py)
- 继承自FactorGenerater类 - 实现数据获取和更新机制 - 提供月末日期计算和数据重试功能
  • TushareFetcher类 (rawdatafetch.py)
- 继承自RawDataFetcher类 - 实现Tushare API的调用逻辑 - 处理API返回数据的格式转换

数据流程图

+----------------+     +----------------+     +----------------+
|                |     |                |     |                |
| 原始数据获取模块 | --> |   因子生成模块   | --> | 因子预处理模块  |
|                |     |                |     |                |
+----------------+     +----------------+     +----------------+
                                                     |
                                                     v
                       +----------------+     +----------------+
                       |                |     |                |
                       |   因子合成模块   | <-- | 单因子测试模块   |
                       |                |     |                |
                       +----------------+     +----------------+

详细数据流

  • 数据获取流程
- 通过TushareFetcher从Tushare API获取原始数据 - 数据保存为CSV文件到本地目录 - 实现增量更新机制避免重复获取
  • 因子生成流程
- 从原始数据计算各类因子值 - 因子按照价值、成长、财务等类别组织 - 使用延迟加载机制优化性能
  • 因子预处理流程
- 读取原始因子数据 - 执行缺失值填充、去极值、中性化、标准化 - 保存预处理后的因子数据
  • 因子测试流程
- 读取预处理后的因子数据 - 执行IC测试、分层回测等分析 - 生成测试报告和可视化结果
  • 指数增强流程
- 读取预处理后的因子数据 - 执行因子合成和正交化 - 构建多因子模型并回测

技术栈

编程语言和核心库

  • Python: 主要开发语言
  • pandas: 数据处理和分析
  • numpy: 科学计算
  • scipy: 高级科学计算
  • statsmodels: 统计模型
  • matplotlib/seaborn: 数据可视化
  • sklearn: 机器学习算法

数据获取和存储

  • tushare: 金融数据接口
  • retrying: 请求重试机制
  • dotenv: 环境变量管理
  • CSV文件: 本地数据存储

性能优化

  • joblib: 并行计算
  • lazyproperty装饰器: 延迟加载机制
  • functools: 函数工具

设计模式

  • 继承模式
- 通过类继承实现代码复用和功能扩展 - 形成Data -> FactorGenerater -> RawDataFetcher -> TushareFetcher的继承链
  • 延迟加载模式
- 使用lazyproperty装饰器实现属性的延迟计算 - 避免不必要的计算提高性能
  • 重试模式
- 使用retry装饰器实现网络请求的自动重试 - 提高数据获取的稳定性
  • 管道模式
- 实现数据处理的流水线操作 - 从原始数据获取到因子生成、预处理、测试形成完整管道

配置管理

  • 使用.env文件存储API密钥等敏感信息
  • 使用环境变量管理配置参数
  • 各模块定义工作目录和文件路径常量

使用指南

环境配置

  • 安装依赖包:
pip install pandas numpy scipy statsmodels matplotlib seaborn sklearn tushare pymysql retrying python-dotenv joblib
  • 配置Tushare API密钥:
- 在项目根目录创建.env文件 - 添加TUSHAREAPITOKEN=你的API密钥

数据获取

# 初始化数据获取器
from rawdatafetch import TushareFetcher

fetcher = TushareFetcher()

获取股票基础数据

fetcher.fetchmetadata()

因子生成和预处理

# 运行因子预处理
from factor_preprocess import main

main()

单因子测试

# 运行单因子测试
from singlefactortest import singlefactortest

singlefactortest(['ROEttm', 'PEttm'])

指数增强模型

# 运行指数增强模型
from factorsynthesis import indexenhance_model

indexenhancemodel('000300.SH', ['ROEttm', 'PEttm', 'MOM_1M'])

参考自https://github.com/phonegapX/alphasickle

🔗 More in this category

© 2026 GitRepoTrend · henrylzl/Factor_analysis_system · Updated daily from GitHub