当前位置: 首页 > article >正文

2024-arXiv-Alpha2:使用深度强化学习发现逻辑公式化Alpha

arXiv | https://arxiv.org/abs/2406.16505

GitHub | https://github.com/x35f/alpha2

摘要:

Alpha在为量化交易提供信号方面至关重要,业界高度重视公式化alpha的发现,因为它们具有可解释性和易于分析性,而不是表达性但容易过度拟合的黑盒alpha。先前关于自动生成公式化alpha集合的研究大多基于遗传规划(GP),存在对初始种群敏感、转化为局部最优、计算速度慢等问题。最近使用深度强化学习(DRL)进行alpha发现的努力并没有完全解决关键的实际问题,如alpha相关性和有效性。我们通过将alpha发现过程表述为程序构建,提出了一个使用DRL的alpha发现新框架。智能体Alpha2组装了一个针对评估指标进行优化的alpha程序。由DRL引导的搜索算法基于潜在alpha结果的值估计在搜索空间中导航。评估指标鼓励alpha的表现和多样性,以获得更好的最终交易策略。我们的搜索alpha公式也带来了预计算量纲分析的优势,保证了alpha的逻辑合理性,在很大程度上修剪了庞大的搜索空间。在真实的股票市场上进行的实证实验表明,Alpha2能够识别出一组不同的逻辑和有效的alpha,这显著提高了最终交易策略的性能。

一、引言

1.1 研究动机

  • 现有的使用算法技术寻找公式化alpha的研究有两个缺点:

    • 首先,它们无法从更原始的算子或更深的结构中找到公式化的alpha。对于基于GP的方法来说,由于它们对初始种群分布的敏感性和高计算需求,这个问题甚至更严重。

    • 其次,现有方法倾向于将alpha的性能作为唯一的评价指标,从而产生具有高IC和低可解释性的alpha。

  • 从实际市场数据的实用策略来看,alpha应该满足两个属性:

    • 首先,alpha之间的多样性在构建稳健的交易策略中起着重要作用,有助于降低过度拟合的风险,确保策略在面对市场波动时保持弹性。

    • 其次,alpha应该根据一定的规则(如维度一致性)在逻辑上合理。例如,开盘价+交易量应该避免,因为他们没有相同的量纲。基于gp的方法直接修改表达式的结构,而AlphaGen则以逆波兰表达式的形式构建因子。后两种方法只能在alpha完全构造后进行量纲分析,无法提前修剪搜索空间,浪费了大量的计算工作。

  • alpha发现的一个关键挑战在于其庞大的搜索空间:

    • 考虑一个40个二进制运算符和20个操作数的任务,对于由最多由15个运算符组成的alpha,搜索空间膨胀到大约 1 0 63 10^{63} 1063,在这个空间上执行暴力搜索是不切实际的。

    • 在AlphaGo类算法中**RL引导的蒙特卡罗树搜索(MCTS)**在大型搜索空间(如围棋、国际象棋、将棋、星际争霸和汇编程序)中显示出了强大的寻找解决方案的能力。

1.2 主要贡献

  • 将生成公式化alpha的任务重新概念化为程序生成过程,alpha程序的集合可以很容易地按照预定义的规则提前修剪搜索空间
  • 提出了一种新的搜索算法,将RL与MCTS结合起来,生成具有逻辑性且相关性较低的alpha。
  • 实验结果验证了方法的有效性,大大减少了搜索空间并展示了发现逻辑、多样和有效的alpha的能力。

二、模型方法

2.1 Alpha 程序化生成

公式化 alpha 是一个函数 ζ \zeta ζ,在每个交易日 d ∈ { 1 , 2 , … , D } d\in\{1,2,…,D\} d{1,2,D} 将股票 i i i 过去 τ \tau τ 天的原始特征转换成一个值 z d , i = ζ ( x d , i ) z_{d,i}=\zeta(x_{d,i}) zd,i=ζ(xd,i),使用 IC 评估 alpha 的有效性。

