Alpha101/Alpha191 经典公式因子库 Skill,参考 JoinQuant 公式与 API 数据复现,支持批量或指定计算每日因子值。
概览
Alpha101 + Alpha158 + Alpha191 经典因子库:从长表 OHLCV CSV 批量计算每日因子值,输出宽表因子 CSV。 skill-factor-alpha191-alpha101 是一个经典公式因子库 Skill,用于计算参考自 JoinQuant 公式的 Alpha101/Alpha191,以及参考 Microsoft Qlib Alpha158 定义的因子值。 - Alpha101 / Alpha158 / Alpha191 经典公式因子的批量生成 - A 股日频 OHLCV 长表数据的因子矩阵构建 - 后续因子评价、因子筛选、模型训练或回测前的数据准备 - Codex 对话中触发确定性因子计算工作流 本仓库只负责计算因子值,不调用 LLM,不读取 API key,也不输出 IC、ICIR、回测收益或交易建议。 Alpha101 和 Alpha191 公式从本地 compute_alpha101_skill.py 和 compute_alpha191_skill.py 迁移,并根据 JoinQuant 提供的因子值 API 做过修正。Alpha158 按 Microsoft Qlib 的 Alpha158DL 特征定义实现为内置原生模块,运行时不依赖 Qlib 安装。 部分公式依赖行业、市值、基准指数或其他输入。当前数据不足时,相关因子不会终止整个任务,而是记录到 skipped_factors.json。 output_format 和 output_layout 当前只作为示例说明字段保留。实际代码固定输出 CSV 宽表;修改这两个字段不会改变输出格式。 每一行对应一个 (date, symbol),每个因子是一列。Alpha101 和 Alpha191 分别输出为独立文件,不混在同一个 CSV 里。
README
skill-factor-alpha191-alpha101
简体中文 | English
Alpha101 + Alpha158 + Alpha191 经典因子库:从长表 OHLCV CSV 批量计算每日因子值,输出宽表因子 CSV。
skill-factor-alpha191-alpha101 是一个经典公式因子库 Skill,用于计算参考自 JoinQuant 公式的 Alpha101/Alpha191,以及参考 Microsoft Qlib Alpha158 定义的因子值。
这个仓库适合用于研究:
- Alpha101 / Alpha158 / Alpha191 经典公式因子的批量生成
- A 股日频 OHLCV 长表数据的因子矩阵构建
- 后续因子评价、因子筛选、模型训练或回测前的数据准备
- Codex 对话中触发确定性因子计算工作流
本仓库只负责计算因子值,不调用 LLM,不读取 API key,也不输出 IC、ICIR、回测收益或交易建议。
仓库内容
本仓库包含三套公式因子库:
| 因子库 | 范围 | 输出文件 | 说明 |
|---|---|---|---|
| Alpha101 | alpha_001 到 alpha_101 |
alpha101_values.csv |
参考 JoinQuant Alpha101 的公式 |
| Alpha158 | alpha158.. |
alpha158_values.csv |
参考 Microsoft Qlib Alpha158 定义实现的 158 个因子(由 42 个原生模块展开,含窗口变体) |
| Alpha191 | alpha_001 到 alpha_191 |
alpha191_values.csv |
参考 JoinQuant Alpha191 的公式 |
Alpha101 和 Alpha191 公式从本地 compute_alpha101_skill.py 和 compute_alpha191_skill.py 迁移,并根据 JoinQuant 提供的因子值 API 做过修正。Alpha158 按 Microsoft Qlib 的 Alpha158DL 特征定义实现为内置原生模块,运行时不依赖 Qlib 安装。
部分公式依赖行业、市值、基准指数或其他输入。当前数据不足时,相关因子不会终止整个任务,而是记录到 skipped_factors.json。
目录结构
skill-factor-alpha191-alpha101/
├── SKILL.md
├── README.md
├── README.en.md
├── agents/
│ └── openai.yaml
├── examples/
│ ├── compute_input.json
│ └── toy_market_data.csv
├── references/
│ ├── input_schema.md
│ ├── output_contract.md
│ ├── source_boundary.md
│ └── validation_notes.md
└── scripts/
├── compute_alpha_factors.py
└── alpha_runtime/
├── alpha101_formulas.py
├── alpha158_formulas.py
├── alpha158_native/
├── alpha191_formulas.py
├── alpha_compute.py
├── data.py
├── runtime.py
└── selector.py
数据要求
第一版只支持长表 CSV。每一行是一只股票在一个交易日的行情记录。
必需字段:
date, symbol, open, high, low, close, volume
可选字段:
amount, vwap, adjfactor, pre_close, limit_up, limit_down
处理规则:
| 字段/规则 | 说明 |
|---|---|
date |
支持 YYYYMMDD 或 YYYY-MM-DD,运行时会标准化为 YYYYMMDD |
symbol |
按字符串处理 |
vwap 缺失 |
若有 amount 和 volume,用 amount / volume 推导 |
amount 缺失 |
用 close * volume 近似 |
adjfactor 存在 |
价格字段会转换为未复权口径后再计算 |
benchmark_csv_path |
可选;用于 Alpha191 中需要基准指数的公式 |
快速开始
安装依赖:
pip install -r requirements.txt
运行示例配置:
python scripts/compute_alpha_factors.py --input examples/compute_input.json
指定输出目录:
python scripts/compute_alpha_factors.py --input examples/compute_input.json --output outputs/my_alpha_run
--output 会覆盖 JSON 中的 output_dir。
输入配置
示例见 examples/compute_input.json。
{
"market_data_csv_path": "toy_market_data.csv",
"output_dir": "outputs/alpha_compute_example",
"alpha_sets": ["alpha101", "alpha191"],
"alpha_names": [
"alpha101:alpha_001",
"alpha101:alpha_002",
"alpha191:alpha_001",
"alpha191:alpha_018"
],
"exclude_alpha_names": [],
"start_date": "",
"end_date": "",
"symbols": [],
"output_format": "csv",
"output_layout": "wide",
"n_jobs": 1,
"show_progress": true
}
核心字段:
| 字段 | 类型 | 说明 |
|---|---|---|
market_data_csv_path |
string | 长表行情 CSV 路径。相对路径依次按输入 JSON 目录、Skill 根目录、examples/ 解析 |
benchmark_csv_path |
string | 可选基准指数 CSV,字段至少包含 date,并包含 close 或 open |
output_dir |
string | 输出目录。JSON 内相对路径按 Skill 根目录解析 |
alpha_sets |
list/string | 可选 alpha101、alpha158、alpha191 或任意组合;为空表示三套都计算 |
alpha_names |
list/string | 为空表示计算所选库全部因子;Alpha101/191 支持 alpha_001、1、alpha101:alpha_001,Alpha158 使用 alpha158.ma.p5 |
exclude_alpha_names |
list/string | 在选择后排除指定因子,支持带库名前缀 |
start_date / end_date |
string | 可选日期过滤,闭区间 |
symbols |
list[string] | 可选股票池过滤,空列表表示全部股票 |
n_jobs |
integer | 并行 worker 数;缺省时使用机器逻辑 CPU 数 |
show_progress |
bool | 是否打印进度条 |
output_format 和 output_layout 当前只作为示例说明字段保留。实际代码固定输出 CSV 宽表;修改这两个字段不会改变输出格式。
因子选择方式
只计算 Alpha101:
{
"alpha_sets": ["alpha101"],
"alpha_names": []
}
只计算 Alpha191:
{
"alpha_sets": ["alpha191"],
"alpha_names": []
}
只计算 Alpha158:
{
"alpha_sets": ["alpha158"],
"alpha_names": ["alpha158.ma.p5", "alpha158.vwap0.base"]
}
同时计算两套库的指定因子:
{
"alpha_sets": ["alpha101", "alpha191"],
"alpha_names": ["alpha101:alpha_001", "alpha191:alpha_018"]
}
排除指定因子:
{
"alpha_sets": ["alpha191"],
"exclude_alpha_names": ["alpha_075", "alpha_181"]
}
输出文件
运行结果写入 output_dir:
outputs/alpha_compute_example/
├── alpha101_values.csv
├── alpha158_values.csv
├── alpha191_values.csv
├── alpha_compute_summary.json
├── skipped_factors.json
└── run_config.json
| 文件 | 内容 |
|---|---|
alpha101_values.csv |
Alpha101 宽表因子值;仅当至少一个 Alpha101 因子成功计算时生成 |
alpha191_values.csv |
Alpha191 宽表因子值;仅当至少一个 Alpha191 因子成功计算时生成 |
alpha_compute_summary.json |
本次运行的输入路径、输出路径、样本区间、因子数量、跳过数量等摘要 |
skipped_factors.json |
返回 None 或计算失败的因子列表 |
run_config.json |
本次运行使用的输入配置副本 |
宽表 CSV 格式:
date,symbol,alpha_001,alpha_002,...
每一行对应一个 (date, symbol),每个因子是一列。Alpha101 和 Alpha191 分别输出为独立文件,不混在同一个 CSV 里。
运行大样本时的建议
全市场、长时间区间、全 Alpha101/Alpha158/Alpha191 会生成很大的宽表 CSV。建议:
- Alpha101、Alpha158 和 Alpha191 分开运行,降低内存和 IO 峰值。
n_jobs不要盲目设置为机器最大核数;并行越高,内存、进程调度和写盘压力越大。- 如果服务器已有其他计算任务,先用
n_jobs: 8、16或24试跑。 - 真实生产验证前,先用较短日期区间和少量因子做 smoke test。
验证口径
当前验证等级是 L3 verified。这里的 verified 指公式库复现、真实数据运行完整性和 Codex 运行一致性验证,不代表预测收益或交易收益验证。
已验证内容:
- 真实 A 股长表 OHLCV 数据运行通过,样本区间为
20230601到20251231。 - Alpha101 请求 101 个因子,成功计算 82 个,部分依赖外部数据源暂未验证。
- Alpha191 请求 191 个因子,成功计算 186 个,部分依赖外部数据源暂未验证。
- Alpha158 注册 158 个因子,来自 42 个原生模块及其窗口变体。
- Codex Skill 输出与开发目录输出在行数、列、
date/symbolkey 和 NaN 位置上保持一致。 - 指定因子计算结果与全量计算中对应列完全一致。
未声明内容:
- 不声明 IC、ICIR 或多空收益有效。
- 不声明交易收益或投资可用性。
- 不单独提供回测结果。
项目状态与风险边界
- 项目状态:Community Project,未经 QUANTSKILLS 官方审核、认证或背书。
- 数据来源:本仓库只包含 toy data;真实行情、基准、行业、市值或其他数据由使用者自行提供,并由使用者负责数据许可与合规。
- 公式来源:Alpha101 和 Alpha191 参考 JoinQuant 公式实现,并根据用户授权的 JoinQuant 因子值 API 对比结果做过修正;Alpha158 参考 Microsoft Qlib 的
Alpha158DL158 个特征定义实现。 - 核心假设:输入为日频长表 OHLCV CSV;字段定义、复权口径、股票池、交易日历和缺失值处理会影响最终因子值。
- 已知限制:部分因子依赖行业、市值、基准指数或其他外部字段;当输入字段不足时会进入
skipped_factors.json。 - 风险边界:输出仅为公式因子值,不代表因子有效性、预测能力、交易信号、组合收益或生产可用性。
- 用途:仅供量化研究、教育和方法论参考,不构成投资建议、调仓建议或收益承诺。
边界
| 边界 | 说明 |
|---|---|
| Factor Library | 只计算 Alpha101/Alpha158/Alpha191 因子值 |
| 无 LLM 依赖 | 不调用模型,不读取 API key |
| 无因子评价 | 不计算 IC、ICIR、Rank IC、分组收益或回测收益 |
| 无交易建议 | 不输出投资建议、调仓建议或收益承诺 |
| 长表 CSV 输入 | 第一版不支持数据库、parquet、实时 API 或分钟级输入 |
| 宽表 CSV 输出 | 当前固定输出宽表 CSV |
License
This repository is licensed under the GNU General Public License v3.0. See LICENSE.
推荐工具
换一个关键词,或者移除筛选条件。
安装
npx skillfish add quantskills/skill-factor-alpha191-alpha101