Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

Alpha-R1


Alpha-R1: Alpha Screening with LLM Reasoning via Reinforcement Learning

Alpha-R1 是一个面向量化 Alpha 筛选的推理增强型 LLM,基于 Qwen3-8B 通过 GRPO 强化学习训练。本仓库是论文 Alpha-R1: Alpha Screening with LLM Reasoning via Reinforcement Learning 的配套实现。

Overview (项目概览)

Alpha-R1 framework overview

Alpha-R1 从 Alpha101 候选因子池中筛选因子。它不把 alpha 当作裸的时间序列,而是基于语义化的因子描述进行推理——每个因子如何起作用、何时有效、何时失效——并激活与当前市场环境相匹配的因子:

qlib single-factor backtest (P_i) ─┐
 ├─→ LLM factor descriptions α_des (OpenRouter)
market memory (M_global) ──────────┘ │
 ↓
 Alpha-R1 inference (FinStep/Alpha-R1)
 ↓
 parsed selections (selections.json)
 ↓
 end-to-end strategy backtest (NAV, AR/SR/MDD)
  1. 单因子回测(论文 §3.1.3):每个 Alpha101 因子在 qlib 上评估——因子值、IC/RankIC 与 top-k 组合——并保存为绩效向量 P_i
  2. 因子描述生成(§3.1.2/§3.2.1):LLM(经由 OpenRouter)将每日行情/新闻文本迭代聚合为全局市场记忆 M_global,再将 M_global + P_i 映射为每个因子的结构化描述 α_des
  3. Alpha-R1 推理(§3.3):因子描述拼接为决策上下文 prompt,模型以 <alpha_list>...</alpha_list> 输出所选因子。
  4. 输出解析:对响应进行校验,并解析为 selections.json / summary.csv
  5. 策略回测(§3.3,附录 F):用固定的线性模型按所选因子为股票打分,按论文的执行协议(槽位轮换、VWAP 成交、手续费)产出净值曲线与指标。

Installation (安装)

pip install -e . # core (transformers inference + generation + parsing)
pip install -e .[vllm] # optional high-throughput inference backend
pip install -e .[qlib] # optional backtesting (pyqlib)

API 密钥(见 .env.example):

export OPENROUTER_API_KEY=... # description generation
export HF_TOKEN=... # optional (e.g. for gated/private mirrors)

Usage (使用方法)

所有步骤的默认参数均从 configs/ 读取。

1. Single-factor backtests (单因子回测)

python scripts/prepare_qlib_data.py --csv-dir data/stock_data --qlib-dir ~/.qlib/qlib_data/alpha_r1
python scripts/run_factor_backtest.py --alphas all

每个因子输出 result/alpha_backtest/alphaNNN.json。数据目录结构约定见 data/README.md

2. Factor descriptions (因子描述生成)

python scripts/build_market_memory.py --start-date 2023年01月01日 --end-date 2024年12月31日
python scripts/generate_descriptions.py --model "anthropic/claude-3.7-sonnet" --alphas all

configs/generation.yaml 中的 OpenRouter 模型 id 特意留空——请在配置中填写,或通过 --model 传入。输出 data/market_memory/M_global.txtresult/alpha_des/alphaNNN.txt

3. Alpha-R1 inference (Alpha-R1 推理)

python scripts/run_inference.py \
 --factor-des-dir result/alpha_des \
 --start-date 2025年01月01日 --end-date 2025年12月31日

通过 from_pretrained 加载 FinStep/Alpha-R1(默认 hf 后端;在 configs/inference.yaml 中设置 backend: vllm 可切换为 vLLM)。解码默认 temperature=0, top_p=0.7,与论文一致。输出 result/alpha_select/result_YYYYMMDD.json。无真实数据时,可用 --factor-des-dir examples/factor_descriptions 做最小冒烟运行。

决策日默认为给定区间内的工作日(交易日历的近似);传入 --market-state-dir 可限制为实际有行情数据的日期。

4. Parse outputs (输出解析)

python scripts/parse_outputs.py --result-dir result/alpha_select

输出 selections.json(日期 → 因子列表)与 summary.csv,并报告格式非法的日期。

5. Strategy backtest (端到端策略回测)

# estimate the fixed linear model on the historical window (paper: 2020-2023)
python scripts/train_linear_model.py --alphas all
# backtest the selections with the paper's execution protocol (slot rotation, VWAP, 10 bps)
python scripts/run_strategy_backtest.py \
 --selections result/alpha_select/parsed/selections.json \
 --betas result/linear_model/betas.csv

