穿越Alpha丛林:基于LLM的MCTS框架用于公式化因子挖掘
石宇、段轶通、李健
跨学科信息科学研究所
清华大学
{shi-y23, dyt19}@mails.tsinghua.edu.cn, lapordge@gmail.com
摘要
Alpha因子挖掘在量化投资中至关重要,用于从复杂的金融数据中识别预测信号。尽管传统的公式化Alpha挖掘依赖于人类专业知识,当代自动化方法(如基于遗传编程或强化学习的方法)通常在搜索效率上存在不足,或者生成的Alpha因子难以解释。本文介绍了一种将大型语言模型(LLMs)与蒙特卡罗树搜索(MCTS)相结合的新型框架,以克服这些局限性。我们的方法利用LLM的指令遵循和推理能力,在MCTS驱动的探索过程中迭代生成并优化符号Alpha公式。一项关键创新是通过每个候选因子的财务回测结果提供的丰富定量反馈来引导MCTS探索,从而实现对广阔搜索空间的有效导航。此外,引入了频繁子树避免机制以增强搜索效率和Alpha因子性能。实验结果表明,我们的基于LLM的框架在挖掘具有更高预测准确性、交易表现和改进可解释性的Alpha因子方面优于现有方法,同时提供了一种更高效的公式化Alpha挖掘解决方案。
1 引言
金融市场中的价格走势预测,其特征为低信噪比,仍然是量化投资的核心挑战。一种常见的策略是通过从股票数据中提取预测信号(即Alpha因子,以下简称“Alpha”),以增强模型的预测能力 Qian et al. [2007]; Tulchinsky [2019]。当前的Alpha因子挖掘方法大致分为两类:基于神经网络和基于公式的。神经方法(例如FactorVAE Duan等[2022], HIST Xu等[2021a], REST Xu等[2021b])通过深度学习隐式构建复杂的Alphas,捕捉复杂的模式,但往往缺乏可解释性。相比之下,基于公式的方 法旨在发现由明确数学表达式表示的Alphas。这些Alpha因子传统上是由人类手工制作的,反映市场洞察(例如Fama-French因子 (Fama and French [1992]),金融异常 (Harvey et al. [2016]; Hou et al. [2020]))。近年来,出现了自动化技术,采用遗传编程或强化学习等方法来发现此类公式化Alpha Shi等[2024]; Yu等[2023]; Zhang等[2020, 2023b]。
尽管前景广阔,现有的自动化公式化Alpha挖掘方法仍面临重大限制。首先,所发现的Alphas往往表现出较差的可解释性。这些自动化方法经常进行无约束的数据驱动探索,缺乏足够的金融理论或领域专业知识指导。因此,所得公式可能过于复杂且不透明。这种缺乏透明度在实际投资场景中带来了相当大的挑战:它阻碍了从业者理解策略背后的基本经济原理,使得准确归因投资组合表现变得困难,并可能侵蚀信任,从而阻碍即使在回测中表现出色的这些Alphas的采用。其次,当前方法通常遭受搜索效率低下之苦。为了识别足够数量的有效Alpha因子,通常需要生成和评估大量的候选公式。尽管由于低信号密度而必要,这种穷尽搜索过程本质上增加了发现虚假关系和过拟合训练数据的可能性 Harvey et al. [2016]。结果,许多发现的Alphas可能表现出较差的泛化能力,并在样本外表现不佳。
解决上述问题需要创新的方法。在这方面,大型语言模型(LLMs)因其广泛的知识储备和强大的推理能力而成为一个有前途的方向,这在类似任务(如金融投资Yu等人[2024]和代码生成Li等人[2024a])中得到了证明。受LLM推理进展(例如链式思维Wei等人[2022],树形思维Yao等人[2024])和蒙特卡罗树搜索(MCTS)Coulom [2007]; Silver等人[2016]在复杂问题上提高LLM性能的有效性Zhang等人[2024]的启发,我们将Alpha挖掘建模为一个由MCTS驱动的树搜索问题。在此框架中,树中的每个节点代表一个候选Alpha公式,从而系统地探索和改进广阔的Alpha空间。
与数学推导等任务不同,其中在推导完成前很难评估中间步骤对最终解的贡献,Alpha因子挖掘通过回测为每个候选Alpha公式提供了详细的反馈。我们利用这一详细反馈来指导我们的搜索。我们以LLM生成的Alpha公式作为搜索树的根节点开始搜索。然后我们利用LLM迭代地优化和改进公式,通过新节点扩展树。此外,为了避免生成的Alpha公式的同质化,我们在有效的Alphas上进行频繁子树挖掘,并明确指示LLM在生成过程中避免使用最频繁的子树。绕过这些频繁子树可以提高搜索效率和Alpha效果。
LLM与MCTS之间的协同作用在各种推理任务中显示出希望 Zhao等人[2023]; DeLorenzo等人[2024]。然而,我们的贡献是一个专门针对公式化Alpha因子挖掘复杂性的新型应用。与通用推理任务中MCTS可能探索预定义动作或LLM评估抽象状态Xie等人[2024]; Li等人[2025]; Dainese等人[2024]不同,我们的框架直接利用LLM作为符号Alpha公式的生成引擎。至关重要的是,MCTS探索由每个候选Alpha的财务回测结果提供的丰富、定量和领域特定反馈指导。这种迭代循环——LLM的生成能力由MCTS根据实证财务表现指导——提供了独特的优势。
本文的主要贡献可以概括如下:
- 我们提出了一种基于LLM的MCTS框架用于公式化Alpha挖掘,将该任务建模为树搜索推理问题,其中LLM在详细回测反馈指导下多步生成和优化公式。
-
- 我们设计了一种频繁子树避免方法,通过引导LLM探索较少常见但潜在有效的公式结构来提高搜索效率和Alpha效果。
-
- 我们进行了一系列实验,以展示我们提出的框架的有效性。我们框架挖掘的Alphas在保持良好可解释性的同时实现了优越的预测性能和交易表现,相比其他方法提供了更高效的解决方案。
2 相关工作
2.1 自动化公式化Alpha挖掘
传统的公式化Alpha因子挖掘主要依赖遗传编程(GP)。早期作品如GPLearn Lin等人[2019b]利用GP结合时间序列操作符。AutoAlpha Zhang等人[2020]通过多样化的低深度Alpha初始化增强了挖掘效率,而AlphaEvolve Cui等人[2021]则采用计算图来进化更复杂的Alpha因子。除了GP之外的方法包括AlphaGen Yu等人[2023],它使用强化学习优化Alpha集的表现,以及AlphaForge Shi等人[2024],它具有基于深度学习的生成-预测结构。
尽管它们充满潜力,现有的自动化公式化Alpha挖掘方法仍面临显著限制。首先,发现的Alphas往往可解释性差。这些自动化方法通常进行不受约束的数据驱动探索,常常缺乏足够的金融理论或领域专业知识指导。因此,所得公式可能过于复杂且不透明。这种缺乏透明度在实际投资场景中构成了相当大的挑战:它阻碍了从业者理解策略背后的经济原理的能力,使得准确归因投资组合表现变得困难,并可能侵蚀信任,从而阻碍即使在回测中表现良好的这些Alphas的采用。其次,当前方法通常存在搜索效率低下的问题。为了识别足够数量的有效Alpha因子,通常需要生成和评估大量候选公式。尽管由于低信号密度而必要,这种穷举搜索过程本质上增加了发现虚假关系和过度拟合训练数据的可能性 Harvey等人[2016]。结果,许多发现的Alphas可能表现出较差的泛化能力,并交付令人失望的样本外表现。
解决上述问题需要创新的方法。在这方面,大型语言模型(LLMs)因其广泛的知识储备和强大的推理能力而成为一个有前途的方向,这在类似任务(如金融投资Yu等人[2024]和代码生成Li等人[2024a])中得到了证明。受LLM推理进展(例如链式思维Wei等人[2022],树形思维Yao等人[2024])和蒙特卡罗树搜索(MCTS)Coulom [2007]; Silver等人[2016]在复杂问题上提高LLM性能的有效性Zhang等人[2024]的启发,我们将Alpha挖掘建模为一个由MCTS驱动的树搜索问题。在此框架中,树中的每个节点代表一个候选Alpha公式,从而系统地探索和改进广阔的Alpha空间。
与数学推导等任务不同,其中在推导完成前很难评估中间步骤对最终解的贡献,Alpha因子挖掘通过回测为每个候选Alpha公式提供了细粒度的反馈。我们利用这一详细反馈来指导我们的搜索。我们以LLM生成的Alpha公式作为搜索树的根节点开始搜索。然后我们利用LLM迭代地优化和改进公式,通过新节点扩展树。此外,为了避免生成的Alpha公式的同质化,我们在有效的Alphas上进行频繁子树挖掘,并明确指示LLM在生成过程中避免使用最频繁的子树。绕过这些频繁子树可以提高搜索效率和Alpha有效性。
MCTS与LLM之间的协同作用在各种推理任务中显示出了希望 Zhao等人[2023]; DeLorenzo等人[2024]。然而,我们的贡献是一种专门针对公式化Alpha因子挖掘复杂性的新型应用。与通用推理任务中MCTS可能探索预定义动作或LLM评估抽象状态Xie等人[2024]; Li等人[2025]; Dainese等人[2024]不同,我们的框架直接利用LLM作为符号Alpha公式的生成引擎。至关重要的是,MCTS探索由每个候选Alpha的财务回测结果提供的丰富、定量和领域特定反馈指导。这种迭代循环——LLM的生成能力由MCTS根据实证财务表现指导——提供了独特的优势。
本文的主要贡献可以概括如下:
- 我们提出了一种基于LLM的MCTS框架用于公式化Alpha挖掘,将该任务建模为树搜索推理问题,其中LLM在详细回测反馈指导下多步生成和优化公式。
-
- 我们设计了一种频繁子树避免方法,通过引导LLM探索较少常见但潜在有效的公式结构来提高搜索效率和Alpha有效性。
-
- 我们进行了一系列实验,以展示我们提出的框架的有效性。我们框架挖掘的Alphas在保持良好可解释性的同时实现了优越的预测性能和交易表现,相比其他方法提供了更高效的解决方案。
2 树搜索推理
树搜索方法最大化了LLM的探索能力,并允许不同层次的探索 Zhang等人[2023a]; Hu等人[2024]。因此,它们广泛应用于基于LLM的代理和推理领域 Li等人[2024a]; Wang等人[2024b,a]。建立在链式思维(CoT)Wei等人[2022]之上,树形思维(ToT)Yao等人[2024]将问题分解为推理步骤,并应用树搜索进行步骤探索。LATS Zhou等人[2023]将LLM视为更通用的代理,在推理和行动层面进行探索。RethinkMCTS Li等人[2024a]将代码生成任务建模为推理问题,并应用蒙特卡罗树搜索算法进行思想层面的搜索。
3 预备知识
3.1 Alpha因子挖掘
我们考虑一个包含n只股票并在T个交易日观察的金融市场。对于每只股票i ∈ {1,…, n}和天t ∈ {1,…, T},其状态由特征向量x_{i,t} ∈ R^m描述。原始特征包括每日开盘价、最高价、最低价、收盘价(OHLC)、交易量和成交量加权平均价格(VWAP)。完整的市场历史是一个张量X ∈ R^{T × n × m}。相应地,未来收益被组织成矩阵Y ∈ R^{T × n},其中y_{i,t}是股票i在紧随第t天之后的特定未来期间的实际收益。为了捕捉时间模式,我们使用长度为τ的回顾窗口。Alpha因子f将此窗口的历史特征数据X_{t−τ+1:t}={X_s | t−τ < s ≤ t}映射到预测得分向量v_t=f(X_{t−τ+1:t}) ∈ R^n。每个v_{i,t}代表Alpha对股票i预期未来收益的定量预测。
Alpha因子挖掘的目标是发现一组多样的K个Alpha,F={f_1,…,f_K}。这些单独Alpha的输出{v_{k,t}=f_k(X_{t−τ+1:t})}{k=1}K通常由组合模型g(例如线性回归或神经网络)聚合成复合预测信号z_t=g({v_{k,t}}_{k=1}K; θ_g) ∈ R^n,其中θ_g是模型参数。这些信号在T天内收集形成矩阵Z(F, θ_g) ∈ R^{T × n}。通过使用预定义的性能指标P(例如信息系数,这是我们旨在最大化的指标)比较复合信号Z与实际未来收益Y来评估其质量。组合模型的最优参数θ_g*通过最大化指标学习得到:θ_g*(F)=arg max{θ_g} P(Z(F, θ_g), Y)。令Z^(F)=Z(F, θ_g*(F))为使用给定Alpha集F的最优参数生成的复合预测信号矩阵。总体目标是找到一个最优的Alpha集合F,使这个最优组合信号的性能最大化:F^=arg max_F P(Z^(F), Y)。由于潜在Alpha的广阔搜索空间及其复杂的相互作用,这构成了一项具有挑战性的双层优化问题。
图1: 我们框架的概述。MCTS引导Alpha公式优化的探索。选择节点后,通过各种评价维度的加权分数确定细化维度。LLM随后执行双重角色:针对该维度提出有针对性的细化建议,然后将这些建议转化为经过评估和潜在树扩展的细化Alpha公式。
3.2 公式化Alpha
在本工作中,我们专注于公式化Alpha:由数学表达式定义的Alpha因子。这些表达式由运算符和操作数构造而成。操作数通常包括原始输入特征(例如close_{i,t})和数值常量。运算符应用数学变换;例如,时间序列运算符可用于构造像MA(close, 5) - MA(close, 20)这样的Alpha,其中MA代表移动平均。这个特定的Alpha通过对比短期与长期收盘价的移动平均来捕捉价格趋势。完整可用运算符列表见附录D。公式化Alpha自然表示为表达式树(叶节点:操作数;内部节点:运算符),使其结构化但灵活的性质适合我们框架中的自动化挖掘技术。
4 方法论
我们提出的Alpha挖掘框架整合了LLM与MCTS,以自动发现和优化Alpha因子。图1提供了我们框架的概述。核心迭代过程包括:(1) 使用Upper Confidence Bound for Trees (UCT)准则Kocsis和Szepesvári [2006]选择一个有希望的节点(Alpha公式),(2) 通过LLM生成一个优化的Alpha,由特定评估维度的表现反馈指导,扩展该节点,(3) 通过回测评估新的Alpha,并利用这些评估结果形成新节点(见附录B详细介绍此工作流)。LLM的作用有两个:首先,根据表现欠佳的评估维度提出针对性的优化建议,其次,将这些建议转化为具体的Alpha公式。这个迭代优化和评估过程继续进行,根据发现的Alpha整体质量调整每次扩展的数量。最终,符合预定义标准(例如IC、RankIC阈值)的高性能Alphas被收集到一个有效的Alpha库中。
4.1 选择
在我们的MCTS框架中,选择步骤平衡探索和开发。搜索树中的每个节点s代表一个Alpha,由其公式和优化历史表征。动作a对应于应用于s的具体优化。每个节点维护一个Q(s, a)值,代表从s出发并采取动作a获得的最大累积奖励(例如回测表现)。我们使用UCT准则对潜在动作进行评分:
UCT(s,a)=Q(s,a)+cln(Ns)Ns′ \operatorname{UCT}(s, a)=Q(s, a)+c \sqrt{\frac{\ln \left(N_{s}\right)}{N_{s^{\prime}}}} UCT(s,a)=Q(s,a)+cNs′ln(Ns)
其中N_s是父状态s的访问次数,N_{s’}是通过动作a产生的子状态s’的访问次数,c是探索权重。
与标准MCTS不同,选择通常进行到叶节点才进行扩展和模拟,我们的方法允许任何节点进行扩展。这是因为每个Alpha优化都可以立即通过回测进行评估,消除了单独模拟阶段的需要。为此,如果内部节点s根据其现有子节点通过UCT选择,则我们也考虑一个“虚拟”动作a_p,实际上提议扩展s本身。这个虚拟动作a_p(导致一个概念上与s相同的s_p状态)的访问次数被视为s的实际子节点数量。如果这个虚拟动作a_p产生最高的UCT评分,则选择节点s进行扩展,从而创建一个新的子节点。这种机制确保有希望的非叶节点可以进一步优化。
4.2 扩展
在选择节点s进行扩展后,生成一个新的、优化的Alpha因子。这个过程结构化以增强LLM的有效性和优化质量。
维度导向的优化建议。每个节点s关联一个多维评估分数向量E_s=[e_1,…,e_q] ∈ [0,e_max]^q,其中e_i是第i个评估维度的分数,e_max是最大分数。为了引导优化朝着弱点方向进行,同时保持探索多样性,我们随机选择一个维度进行改进。选择维度i的概率由以下给出:
Pi(s)=Softmax((emax⋅1q−Es)/T)i P_i(s)=\operatorname{Softmax}\left(\left(e_{\max } \cdot \mathbf{1}_{q}-\boldsymbol{E}_{s}\right) / T\right)_i Pi(s)=Softmax((emax⋅1q−Es)/T)i
其中\mathbf{1}_q是一个q维的全一向量,T是一个控制随机性的温度参数,Softmax函数将分数归一化为概率分布。这优先选择分数较低的维度。
一旦选择了维度,LLM生成针对该维度改进表现的优化建议。为了使这些建议更具基础并提高其实用相关性,我们使用少样本学习,使用有效Alpha库中的Alpha作为示例(详见附录C.2)。
Alpha公式生成和验证。基于选定维度和LLM的定向建议,LLM首先制定一个优化的Alpha概念描述。然后从这个描述生成相应的Alpha公式。此公式经过自动有效性检查(例如语法正确性)。如果公式无效,LLM会收到反馈以进行迭代修正。有效公式随后进行回测,其多维评估结果构成MCTS树中的新节点。
4.3 多维Alpha评估
我们框架中的评估步骤对于评估候选Alpha公式的潜在贡献至现有的有效Alpha库至关重要。与传统MCTS不同,我们绕过模拟,直接评估Alpha的回测表现,引导搜索朝向有希望的表达式。
一个关键挑战是有效Alpha库的演变性质,逐步提高了新Alpha的标准。为此,我们采用相对排名方法。对于诸如信息系数(IC)之类的度量,Alpha f的相对排名R_{IC}^f为:
RICf=1N∑i=1NI(IC(f)<IC(fi)) R_{I C}^{f}=\frac{1}{N} \sum_{i=1}^{N} I\left(I C(f)<I C\left(f_{i}\right)\right) RICf=N1i=1∑NI(IC(f)<IC(fi))
其中f_i是大小为N的库中的一个Alpha,I(·)是指示函数。这确保了一个适应性的评估标准,避免了早期过于严格或后期过于宽松的固定阈值问题。
为了提供细化的反馈,我们从多个维度评估Alpha公式。维度的选择可以根据具体要求定制;在本研究中,我们举例说明了使用五个关键方面进行多维评估:有效性(预测准确性)、稳定性(预测准确性的稳定性)、换手率(日交易量在期望范围内)、多样性(对有效Alpha库新颖性的贡献)和过拟合风险。对于这些维度中的每一个,排除过拟合风险,根据相关的相对排名回测度量计算分数e_i。第i个维度的分数因此由e_i=1-R_{m_i}I给出,其中R_{m_i}I表示与该维度相关特定回测度量m_i的相对排名(例如,对于有效性,m_i可能是IC)。
过拟合风险评估有所不同。我们利用LLM生成此分数(详见附录J.3中的具体提示),考虑到Alpha公式及其优化历史,从而融入定性、专家般的判断。所有维度分数(e_i)的平均值构成用于更新相应MCTS节点Q值的奖励信号,从而引导搜索朝向更有希望的Alpha表达式。我们的框架灵活适应针对特定目标的其他评估标准。
4.4 反向传播
在反向传播过程中,我们更新从评估节点到根节点路径上节点的Q值。节点的Q值代表其子树中找到的最大评估分数。我们方法的一个新颖之处在于LLM生成每个节点优化过程的简要摘要,包括各维度分数的变化。这些摘要被整合到搜索树的整体优化历史中。
至关重要的是,为了提高优化建议的质量和过拟合评估的准确性,LLM获得了上下文信息:当前节点父节点、子节点和兄弟节点的优化历史。这使得LLM能够避免冗余建议,并更好地推断当前Alpha的过拟合程度,通过分析其历史优化轨迹及其与搜索空间中邻近探索的关系。
4.5 频繁子树避免
为减轻Alpha公式同质化并防止在Alpha挖掘过程中过度利用常见的结构模式,我们引入了频繁子树避免(FSA)。这一方法受到AutoAlpha Zhang等人[2020]观察的启发,即公式化Alpha的内在模式显著受到其“根基因”的影响。
我们将根基因定义为Alpha公式表达树中源自叶节点(即原始特征)的子树。重要的是,在识别根基因时,我们抽象掉了运算符的具体参数值,仅关注树结构。例如,在"Std(close Ma(vwap, 20), 20)/Std(high-low, 15)"中,"Ma(vwap, t )“和"Std(high-low, t )”(其中t代表任何参数)都被视为根基因。这些根基因的集合表征了Alpha的基础结构属性。
我们的FSA方法通过识别并抑制这些频繁出现的根基因结构来运作。如图2所示,我们首先从先前发现的有效Alpha库中挖掘频繁闭合根基因。
Alpha Zoo
1 Std(close-vwap,25)/Std(vwap,40)
2 Ma(Pct(close,20)-Pct(volume,20),15)+Skew(close-vwap,30)
3 Ma(Pct(close,10)-Pct(volume,10)/Std(Pct(close,10),15),20)
4 Pct(close,20)-Ma(volume,30)/volume
5 Std(Pct(vwap,20),25)-Sum(volume,40)/volume
6 Zscore(Ma(close-vwap,30)/Std(close,30),30)
频繁子树频率
Pct(close, t)
close-vwap
4
Alpha生成提示
在设计Alpha表达式时,请尽量避免包含以下子表达式:[Pct(close, t), close-vwap]
图2:频繁子树避免。从Alpha Zoo中的有效Alpha中挖掘顶级频繁子树。然后引导LLM在Alpha生成过程中避免这些子表达式。
当一个频繁子树被认为是闭合的,如果它的所有直接超树(即子树加上一个额外节点)都没有相同的支撑计数;这有助于识别最大公共模式。然后我们选择出现频率最高的前k个闭合子树(例如,图中的k=2),并引导LLM避免生成包含这些特定子表达式的新Alpha公式。
FSA作为一种补充机制,增强了MCTS搜索过程。虽然MCTS固有地平衡探索和利用,但如果LLM主要基于过度利用的结构模式提出候选人,其效率可能会受到影响。FSA通过主动引导LLM从一开始就生成更多样化的公式结构来解决这个问题。通过抑制包含这些频繁子树的Alpha生成,FSA确保MCTS获得一组结构新颖的公式,从而能够更有效地探索多样且潜在更有希望的Alpha搜索空间区域。如第5.3节所示,这种方法显著提高了搜索效率和Alpha性能。
5 实验
我们在真实世界股票市场数据上评估了我们提出的框架,解决了以下研究问题(RQs):
Q1: 我们的方法在预测表现上如何与基线比较?
Q2: MCTS和频繁子树避免是否是我们框架中的有效组成部分?
Q3: 我们方法挖掘的Alpha公式的可解释性与其他方法相比如何?
5.1 实验设置
数据 我们的实验在中国A股市场上进行。为了确保全面的市场代表性,我们的实验分别针对两个股票池:沪深300指数(大盘、流动性强的股票)和沪深1000指数(中小盘股票)。我们定义了两个不同的预测目标:股票的10天回报和30天回报,买入和卖出在收盘价执行。数据按时间顺序分为训练(2011/01/01-2020/12/31)和测试(2021/01/01-2024/11/30)周期。
基线对比 我们将我们的框架与几种公式化Alpha挖掘方法进行比较。DSO(Deep Symbolic Optimization)Landajuela等人[2022]是一种用于符号优化的深度学习框架。GP使用遗传编程进行Alpha挖掘。AlphaGen Yu等人[2023]是一种用于公式化Alpha挖掘的强化学习框架。AlphaForge Shi等人[2024]具有生成-预测架构;为了公平比较挖掘能力,我们仅使用其Alpha挖掘网络。在基于LLM的方法中,CoT(Chain-of-Thought)Wei等人[2022]促使LLM进行逐步推理以直接生成Alpha因子。ToT(Tree-of-Thought)Yao等人[2024]使LLM能够在树结构中探索多种推理路径。最后,FAMA Li等人[2024b]利用带有上下文示例的LLM来多样化公式,并通过“经验链”从过去的成功中学习。
我们在我们的方法和基于LLM的基线中都使用OpenAI的GPT4.1模型作为LLM。此外,我们在附录G.3中详细评估了使用不同LLM主干时我们框架的性能。关于LLM中的潜在数据泄露问题,请参阅附录G.2中的讨论。
为了进行公平和严格的比较,我们基于受控的搜索计数,即等效的Alpha生成数,进行基准性能测试。这种方法非常适合,因为我们的框架和所有基线本质上涉及一个独特的搜索过程,每次迭代都会生成一个新的候选Alpha公式。对于基于LLM的方法(包括我们的方法),我们报告搜索计数为1,000,2,0001,000,2,0001,000,2,000 或 3,000时的最佳表现。对于其他方法,搜索计数从小值开始逐步增加,直到性能收敛,上限为600,000(200×600,000(200 \times600,000(200× 基于LLM的方法最大值)。这种实验设计促进了两种关键比较:首先,它允许对我们框架与其他基于LLM的方法在相似、明确定义的计算预算下进行公平评估;其次,它能够对搜索效率与非LLM方法进行稳健比较。此外,为应对实际限制,任何单次实验运行的最大墙钟运行时间限制为24小时。
5.2 实验1:预测表现比较 (Q1)
我们使用两种代表性的机器学习模型评估生成的Alphas与基线:LightGBM [Ke et al., 2017],一种高效的梯度提升框架,和一个3层多层感知机(MLP)用于捕捉复杂的非线性。对于每种Alpha挖掘方法,我们生成三个不同大小的Alpha集——10、50 和 100 ——作为这些模型的输入特征。这允许对不同大小的挖掘Alpha集进行全面比较。输入Alpha和目标回报在训练前进行横截面等级标准化以减轻离群值的影响。使用量化金融中的标准指标评估预测表现:信息系数(IC)和等级信息系数(RankIC)。
为了评估在模拟现实世界股票市场情景中挖掘出的Alpha的实际盈利能力,我们遵循既定的评估方法Yu等人[2023]并进行回测。具体而言,我们在Qlib平台Yang等人[2020]上实施顶-k/丢-n的投资组合构建策略。该策略的详细配置描述在附录F.3中。实际交易表现通过两个关键指标进行评估:年化回报(AR),衡量策略的绝对盈利能力,和信息比率(IR),量化其风险调整后的表现。
这四个指标(IC、RankIC、AR和IR)的组合提供了对挖掘出的Alpha的全面评估。如图3所示(详细结果见附录H),我们的框架在所有指标上始终优于基线。这表明我们框架挖掘出的Alpha对未来股票回报具有优越的预测能力,并能有效地转化为交易盈利能力。
5.3 实验2:消融研究 (Q2)
我们进行消融研究以评估我们框架中三个关键组件的效果:MCTS、多维反馈和FSA。
表1展示了这些组件对预测表现的影响。当纳入有效性与多样性作为反馈时,MCTS相较于CoT和ToT表现出优越的预测表现。随着集成更多反馈维度,表现逐渐改善。值得注意的是,虽然周转反馈略微降低了IC和RankIC,但它通过降低交易成本增强了实际交易指标(AR、IR)。集成FSA在LightGBM和MLP模型中均提升了所有指标的表现。这些结果突显了MCTS、多维反馈和FSA对框架效能的个体和集体贡献。
超越预测表现,图4(a)评估了FSA对搜索效率的影响,绘制了生成的总Alpha数与有效Alpha数的关系。即使没有FSA,我们的框架也比CoT和ToT展现出更高的搜索效率。FSA进一步放大了这一优势。关键在于,随着生成Alpha数的增加,CoT和ToT的效率由于多样性的减少而下降。相比之下,我们的方法通过FSA维持了高搜索效率,没有显著衰减。
5.4 实验3:Alpha公式的可解释性 (Q3)
在此实验中,我们评估不同方法挖掘的Alpha公式的可解释性。我们将Alpha公式的可解释性定义为其阐明合理逻辑、特定市场现象或投资策略的能力。为了量化这一点,我们随机选择每种方法的一个Alpha公式,并使用LLM对其可解释性进行排名。我们重复此过程
表1:消融研究结果。最佳结果以粗体突出显示。
| 搜索策略 | 包含的评估维度 | LightGBM | MLP | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 效果 | 多样性 | 周转 | 稳定性 | 过拟合风险 | IC | RankIC | AR | IR | IC | RankIC | AR | IR | |
| CoT | √ | √ | × | × | × | 0.0434 | 0.0395 | 0.0707 | 0.7461 | 0.0421 | 0.0393 | 0.0922 | 0.9962 |
| ToT | √ | √ | × | × | × | 0.0459 | 0.0427 | 0.0868 | 0.9337 | 0.0452 | 0.0435 | 0.0945 | 1.0348 |
| MCTS | √ | × | × | × | × | 0.0409 | 0.0374 | 0.0941 | 0.9775 | 0.0400 | 0.0376 | 0.0935 | 1.0010 |
| MCTS | √ | √ | × | × | × | 0.0501 | 0.0476 | 0.1003 | 1.0106 | 0.0486 | 0.0462 | 0.1023 | 1.0462 |
| MCTS | √ | √ | √ | × | × | 0.0492 | 0.0457 | 0.1063 | 1.1062 | 0.0489 | 0.0462 | 0.1185 | 1.2556 |
| MCTS | √ | √ | √ | √ | × | 0.0495 | 0.0462 | 0.1030 | 1.0331 | 0.0491 | 0.0465 | 0.1093 | 1.1773 |
| MCTS | √ | √ | √ | √ | √ | 0.0515 | 0.0479 | 0.1075 | 1.1121 | 0.0503 | 0.0478 | 0.1166 | 1.2127 |
| MCTS+FSA | √ | √ | √ | √ | √ | 0.0549 | 0.0512 | 0.1107 | 1.1792 | 0.0522 | 0.0503 | 0.1234 | 1.2712 |
注:Eff. = 效果,Div. = 多样性,Turn. = 周转,Stab. = 稳定性,O.R. = 过拟合风险。√表示包含该维度,×表示不包含。
图3:使用不同方法挖掘的Alpha训练的LightGBM和MLP模型的平均预测表现。
这表明我们框架挖掘出的Alpha对未来股票回报具有优越的预测能力,并能有效地转化为交易盈利能力。
5.3 实验2:消融研究 (Q2)
我们进行消融研究以评估我们框架中三个关键组件的效果:MCTS、多维反馈和FSA。
表1展示了这些组件对预测表现的影响。当纳入效果和多样性作为反馈时,MCTS相对于CoT和ToT表现出优越的预测表现。随着集成更多反馈维度,表现逐步改善。值得注意的是,尽管周转反馈略微降低了IC和RankIC,但它通过降低交易成本增强了实际交易指标(AR、IR)。集成FSA在LightGBM和MLP模型中均进一步提升了所有指标的表现。这些结果强调了MCTS、多维反馈和FSA对我们框架效能的个别和集体贡献。
超越预测表现,图4(a)评估了FSA对搜索效率的影响,绘制了生成的总Alpha数与有效Alpha数的关系。即使没有FSA,我们的框架也比CoT和ToT展现出更高的搜索效率。FSA进一步放大了这一优势。关键在于,随着生成Alpha数的增加,CoT和ToT的效率由于多样性的减少而下降。相比之下,我们的方法通过FSA维持了高搜索效率,没有显著衰减。
5.4 实验3:Alpha公式的可解释性 (Q3)
在此实验中,我们评估不同方法挖掘的Alpha公式的可解释性。我们将Alpha公式的可解释性定义为其阐明合理逻辑、特定市场现象或投资策略的能力。为了量化这一点,我们随机选择每种方法的一个Alpha公式,并使用LLM对其可解释性进行排名。我们重复此过程
表1:消融研究结果。最佳结果以粗体突出显示。
| 搜索策略 | 包含的评估维度 | | | | | LightGBM | | | | MLP | | | |
| :–: | :–: | :–: | :–: | :–: | :–: | :–: | :–: | 效果 | 多样性 | 周转 | 稳定性 | 过拟合风险 | IC | RankIC | AR | IR | IC | RankIC | AR | IR |
| CoT | √ | √ | × | × | × | 0.0434 | 0.0395 | 0.0707 | 0.7461 | 0.0421 | 0.0393 | 0.0922 | 0.9962 |
| ToT | √ | √ | × | × | × | 0.0459 | 0.0427 | 0.0868 | 0.9337 | 0.0452 | 0.0435 | 0.0945 | 1.0348 |
| MCTS | √ | × | × | × | × | 0.0409 | 0.0374 | 0.0941 | 0.9775 | 0.0400 | 0.0376 | 0.0935 | 1.0010 |
| MCTS | √ | √ | × | × | × | 0.0501 | 0.0476 | 0.1003 | 1.0106 | 0.0486 | 0.0462 | 0.1023 | 1.0462 |
| MCTS | √ | √ | √ | × | × | 0.0492 | 0.0457 | 0.1063 | 1.1062 | 0.0489 | 0.0462 | 0.1185 | 1.2556 |
| MCTS | √ | √ | √ | √ | × | 0.0495 | 0.0462 | 0.1030 | 1.0331 | 0.0491 | 0.0465 | 0.1093 | 1.1773 |
| MCTS | √ | √ | √ | √ | √ | 0.0515 | 0.0479 | 0.1075 | 1.1121 | 0.0503 | 0.0478 | 0.1166 | 1.2127 |
| MCTS+FSA | √ | √ | √ | √ | √ | 0.0549 | 0.0512 | 0.1107 | 1.1792 | 0.0522 | 0.0503 | 0.1234 | 1.2712 |
注:Eff. = 效果,Div. = 多样性,Turn. = 周转,Stab. = 稳定性,O.R. = 过拟合风险。√表示包含该维度,×表示不包含。
(a) 搜索效率比较。
(b) Alpha公式可解释性排名比较。
图4: 实验结果。(a) 各方法搜索效率的比较。(b) LLMs对Alpha公式平均可解释性排名的比较,较低的排名表示更好的可解释性。
50次并计算每种方法的平均排名。为减轻单一LLM可能带来的潜在偏差,我们汇总了三个不同LLM的排名。结果如图4 (b)所示。研究发现表明,通过我们框架挖掘出的公式在可解释性方面仅次于CoT方法生成的公式。值得注意的是,我们的方法在公式可解释性方面显著超越非LLM方法。这表明我们的方法在实现强大预测性能的同时,保持了高度的可解释性。
此外,考虑到LLM可能天然倾向于由LLM驱动过程生成的公式,我们在附录G.6中提供了我们方法和非LLM方法生成的Alpha公式的示例。虽然这不是正式的定量人类研究,但研究人员通过定性检查这些示例,应能清楚地区分我们方法衍生出的公式的优越可解释性。这种优越性通常表现为更清晰的底层逻辑和与非LLM方法生成的公式相比增强的透明度。
6 结论
我们提出了一种基于LLM的蒙特卡罗树搜索框架用于公式化Alpha挖掘。这种方法将Alpha挖掘建模为树搜索,其中LLM迭代地生成和优化候选公式,并由金融回测提供的定量反馈关键引导。为了促进搜索效率和Alpha有效性,我们引入了一个频繁子树避免机制。实验结果表明,我们的框架挖掘出的Alpha具有更高的预测准确性和交易表现,同时相较于现有方法在可解释性和搜索效率上也有所提升。这项工作开创了一个有希望的方向,即利用LLM和MCTS解决金融领域自动化公式化Alpha因子挖掘这一复杂挑战。
参考文献
Rémi Coulom. 在疯狂石头中的蒙特卡罗树搜索。在Proc. Game Prog. Workshop, Tokyo, Japan, pages 74-75, 2007.
Can Cui, Wei Wang, Meihui Zhang, Gang Chen, Zhaojing Luo, and Beng Chin Ooi. Alphaevolve: 一种学习框架以在量化投资中发现新的Alpha。在Proceedings of the 2021 International conference on management of data, pages 2208-2216, 2021.
Nicola Dainese, Matteo Merler, Minttu Alakuijala, 和 Pekka Marttinen. 使用大型语言模型指导蒙特卡罗树搜索生成代码世界模型。arXiv preprint arXiv:2405.15383, 2024.
Matthew DeLorenzo, Animesh Basak Chowdhury, Vasudev Gohil, Shailja Thakur, Ramesh Karri, Siddharth Garg, 和 Jeyavijayan Rajendran. 让每一步都算数:基于MCTS的高质量RTL代码生成。arXiv preprint arXiv:2402.03289, 2024.
Yitong Duan, Lei Wang, Qizhong Zhang, 和 Jian Li. Factorvae: 基于变分自编码器的概率动态因子模型用于预测横截面股票回报。在Proceedings of the AAAI Conference on Artificial Intelligence, volume 36, pages 4468-4476, 2022.
Eugene F Fama 和 Kenneth R French. 预期股票回报的横截面。Journal of Finance, 47(2):427-465, 1992.
Campbell R Harvey, Yan Liu, 和 Heqing Zhu. …以及预期回报的横截面。Review of Financial Studies, 29(1):5-68, 2016.
Kewei Hou, Chen Xue, 和 Lu Zhang. 复制异常。Review of financial studies, 33(5):2019-2133, 2020.
Zhiyuan Hu, Chumin Liu, Xidong Feng, Yilun Zhao, See-Kiong Ng, Anh Tuan Luu, Junxian He, Pang Wei Koh, 和 Bryan Hooi. 思维的不确定性:大语言模型中的不确定性感知规划增强了信息寻求能力。arXiv preprint arXiv:2402.03271, 2024.
Guolin Ke, Qi Meng, Thomas Finley, Taifeng Wang, Wei Chen, Weidong Ma, Qiwei Ye, 和 Tie-Yan Liu. Lightgbm: 一种高度高效的梯度提升决策树。Advances in neural information processing systems, 30, 2017.
Levente Kocsis 和 Csaba Szepesvári. 基于Bandit的蒙特卡罗规划。在European conference on machine learning, pages 282-293. Springer, 2006.
Zhizhuo Kou, Holam Yu, Junyu Luo, Jingshu Peng, 和 Lei Chen. 在量化投资中使用LLM自动寻找策略。arXiv preprint arXiv:2409.06289, 2024.
Mikel Landajuela, Chak Shing Lee, Jiachen Yang, Ruben Glatt, Claudio P Santiago, Ignacio Aravena, Terrell Mundhenk, Garrett Mulcahy, 和 Brenden K Petersen. 统一的深度符号回归框架。Advances in Neural Information Processing Systems, 35:33985-33998, 2022.
Qingyao Li, Wei Xia, Kounianhua Du, Xinyi Dai, Ruiming Tang, Yasheng Wang, Yong Yu, 和 Weinan Zhang. Rethinkmcts: 使用蒙特卡罗树搜索进行代码生成时修正错误思维。arXiv preprint arXiv:2409.09584, 2024.
Zhiwei Li, Ran Song, Caihong Sun, Wei Xu, Zhengtao Yu, 和 Ji-Rong Wen. 大型语言模型能否更有效地挖掘可解释的金融因子?神经-符号因子挖掘代理模型。在Findings of the Association for Computational Linguistics ACL 2024, pages 3891-3902, 2024.
Shuangtao Li, Shuaihao Dong, Kexin Luan, Xinhan Di, 和 Chaofan Ding. 通过蒙特卡罗树搜索进行过程监督以增强推理。arXiv preprint arXiv:2501.01478, 2025.
Xiaoming Lin, Ye Chen, Ziyu Li, 和 Kang He. 基于遗传算法的股票Alpha挖掘。技术报告,华泰证券研究中心,2019.
Edward E Qian, Ronald H Hua, 和 Eric H Sorensen. 定量股权组合管理:现代技术和应用。Chapman and Hall/CRC, 2007.
Hao Shi, Weili Song, Xinting Zhang, Jiahe Shi, Cuicui Luo, Xiang Ao, Hamid Arian, 和 Luis Seco. Alphaforge: 一个用于挖掘和动态组合公式化Alpha因子的框架。arXiv preprint arXiv:2406.18394, 2024.
David Silver, Aja Huang, Chris J Maddison, Arthur Guez, Laurent Sifre, George Van Den Driessche, Julian Schrittwieser, Ioannis Antonoglou, Veda Panneershelvam, Marc Lanctot, 等人. 使用深度神经网络和树搜索掌握围棋游戏。nature, 529(7587):484-489, 2016.
Ziyi Tang, Zechuan Chen, Jiarui Yang, Jiayao Mai, Yongsen Zheng, Keze Wang, Jinrui Chen, 和 Liang Lin. Alphaagent: 使用正则化探索对抗Alpha衰减的LLM驱动Alpha挖掘。arXiv preprint arXiv:2502.16789, 2025.
Igor Tulchinsky. 寻找Alpha: 一种定量方法构建交易策略。John Wiley & Sons, 2019.
Chaojie Wang, Yanchen Deng, Zhiyi Lyu, Liang Zeng, Jujie He, Shuicheng Yan, 和 Bo An. Q*: 提高LLM多步推理能力的深思熟虑计划。arXiv preprint arXiv:2406.14283, 2024.
Peiyi Wang, Lei Li, Zhihong Shao, Runxin Xu, Damai Dai, Yifei Li, Deli Chen, Yu Wu, 和 Zhifang Sui. Math-shepherd: 不需要人工标注验证和强化LLM逐步推理。在Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), pages 9426-9439, 2024.
Saizhuo Wang, Hang Yuan, Lionel M Ni, 和 Jian Guo. Quantagent: 通过自我改进的大规模语言模型寻找圣杯。arXiv preprint arXiv:2402.03755, 2024.
Jason Wei, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Fei Xia, Ed Chi, Quoc V Le, Denny Zhou, 等人. 链式提示激发大型语言模型中的推理。Advances in neural information processing systems, 35:24824-24837, 2022.
Yuxi Xie, Anirudh Goyal, Wenyue Zheng, Min-Yen Kan, Timothy P Lillicrap, Kenji Kawaguchi, 和 Michael Shieh. 蒙特卡罗树搜索通过迭代偏好学习提升推理能力。arXiv preprint arXiv:2405.00451, 2024.
Wentao Xu, Weiqing Liu, Lewen Wang, Yingce Xia, Jiang Bian, Jian Yin, 和 Tie-Yan Liu. Hist: 一种基于概念导向共享信息的股票趋势预测图框架。arXiv preprint arXiv:2110.13716, 2021.
Wentao Xu, Weiqing Liu, Chang Xu, Jiang Bian, Jian Yin, 和 Tie-Yan Liu. Rest: 关系事件驱动的股票趋势预测。在Proceedings of the web conference 2021, pages 1-10, 2021.
Xiao Yang, Weiqing Liu, Dong Zhou, Jiang Bian, 和 Tie-Yan Liu. Qlib: 一个面向AI的量化投资平台。arXiv preprint arXiv:2009.11189, 2020.
Shunyu Yao, Dian Yu, Jeffrey Zhao, Izhak Shafran, Tom Griffiths, Yuan Cao, 和 Karthik Narasimhan. 树形思维:通过大规模语言模型进行深思熟虑的问题解决。Advances in Neural Information Processing Systems, 36, 2024.
Shuo Yu, Hongyan Xue, Xiang Ao, Feiyang Pan, Jia He, Dandan Tu, 和 Qing He. 使用强化学习生成协同公式化的Alpha集合。在Proceedings of the 29th ACM SIGKDD Conference on Knowledge Discovery and Data Mining, pages 5476-5486, 2023.
Yangyang Yu, Haohang Li, Zhi Chen, Yuechen Jiang, Yang Li, Denghui Zhang, Rong Liu, Jordan W Suchow, 和 Khaldoun Khashanah. Finmem: 一种带有分层记忆和角色设计的性能增强型LLM交易代理。在Proceedings of the AAAI Symposium Series, volume 3, pages 595-597, 2024.
Tianping Zhang, Yuanqi Li, Yifei Jin, 和 Jian Li. Autoalpha: 一种高效的分层进化算法用于量化投资中的Alpha因子挖掘。arXiv preprint arXiv:2002.08245, 2020.
Shun Zhang, Zhenfang Chen, Yikang Shen, Mingyu Ding, Joshua B Tenenbaum, 和 Chuang Gan. 使用大规模语言模型进行代码生成规划。arXiv preprint arXiv:2303.05510, 2023.
Tianping Zhang, Zheyu Aqa Zhang, Zhiyuan Fan, Haoyan Luo, Fengyuan Liu, Qian Liu, Wei Cao, 和 Li Jian. Openfe: 具有专家级表现的自动化特征生成。在International Conference on Machine Learning, pages 41880-41901. PMLR, 2023.
Di Zhang, Xiaoshui Huang, Dongzhan Zhou, Yuqiang Li, 和 Wanli Ouyang. 通过蒙特卡罗树自细化访问GPT-4级数学奥林匹克解决方案。arXiv preprint arXiv:2406.07394, 2024.
Zirui Zhao, Wee Sun Lee, 和 David Hsu. 大规模任务规划中的大规模语言模型作为常识知识。Advances in Neural Information Processing Systems, 36:31967-31987, 2023.
Andy Zhou, Kai Yan, Michal Shlapentokh-Rothman, Haohan Wang, 和 Yu-Xiong Wang. 语言代理树搜索统一了语言模型中的推理、行动和规划。arXiv preprint arXiv:2310.04406, 2023.
A 附录摘要
本附录提供了广泛的支持材料,以支持主论文中关于我们的Alpha挖掘框架的方法、实验和发现。内容组织如下:
- 第B节:案例研究。我们框架的工作流程的逐步介绍。
-
- 第C节:方法细节。详细说明Alpha公式和优化建议的生成过程。
-
- 第D节:运算符列表。在Alpha公式中使用的完整运算符列表。
-
- 第E节:伪代码。我们框架的算法伪代码。
-
- 第F节:实验设置详情。超参数配置、模型规范、实验环境和预测表现指标的详细信息。
-
- 第G节:扩展实验结果和分析。包括:
-
- G.1 对其他基线的比较分析。
-
- G.2 对LLM中潜在数据泄露的调查。
-
- G.3 LLM主干的敏感性研究。
-
- G.4 检查不同MCTS搜索深度下的Alpha特性。
-
- G.5 累积回报曲线可视化。
-
- G.6 挖掘Alpha公式的可解释性分析。
-
- G.7 关键框架组件的参数敏感性分析。
-
- 第H节:完整实验结果。预测表现比较(实验1)的综合结果。
-
- 第I节:局限性。我们框架的局限性。
-
- 第J节:LLM代理提示。详细说明关键任务(如Alpha画像生成、公式生成、过拟合风险评估和Alpha优化)所用的主要提示。
B MCTS工作流程的说明性案例研究
为了阐明我们提出的MCTS框架在Alpha因子挖掘中的工作流程,本节提供了一个详细的步骤示例。
图5:案例研究:MCTS根节点生成。
最初,如图5所示,LLM生成初始Alpha公式。此公式经过多维评估后,作为MCTS搜索树的根节点(V0)(V_0)(V0)。对于这个说明性案例,目标搜索计数初始化为3。此目标在每次新生成的节点得分创新高时动态增加1,鼓励对有希望的搜索树进行更深的探索。
在根节点构造之后,MCTS过程继续进行节点扩展。如图6所示,根节点(V0)(V_0)(V0)被扩展以生成其第一个子节点(V1)(V_1)(V1)。优化维度通过根据方程(2)抽样选择(在此实例中选择了稳定性维度)。随后,LLM生成有针对性的优化建议。根据这些建议,产生优化后的Alpha公式,公式中的修改以高亮显示。然后对该优化后的Alpha公式进行相同的多维评估过程,产生评分节点(V1)(V_1)(V1)。(V1)(V_1)(V1)的优化历史更新以包含此特定优化步骤及其相应的评分变化。最后,如果(V1)(V_1)(V1)的得分是新高,则更新目标搜索计数和当前搜索计数。
图6:案例研究:扩展到节点(V1)(V_1)(V1)。
第二次迭代:扩展到节点(V1)(V_1)(V1)
选择进行扩展的节点:(V0)(V_0)(V0)
抽样选择优化维度:稳定性
优化后的Alpha公式:Ma(Tanh(Kurt(volume, 40)-Rank((close - vwap), 30)), 20)
评估分数:7.12
图7:案例研究:扩展到节点(V2)(V_2)(V2)。
扩展过程继续进行,如图7所示。根据UCT准则,节点(V1)(V_1)(V1)被选中进行下一次扩展。类似于前一步骤,抽样选择优化维度。LLM然后根据此维度生成改进的Alpha公式,随后对其进行评估以创建节点(V2)(V_2)(V2)。值得注意的是,(V2)(V_2)(V2)的优化历史是累积的,涵盖了从根节点(V0)(V_0)(V0)经由(V1)(V_1)(V1)到(V2)(V_2)(V2)的所有优化步骤和评分变化。然后递增当前搜索计数。
图8和图9展示了接下来两次扩展步骤的结果,分别生成了节点(V3)(V_3)(V3)和(V4)(V_4)(V4)。在创建节点(V4)(V_4)(V4)的扩展之后,当前搜索计数达到预定目标。此时,本次迭代的MCTS扩展阶段结束。然后系统回顾所有五个生成的节点((V0)(V_0)(V0)至(V4)(V_4)(V4))。符合预定义质量和性能标准的节点被添加到有效的Alpha库中。
这一序列完成了一个完整的MCTS驱动的Alpha挖掘过程迭代。我们的框架旨在重复这一整个循环,实现有效Alpha的高效和系统挖掘。
图8:案例研究:扩展到节点(V3)(V_3)(V3)。
C 方法细节
在本节中,我们详细说明了我们框架的具体细节,重点关注Alpha公式和优化建议的生成。
C.1 Alpha公式生成
我们将Alpha公式的生成分解为两步过程:首先生成Alpha画像,然后从中生成相应的Alpha公式。Alpha画像是文本表示,包括Alpha的名称、简要描述和用伪代码表达的公式。这种两步方法将Alpha的概念设计与其具体构建解耦,从而减少了LLM遵循指令的复杂性,并提高了生成公式的质量。
在生成Alpha公式时,指示LLM使用符号参数(例如移动平均运算符的回溯窗口)而非固定数值。同时,LLM提出几组潜在的参数值(在我们的实验中为三组)。然后对每组参数值生成的Alpha进行回测,并选择表现最佳的配置。这一策略允许对每个生成的Alpha公式进行更有效的探索和利用。
图9:案例研究:扩展到节点(V4)(V_4)(V4)并终止搜索。
C.2 优化建议生成
在每次优化迭代过程中,一旦选择了需要改进的维度,我们就利用LLM生成相关的优化建议。我们采用少量样本学习,使用来自有效Alpha库中的Alpha作为示例。我们为每个评估维度定制示例选择策略:
效果和稳定性 为了选择多样且有力的示例,我们首先过滤有效的Alpha库,仅保留与当前Alpha相关性不在前η%(例如,η=50)的Alpha。从这个过滤后的子集中,我们选择在效果或稳定性方面得分最高的前k个Alpha(例如,k=3)作为少数样本示例。这一两阶段过程通过防止高度相似的Alpha主导示例集来确保多样性。
多样性 为了鼓励探索新颖的Alpha结构,我们从有效的Alpha库中选择与当前Alpha相关性最低的前k个Alpha作为少数样本示例。
周转和过拟合风险 对于这些维度,我们采用零样本方法,直接提示LLM生成优化建议而不使用明确的示例。
在生成优化建议后,LLM根据这些建议生成修订后的Alpha公式。然后我们对生成的公式进行语法验证。如果公式语法不正确,LLM会收到反馈以进行迭代修正,直到通过验证。
D 运算符列表
在本文中,我们使用的运算符可分为两类:一元运算符和二元运算符。所有运算符执行时间操作,使用当前交易日的数据或包括之前时间段的数据。我们在表2中列出了所有运算符的详细信息。
E 伪代码
我们在算法1中提供了我们基于LLM的MCTS框架的伪代码。
算法1: 基于LLM的MCTS框架用于自动化Alpha挖掘
输入: (fmed )(f_{\text {med }})(fmed )(初始Alpha),(L(LLM),c)(\mathcal{L}(\mathrm{LLM}), c)(L(LLM),c)(探索常数),(T)(T)(T)(温度),(emax(maxscore/dim),B)(e_{\max }(\max \operatorname{score} / \mathrm{dim}), B)(emax(maxscore/dim),B)
(初始搜索预算),(b)(b)(b)(预算增量),(τ)(\tau)(τ)(有效性阈值),(Aavoid )(\mathcal{A}_{\text {avoid }})(Aavoid )(初始避免
列表)
输出: 有效Alpha库(R)(\mathcal{R})(R)
/* 初始化 /
(R←∅)(\mathcal{R} \leftarrow \emptyset)(R←∅)
(s0←CreateRootNode(fmed ))(s_{0} \leftarrow \operatorname{CreateRootNode}\left(f_{\text {med }}\right))(s0←CreateRootNode(fmed ))
(s0⋅scores←)(s_{0} \cdot \operatorname{scores} \leftarrow)(s0⋅scores←) MultiDimEvaluate ((fmed ,R))(\left(f_{\text {med }}, \mathcal{R}\right))((fmed ,R))
(s0⋅visits←1;s0⋅Q←)(s_{0} \cdot \operatorname{visits} \leftarrow 1 ; s_{0} \cdot Q \leftarrow)(s0⋅visits←1;s0⋅Q←) AggregateScore ((s0⋅scores))(\left(s_{0} \cdot \operatorname{scores}\right))((s0⋅scores))
Tree (T←{s0})(\mathcal{T} \leftarrow\left\{s_{0}\right\})(T←{s0})
(max_)(\max \_)(max_)score_overall (←s0⋅Q▹)(\leftarrow s_{0} \cdot Q \triangleright)(←s0⋅Q▹) 跟踪树中迄今为止找到的最高分数
for (i←1)(i \leftarrow 1)(i←1) to (B)(B)(B) do
/ 选择阶段 /
(Ppath ←)(P_{\text {path }} \leftarrow)(Ppath ←) SelectPathUsingUCT ((T,s0,c)▹)((\mathcal{T}, s_{0}, c) \triangleright)((T,s0,c)▹) 路径到(sselected )(s_{\text {selected }})(sselected )
(sselected ←LastNodeInPath(Ppath ))(s_{\text {selected }} \leftarrow \operatorname{LastNodeInPath}\left(P_{\text {path }}\right))(sselected ←LastNodeInPath(Ppath ))
/ 扩展阶段 /
/ 1. 优先优化维度 /
(Er←sselected ⋅scores)(\mathbf{E}_{r} \leftarrow s_{\text {selected }} \cdot \operatorname{scores})(Er←sselected ⋅scores)
(Pdim (d)←Softmax((emax1q−Er)/T))(P_{\text {dim }}(d) \leftarrow \operatorname{Softmax}\left(\left(e_{\max } \mathbf{1}_{q}-\mathbf{E}_{r}\right) / T\right))(Pdim (d)←Softmax((emax1q−Er)/T))
(dchosen ←SampleDimension(Pdim ))(d_{\text {chosen }} \leftarrow \operatorname{SampleDimension}\left(P_{\text {dim }}\right))(dchosen ←SampleDimension(Pdim ))
/ 2. LLM生成优化和新的Alpha公式
context (←)(\leftarrow)(←) GetNodeRefinementContext ((sselected ,T)▹)(\left(s_{\text {selected }}, \mathcal{T}\right) \triangleright)((sselected ,T)▹) 父节点、子节点、兄弟节点历史
examples (←)(\leftarrow)(←) SampleEffectiveAlphas ((R)▹)((\mathcal{R}) \triangleright)((R)▹) 少量样本示例
(f^desc ,fformula ′←L)(\hat{f}_{\text {desc }}, f_{\text {formula }}^{\prime} \leftarrow \mathcal{L})(f^desc ,fformula ′←L).GenerateRefinedAlpha(formula ((sselected ),dchosen )(\left(s_{\text {selected }}\right), d_{\text {chosen }})((sselected ),dchosen ), context, examples, (Aavoid )(\mathcal{A}_{\text {avoid }})(Aavoid ) )
/* 3. 迭代验证和修正公式
while (¬IsValid(fformula ′))(\neg \operatorname{IsValid}\left(f_{\text {formula }}^{\prime}\right))(¬IsValid(fformula ′)) do
feedback (←)(\leftarrow)(←) GetInvalidityReason ((fformula ′))(\left(f_{\text {formula }}^{\prime}\right))((fformula ′))
(f^desc ,fformula ′←L)(\hat{f}_{\text {desc }}, f_{\text {formula }}^{\prime} \leftarrow \mathcal{L})(f^desc ,fformula ′←L).CorrectAlphaFormula ((fdesc ′)(\left(f_{\text {desc }}^{\prime}\right.)((fdesc ′), feedback, context, examples, (Aavoid )(\mathcal{A}_{\text {avoid }})(Aavoid ) )
end
/* 新Alpha的评估 /
(Ef′←)(\mathbf{E}_{f^{\prime}} \leftarrow)(Ef′←) MultiDimEvaluate ((fformula ′,R)▹)(\left(f_{\text {formula }}^{\prime}, \mathcal{R}\right) \triangleright)((fformula ′,R)▹) 包括相对排名,LLM用于过拟合
score (f′←)(_{f^{\prime}} \leftarrow)(f′←) AggregateScore ((Ef′))(\left(\mathbf{E}_{f^{\prime}}\right))((Ef′))
/ 如果新分数创纪录高,则更新预算 /
if score (f′>max_)(_{f^{\prime}}>\max \_)(f′>max_)score_overall then
(B←B+b▹)(B \leftarrow B+b \triangleright)(B←B+b▹) 增加总搜索预算
max_score_overall (←)(\leftarrow)(←) score (f′▹)(_{f^{\prime}} \triangleright)(f′▹) 更新整体最大分数
end
/ 创建新节点并添加到树中
(s′←CreateNode(fformula ′,Ef′,scoref′))(s^{\prime} \leftarrow \operatorname{CreateNode}\left(f_{\text {formula }}^{\prime}, \mathbf{E}_{f^{\prime}}, \operatorname{score}_{f^{\prime}}\right))(s′←CreateNode(fformula ′,Ef′,scoref′))
(s′)(s^{\prime})(s′).summary (←L)(\leftarrow \mathcal{L})(←L).GenerateRefinementSummary ((sselected ,f^desc ,Ef′))(\left(s_{\text {selected }}, \hat{f}_{\text {desc }}, \mathbf{E}_{f^{\prime}}\right))((sselected ,f^desc ,Ef′))
AddChildNode ((T,sselected ,s′))(\left(\mathcal{T}, s_{\text {selected }}, s^{\prime}\right))((T,sselected ,s′))
(Aavoid ←)(\mathcal{A}_{\text {avoid }} \leftarrow)(Aavoid ←) UpdateAvoidanceList ((Aavoid ,fformula ′))(\left(\mathcal{A}_{\text {avoid }}, f_{\text {formula }}^{\prime}\right))((Aavoid ,fformula ′))
/* 更新库
if GetEffectivenessScore ((Ef′)≥τ)(\left(\mathbf{E}_{f^{\prime}}\right) \geq \tau)((Ef′)≥τ) then
(R←R∪{fformula ′})(\mathcal{R} \leftarrow \mathcal{R} \cup\left\{f_{\text {formula }}^{\prime}\right\})(R←R∪{fformula ′})
end
/* 反向传播阶段 */
forall (v∈Ppath ∪{s′})(v \in P_{\text {path }} \cup\left\{s^{\prime}\right\})(v∈Ppath ∪{s′}) do
(v⋅visits←v⋅visits+1)(v \cdot \operatorname{visits} \leftarrow v \cdot \operatorname{visits}+1)(v⋅visits←v⋅visits+1)
(v⋅Q←max(v⋅Q,scoref′)▹Q(v))(v \cdot Q \leftarrow \max \left(v \cdot Q, \operatorname{score}_{f^{\prime}}\right) \triangleright Q(v))(v⋅Q←max(v⋅Q,scoref′)▹Q(v)) 是(v)(v)(v) 子树中的最大分数
end
end
return (R)(\mathcal{R})(R)
表2:实验中使用的全部运算符。
| 运算符 | 类型 | 描述 |
|---|---|---|
| $(-x, | x | , x^{2}, 1 / x)$ (Sign(x))(\operatorname{Sign}(x))(Sign(x)) (Sin(x),Cos(x),Tanh(x))(\operatorname{Sin}(x), \operatorname{Cos}(x), \operatorname{Tanh}(x))(Sin(x),Cos(x),Tanh(x)) (log(x))(\log (x))(log(x)) (Delay(x,t))(\operatorname{Delay}(x, t))(Delay(x,t)) (Diff(x,t))(\operatorname{Diff}(x, t))(Diff(x,t)) (Pct(x,t))(\operatorname{Pct}(x, t))(Pct(x,t)) (Ma(x,t),Med(x,t),Sum(x,t))(\operatorname{Ma}(x, t), \operatorname{Med}(x, t), \operatorname{Sum}(x, t))(Ma(x,t),Med(x,t),Sum(x,t)) (Std(x,t))(\operatorname{Std}(x, t))(Std(x,t)) (Max(x,t),Min(x,t))(\operatorname{Max}(x, t), \operatorname{Min}(x, t))(Max(x,t),Min(x,t)) (Rank(x,t))(\operatorname{Rank}(x, t))(Rank(x,t)) (Skew(x,t),Kurt(x,t))(\operatorname{Skew}(x, t), \operatorname{Kurt}(x, t))(Skew(x,t),Kurt(x,t)) (Vari(x,t))(\operatorname{Vari}(x, t))(Vari(x,t)) (Autocorr(x,t,n))(\operatorname{Autocorr}(x, t, n))(Autocorr(x,t,n)) (Zscore(x,t))(\operatorname{Zscore}(x, t))(Zscore(x,t)) |
| (x+y,x−y,x−y,x/y)(x+y, x-y, x-y, x / y)(x+y,x−y,x−y,x/y) (Greater(x,y),Less(x,y))(\operatorname{Greater}(x, y), \operatorname{Less}(x, y))(Greater(x,y),Less(x,y)) (Cov(x,y,t))(\operatorname{Cov}(x, y, t))(Cov(x,y,t)) (Corr(x,y,t))(\operatorname{Corr}(x, y, t))(Corr(x,y,t)) |
二元 | 算术运算符。 第一个值是否大于/小于第二个值。 过去(t)(t)(t)天内时间序列(x)(x)(x)和(y)(y)(y)之间的协方差。 过去(t)(t)(t)天内时间序列(x)(x)(x)和(y)(y)(y)之间的皮尔逊相关系数。 |
F 实验设置详情
F.1 超参数配置
LLM的温度参数 当生成Alpha画像和Alpha公式时,温度设为1.0;当纠正非法Alpha公式时,温度调整为0.8;而在评估Alpha的过拟合风险时,温度设为0.1。
MCTS 我们在UCT准则中将探索权重c设为1。对于每棵树,初始搜索预算设为3,每当某个节点的得分高于先前的得分时,搜索预算就增加1。
有效Alpha检查 在完成一棵搜索树的扩展后,我们检查该树中所有节点对应的Alpha公式的有效性。那些通过有效性检查的Alpha被添加到有效Alpha库中。确定有效性的具体标准如下:
- 基础标准:RankIC ≥ 0.015,RankIR ≥ 0.3, (RRankIC ≤0.95,RRankIR ≤0.95)(R_{\text {RankIC }} ≤ 0.95, R_{\text {RankIR }} ≤ 0.95)(RRankIC ≤0.95,RRankIR ≤0.95)。
-
- 周转标准:每日周转率 ≤ 1.6。
-
- 多样性标准:与有效Alpha库中Alpha的最大相关性小于0.8。
在挖掘过程完成后,我们从有效Alpha库中选择RankIR最高的前k个Alpha形成最终的Alpha集合。在我们的实验中,k设为10、50和100。
- 多样性标准:与有效Alpha库中Alpha的最大相关性小于0.8。
评估分数 在这里,我们展示用于计算评估维度分数的回测指标。有效性:RankIC,稳定性:RankIR,周转:每日周转率,多样性:与有效Alpha库中Alpha的最大相关性。
其他设置 在生成Alpha优化建议时,少量样本示例的数量设为1;在频繁子树避免方法中,要避免的频繁子树数量设为3。在计算每个评估维度的选择概率时,温度参数设为(T=1)(T=1)(T=1)。此外,在生成有效性与稳定性维度的优化建议时,相关性过滤比例维持在(η=50%)(\eta=50\%)(η=50%).
F.2 模型设置
为了确保在评估来自不同方法的Alpha池时公平比较,我们为模型设置了固定的超参数。
对于LightGBM模型,我们将num_leaves设置为32,n_estimators设置为200,max_depth设置为8,学习率(learning_rate)设置为0.05。L1正则化系数(reg_alpha)和L2正则化系数(reg_lambda)均固定为0.1。
同样地,Multi-Layer Perceptron (MLP)模型以一致的配置进行训练。MLP架构包含三个隐藏层,分别具有256、128和64个单元。在每个隐藏层后应用了0.3的dropout率。我们使用Adam优化器,学习率为0.001,批量大小为1024。均方误差(MSE)被用作损失函数。实施了早期停止策略,耐心值为5个epoch,在验证损失未改善的情况下将停止训练。
F.3 回测策略
我们在回测中采用的顶-k/丢-n投资组合构建策略如下。在每个交易日,根据训练模型提供的预测信号选择排名前k的股票,形成等权重的投资组合。我们将k设为相应股票池的前10%(例如,对于CSI300指数,k=30;对于CSI1000指数,k=100)。为了管理周转并限制交易成本,每日最多买入或卖出n只股票。n的值由(n=k/w)(n=k/w)(n=k/w)确定,其中w是预测窗口天数(例如,对于CSI300上10天回报预测,(n=30/10=3)(n=30/10=3)(n=30/10=3))。该策略确保投资组合的理论完全周转周期与预测窗口对齐。每笔交易纳入保守的0.15%交易成本,以确保现实的绩效评估。
F.4 环境
所有实验均在以下设置下进行:
- CPU: AMD EPYC 7642 48核处理器
-
- GPU: NVIDIA GeForce RTX 3080Ti
-
- 操作系统: Ubuntu 20.04.3 LTS
-
- 软件版本: Python 3.8.5; Numpy 1.24.4; Pandas 1.5.2; Pytorch 2.2.2; Openai 1.57.4
F.5 预测表现评估指标
为了评估基于挖掘Alpha集训练的模型对未来股票回报的预测表现,我们采用了几个标准指标:信息系数(IC)、等级信息系数(RankIC)、年化回报(AR)和信息比率(IR)。令(fi,t)(f_{i, t})(fi,t)表示时间t时资产i的预测回报(在时间t时的宇宙中包含(Nt)(N_t)(Nt)个资产),而(ri,t+1)(r_{i, t+1})(ri,t+1)表示其随后期间的实际回报(例如,从t到t+1)。评估跨越总共T个时间周期。
信息系数(IC) IC衡量预测回报与随后回报之间的线性相关性。它针对每个横截面在时间t(ICt)(\mathrm{IC}_t)(ICt)处计算,然后取所有T个周期的平均值:
ICt=∑i=1Nt(fi,t−fˉt)(ri,t+1−rˉt+1)∑i=1Nt(fi,t−fˉt)2∑i=1Nt(ri,t+1−rˉt+1)2IC=1T∑t=1TICt \begin{aligned} \mathrm{IC}_{t} & =\frac{\sum_{i=1}^{N_{t}}\left(f_{i, t}-\bar{f}_{t}\right)\left(r_{i, t+1}-\bar{r}_{t+1}\right)}{\sqrt{\sum_{i=1}^{N_{t}}\left(f_{i, t}-\bar{f}_{t}\right)^{2}} \sqrt{\sum_{i=1}^{N_{t}}\left(r_{i, t+1}-\bar{r}_{t+1}\right)^{2}}} \\ \mathrm{IC} & =\frac{1}{T} \sum_{t=1}^{T} \mathrm{IC}_{t} \end{aligned} ICtIC=∑i=1Nt(fi,t−fˉt)2∑i=1Nt(ri,t+1−rˉt+1)2∑i=1Nt(fi,t−fˉt)(ri,t+1−rˉt+1)=T1t=1∑TICt
其中(fˉt)(\bar{f}_{t})(fˉt)和(rˉt+1)(\bar{r}_{t+1})(rˉt+1)分别是预测信号和实际回报的横截面均值。更高的IC表明更好的预测能力。
等级信息系数(RankIC) RankIC衡量预测回报与随后回报之间的单调关系(Spearman等级相关)。它比基于Pearson相关的IC对异常值更不敏感。类似于IC,它按横截面计算,然后取平均值:
RankICt=Corr(rank(f1,t,…,fNt,t),rank(r1,t+1,…,rNt,t+1))RankIC=1T∑t=1TRankICt \begin{aligned} \operatorname{RankIC}_{t} & =\operatorname{Corr}\left(\operatorname{rank}\left(f_{1, t}, \ldots, f_{N_{t}, t}\right), \operatorname{rank}\left(r_{1, t+1}, \ldots, r_{N_{t}, t+1}\right)\right) \\ \operatorname{RankIC} & =\frac{1}{T} \sum_{t=1}^{T} \operatorname{RankIC}_{t} \end{aligned} RankICtRankIC=Corr(rank(f1,t,…,fNt,t),rank(r1,t+1,…,rNt,t+1))=T1t=1∑TRankICt
其中(rank(⋅))(\operatorname{rank}(\cdot))(rank(⋅))表示对向量中的元素赋秩的操作,而(Corr(⋅,⋅))(\operatorname{Corr}(\cdot, \cdot))(Corr(⋅,⋅))是对这些秩应用的Pearson相关系数。
年化回报(AR) 在本研究中,AR衡量一个组合每年产生的简单算术平均回报率。对于我们的单边多头策略,在每个再平衡周期t,我们选择预测回报(fi,t)(f_{i, t})(fi,t)最高的前k项资产。假设这k项资产是等权重的,则周期t+1的组合回报(Rp,t+1)(R_{p, t+1})(Rp,t+1)为:
Rp,t+1=1k∑s∈ Top Ktrs,t+1 R_{p, t+1}=\frac{1}{k} \sum_{s \in \text { Top } \mathrm{K}_{t}} r_{s, t+1} Rp,t+1=k1s∈ Top Kt∑rs,t+1
其中TopKt_{t}t是基于ft\mathbf{f}_{t}ft选出的预测回报最高的k项资产集合。AR作为每周期组合回报的算术平均值,按年度比例计算,覆盖TpT_pTp个组合持有周期的结果为:
AR=(1Tp∑j=1TpRp,j)×P \mathrm{AR}=\left(\frac{1}{T_{p}} \sum_{j=1}^{T_{p}} R_{p, j}\right) \times P AR= Tp1j=1∑TpRp,j ×P
其中Rp,jR_{p, j}Rp,j是第j个持有周期的组合回报,TpT_pTp是回测中的总持有周期数,P是一年内持有的周期数(例如,对于每日再平衡,P=252;对于每月再平衡,P=12)。
信息比率(IR) IR使用简单的年度化回报衡量风险调整后的组合回报。定义为AR除以其年度化波动率:
IR=ARσ(Rp)P \mathrm{IR}=\frac{\mathrm{AR}}{\sigma\left(R_{p}\right) \sqrt{P}} IR=σ(Rp)PAR
其中AR按照公式(9)计算出的简单年度化回报,而σ(Rp)\sigma\left(R_{p}\right)σ(Rp)是在TpT_pTp个持有周期内每周期组合回报Rp,jR_{p, j}Rp,j的标准差。更高的IR意味着每单位风险有更好的回报。
G 附加结果
G.1 与其他基线的比较
为了全面评估我们提出的框架,我们进行了额外的比较,对比了两个在量化金融中广泛采用的基准Alpha集:Alpha158和Alpha360。Alpha158由158个人工设计的Alpha因子组成,主要来源于历史价格和成交量数据,通常用于中国A股市场。Alpha360是一个更为广泛的360个Alpha集,旨在捕捉更广泛的市场信号。选择这些基准集是因为它们的普及性和所代表的多样化的Alpha构建方法,提供了坚实的比较点。我们基于Qlib平台Yang等人[2020]提供的信息构造了这两个基准集。
我们评估了三种不同模型的预测性能:线性回归(LR)、LightGBM和三层多层感知机(MLP)。每个模型都使用以下特征进行训练:(i) Alpha158集,(ii) Alpha360集,以及(iii) 我们提出的方法挖掘出的Alpha。比较结果如表3所示。正如所展示的,我们的方法在各种实验设置和模型架构下始终实现优越的预测性能,凸显了其在识别更强大Alpha信号方面的有效性,相比这些既定基准。
表3:我们框架与其他基线的预测性能比较。对于我们的框架,Alpha集的大小固定为100。
| 标的 | ΔT\Delta TΔT | Alpha集 | LR | LightGBM | MLP | |||
|---|---|---|---|---|---|---|---|---|
| IC | RankIC | IC | RankIC | IC | RankIC | |||
| CSI300 | 10 | Alpha158 | 0.0280 | 0.0257 | 0.0386 | 0.0377 | 0.0337 | 0.0329 |
| Alpha360 | 0.0144 | 0.0169 | 0.0061 | −0.0096-0.0096−0.0096 | 0.0153 | 0.0231 | ||
| 我们的(100) | 0.0325 | 0.0303 | 0.0420 | 0.0395 | 0.0422 | 0.0408 | ||
| 30 | Alpha158 | 0.0147 | 0.0140 | 0.0028 | 0.0103 | 0.0036 | 0.0036 | |
| Alpha360 | −0.0069-0.0069−0.0069 | −0.0072-0.0072−0.0072 | −0.0539-0.0539−0.0539 | −0.0702-0.0702−0.0702 | 0.0235 | 0.0340 | ||
| 我们的(100) | 0.0373 | 0.0359 | 0.0417 | 0.0401 | 0.0423 | 0.0424 | ||
| CSI1000 | 10 | Alpha158 | 0.0395 | 0.0548 | 0.0610 | 0.0627 | 0.0520 | 0.0567 |
| Alpha360 | 0.0385 | 0.0586 | 0.0636 | 0.0642 | 0.0550 | 0.0608 | ||
| 我们的(100) | 0.0589 | 0.0554 | 0.0804 | 0.0729 | 0.0662 | 0.0618 | ||
| 30 | Alpha158 | 0.0512 | 0.0507 | 0.0490 | 0.0654 | 0.0380 | 0.0373 | |
| Alpha360 | 0.0538 | 0.0537 | 0.0420 | 0.0567 | 0.0532 | 0.0456 | ||
| 我们的(100) | 0.0597 | 0.0555 | 0.0793 | 0.0723 | 0.0738 | 0.0710 |
G.2 LLM潜在数据泄露调查
在使用LLM进行任务(如Alpha挖掘)时,一个关键问题是数据泄露的可能性。这指的是LLM的训练数据可能无意中包含了历史上表现良好的Alpha公式的相关信息,如果它们只是回忆这些公式,就会高估其生成能力。
为了调查这一点,我们设计了一个实验,明确探测预训练LLM是否具备此类固有知识。我们提示了三个不同的LLM主干——GPT-4.1、Gemini2.0-flash-lite和Deepseek-v3——生成特定预期在A股CSI300股票池中对10天未来回报产生高表现的Alpha公式。
表4:数据泄露评估。各方法的指标(IC、RankIC、IR、RankIR)为每种方法生成的10个Alpha的平均值。LLM(GPT4.1、Gemini2.0-flash-lite、Deepseek-v3)被提示生成高表现的Alpha(CSI300,10天回报)。'Ours’是我们方法,Alpha集大小为10。
| LLM | IC | RankIC | IR | RankIR |
|---|---|---|---|---|
| Random | 0.0126 | 0.0179 | 0.095 | 0.148 |
| GPT4.1 | 0.0130 | 0.0242 | 0.097 | 0.168 |
| Gemini2.0-flash-lite | 0.0125 | 0.0231 | 0.094 | 0.180 |
| Deepseek-v3-0324 | 0.0122 | 0.0223 | 0.087 | 0.145 |
| Ours | 0.0527\mathbf{0 . 0 5 2 7}0.0527 | 0.0714\mathbf{0 . 0 7 1 4}0.0714 | 0.368\mathbf{0 . 3 6 8}0.368 | 0.467\mathbf{0 . 4 6 7}0.467 |
如表4所示,直接提示生成高表现表达式的LLM的Alpha平均表现与“随机”基线没有显著差异。所有这些直接LLM生成方法在所有指标上的表现都明显低于我们的框架。这些结果表明,测试的LLM并未固有地利用更优Alpha公式的泄露知识来完成此任务,从而缓解了数据泄露的担忧,并突显了我们Alpha挖掘框架的有效性。
G.3 LLM主干选择的敏感性分析
我们评估了不同LLM主干对我们框架的影响。测试了三个模型:GPT-4.1、Gemini-2.0-flash-lite和Deepseek-v3。实验在CSI300股票池上进行,预测10天未来的回报,Alpha集大小为50。详细结果见表5。研究发现表明,LLM主干的选择导致了生成Alpha集的表现特性显著变化。尽管每个LLM可能强调Alpha的不同质量方面,但当利用这些先进模型时,我们的框架通常表现出与基线最佳结果相当甚至超越的表现。
表5:在CSI300数据集上使用不同LLM主干的我们框架的表现比较(10天未来回报,Alpha集大小为50)。最佳结果以粗体突出显示。
| LLM | LightGBM | MLP | ||||||
|---|---|---|---|---|---|---|---|---|
| IC | RankIC | AR | IR | IC | RankIC | AR | IR | |
| 最佳基线 | 0.0388 | 0.0378 | 0.0680 | 0.7470 | 0.0380 | 0.0374 | 0.0805 | 0.8414 |
| GPT4.1 | 0.0399\mathbf{0 . 0 3 9 9}0.0399 | 0.0394\mathbf{0 . 0 3 9 4}0.0394 | 0.0717 | 0.8283 | 0.0436\mathbf{0 . 0 4 3 6}0.0436 | 0.0425\mathbf{0 . 0 4 2 5}0.0425 | 0.0661 | 0.7075 |
| Gemini-2.0-flash-lite | 0.0376 | 0.0363 | 0.1037\mathbf{0 . 1 0 3 7}0.1037 | 1.1096\mathbf{1 . 1 0 9 6}1.1096 | 0.0389 | 0.0372 | 0.1734\mathbf{0 . 1 7 3 4}0.1734 | 1.9801\mathbf{1 . 9 8 0 1}1.9801 |
| Deepseek-v3 | 0.0388 | 0.0378 | 0.0680 | 0.7470 | 0.0380 | 0.0374 | 0.0805 | 0.8414 |
G.4 不同MCTS搜索深度下的Alpha特性
在本节中,我们分析了来自MCTS搜索树不同深度节点的Alpha特性。位于树较深层次的Alpha经历了更多的优化迭代。图10展示了几个关键指标如何随着MCTS深度的变化而演变:具体来说,公式深度(公式的树表示深度)、公式长度(运算符数量)、样本内(IS)和样本外(OOS)RankIC,以及过拟合风险评分。
我们观察到,随着MCTS搜索深度的增加,平均公式深度和长度最初上升,然后趋于稳定。这种稳定主要是由于过拟合风险评分惩罚了更易过拟合的过于复杂的公式。同时,平均IS和OOS RankIC随着深度增加一般呈现上升趋势,反映了优化过程的有效性。相反,Alphas的泛化能力——通过IS和OOS RankIC之间的差距(泛化差距)表示——倾向于下降。这一趋势与过拟合风险评分的行为一致,表明虽然优化增强了性能,但伴随的过拟合风险需要仔细管理,这是我们ORS旨在满足的角色。
G.5 累计回报曲线可视化
图11展示了使用不同方法挖掘的Alpha进行回测所得的累计回报曲线。如图所示,我们提出的方法始终表现出优越的表现,在评估方法中实现了最高的累计回报。
G.6 挖掘Alpha公式的可解释性
表6展示了我们框架挖掘的Alpha公式示例以及非LLM方法基线的Alpha公式。我们框架衍生的公式通常具有清晰的金融直觉。例如,Alpha “Zscore(Ma(close - vwap, 20), 30)” 直观地通过量化近期close-vwap价差趋势偏离其历史常态来捕捉买入或卖出压力。相比之下,其他基线方法生成的公式往往结构更复杂或透明度较低,使其金融逻辑更难辨别。
G.7 关键框架超参数的敏感性分析

图11:使用不同方法生成的Alpha进行回测的累计回报曲线。
表6:我们框架和其他非LLM方法基线挖掘的Alpha公式示例。每个编号项目代表一个不同的Alpha公式。
| 方法 | Alpha公式 |
|---|---|
| 我们的 | 1. Zscore(Ma(close - vwap, 20), 30) |
| 2. Std(Pct(vwap, 20), 25) * Sum(volume, 40)/volume | |
| 3. Corr(close, volume, 50) * Zscore(Ma(close - vwap, 30), 40) | |
| 4. Diff(Ma(volume, 20), 3)/Ma(volume, 60) | |
| 5. Corr(Pct(close, 10), Pct(volume, 10), 10) * Corr(Pct(close, 30), Pct(volume, 30), 30) * Skew(volume, 20) | |
| 6. Ma(Corr(volume, close, 20) * Skew(high - low, 20), 10) | |
| GP | 1. Add(Mul(-0.01, volume), log(log(close))) |
| 2. Less(Cov(open, Add(high, Div(volume, -5)), 10), Std(log(close), 50)) | |
| DSO | 1. Greater(volume, Med(Sub(Ma(open, 10), Med(Std(Sign(close), 10), 10)), 10)) |
| 2. Cov(Med(Sign(vwap), 50), 5,20) | |
| AlphaGen | 1. Corr(Rank(Diff(Greater(2.0, volume), 50), 10), close, 20) |
| 2. Ma(Greater(Std(Less(0.01, Less(Div(log(high), -2.0), -30)), 1), -30), 5) | |
| AlphaForge | 1. 1/(1/(Diff(Sin(1/(Cos(((0.01+Sin(Tanh(high)))/30)))),30)))1 /(1 /(\operatorname{Diff}(\operatorname{Sin}(1 /(\operatorname{Cos}(((0.01+\operatorname{Sin}(\operatorname{Tanh}(\text{high})))/30)))), 30)))1/(1/(Diff(Sin(1/(Cos(((0.01+Sin(Tanh(high)))/30)))),30))) |
| 2. $( |
在本节中,我们探讨了我们框架对两个关键超参数的敏感性:初始MCTS搜索预算B(即MCTS的初始目标搜索数)和UCT探索权重c。我们在CSI300指数成分股作为股票池,目标是10天未来回报,Alpha集大小为50的情况下进行实验。图12展示了在这些参数的各种设置下的模型表现。
对于初始MCTS搜索预算B,值为3时表现最佳。较大的B可能导致对无希望的MCTS树的过度探索,消耗更多计算资源而无相应的收益提升。相反,
图12:改变初始MCTS搜索预算B和UCT探索权重c对预测表现的影响。
较小的预算可能导致对潜在有希望的树探索不足,从而降低搜索效率。
关于UCT探索权重c,我们的研究结果显示,过大的值是有害的。较高的c使搜索偏向于更均匀的探索(随机性),可能会浪费对表现不佳的Alpha候选者的优化机会。
H 完整实验结果
在本节中,我们提供了我们提出的方法与其他所有基线的详细实验结果。表7和8展示了在CSI300股票池上使用不同方法挖掘的Alpha训练的LightGBM和MLP模型的实验结果。类似地,表9和10展示了在CSI1000股票池上这两个模型的结果。
表7:在CSI300股票池上使用不同方法挖掘的Alpha训练的LightGBM模型的预测表现。
| ΔT\Delta TΔT | 方法 | Alpha数量 = 10 | Alpha数量 = 50 | Alpha数量 = 100 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| IC | RankIC | AR | IR | IC | RankIC | AR | IR | IC | RankIC | AR | IR | ||
| 10 | GP | 0.0165 | 0.0148 | 0.0138 | 0.1717 | 0.0248 | 0.0246 | 0.0570 | 0.6777 | 0.0319 | 0.0288 | 0.0716 | 0.7222 |
| DSO | 0.0079 | 0.0090 | 0.0434 | 0.6125 | 0.0174 | 0.0178 | −0.0569-0.0569−0.0569 | −0.6460-0.6460−0.6460 | 0.0246 | 0.0247 | −0.0090-0.0090−0.0090 | −0.1069-0.1069−0.1069 | |
| AlphaGen | 0.0443 | 0.0411 | 0.0119 | 0.1335 | 0.0388 | 0.0378 | −0.0342-0.0342−0.0342 | −0.3473-0.3473−0.3473 | 0.0446 | 0.0416 | 0.0094 | 0.1091 | |
| AlphaForge | 0.0521 | 0.0518 | 0.0231 | 0.2653 | 0.0293 | 0.0271 | 0.0252 | 0.3005 | 0.0407 | 0.0387 | −0.0253-0.0253−0.0253 | −0.3004-0.3004−0.3004 | |
| CoT | 0.0201 | 0.0206 | 0.0549 | 0.6713 | 0.0240 | 0.0224 | 0.0600 | 0.6683 | 0.0237 | 0.0225 | 0.0600 | 0.6681 | |
| ToT | 0.0269 | 0.0267 | 0.0387 | 0.4335 | 0.0256 | 0.0242 | 0.0680 | 0.7365 | 0.0358 | 0.0332 | 0.0620 | 0.6872 | |
| FAMA | 0.0210 | 0.0206 | 0.0175 | 0.2103 | 0.0243 | 0.0227 | 0.0593 | 0.7470 | 0.0292 | 0.0281 | 0.0585 | 0.6868 | |
| 我们的 | 0.0386 | 0.0364 | 0.0668 | 0.7485 | 0.0399 | 0.0394 | 0.0717 | 0.8283 | 0.0420 | 0.0395 | 0.0822 | 0.9397 | |
| 30 | GP | 0.0145 | 0.0118 | 0.0322 | 0.3857 | 0.0248 | 0.0246 | 0.0570 | 0.6777 | 0.0319 | 0.0288 | 0.0716 | 0.7222 |
| DSO | 0.0079 | 0.0090 | −0.0050-0.0050−0.0050 | −0.0682-0.0682−0.0682 | 0.0174 | 0.0178 | 0.0156 | 0.1735 | 0.0246 | 0.0247 | 0.0185 | 0.2039 | |
| AlphaGen | 0.0299 | 0.0280 | 0.0597 | 0.7792 | 0.0322 | 0.0286 | 0.0150 | 0.1540 | 0.0401 | 0.0339 | 0.0548 | 0.4662 | |
| AlphaForge | 0.0326 | 0.0322 | 0.0981 | 0.9455 | 0.0286 | 0.0278 | 0.0551 | 0.7341 | 0.0339 | 0.0315 | 0.0164 | 0.2176 | |
| CoT | 0.0200 | 0.0186 | 0.0774 | 0.9554 | 0.0274 | 0.0250 | 0.0574 | 0.6105 | 0.0278 | 0.0247 | 0.0468 | 0.5037 | |
| ToT | 0.0232 | 0.0247 | 0.1064 | 1.3221 | 0.0291 | 0.0285 | 0.0632 | 0.7982 | 0.0348 | 0.0312 | 0.0587 | 0.7037 | |
| FAMA | 0.0298 | 0.0307 | 0.1050 | 1.1609 | 0.0285 | 0.0298 | 0.0803 | 0.9502 | 0.0301 | 0.0297 | 0.0934 | 1.1629 | |
| 我们的 | 0.0334 | 0.0334 | 0.1129 | 1.3286 | 0.0352 | 0.0340 | 0.0886 | 1.1299 | 0.0417 | 0.0401 | 0.0826 | 1.0312 |
I 局限性
尽管我们的框架在公式化Alpha挖掘方面取得了令人鼓舞的进展,但仍有一些局限性值得讨论。
首先,尽管我们的方法生成了有效的Alpha公式,但在新颖性和复杂性方面仍然存在与人类专家开发的公式相比的差距。框架有时可能难以生成高度复杂或非常规的Alpha。其次,生成Alpha的多样性本质上受到LLM内部知识库的限制。这反过来可能限制相对于某些非LLM方法所能探索的搜索空间的广度。因此,在极大规模的Alpha挖掘任务中,需要探索广阔且多样的Alpha景观,可能面临挑战。
解决这些局限性,例如通过引入增强新颖性的机制或扩展有效的搜索空间,构成了未来研究的重要方向。
J LLM代理提示
在我们提出的框架中,LLM充当自主代理,在Alpha公式挖掘的多方面过程中起着关键作用。这包括Alpha公式的生成、迭代优化和过拟合风险评估。本节详细说明了为引导LLM在这些关键任务中的核心提示。每个提示精心设计以激发LLM的具体行为和输出,确保Alpha公式挖掘的结构化和有效方法。
J.1 Alpha画像生成提示
如图13所示,Alpha画像生成提示用于基于可用数据字段和运算符等信息生成Alpha画像。随后使用Alpha画像生成相应的Alpha公式。
J.2 Alpha公式生成提示
如图14所示,Alpha公式生成提示用于基于提供的Alpha画像及其他相关信息生成相应的Alpha公式。格式化的Alpha公式便于正确性验证和Alpha值的计算。
J.3 Alpha过拟合风险评估提示
如图15所示,Alpha过拟合风险评估提示用于基于其公式和优化历史信息评估Alpha的过拟合风险。我们在提示中提供评估标准,以协助LLM进行关键评估。
J.4 Alpha优化提示
如图16所示,Alpha优化提示用于基于优化建议优化原始Alpha公式,从而生成改进的公式。
任务描述:
您是一位专注于基于因子投资的量化金融专家。请根据以下要求设计一种用于投资策略中的Alpha因子,并提供Alpha的内容,符合所需的格式。
可用数据字段:
以下数据字段可供使用:
{\{{ available_fields }\}}
可用运算符:
以下运算符可供使用:
{\{{ available_operators }\}}
Alpha要求:
- Alpha值应为无量纲(无单位)。
-
- Alpha应至少结合"可用运算符"列表中的两种不同运算,以确保其具有足够的复杂性。避免创建过于简单的Alpha。
-
- Alpha计算中使用的所有回顾窗口和其他数值参数必须在伪代码中表示为命名参数。这些参数名称必须遵循Python命名约定(例如lookback_period, volatility_window, smoothing_factor)。
-
- Alpha总共不应超过3个参数。
-
- 伪代码应逐步表示Alpha计算,仅使用"可用运算符"和明确定义的参数。伪代码中的每一行应代表Alpha计算中的单个操作。每行应遵循以下格式:variable_name = op_name(input=[input1, input2, …], param=[param1, param2, …]),其中:
- variable_name 是操作的输出变量。
-
- op_name 是"可用运算符"之一的名称。
-
- input1, input2, … 是输入变量(要么来自"可用数据字段",要么是之前计算的变量,不能为数值类型)。
-
- param1, param2, … 是Alpha要求中定义的参数名称。
格式示例如下:
{
“name”: “volatility_adjusted_momentum”,
“description”: “…”,
“pseudo_code”: […]
}
- param1, param2, … 是Alpha要求中定义的参数名称。
图13:Alpha画像生成提示
任务描述:
请根据以下要求设计一个定量投资Alpha表达式。
可用数据字段:
-
以下数据字段可供使用:{available_fields}
可用运算符: -
以下运算符可供使用:{available_operators}
Alpha要求: -
{alpha_portrait_prompt}
格式要求:
- 以JSON格式提供输出。
-
- JSON对象应包含两个字段:“formula” 和 “arguments”。
- “formula”: 表示计算Alpha的数学表达式。
-
- “arguments”: 表示Alpha的可配置参数。
- “formula” 是一个字典列表。每个字典表示单个操作,并必须包含四个键:“name”, “param”, “input”, 和 “output”。
- “name”: 运算符的名称(字符串),必须是"可用运算符"部分提供的其中之一。
-
- “param”: 字符串列表,表示运算符的参数名称。这些参数名称必须用作"arguments"部分中的键。
-
- “input”: 字符串列表,表示运算符的输入变量名称。这些必须是从"可用数据字段"或"formula"中先前计算的输出变量,不能为数值类型。
-
- “output”: 字符串,表示运算符的输出变量名称。该输出可以用作后续操作的输入。
- “arguments” 是一个字典列表。每个字典表示Alpha的一组参数值。
- “arguments” 中每个字典的键必须准确对应"formula"中"param"列表中定义的参数名称。
-
- “arguments” 中每个字典的值是参数的具体数值。
- “arguments” 字段中可以包含最多3组参数。
-
- 表示回顾窗口长度的参数值(如果适用)必须在{window_range}范围内。
-
- 确保Alpha表达式合理且计算可行。
-
- 参数名称应具有描述性并遵循Python命名约定(例如window_size, lag_period, smoothing_factor)。避免使用单个字符或数字作为参数名称。
-
- 参考以下示例:
10.{
“formula”: […],
“arguments”: […]
}图14:Alpha公式生成提示
- 参考以下示例:
任务:关键Alpha过拟合风险评估
基于提供的表达式和优化历史,对给出的定量投资Alpha进行过拟合风险和泛化潜力的关键评估。您的评估必须集中在复杂性和优化是否合理,或者是否可能是过拟合的迹象。
输入:
- Alpha表达式:
- {alpha_formula}
-
- 优化历史:
- {refinement_history}
评估标准:
- 合理理由与复杂性对比:
批评:Alpha表达式的复杂性是否可以通过推断出的经济理由合理解释,还是显得随意/过度,暗示着对噪声的拟合? - 原则性开发与数据挖掘对比:
批评:优化历史是否表明假设驱动的改进,还是暗示过度优化和曲线拟合(例如频繁、无根据的参数调整)? - 透明度与不透明度对比:
批评:尽管其复杂性,Alpha的逻辑是否可以合理解释,还是不透明,可能掩盖了过拟合?
打分与输出:
- 分配一个从0到10的过拟合风险评分。
-
- 10=\mathbf{1 0}=10= 非常低风险(高泛化信心)
-
- 0=\mathbf{0}=0= 非常高风险(低泛化信心)
-
- 使用完整的0-10范围来有效区分风险水平。
-
- 提供简明的一句话理由,解释评分,并引用关键因素。
-
- 将输出格式化为JSON,如下例所示:
示例JSON输出:
{
“reason”: “复杂性由强理由证明;原则性的优化历史表明低风险。”,
“score”: 9
}
{
“reason”: “合理的理由,但表达式的一些不透明性和历史中的参数调整表明中等风险。”,
“score”: 5
}
{
“reason”: “从不透明表达式和缺乏明确理由推断出高风险,历史显示过度调整。”,
“score”: 1
}
图15:Alpha过拟合风险评估提示
任务描述:
有一种用于量化投资以预测资产价格趋势的Alpha因子。请根据以下建议对其进行改进,并提供改进后的Alpha表达式。
可用数据字段:
以下数据字段可供使用:{available_fields}
可用运算符:
以下运算符可供使用:{available_operators}
Alpha建议:
- Alpha值应为无量纲(无单位)。
-
- Alpha计算中使用的所有回顾窗口和其他数值参数必须在伪代码中表示为命名参数。这些参数名称必须遵循Python命名约定(例如lookback_period, volatility_window, smoothing_factor)。
-
- Alpha总共不应超过3个参数。
-
- 伪代码应逐步表示Alpha计算,仅使用"可用运算符"和明确定义的参数。伪代码中的每一行应代表Alpha计算中的单个操作。每行应遵循以下格式:variable_name = op_name(input=[input1, input2, …], param=[param1, param2, …]),其中:
- variable_name 是操作的输出变量。
-
- op_name 是"可用运算符"之一的名称。
-
- input1, input2, … 是输入变量(要么来自"可用数据字段",要么是之前计算的变量,不能为数值类型)。
-
- param1, param2, … 是Alpha要求中定义的参数名称。
原始Alpha表达式:
{origin_alpha_formula}
优化建议:
注意:以下改进建议不需要全部采纳;只需考虑并选择合理的建议进行采纳。
{refinement_suggestions}
格式要求:
输出必须以包含三个键值对的JSON格式呈现:
- “name”: Alpha的简短描述性名称(遵循Python变量命名风格,例如price_volatility_ratio)。
-
- “description”: Alpha的目的或它测量的内容的简洁说明。避免过于技术性的语言。专注于Alpha背后的直觉。
-
- “pseudo_code”: 字符串列表,其中每个字符串是一行简化伪代码,表示Alpha计算中的单个操作。每行应遵循以下格式:variable_name = op_name(input=[input1, input2, …], param=[param1, param2, …]),其中:
- variable_name 是操作的输出变量。
-
- op_name 是"可用运算符"之一的名称。
-
- input1, input2, … 是输入变量(要么来自"可用数据字段",要么是之前计算的变量,不能为数值类型)。
-
- param1, param2, … 是Alpha要求中定义的参数名称。
格式示例如下:
{
“name”: “volatility_adjusted_momentum”,
“description”: “…”,
“pseudo_code”: […]
}
- param1, param2, … 是Alpha要求中定义的参数名称。
图16:Alpha优化提示
参考论文:https://arxiv.org/pdf/2505.11122
更多推荐



所有评论(0)