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

Alpha-R1

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

Alpha-R1 framework 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):

Backtest NAV comparison on S&P 500 (left) and CSI 300 (right)

Type Method 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
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).