将解析出的因子选择转化为可交易的 top-10 等权组合:资金在 holding_days 个槽位间轮换(每日再平衡一个槽位),成交价使用当日 $vwap(缺失时回退 $close),双边手续费 10 bps,闲置现金按无风险利率计息,决策日 t 使用 t-1 日的因子值打分。输出指标 JSON(AR / 超额 SR / MDD / Sortino / Calmar / IR,相对基准)与逐日净值 CSV 至 configs/strategy.yaml: output_dir--selections 传入多轮选择文件目录时,会额外输出多轮平均结果。涨跌停过滤已实现但默认关闭(日线数据不含涨跌停标记;见 configs/strategy.yaml)。

Results (实验结果)

主实验结果(论文 Table 1;12 个月样本外测试区间 2025年01月01日 至 2025年12月31日)。AR = 年化收益,SR = 超额夏普比率,MDD = 最大回撤。

Backtest NAV comparison on the S&P 500 asset pool Backtest NAV comparison on the CSI 300 asset pool

类型 方法 S&P 500 CSI 300
AR (%) SR MDD (%) AR (%) SR MDD (%)
Non-LLMBuy & Hold19.340.8018.7522.161.3110.49
PCA7.980.2717.302.930.1714.46
XGBoost3.490.0318.458.990.5016.26
LightGBM-5.42-0.4320.9318.441.0514.92
A2C10.820.4017.7022.961.2014.86
PPO7.680.2514.9714.960.8112.95
DDPG2.53-0.0215.041.970.1216.54
TD35.540.1416.588.660.5210.26
SAC37.601.4415.189.770.5611.68
LLMGemini 2.5 Pro14.230.5517.0116.290.9014.01
Claude 3.7 Sonnet10.920.4018.8810.130.5714.49
DeepSeek‐R121.940.9314.3614.660.8114.60
Qwen3‐8B12.850.4719.5215.440.7914.38
Alpha‐R1 (Ours)47.871.6216.9140.572.236.58

在域外股票池上无需重训:Alpha-R1 在 Russell 2000 上达到 80.54% AR(SR 2.46),在 CSI 1000 上达到 73.52% AR(SR 2.80)(论文 Table 2)。

Training (训练)

Alpha-R1 基于 Qwen3-8B,使用 verl 以 GRPO 与市场反馈奖励训练(论文 Section 3.4)。training/ 包含训练配置(configs/grpo_alpha_r1.yaml)与奖励的简化参考实现(reward.py),可通过 verl 的 custom_reward_function 机制接入。详见 training/README.md

Repository layout (仓库结构)

src/alpha_r1/
├── factors/ Alpha101 formula library + description loading/concatenation
├── backtest/ qlib data conversion, Alpha101→qlib expressions, single-factor
│ backtest, linear model, slot-rotation strategy backtest
├── generation/ OpenRouter client, market memory, description generation
├── inference/ transformers / vLLM backends, prompt builder, selection loop
└── parsing/ <alpha_list> extraction and validation
scripts/ CLI entry points for each pipeline step
configs/ YAML configs for backtest / generation / inference / strategy
training/ GRPO training config + reference reward (verl)
data/ raw data lives here (gitignored, see data/README.md)
examples/ minimal example inputs

Citation (引用)

@article{jiang2025alphar1,
 title={Alpha-R1: Alpha Screening with LLM Reasoning via Reinforcement Learning},
 author={Jiang, Zuoyou and Zhao, Li and Sun, Rui and Sun, Ruohan and Li, Zhongjian and Li, Jing and Jiang, Daxin and Bai, Zuo and Hua, Cheng},
 journal={arXiv preprint arXiv:2512.23515},
 year={2025}
}

License (开源协议)

本项目基于 MIT License 发布。

📅 Roadmap & Updates (路线图与更新)

  • [2025.12] 📄 论文发布于 arXiv
  • [2026.09] 🧩 代码发布:qlib 单因子回测、因子描述生成(OpenRouter)、Alpha-R1 推理、输出解析、端到端策略回测,以及 GRPO 训练配置 + 参考奖励实现。

欢迎 ⭐ Star 本仓库,获取最新进展!

About

Alpha Screening with LLM Reasoning via Reinforcement Learning

Resources

Stars

87 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /