# Alpha-R1: Alpha Screening with LLM Reasoning via Reinforcement Learning
English | δΈζ
**Alpha-R1** is a reasoning-enhanced LLM for quantitative alpha selection: built on Qwen3-8B and trained with GRPO reinforcement learning ([verl](https://github.com/volcengine/verl)) using a market-feedback reward. It reasons over **semantic factor descriptions** β how each factor works, when it works, and when it fails β and selects the Alpha101 factors that best fit current market conditions.
- π Paper: [arXiv:2512.23515](https://arxiv.org/abs/2512.23515)
- π» Code: [FinStep-AI/Alpha-R1](https://github.com/FinStep-AI/Alpha-R1) (inference pipeline / qlib backtesting / training config)
- π License: MIT
## Model Overview
| Item | Content |
|---|---|
| Base model | [Qwen/Qwen3-8B](https://huggingface.co/Qwen/Qwen3-8B) |
| Training | GRPO (verl) with a market-feedback reward |
| Input | Decision-context prompt: concatenated semantic factor descriptions `Ξ±_des` |
| Output | Selected factors listed in `` |
| Candidate pool | 82 Alpha101 factors (as screened in the paper) |
| Recommended decoding | temperature=0 (greedy), top_p=0.7, max_new_tokens=4096 |
## Quick Start
### transformers
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "FinStep/Alpha-R1"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, dtype="bfloat16", device_map="auto")
prompt = "" # see the GitHub repo for the prompt builder
inputs = tokenizer.apply_chat_template(
[{"role": "user", "content": prompt}],
add_generation_prompt=True, return_tensors="pt",
).to(model.device)
# paper setting: temperature=0 (greedy), top_p=0.7
out = model.generate(inputs, max_new_tokens=4096, do_sample=False)
print(tokenizer.decode(out[0][inputs.shape[1]:], skip_special_tokens=True))
```
### vLLM
```python
from vllm import LLM, SamplingParams
llm = LLM(model="FinStep/Alpha-R1")
params = SamplingParams(temperature=0.0, top_p=0.7, max_tokens=4096)
outputs = llm.chat([[{"role": "user", "content": prompt}]], params)
```
For the full end-to-end pipeline (factor description generation β Alpha-R1 inference β output parsing β qlib strategy backtest), see the [GitHub repository](https://github.com/FinStep-AI/Alpha-R1).
## Output Contract
The model lists the selected factor ids inside `...`, e.g.:
```
alpha001, alpha021, alpha053
```
Validation and parsing scripts are provided under `src/alpha_r1/parsing/` in the GitHub repository.
## Performance
12-month out-of-sample testing (2025-01-01 to 2025-12-31, paper Table 1):
| Type |
Method |
S&P 500 |
CSI 300 |
| AR (%) |
SR |
MDD (%) |
AR (%) |
SR |
MDD (%) |
| Non-LLM | Buy & Hold | 19.34 | 0.80 | 18.75 | 22.16 | 1.31 | 10.49 |
| PCA | 7.98 | 0.27 | 17.30 | 2.93 | 0.17 | 14.46 |
| XGBoost | 3.49 | 0.03 | 18.45 | 8.99 | 0.50 | 16.26 |
| LightGBM | -5.42 | -0.43 | 20.93 | 18.44 | 1.05 | 14.92 |
| A2C | 10.82 | 0.40 | 17.70 | 22.96 | 1.20 | 14.86 |
| PPO | 7.68 | 0.25 | 14.97 | 14.96 | 0.81 | 12.95 |
| DDPG | 2.53 | -0.02 | 15.04 | 1.97 | 0.12 | 16.54 |
| TD3 | 5.54 | 0.14 | 16.58 | 8.66 | 0.52 | 10.26 |
| SAC | 37.60 | 1.44 | 15.18 | 9.77 | 0.56 | 11.68 |
| LLM | Gemini 2.5 Pro | 14.23 | 0.55 | 17.01 | 16.29 | 0.90 | 14.01 |
| Claude 3.7 Sonnet | 10.92 | 0.40 | 18.88 | 10.13 | 0.57 | 14.49 |
| DeepSeek‑R1 | 21.94 | 0.93 | 14.36 | 14.66 | 0.81 | 14.60 |
| Qwen3‑8B | 12.85 | 0.47 | 19.52 | 15.44 | 0.79 | 14.38 |
| Alpha‑R1 (Ours) | 47.87 | 1.62 | 16.91 | 40.57 | 2.23 | 6.58 |
Out-of-domain generalization without retraining (paper Table 2): 80.54% AR (SR 2.46) on Russell 2000 and 73.52% AR (SR 2.80) on CSI 1000. AR = annualized return, SR = excess Sharpe ratio, MDD = max drawdown.
## Training
Alpha-R1 is trained on Qwen3-8B with GRPO using verl and a market-feedback reward (`R_final = R_adjusted - P_structural`, paper Section 3.4). The training configuration and a reference reward implementation live in the `training/` directory of the GitHub repository.
## Limitations
- This model is intended for academic research; its outputs do not constitute investment advice.
- Factor selection depends on the upstream description-generation and backtesting pipeline (see the GitHub repository); the model alone does not produce tradable signals.
## Citation
```bibtex
@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
This project is released under the [MIT License](https://opensource.org/licenses/MIT).