# Quant-Alpha101 **Repository Path**: hanxiaowen/Quant-Alpha101 ## Basic Information - **Project Name**: Quant-Alpha101 - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-17 - **Last Updated**: 2026-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Alpha101 量化因子系统 ## 项目简介 Alpha101 是一个完整的量化因子计算系统,实现了《101 Formulaic Alphas》论文中的全部101个Alpha因子。系统专注于高效、准确的因子计算,为量化投资研究提供强大的特征工程工具。 ## 版本信息 - **当前版本**: v1.0.1 (三层架构 - 已实现) - **规划版本**: v1.0.2 (五层架构 - 包含信号层和回测层) 详细架构设计请参考 [ARCHITECTURE.md](docs/ARCHITECTURE.md) ### 🎯 项目状态 **✅ v1.0.1 已完成**: 101/101 Alpha因子全部实现 (100%) - ✅ **Alpha002-021**: 20个基础因子 (价格、成交量基础指标) - ✅ **Alpha022-041**: 20个相关性因子 (价格-成交量相关性分析) - ✅ **Alpha042-061**: 20个复杂因子 (多指标组合分析) - ✅ **Alpha062-081**: 20个时间序列因子 (高级时间序列操作) - ✅ **Alpha082-101**: 20个统计因子 (复杂统计和排名分析) **🚀 v1.0.2 规划中**: 五层架构扩展 - 🔄 **信号层**: 因子处理、信号生成、组合优化 - 🔄 **回测层**: 策略回测、性能分析、报告生成 **测试覆盖率**: 100% (所有因子都有完整的单元测试和集成测试) ### 核心理念 **Alpha因子是用于预测股票收益的特征变量,不是直接的交易信号。** 系统的设计理念: - **特征工程**: 将原始市场数据转换为预测性特征 - **模块化**: 每个组件职责单一,接口清晰 - **可验证**: 每个因子都有完整的测试和验证 - **高性能**: 优化的计算流程,支持大规模数据处理 ## v1.0.1 系统架构 (当前版本) ### 三层架构设计 ``` ┌─────────────────────────────────────────────────────────────┐ │ 测试验证层 (Test Layer) │ │ 单元测试、集成测试、性能验证 │ └─────────────────────────────────────────────────────────────┘ ↑ ┌─────────────────────────────────────────────────────────────┐ │ 核心计算层 (Computation Layer) │ │ Alpha因子计算、辅助函数、数据验证 │ └─────────────────────────────────────────────────────────────┘ ↑ ┌─────────────────────────────────────────────────────────────┐ │ 数据层 (Data Layer) │ │ 数据获取、数据库查询、数据接口 │ └─────────────────────────────────────────────────────────────┘ ``` 详细架构设计请参考 [ARCHITECTURE.md](docs/ARCHITECTURE.md) ## v1.0.2 发展路线图 v1.0.2 将在现有三层架构基础上扩展为五层架构,形成完整的量化交易系统: ### 🎯 新增功能 **信号层 (Signal Layer)** - 因子标准化和合成 - 多种信号生成策略 - 组合优化和权重分配 - 风险控制和仓位管理 **回测层 (Backtest Layer)** - 策略执行引擎 - 性能分析和归因 - 风险指标计算 - 可视化报告生成 ### 📅 开发计划 - **阶段1**: 信号层开发 (4-6周) - **阶段2**: 回测层开发 (6-8周) - **阶段3**: 集成测试 (2-3周) - **阶段4**: 部署维护 (持续) ### 🔧 技术特性 - 机器学习模型集成 - 高级风险管理 - 交互式可视化 - 企业级部署支持 ## 项目结构 ``` Alpha101/ ├── core/ # 核心计算层 │ ├── alpha_factors.py # 101个Alpha因子实现 ⭐ │ ├── alpha_helpers.py # 辅助函数库 │ ├── validation.py # 数据验证模块 │ ├── alpha101.py # 主入口文件 │ └── mertics.py # 性能指标计算 │ ├── data/ # 数据层 │ ├── data_api.py # 统一数据接口 │ ├── query_database.py # 数据库查询 │ ├── db/stock_data.db # SQLite数据库 │ └── USAGE.md # 数据使用说明 │ ├── test/ # 测试验证层 │ ├── test_alpha005_020.py # Alpha005-020测试 │ ├── test_alpha021_040.py # Alpha021-040测试 │ ├── test_alpha041_060.py # Alpha041-060测试 │ ├── test_alpha061_080.py # Alpha061-080测试 │ ├── test_alpha081_101.py # Alpha081-101测试 │ ├── alpha001_local_test.py # 完整集成测试 │ └── test_data_format.py # 数据格式测试 │ ├── Configs/ # 配置管理 │ └── config.py # 系统配置 │ ├── docs/ # 文档 │ ├── ARCHITECTURE.md # 架构设计文档 │ └── Alpha101 Learning.ipynb # 学习笔记 │ ├── examples/ # 使用示例 ├── source/ # 资源文件 │ └── Alpha101.pdf # 原始论文 │ ├── requirements.txt # 项目依赖 ├── install_dependencies.sh # 安装脚本 └── README.md # 项目说明 ``` ### 🏗️ 分层架构设计 ```mermaid graph TB subgraph "用户接口层 (User Interface Layer)" A[测试脚本] --> B[快速测试] A --> C[完整测试] A --> D[本地测试] end subgraph "业务逻辑层 (Business Logic Layer)" E[Alpha因子计算] --> F[Alpha002-101] E --> G[完整因子库] H[策略实现] --> I[聚宽策略] H --> J[自定义策略] end subgraph "数据访问层 (Data Access Layer)" K[数据获取] --> L[Baostock] K --> M[聚宽数据] K --> N[本地数据] O[数据处理] --> P[清洗] O --> Q[转换] O --> R[验证] end subgraph "基础设施层 (Infrastructure Layer)" S[工具函数] --> T[技术指标] S --> U[数学运算] S --> V[时间序列] W[配置管理] --> X[参数设置] W --> Y[环境配置] end B --> E C --> E D --> E E --> K E --> S H --> K H --> S K --> O O --> S ``` ### 🔄 数据流程图 ```mermaid flowchart LR subgraph "数据输入" A1[股票代码] --> B1[时间范围] B1 --> C1[数据源选择] end subgraph "数据获取" C1 --> D1{数据源类型} D1 -->|网络| E1[Baostock API] D1 -->|网络| F1[聚宽 API] D1 -->|本地| G1[CSV/Excel文件] end subgraph "数据处理" E1 --> H1[数据清洗] F1 --> H1 G1 --> H1 H1 --> I1[格式标准化] I1 --> J1[缺失值处理] J1 --> K1[异常值检测] end subgraph "因子计算" K1 --> L1[Alpha因子引擎] L1 --> M1[技术指标计算] M1 --> N1[因子值生成] N1 --> O1[结果验证] end subgraph "输出结果" O1 --> P1[因子序列] P1 --> Q1[性能指标] Q1 --> R1[可视化图表] end ``` ### 🧩 模块依赖关系 ```mermaid graph TD subgraph "核心模块 (core/)" A[alpha_factors.py
Alpha002-101因子实现] B[alpha_helpers.py
辅助函数库] C[validation.py
数据验证] D[alpha101.py
主入口] E[mertics.py
性能指标] end subgraph "数据模块 (data/)" F[data_api.py
统一数据接口] G[query_database.py
数据库查询] H[stock_data.db
本地数据库] end subgraph "测试模块 (test/)" I[test_alpha005_020.py
Alpha005-020测试] J[test_alpha021_040.py
Alpha021-040测试] K[test_alpha041_060.py
Alpha041-060测试] L[test_alpha061_080.py
Alpha061-080测试] M[test_alpha081_101.py
Alpha081-101测试] N[alpha001_local_test.py
集成测试] end subgraph "文档模块 (docs/)" O[ARCHITECTURE.md
架构文档] P[Alpha 101 Learning.md
学习文档] Q[Alpha101 Learning.ipynb
交互文档] end %% 依赖关系 A --> B A --> C D --> A D --> B F --> G G --> H I --> A J --> A K --> A L --> A M --> A N --> A N --> F %% 样式 classDef coreClass fill:#e1f5fe,stroke:#01579b,stroke-width:2px classDef dataClass fill:#f3e5f5,stroke:#4a148c,stroke-width:2px classDef testClass fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px classDef docsClass fill:#fff3e0,stroke:#e65100,stroke-width:2px class A,B,C,D,E coreClass class F,G,H dataClass class I,J,K,L,M,N testClass class O,P,Q docsClass ``` ### 🎯 架构设计理念 #### 1. **分离关注点 (Separation of Concerns)** - **核心计算层**: 专注于Alpha因子的数学计算和算法实现 - **数据访问层**: 负责各种数据源的统一接入和处理 - **测试验证层**: 确保代码质量和因子计算的正确性 - **文档知识层**: 提供完整的学习和参考资料 #### 2. **模块化设计 (Modular Design)** - 每个模块职责单一,便于维护和扩展 - 松耦合设计,模块间通过标准接口通信 - 支持插件式扩展,可以轻松添加新的因子或数据源 #### 3. **可测试性 (Testability)** - 分层测试策略:单元测试 → 集成测试 → 性能测试 - 测试驱动开发,确保每个因子都有对应的验证 - 支持多种测试场景:本地测试、网络测试、快速验证 #### 4. **可扩展性 (Scalability)** - 标准化的因子接口,便于添加新的Alpha因子 - 支持多种数据源,可以根据需要切换或组合 - 模块化的策略实现,支持不同平台的策略部署 #### 5. **文档驱动 (Documentation-Driven)** - 完整的理论文档和实现文档 - 交互式学习环境 (Jupyter Notebook) - 详细的API文档和使用示例 ## 核心模块说明 ### core/ - 核心计算代码 - **alpha_factors.py**: Alpha因子的核心实现,包含Alpha002-101共100个因子的计算逻辑 - **alpha_helpers.py**: 提供数据处理、技术指标计算等辅助函数 - **validation.py**: 数据验证模块 - **alpha101.py**: 向后兼容的主入口文件 - **mertics.py**: 性能指标计算模块 ### test/ - 测试模块 - **test_alpha005_020.py**: Alpha005-020因子测试套件 - **test_alpha021_040.py**: Alpha021-040因子测试套件 - **test_alpha041_060.py**: Alpha041-060因子测试套件 - **test_alpha061_080.py**: Alpha061-080因子测试套件 - **test_alpha081_101.py**: Alpha081-101因子测试套件 - **alpha001_local_test.py**: 完整的集成测试脚本(使用Baostock数据) - **test_data_format.py**: 数据格式验证测试 ### docs/ - 文档模块 - **ARCHITECTURE.md**: 完整的系统架构设计文档 - **Alpha 101 Learning.md**: Alpha因子的学习笔记和理论说明 - **Alpha101 Learning.ipynb**: 交互式学习和分析文档 ### source/ - 资源模块 - **Alpha101.pdf**: 《101 Formulaic Alphas》原始论文 ### data/ - 数据层 - **data_api.py**: 统一数据访问接口 - **query_database.py**: SQLite数据库查询模块 - **db/stock_data.db**: 本地股票数据存储 ### Configs/ - 配置管理 - **config.py**: 系统配置参数 ## 因子类型 Alpha 101 因子涵盖了多种量化交易策略类型: 1. **动量策略**:基于价格趋势的延续性 2. **均值回归策略**:基于价格回归到均值的假设 3. **成交量分析**:基于成交量变化与价格关系 4. **价格模式识别**:基于价格形态和模式 5. **行业中性化**:去除行业因素的影响 6. **时间序列分析**:基于历史数据的时间序列模式 7. **横截面分析**:基于不同资产间的相对表现 ## Alpha因子计算流程 ### 📊 完整计算流程 ```mermaid sequenceDiagram participant U as 用户 participant T as 测试脚本 participant C as 核心计算模块 participant H as 辅助工具 participant D as 数据源 participant V as 验证模块 U->>T: 启动测试 T->>D: 请求股票数据 D-->>T: 返回原始数据 T->>H: 数据预处理 H->>H: 清洗异常值 H->>H: 标准化格式 H-->>T: 处理后数据 T->>C: 调用Alpha因子 C->>H: 计算技术指标 H-->>C: 返回指标值 C->>C: 执行因子公式 C->>C: 应用时间序列操作 C-->>T: 因子计算结果 T->>V: 结果验证 V->>V: 检查数值范围 V->>V: 验证计算逻辑 V-->>T: 验证报告 T-->>U: 输出最终结果 ``` ### 🔍 Alpha002因子详细计算 ```mermaid flowchart TD A[输入数据] --> B{数据验证} B -->|通过| C[计算收盘价变化率] B -->|失败| Z[错误处理] C --> D[计算成交量变化率] D --> E[应用rank函数] E --> F[计算相关系数] F --> G[时间序列滑动窗口] G --> H[标准化处理] H --> I[生成因子值] I --> J{结果验证} J -->|有效| K[输出因子序列] J -->|无效| L[重新计算] L --> C K --> M[性能分析] M --> N[可视化展示] style A fill:#e3f2fd style K fill:#e8f5e8 style Z fill:#ffebee style L fill:#fff3e0 ``` ## 快速开始 ### 1. 环境准备 ```bash # 克隆项目 git clone https://github.com/YutaoWang03/Quant---Alpha101.git cd Quant---Alpha101 # 安装依赖 pip install -r requirements.txt ``` ### 2. 运行测试 ```bash # 运行Alpha因子测试套件 python -m pytest test/test_alpha005_020.py -v python -m pytest test/test_alpha021_040.py -v python -m pytest test/test_alpha041_060.py -v python -m pytest test/test_alpha061_080.py -v python -m pytest test/test_alpha081_101.py -v # 运行完整集成测试(需要网络连接) python test/alpha001_local_test.py # 运行数据格式测试 python test/test_data_format.py ``` ### 3. 使用核心模块 ```python # 导入Alpha因子和数据接口 from core.alpha_factors import calculateAlpha002 # 注意:Alpha001未实现,从Alpha002开始 from data.data_api import DataAPI import pandas as pd # 获取数据并计算因子 with DataAPI() as api: # 获取股票数据 data = api.get_stock_data('sh.000001', start_date='2023-01-01', end_date='2023-12-31') # 准备面板数据格式(Alpha因子需要面板数据) close_panel = data.pivot(index='date', columns='code', values='close') volume_panel = data.pivot(index='date', columns='code', values='volume') # 计算Alpha002因子 alpha002_value = calculateAlpha002(close_panel, volume_panel) ``` ## 开发指南 ### 🏛️ 架构层次详解 #### 第一层:用户接口层 (Presentation Layer) ```python # 导入Alpha因子计算函数 from core.alpha_factors import calculateAlpha002, calculateAlpha003 from data.data_api import DataAPI # 使用统一数据接口获取数据 with DataAPI() as api: # 获取多只股票的面板数据 codes = ['sh.000001', 'sh.000002', 'sz.000001'] close_panel = api.get_panel_data(codes, field='close') volume_panel = api.get_panel_data(codes, field='volume') # 计算Alpha因子 alpha002 = calculateAlpha002(close_panel, volume_panel) alpha003 = calculateAlpha003(close_panel, volume_panel) ``` #### 第二层:业务逻辑层 (Business Logic Layer) ```python # Alpha因子计算核心 from core.alpha_factors import calculateAlpha002, calculateAlpha003 from core.alpha_helpers import ts_rank, decay_linear, scale # 因子计算的标准流程 def calculate_alpha_factor(close_data, volume_data, factor_func): """ 标准的Alpha因子计算流程 Args: close_data: 收盘价面板数据 volume_data: 成交量面板数据 factor_func: 因子计算函数 Returns: 计算后的因子值 """ # 数据验证 if close_data.shape != volume_data.shape: raise ValueError("数据维度不匹配") # 计算因子 factor_value = factor_func(close_data, volume_data) # 结果验证 if factor_value.isnull().all().all(): raise ValueError("因子计算结果全为空") return factor_value ``` #### 第三层:数据访问层 (Data Access Layer) ```python # 统一的数据接口 from data.data_api import DataAPI # 使用统一数据接口 with DataAPI() as api: # 获取股票数据 data = api.get_stock_data('sh.000001', start_date='2023-01-01', end_date='2023-12-31') # 获取面板数据 codes = ['sh.000001', 'sh.000002'] close_panel = api.get_panel_data(codes, field='close') volume_panel = api.get_panel_data(codes, field='volume') # 获取数据库统计信息 stats = api.get_statistics() ``` #### 第四层:基础设施层 (Infrastructure Layer) ```python # 基础工具和配置 from core.alpha_helpers import ( ts_rank, ts_sum, ts_min, ts_max, delta, delay, decay_linear, scale, signed_power ) # 所有Alpha因子都依赖这些基础函数 ``` ### 添加新因子 #### 1. 在 `core/alpha_factors.py` 中实现因子计算逻辑 ```python def calculateAlpha102(close_price: pd.DataFrame, volume: pd.DataFrame) -> pd.DataFrame: """ Alpha102: 新的Alpha因子实现 公式: 示例公式描述 逻辑说明: 1. 计算价格变化率 2. 计算成交量变化率 3. 应用时间序列操作 4. 返回因子值 Args: close_price: 收盘价面板数据 (DataFrame) volume: 成交量面板数据 (DataFrame) Returns: Alpha102因子值 (DataFrame) """ # 数据验证 validateDataFormat(close_price, "close_price") validateDataFormat(volume, "volume") # 因子计算逻辑 price_change = close_price.pct_change() volume_change = volume.pct_change() # 应用时间序列操作 result = ts_rank(price_change, 10) * ts_rank(volume_change, 10) return result ``` #### 2. 在 `test/` 目录下添加对应的测试文件 ```python # test/test_alpha102.py import unittest import pandas as pd import numpy as np from core.alpha_factors import calculateAlpha102 class TestAlpha102(unittest.TestCase): def setUp(self): """设置测试数据""" dates = pd.date_range('2023-01-01', periods=100, freq='D') stocks = ['stock1', 'stock2', 'stock3'] # 生成模拟数据 np.random.seed(42) self.close_data = pd.DataFrame( np.random.randn(100, 3).cumsum(axis=0) + 100, index=dates, columns=stocks ) self.volume_data = pd.DataFrame( np.random.randint(1000, 10000, (100, 3)), index=dates, columns=stocks ) def test_alpha102_calculation(self): """测试Alpha102因子计算""" result = calculateAlpha102(self.close_data, self.volume_data) # 检查输出格式 self.assertIsInstance(result, pd.DataFrame) self.assertEqual(result.shape, self.close_data.shape) # 检查数值有效性 self.assertFalse(result.isnull().all().all()) print("✓ Alpha102 测试通过") if __name__ == '__main__': unittest.main() ``` #### 3. 更新 `docs/` 中的相关文档 ### 测试框架 #### 分层测试策略 ```mermaid pyramid title 测试金字塔 "E2E测试" : 5 "集成测试" : 15 "单元测试" : 80 ``` - **单元测试 (80%)**: 测试单个因子的计算逻辑 ```bash # 测试特定Alpha因子组 python -m pytest test/test_alpha005_020.py::TestAlpha005_020::test_alpha005 -v python -m pytest test/test_alpha081_101.py::TestAlpha081_101::test_alpha081 -v ``` - **集成测试 (15%)**: 测试数据获取和因子计算的完整流程 ```bash # 完整的端到端测试 python test/alpha001_local_test.py ``` - **数据验证测试 (5%)**: 测试数据格式和接口 ```bash # 数据格式验证测试 python test/test_data_format.py ``` ### 数据源支持 #### 数据源适配器模式 ```mermaid classDiagram class DataSource { <> +get_data(symbol, start, end) +validate_data(data) +format_data(data) } class BaostockAdapter { +get_data(symbol, start, end) +validate_data(data) +format_data(data) } class JoinQuantAdapter { +get_data(symbol, start, end) +validate_data(data) +format_data(data) } class LocalDataAdapter { +get_data(symbol, start, end) +validate_data(data) +format_data(data) } DataSource <|-- BaostockAdapter DataSource <|-- JoinQuantAdapter DataSource <|-- LocalDataAdapter ``` - **本地数据库**: 使用SQLite存储的历史数据 ```python from data.data_api import DataAPI with DataAPI() as api: # 获取单只股票数据 data = api.get_stock_data('sh.000001', start_date='2023-01-01', end_date='2023-12-31') # 获取面板数据 codes = ['sh.000001', 'sh.000002'] close_panel = api.get_panel_data(codes, field='close') ``` - **Baostock**: 免费的A股历史数据(通过测试脚本使用) ```python # 参考 test/alpha001_local_test.py 中的实现 from test.alpha001_local_test import BaostockDataLoader loader = BaostockDataLoader() stock_list = loader.get_stock_list('sh.000300') close_df, volume_df = loader.get_panel_data(stock_list, '2023-01-01', '2023-12-31') ``` - **自定义数据源**: 支持扩展新的数据源适配器 ```python # 在 data/ 目录下实现新的数据源适配器 class CustomDataAdapter: def get_stock_data(self, code, start_date, end_date): # 实现自定义数据获取逻辑 return formatted_dataframe ``` ## 性能优化 - 使用向量化计算提高因子计算效率 - 支持多进程并行计算多个因子 - 内存优化的数据处理流程 - 缓存机制减少重复计算 ## 贡献指南 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 参考资料 - [《101 Formulaic Alphas》原始论文](source/Alpha101.pdf) - [Baostock数据接口文档](http://baostock.com/) - [聚宽量化平台](https://www.joinquant.com/) - [量化交易相关资源](docs/README_Alpha101.md) ## 联系方式 - 项目维护者: YutaoWang03 - 项目主页: https://github.com/YutaoWang03/Quant---Alpha101 --- **注意**: 本项目仅供学习和研究使用,不构成投资建议。量化交易存在风险,请谨慎使用。