公式化 alpha 是操作符 Operator 和操作数 Operand 的结构化组合,由一系列指令构建而成,其中每条指令都被描述为一个4元素元组(Operator, Operand1, Operand2, Operand3)

  • 操作符 Operator 分为一元、二元、三元和指示符类型,指示符 Indicator 标记alpha程序的开始和结束。
  • 操作数 Operand 包括标量、矩阵、寄存器和占位符。
    • 标量 Scalar 操作数 是操作符的参数。
    • 矩阵 Matrix 操作数 是市场的输入特征。
    • 寄存器 Register 用于存储中间结果。
    • 占位符 Placeholder 操作数 为 Null,用于将指令对齐到4个元素的元组。

image-20250122141758862

alpha指令逐条转换(上图颜色对应),构建表达式树

寄存器赋值是隐式的:

  • 如果一条指令不使用寄存器,它的输出将存储在第一个可用的寄存器 Reg0 中**(蓝色、绿色)**。
  • 对于使用单个寄存器的指令,输出将替换当前值。
  • 当一条指令涉及两个寄存器时,计算结果将替换 Reg0,并清空 Reg1**(橙色)**。

在程序完成后从 Reg0 读取值。

2.2 RL引导的MCTS搜索

MCTS 蒙特卡洛树搜索:

https://web.stanford.edu/class/cs234/

https://www.youtube.com/watch?v=vDF1BYWhqL8&ab_channel=StanfordOnline

强化学习任务:马尔可夫决策过程(MDP),记为 ( S , A , p , r , γ , ρ 0 ) (S,A,p,r,\gamma,\rho_0) (S,A,p,r,γ,ρ0)

  • S S S 为状态空间,所有可能程序的集合,每个状态 s s s 对应一个唯一的函数,是函数 ζ \zeta ζ 的矢量化表示。
  • A A A 为动作空间,所有可能指令的集合。
  • p ( ⋅ ∣ s , a ) = 1 p(·|s,a)=1 p(s,a)=1 为转移概率,用于应用一个动作后构建下一个alpha程序。
  • r ( s t , a t , s t + 1 ) = Perf ( ζ t + 1 ) − Perf ( ζ t ) r(s_t,a_t,s_{t+1})=\text{Perf}(\zeta_{t+1})-\text{Perf}(\zeta_{t}) r(st,at,st+1)=Perf(ζt+1)Perf(ζt) 为奖励函数, Perf ( ζ t ) \text{Perf}(\zeta_{t}) Perf(ζt) 为评价度量函数,即奖励由在执行动作 a t a_t at 后到达 s t + 1 s_{t+1} st+1 时评价指标的增加决定。
  • γ ∈ ( 0 , 1 ) \gamma\in(0,1) γ(0,1) 为折现因子,是控制alpha程序长度的超参数
  • ρ 0 ( s ) \rho_0(s) ρ0(s) 为初始状态分布,总是从空程序开始,即对于空程序,其值为1,否则为0。

Alpha2 使用一个 DRL 智能体来探索 alpha 程序生成任务。DRL 通过深度神经网络引导 MCTS 过程,以当前状态 s t s_t st 作为输入,输出动作分布和价值预测。动作分布预测了智能体应该采取的每个动作的先验概率,而价值预测预测了智能体应该从当前状态 s t s_t st 期望的累积奖励。本文使用了多项改进使得搜索算法在发现公式化 alpha 上表现更佳。

2.2.1 稳健性

改进估计子节点价值的方法

  • **均值算子:**MCTS 通常使用均值算子来计算子节点的价值,但由于公式化 alpha 的固有稀疏性,在算法的初始阶段均值算子表现欠佳。
  • **最大值算子:**在树搜索的早期阶段,大多数 alpha 产生的是无信息信号,导致策略方向具有随意性,最大值算子更擅长在稀疏的公式化 alpha 环境中导航。然而只使用最大值算子可能会导致发现对参数敏感的alpha。
  • **幂均值算子:**介于平均算子和最大值算子之间。使用均值算子会导致对最优价值的低估,从而减缓学习速度,而最大值算子则会导致高估。

本文通过一个超参数来控制最大值算子和均值算子之间的平衡,子节点价值估计公式:
Q ( s , a ) = r ( s , a ) + β ∗ mean ( V s ) + ( 1 − β ) ∗ max ( V s ) Q(s,a)=r(s,a)+\beta*\text{mean}(V_s)+(1-\beta)*\text{max}(V_s) Q(s,a)=r(s,a)+βmean(Vs)+(1β)max(Vs)
V s V_s Vs 是状态 s s s 上节点的价值备份。为了进一步提高价值估计的有效性(特别是对于均值操作符),价值备份是从添加到节点的前 k 个值中计算得出的,即 V s = { v 1 , … , v k } V_s = \{v_1,…,v_k\} Vs={v1,,vk}

