iamzuoyou commited on
Commit
85d1222
·
verified ·
1 Parent(s): 504691e

Add bilingual model card (Chinese default + English) with figures

Browse files

Model card for Alpha-R1: overview, quick start (transformers/vLLM), output contract, full results (paper Table 1), citation.

.gitattributes CHANGED
@@ -34,3 +34,6 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  tokenizer.json filter=lfs diff=lfs merge=lfs -text
 
 
 
 
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  tokenizer.json filter=lfs diff=lfs merge=lfs -text
37
+ assets/framework.png filter=lfs diff=lfs merge=lfs -text
38
+ assets/main_result_csi300.png filter=lfs diff=lfs merge=lfs -text
39
+ assets/main_result_sp500.png filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -1,3 +1,154 @@
1
- ---
2
- license: mit
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ base_model: Qwen/Qwen3-8B
4
+ pipeline_tag: text-generation
5
+ library_name: transformers
6
+ tags:
7
+ - finance
8
+ - quantitative-trading
9
+ - alpha-factor
10
+ - reinforcement-learning
11
+ - grpo
12
+ - qlib
13
+ ---
14
+
15
+ # Alpha-R1: Alpha Screening with LLM Reasoning via Reinforcement Learning
16
+
17
+ <p align="center">
18
+ <a href="README_en.md">English</a> | <a href="README.md">中文</a>
19
+ </p>
20
+
21
+ **Alpha-R1** 是一个面向量化 Alpha 筛选的推理增强型 LLM:基于 Qwen3-8B,通过 GRPO 强化学习([verl](https://github.com/volcengine/verl))以市场反馈奖励训练。它阅读 Alpha101 因子的**语义化描述**——每个因子如何起作用、何时有效、何时失效——并针对当前市场环境筛选出最值得激活的因子组合。
22
+
23
+ - 📄 Paper: [arXiv:2512.23515](https://arxiv.org/abs/2512.23515)
24
+ - 💻 Code: [FinStep-AI/Alpha-R1](https://github.com/FinStep-AI/Alpha-R1)(推理管线 / qlib 回测 / 训练配置)
25
+ - 📜 License: MIT
26
+
27
+ ## 模型概览 (Model Overview)
28
+
29
+ <p align="center">
30
+ <img src="assets/framework.png" alt="Alpha-R1 framework overview" style="width: 100%;">
31
+ </p>
32
+
33
+ | 项目 | 内容 |
34
+ |---|---|
35
+ | Base model | [Qwen/Qwen3-8B](https://huggingface.co/Qwen/Qwen3-8B) |
36
+ | 训练方法 | GRPO(verl),市场反馈奖励 |
37
+ | 输入 | 决策上下文 prompt:拼接的因子语义描述 `α_des` |
38
+ | 输出 | `<alpha_list>` 中列出的选中因子 |
39
+ | 候选因子池 | 82 个 Alpha101 因子(论文筛选后) |
40
+ | 推荐解码 | temperature=0(greedy),top_p=0.7,max_new_tokens=4096 |
41
+
42
+ ## 快速开始 (Quick Start)
43
+
44
+ ### transformers
45
+
46
+ ```python
47
+ from transformers import AutoModelForCausalLM, AutoTokenizer
48
+
49
+ model_id = "FinStep/Alpha-R1"
50
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
51
+ model = AutoModelForCausalLM.from_pretrained(model_id, dtype="bfloat16", device_map="auto")
52
+
53
+ prompt = "<decision context: concatenated factor descriptions>" # see the GitHub repo for the prompt builder
54
+ inputs = tokenizer.apply_chat_template(
55
+ [{"role": "user", "content": prompt}],
56
+ add_generation_prompt=True, return_tensors="pt",
57
+ ).to(model.device)
58
+
59
+ # paper setting: temperature=0 (greedy), top_p=0.7
60
+ out = model.generate(inputs, max_new_tokens=4096, do_sample=False)
61
+ print(tokenizer.decode(out[0][inputs.shape[1]:], skip_special_tokens=True))
62
+ ```
63
+
64
+ ### vLLM
65
+
66
+ ```python
67
+ from vllm import LLM, SamplingParams
68
+
69
+ llm = LLM(model="FinStep/Alpha-R1")
70
+ params = SamplingParams(temperature=0.0, top_p=0.7, max_tokens=4096)
71
+ outputs = llm.chat([[{"role": "user", "content": prompt}]], params)
72
+ ```
73
+
74
+ 完整的端到端管线(因子描述生成 → Alpha-R1 推理 → 输出解析 → qlib 策略回测)见 [GitHub 仓库](https://github.com/FinStep-AI/Alpha-R1)。
75
+
76
+ ## 输出契约 (Output Contract)
77
+
78
+ 模型在 `<alpha_list>...</alpha_list>` 中输出选中的因子 id,例如:
79
+
80
+ ```
81
+ <alpha_list>alpha001, alpha021, alpha053</alpha_list>
82
+ ```
83
+
84
+ GitHub 仓库的 `src/alpha_r1/parsing/` 提供了配套的校验与解析脚本。
85
+
86
+ ## 表现 (Performance)
87
+
88
+ 12 个月样本外测试(2025-01-01 ~ 2025-12-31,论文 Table 1):
89
+
90
+ <p align="center">
91
+ <img src="assets/main_result_sp500.png" alt="Backtest NAV comparison on the S&P 500 asset pool" style="width: 49%;">
92
+ <img src="assets/main_result_csi300.png" alt="Backtest NAV comparison on the CSI 300 asset pool" style="width: 49%;">
93
+ </p>
94
+
95
+ <table>
96
+ <thead>
97
+ <tr>
98
+ <th rowspan="2">类型</th>
99
+ <th rowspan="2" width="160">方法</th>
100
+ <th colspan="3">S&amp;P 500</th>
101
+ <th colspan="3">CSI 300</th>
102
+ </tr>
103
+ <tr>
104
+ <th>AR (%)</th>
105
+ <th>SR</th>
106
+ <th>MDD (%)</th>
107
+ <th>AR (%)</th>
108
+ <th>SR</th>
109
+ <th>MDD (%)</th>
110
+ </tr>
111
+ </thead>
112
+ <tbody>
113
+ <tr><td rowspan="9">Non-LLM</td><td>Buy&nbsp;&amp;&nbsp;Hold</td><td>19.34</td><td>0.80</td><td>18.75</td><td>22.16</td><td>1.31</td><td>10.49</td></tr>
114
+ <tr><td>PCA</td><td>7.98</td><td>0.27</td><td>17.30</td><td>2.93</td><td>0.17</td><td>14.46</td></tr>
115
+ <tr><td>XGBoost</td><td>3.49</td><td>0.03</td><td>18.45</td><td>8.99</td><td>0.50</td><td>16.26</td></tr>
116
+ <tr><td>LightGBM</td><td>-5.42</td><td>-0.43</td><td>20.93</td><td>18.44</td><td>1.05</td><td>14.92</td></tr>
117
+ <tr><td>A2C</td><td>10.82</td><td>0.40</td><td>17.70</td><td>22.96</td><td>1.20</td><td>14.86</td></tr>
118
+ <tr><td>PPO</td><td>7.68</td><td>0.25</td><td>14.97</td><td>14.96</td><td>0.81</td><td>12.95</td></tr>
119
+ <tr><td>DDPG</td><td>2.53</td><td>-0.02</td><td>15.04</td><td>1.97</td><td>0.12</td><td>16.54</td></tr>
120
+ <tr><td>TD3</td><td>5.54</td><td>0.14</td><td>16.58</td><td>8.66</td><td>0.52</td><td>10.26</td></tr>
121
+ <tr><td>SAC</td><td>37.60</td><td>1.44</td><td>15.18</td><td>9.77</td><td>0.56</td><td>11.68</td></tr>
122
+ <tr><td rowspan="5">LLM</td><td>Gemini&nbsp;2.5&nbsp;Pro</td><td>14.23</td><td>0.55</td><td>17.01</td><td>16.29</td><td>0.90</td><td>14.01</td></tr>
123
+ <tr><td>Claude&nbsp;3.7&nbsp;Sonnet</td><td>10.92</td><td>0.40</td><td>18.88</td><td>10.13</td><td>0.57</td><td>14.49</td></tr>
124
+ <tr><td>DeepSeek&#8209;R1</td><td>21.94</td><td>0.93</td><td><b>14.36</b></td><td>14.66</td><td>0.81</td><td>14.60</td></tr>
125
+ <tr><td>Qwen3&#8209;8B</td><td>12.85</td><td>0.47</td><td>19.52</td><td>15.44</td><td>0.79</td><td>14.38</td></tr>
126
+ <tr><td><b>Alpha&#8209;R1&nbsp;(Ours)</b></td><td><b>47.87</b></td><td><b>1.62</b></td><td>16.91</td><td><b>40.57</b></td><td><b>2.23</b></td><td><b>6.58</b></td></tr>
127
+ </tbody>
128
+ </table>
129
+
130
+ 域外泛化(无需重训,论文 Table 2):Russell 2000 上 80.54% AR(SR 2.46),CSI 1000 上 73.52% AR(SR 2.80)。AR = 年化收益,SR = 超额夏普比率,MDD = 最大回撤。
131
+
132
+ ## 训练 (Training)
133
+
134
+ 基于 Qwen3-8B,使用 verl 进行 GRPO 训练,奖励为市场反馈奖励(`R_final = R_adjusted - P_structural`,论文 §3.4)。训练配置与参考奖励实现见 GitHub 仓库的 `training/` 目录。
135
+
136
+ ## 局限性 (Limitations)
137
+
138
+ - 本模型面向学术研究场景,输出不构成任何投资建议。
139
+ - 因子筛选依赖上游的描述生成与回测管线(见 GitHub 仓库),模型本身不直接产出可交易信号。
140
+
141
+ ## 引用 (Citation)
142
+
143
+ ```bibtex
144
+ @article{jiang2025alphar1,
145
+ title={Alpha-R1: Alpha Screening with LLM Reasoning via Reinforcement Learning},
146
+ 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},
147
+ journal={arXiv preprint arXiv:2512.23515},
148
+ year={2025}
149
+ }
150
+ ```
151
+
152
+ ## License
153
+
154
+ 本项目基于 [MIT License](https://opensource.org/licenses/MIT) 发布。
README_en.md ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Alpha-R1: Alpha Screening with LLM Reasoning via Reinforcement Learning
2
+
3
+ <p align="center">
4
+ <a href="README_en.md">English</a> | <a href="README.md">中文</a>
5
+ </p>
6
+
7
+ **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.
8
+
9
+ - 📄 Paper: [arXiv:2512.23515](https://arxiv.org/abs/2512.23515)
10
+ - 💻 Code: [FinStep-AI/Alpha-R1](https://github.com/FinStep-AI/Alpha-R1) (inference pipeline / qlib backtesting / training config)
11
+ - 📜 License: MIT
12
+
13
+ ## Model Overview
14
+
15
+ <p align="center">
16
+ <img src="assets/framework.png" alt="Alpha-R1 framework overview" style="width: 100%;">
17
+ </p>
18
+
19
+ | Item | Content |
20
+ |---|---|
21
+ | Base model | [Qwen/Qwen3-8B](https://huggingface.co/Qwen/Qwen3-8B) |
22
+ | Training | GRPO (verl) with a market-feedback reward |
23
+ | Input | Decision-context prompt: concatenated semantic factor descriptions `α_des` |
24
+ | Output | Selected factors listed in `<alpha_list>` |
25
+ | Candidate pool | 82 Alpha101 factors (as screened in the paper) |
26
+ | Recommended decoding | temperature=0 (greedy), top_p=0.7, max_new_tokens=4096 |
27
+
28
+ ## Quick Start
29
+
30
+ ### transformers
31
+
32
+ ```python
33
+ from transformers import AutoModelForCausalLM, AutoTokenizer
34
+
35
+ model_id = "FinStep/Alpha-R1"
36
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
37
+ model = AutoModelForCausalLM.from_pretrained(model_id, dtype="bfloat16", device_map="auto")
38
+
39
+ prompt = "<decision context: concatenated factor descriptions>" # see the GitHub repo for the prompt builder
40
+ inputs = tokenizer.apply_chat_template(
41
+ [{"role": "user", "content": prompt}],
42
+ add_generation_prompt=True, return_tensors="pt",
43
+ ).to(model.device)
44
+
45
+ # paper setting: temperature=0 (greedy), top_p=0.7
46
+ out = model.generate(inputs, max_new_tokens=4096, do_sample=False)
47
+ print(tokenizer.decode(out[0][inputs.shape[1]:], skip_special_tokens=True))
48
+ ```
49
+
50
+ ### vLLM
51
+
52
+ ```python
53
+ from vllm import LLM, SamplingParams
54
+
55
+ llm = LLM(model="FinStep/Alpha-R1")
56
+ params = SamplingParams(temperature=0.0, top_p=0.7, max_tokens=4096)
57
+ outputs = llm.chat([[{"role": "user", "content": prompt}]], params)
58
+ ```
59
+
60
+ 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).
61
+
62
+ ## Output Contract
63
+
64
+ The model lists the selected factor ids inside `<alpha_list>...</alpha_list>`, e.g.:
65
+
66
+ ```
67
+ <alpha_list>alpha001, alpha021, alpha053</alpha_list>
68
+ ```
69
+
70
+ Validation and parsing scripts are provided under `src/alpha_r1/parsing/` in the GitHub repository.
71
+
72
+ ## Performance
73
+
74
+ 12-month out-of-sample testing (2025-01-01 to 2025-12-31, paper Table 1):
75
+
76
+ <p align="center">
77
+ <img src="assets/main_result_sp500.png" alt="Backtest NAV comparison on the S&P 500 asset pool" style="width: 49%;">
78
+ <img src="assets/main_result_csi300.png" alt="Backtest NAV comparison on the CSI 300 asset pool" style="width: 49%;">
79
+ </p>
80
+
81
+ <table>
82
+ <thead>
83
+ <tr>
84
+ <th rowspan="2">Type</th>
85
+ <th rowspan="2" width="160">Method</th>
86
+ <th colspan="3">S&amp;P 500</th>
87
+ <th colspan="3">CSI 300</th>
88
+ </tr>
89
+ <tr>
90
+ <th>AR (%)</th>
91
+ <th>SR</th>
92
+ <th>MDD (%)</th>
93
+ <th>AR (%)</th>
94
+ <th>SR</th>
95
+ <th>MDD (%)</th>
96
+ </tr>
97
+ </thead>
98
+ <tbody>
99
+ <tr><td rowspan="9">Non-LLM</td><td>Buy&nbsp;&amp;&nbsp;Hold</td><td>19.34</td><td>0.80</td><td>18.75</td><td>22.16</td><td>1.31</td><td>10.49</td></tr>
100
+ <tr><td>PCA</td><td>7.98</td><td>0.27</td><td>17.30</td><td>2.93</td><td>0.17</td><td>14.46</td></tr>
101
+ <tr><td>XGBoost</td><td>3.49</td><td>0.03</td><td>18.45</td><td>8.99</td><td>0.50</td><td>16.26</td></tr>
102
+ <tr><td>LightGBM</td><td>-5.42</td><td>-0.43</td><td>20.93</td><td>18.44</td><td>1.05</td><td>14.92</td></tr>
103
+ <tr><td>A2C</td><td>10.82</td><td>0.40</td><td>17.70</td><td>22.96</td><td>1.20</td><td>14.86</td></tr>
104
+ <tr><td>PPO</td><td>7.68</td><td>0.25</td><td>14.97</td><td>14.96</td><td>0.81</td><td>12.95</td></tr>
105
+ <tr><td>DDPG</td><td>2.53</td><td>-0.02</td><td>15.04</td><td>1.97</td><td>0.12</td><td>16.54</td></tr>
106
+ <tr><td>TD3</td><td>5.54</td><td>0.14</td><td>16.58</td><td>8.66</td><td>0.52</td><td>10.26</td></tr>
107
+ <tr><td>SAC</td><td>37.60</td><td>1.44</td><td>15.18</td><td>9.77</td><td>0.56</td><td>11.68</td></tr>
108
+ <tr><td rowspan="5">LLM</td><td>Gemini&nbsp;2.5&nbsp;Pro</td><td>14.23</td><td>0.55</td><td>17.01</td><td>16.29</td><td>0.90</td><td>14.01</td></tr>
109
+ <tr><td>Claude&nbsp;3.7&nbsp;Sonnet</td><td>10.92</td><td>0.40</td><td>18.88</td><td>10.13</td><td>0.57</td><td>14.49</td></tr>
110
+ <tr><td>DeepSeek&#8209;R1</td><td>21.94</td><td>0.93</td><td><b>14.36</b></td><td>14.66</td><td>0.81</td><td>14.60</td></tr>
111
+ <tr><td>Qwen3&#8209;8B</td><td>12.85</td><td>0.47</td><td>19.52</td><td>15.44</td><td>0.79</td><td>14.38</td></tr>
112
+ <tr><td><b>Alpha&#8209;R1&nbsp;(Ours)</b></td><td><b>47.87</b></td><td><b>1.62</b></td><td>16.91</td><td><b>40.57</b></td><td><b>2.23</b></td><td><b>6.58</b></td></tr>
113
+ </tbody>
114
+ </table>
115
+
116
+ 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.
117
+
118
+ ## Training
119
+
120
+ 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.
121
+
122
+ ## Limitations
123
+
124
+ - This model is intended for academic research; its outputs do not constitute investment advice.
125
+ - Factor selection depends on the upstream description-generation and backtesting pipeline (see the GitHub repository); the model alone does not produce tradable signals.
126
+
127
+ ## Citation
128
+
129
+ ```bibtex
130
+ @article{jiang2025alphar1,
131
+ title={Alpha-R1: Alpha Screening with LLM Reasoning via Reinforcement Learning},
132
+ 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},
133
+ journal={arXiv preprint arXiv:2512.23515},
134
+ year={2025}
135
+ }
136
+ ```
137
+
138
+ ## License
139
+
140
+ This project is released under the [MIT License](https://opensource.org/licenses/MIT).
assets/framework.png ADDED

Git LFS Details

  • SHA256: 81e3be736d060b30223d5200ab9d4b2dc4e8fcd45b493e14c23c5a7a4d9d2177
  • Pointer size: 131 Bytes
  • Size of remote file: 204 kB
assets/main_result_csi300.png ADDED

Git LFS Details

  • SHA256: 269b9d17f54862d0fad4a20e44152ba789ca4e08aa6735b3bb29d4d6872671e1
  • Pointer size: 131 Bytes
  • Size of remote file: 594 kB
assets/main_result_sp500.png ADDED

Git LFS Details

  • SHA256: 9a4783468fcbec1faf4719b96196f12ffb264b5be1539dcbdc020fffe2f7c219
  • Pointer size: 131 Bytes
  • Size of remote file: 554 kB