Alpha 因子挖掘系统 v3.0 — 模块化自动化因子挖掘平台 (表达式/遗传编程/深度学习三模式, A股+美股, CLI+Streamlit+Notebook)
Alpha 因子挖掘系统
A modular, extensible automated Alpha factor mining platform for A-share and US equity markets, inspired by WorldQuant / BigQuant.
一个模块化、可扩展的自动化 Alpha 因子挖掘平台,参考 WorldQuant / BigQuant 架构设计。支持手动表达式、遗传编程、深度学习三种因子生成模式,覆盖数据加载 → 因子计算 → 有效性评估 → 可视化报告的完整研究工作流。
24 个算子 · 3 种因子生成模式 · A 股 + 美股双市场 · CLI + Streamlit + Notebook 三入口
30 秒上手
from alphamining import initdata, quick_evaluate
一行加载数据(A 股 / 美股自动路由 + 标准化 + 衍生特征)
data = initdata(market='ashare', start='2019-01-01', end='2024-12-31')
一行评估因子:表达式 → IC/分层回测/多空绩效/图表
result = quickevaluate("rank(tsmean(close,20)/close)", data, n_groups=5)
flowchart LR
subgraph Data["📊 数据层"]
AK[Akshare A股]
TS[Tushare]
BS[Baostock]
YF[YFinance 美股]
end
subgraph Engine["🔧 因子引擎"]
EX["表达式<br/>(WorldQuant 语法)"]
GP["遗传编程<br/>(gplearn)"]
DA["DeepAlpha<br/>(DNN/LSTM)"]
end
subgraph Eval["📈 评估"]
IC[IC/IC_IR]
BG[分层回测]
LS[多空绩效]
end
subgraph Viz["🎨 可视化"]
P1[IC 时序]
P2[净值曲线]
P3[分组收益]
P4[月度热力图]
end
Data --> Engine --> Eval --> Viz
style Engine fill:#1a1f2e,color:#7dd3fc
style Data fill:#14171d,color:#e6e9ef
style Eval fill:#14171d,color:#e6e9ef
style Viz fill:#14171d,color:#e6e9ef
核心特性
📊 数据层
- 多数据源支持:Akshare(免费A股)、Tushare(专业数据)、Baostock(稳定数据)、YFinance(美股)
- 自动降级机制:首选数据源失败时自动尝试备选
- 多市场支持:A股(
a_share)、美股(us)自动路由 - Parquet 本地缓存:重复使用无需重复下载
- 数据标准化:统一字段命名、格式、复权处理
🔧 因子引擎
- 三种因子生成模式
- 24 个内置算子
rank, zscore, demean, scale
- 时序算子:tsmean, tsstd, tsdelta, tscorr, tsskew, tskurt, residual
- 数学算子:abs, sign, log, power, sqrt, add, sub, mul, div
- 条件算子:if_else
📈 因子评估
- IC 分析:Pearson / Spearman 双指标
- IC_IR 稳定性:IC 均值/标准差
- 5-10 分组回测:分层年化收益对比
- 多空组合绩效:年化收益、夏普、最大回撤、卡玛比率
- 换手率分析:因子稳定性评估
- 训练/测试集严格切分:避免过拟合
- 行业市值中性化:可选
🎨 可视化输出
- IC 时间序列图(±2σ 通道)
- 多空净值曲线图
- 分组累计收益对比图
- 月度 IC 热力图
- 因子整体对比汇总图
快速开始
安装依赖
pip install -r requirements.txt
可选模式按需安装:
pip install gplearn # 遗传编程模式
pip install torch # DeepAlpha 深度学习模式
pip install streamlit # Web 界面
命令行运行(v3.0 标准包入口)
# 查看系统信息与可用模式
python -m alpha_mining info
用默认 config.yaml 运行
python -m alpha_mining run
直接传入因子表达式(覆盖配置)
python -m alphamining run -e "rank(tsmean(close,20)/close)" "-rank(tsstd(return1d,20))"
指定市场 / 生成模式
python -m alpha_mining run --market us --mode expression
不生成图表
python -m alpha_mining run --no-plots
指定配置文件
python -m alphamining run -c myconfig.yaml
Streamlit Web 界面
streamlit run app.py
Notebook 优先工作流
推荐在 Notebook 中使用 v3.0 高级 API,一行代码完成加载 / 评估:
from alphamining import initdata, quickevaluate, comparefactors
一行加载数据(含标准化 + 衍生特征)
data = initdata(market='ashare', start='2019-01-01', end='2024-12-31')
一行评估单个因子
result = quickevaluate("rank(tsmean(close,20)/close)", data, n_groups=5)
对比多个因子
comparefactors(["rank(tsdelta(close,5))", "-rank(tsstd(return1d,20))"], data)
完整示例见 notebooks/01_quickstart.ipynb。
配置文件说明
完整配置见 config.yaml,主要分段:
market: ashare # ashare (A股) / us (美股)
data: preferred_source: null # null = 按市场自动选择;或指定 akshare/tushare/baostock/yfinance fallback_sources: [tushare, baostock] # 失败时自动降级 start_date: "2019-01-01" end_date: "2024-12-31" symbols: all # all = 全市场;或 ["000001.SZ", "000002.SZ"]
factor_generation: mode: expression # expression / gplearn / deep_alpha expressions: # 模式 1 - "rank(ts_mean(close,20)/close)" - "-rank(tsstd(return1d,20))" gp: # 模式 2 population_size: 200 generations: 20 top_n: 5 deep_alpha: # 模式 3 model_type: dnn # dnn / lstm / transformer hidden_layers: [128, 64, 32] numoutputfactors: 10
evaluation: n_groups: 5 train_ratio: 0.8 neutralize: false # 行业市值中性化
filter: # 因子筛选阈值 mintrainicir: 0.5 mintestic_mean: 0.02 minlssharpe_train: 1.0
因子表达式参考
| 表达式 | 因子含义 | 预期 IC 方向 | |--------|----------|------------| | rank(ts_mean(close,20)/close) | 价格偏离均线程度 | 负 | | ts_delta(close,5) | 5 日动量 | 正/负 | | -rank(tsstd(return1d,20)) | 波动率反转 | 正 | | ts_zscore(volume,10)*-1 | 成交量异常 | 正 | | rank(closevwapdiff) | 价格与成交均价差 | 负 | | tsskew(return1d,20) | 收益率偏度 | 负 | | residual(close, log_volume, 20) | 成交量解释后的残差收益 | 正 |
项目结构
alpha-mining-system/
├── alpha_mining/ # v3.0 标准包
│ ├── init.py # 包入口,导出高级 API
│ ├── main.py # python -m alpha_mining 入口
│ ├── cli.py # 命令行接口 (run / info)
│ ├── api.py # Notebook 高级 API
│ ├── data_hub.py # 统一数据抽象层(多市场)
│ ├── factor_engine.py # 因子计算引擎
│ ├── evaluator.py # 因子评估器(中性化增强)
│ ├── visualizer.py # 结果可视化模块
│ ├── operators.py # 24 个算子库
│ ├── utils.py # 工具函数
│ └── data_adapters/ # 数据源适配器(市场感知)
│ ├── base_adapter.py
│ ├── akshare_adapter.py
│ ├── tushare_adapter.py
│ ├── baostock_adapter.py
│ └── yfinance_adapter.py
├── notebooks/
│ └── 01_quickstart.ipynb # Notebook 优先工作流示例
├── api/
│ └── index.py # Vercel Serverless Function 入口
├── app.py # Streamlit Web 界面
├── config.yaml # 默认配置
├── requirements.txt
├── vercel.json
├── LICENSE
└── README.md
运行时自动生成:datacache/(行情缓存)、factorcache/(因子缓存)、results/(输出报告与图表),均已在 .gitignore 中排除。
v3.0 升级要点
相对 v2.1 的主要变化:
- 标准 Python 包结构 — 从顶层脚本改为
alphamining/包,入口统一为python -m alphamining。 - Notebook 优先工作流 — 新增高级 API(
initdata/quickevaluate/compare_factors),一行代码完成加载与评估。 - 命令行接口 (CLI) —
run/info子命令,支持-e传入表达式、--market/--mode覆盖配置,便于批量与自动化回测。 - Streamlit Web 界面 —
streamlit run app.py提供交互式因子探索。 - Serverless API —
api/index.py提供轻量 HTTP 接口。 - 因子元信息系统 —
FactorResult统一包装,携带name/category/source/expression/dataversion/generatedat等完整溯源信息。 - 高阶算子 —
tsskew/tskurt/residual。 - 多市场架构 —
market参数路由 A 股 / 美股,适配器自动按市场过滤数据源。
有效因子筛选标准
| 指标 | 最低阈值 | 优秀阈值 | |------|----------|----------| | 训练集 RankIC_IR | > 0.3 | > 0.5 | | 测试集 RankIC 均值 | > 0.01 | > 0.03 | | 多空夏普(训练) | > 0.5 | > 1.0 | | 方向一致性 | 训练/测试同号 | - | | 日换手率 | < 0.3 | < 0.15 |
部署与集成
- GitHub: https://github.com/aznikline/alpha-mining-system
- Vercel Serverless:API 模式支持(见
vercel.json/api/index.py) - 本地 Docker:
docker run -v $(pwd)/config.yaml:/app/config.yaml ...
相关项目
本仓是量化系列的一部分,配套项目分工:
alpha— OpenAlpha factor discovery → qmt 执行层的 integration bridge。alpha-mining-system 负责挖掘因子(遗传编程 / DeepAlpha),alpha 负责桥接到执行框架(SignalAlphaFactoradapter,含 116 个测试 + Protocol fallback 可独立运行)。- qmt / ptrade — 作者维护的量化执行层(私有)。alpha 的 bridge 以它们为 integration target;不公开以隔离交易逻辑。
License
MIT License © 2026 aznikline