2.2.2 多样性

本文通过计算 alpha 之间的相关性来量化多样性。对于待评估的 alpha 函数 ζ t \zeta_t ζt,首先计算其在所有股票和交易日上的 alpha 值 z t z_t zt,然后计算其与当前 alpha 集合中 alpha 值的最大相关性:
MaxCorr ( z t , G ) = max ⁡ i IC ( z t , z i ) , G = { z 1 , z 2 , … , z n } \text{MaxCorr}(z_t,G)=\max_i \text{IC}(z_t,z^i),G=\{z^1,z^2,…,z^n\} MaxCorr(zt,G)=imaxIC(zt,zi),G={z1,z2,,zn}
评估指标根据最大相关系数对 IC 进行折现:
Perf ( ζ t ) = ( 1 − MaxCorr ( z t , G ) ) ∗ IC ( z t , μ ) \text{Perf}(\zeta_t)=(1-\text{MaxCorr}(z_t,G))*\text{IC}(z_t,\mu) Perf(ζt)=(1MaxCorr(zt,G))IC(zt,μ)

2.2.3 逻辑性(维度一致性)

在实际应用中,尤其是在金融领域,特征之间的有意义交互至关重要。将不同的特征组合可能导致虚假关系,从而使得基于这些特征构建的交易策略不可靠。一个连贯的 alpha 表达式的一个关键质量是其操作符和操作数之间的维度一致性。需要注意的是,随着表达式复杂度的增加,其维度也会发生变化。

image-20250122134607451

本文在节点扩展阶段即施加规则以限制搜索空间,在实际评估 alpha 之前进行。通过在每个寄存器中记录表达式的维度,从而在扩展 MCTS 树时,能够根据操作符指定的维度要求预先筛选节点。

image-20250122134657670

三、实验结果

**股票集合:**沪深300指数和中证500指数成分股

**样本期:**训练集(2009年1月1日至2018年12月31日)、验证集(2019年1月1日至2020年12月31日)和测试集(2021年1月1日至2023年12月31日)

**原始特征:**open, close, high, low, volume, vwap

**目标:**与股票20日收益率具有高信息系数(IC)

**Alpha 组合:**将 IC 前 20 的 alpha 因子使用 XGBoost 组合

**评估指标:**IC、Rank IC

**设备:**13900K、A5000*2

**基线方法:**MLP、XGBoost、LightGBM、AlphaGen、gplearn

3.1 IC和相关性对比

image-20250122141338608

3.2 策略表现

image-20250122141359204

3.3 股票市场回测

top-k/drop-n,k=50,n=5

image-20250122141420168
69370)]

3.2 策略表现

[外链图片转存中…(img-hX3sE4s1-1739196069370)]

3.3 股票市场回测

top-k/drop-n,k=50,n=5

[外链图片转存中…(img-SVZiVqNJ-1739196069370)]


http://www.kler.cn/a/548000.html

相关文章:

  • 计算机网络原理试题二
  • 时间序列分析(四)——差分运算、延迟算子、AR(p)模型
  • 盲注技术获取数据库的表、列和具体数据
  • DeepSeek 助力 Vue 开发:打造丝滑的无限滚动(Infinite Scroll)
  • 基于Swift实现仿IOS闹钟
  • 3.3 企业级AI Agent工程实践:从API设计到高可用架构的全栈开发指南
  • ES 命令行查询
  • LeetCodehot100 力扣热题100 二叉树展开为链表
  • CMakeLists使用
  • 1-7 gitee代码推送问题
  • CogView 2 模型及论文详解
  • 如何借助DeepSeek发现安全运维的风险点并提升效率
  • 2025智能硬件售后服务管理系统选择的六大标准
  • 软件测试之接口测试理论知识
  • Leetcode 146 LRU缓存 的三种解法
  • MAC 系统关闭屏幕/睡眠 后被唤醒 Wake Requests
  • sql注入之盲注(bool盲注,时间盲注)
  • Hackmyvm quick2
  • 如何再渲染101平台选择最适合3ds Max动画渲染的机器配置?
  • RabbitMQ解耦订单模块