HFT内部研究 :大语言模型在选股因子挖掘中的深度应用

全文6493字,阅读约需19分钟,帮我划重点

划重点

01大型语言模型在选股因子挖掘中的应用逐渐成为研究热点,具有巨大潜力。

02目前,LLM在因子挖掘中的应用主要分为五种方向:底层字段驱动的因子生成、文本与多模态数据驱动的因子生成、人机交互驱动的因子生成、情绪与新闻驱动的因子生成和因子杂交与优化。

03然而,LLM在因子挖掘中的可解释性受限,使用需谨慎,且可能存在过拟合风险。

04未来,通过更有效的数据预处理方法和模型优化策略,或能提升LLM生成因子的质量和效率。

05同时,LLM与其他机器学习算法和量化工具的结合,有望在因子挖掘中发挥更重要的作用。

以上内容由腾讯混元大模型生成,仅供参考

 近期,大型语言模型(LLM)在量化金融领域的应用逐步成为新的研究热点,在因子挖掘方面,展现了巨大的潜力。本文HFT研究组(LLM方向)的阶段性成果旨在梳理目前 LLM 在因子挖掘中的主要应用和方法,并总结其优势和挑战,为后续的研究工作做铺垫。

图片

资料来源:HFT整理


1.因子挖掘的传统方法与局限性

    传统因子挖掘方法主要分为两类:人工手动挖掘算法自动挖掘。人工挖掘依赖于研究员的专业经验和市场理解,但其效率低下且成本高昂。而自动化挖掘则通过机器学习等算法来探索潜在因子,尽管减少了人工成本,但也存在过拟合和可解释性较差的问题。
    LLM 因子挖掘的引入或能有效解决上述问题。
    第一,LLM 一方面能够降低人工挖掘因子的高人力成本,另一方面弥补自动化算法在灵活性和可解释性上的不足。例如,在面对基本面因子和高频因子的场景中,遗传规划等传统算法难以在逻辑推理和格式转换方面实现有效平衡,而大模型凭借近似人类的逻辑推理能力,可以更好地应对这些挑战。    
    第二,LLM 通过 Few-Shot 方法在人工构建的高质量因子的基础上进行学习和模仿,能够显著提升生成因子表达式的质量和效率。这是传统遗传算法和强化学习难以实现的,因为它们通常需要大量的数据和训练时间才能逐步探索出高质量的因子。
    第三,LLM 和人机交互结合,使得研究员能够直接将交易想法输入系统,并自动生成高质量的因子,大幅减少建模时间,并提升因子与研究意图的一致性。
    第四,基于 LLM 的多智能体系统结合其动态生成能力和实时反馈系统,能够根据实时市场数据自动调整生成的因子,保持因子库的高收益能力和适应性。

2.LLM 在因子挖掘中的应用

    目前,国内外学者和金融业界对于 LLM 在因子挖掘中的应用大致分为五种方向:分别是底层字段驱动的因子生成、文本与多模态数据驱动的因子生成、人机交互驱动的因子生成、情绪与新闻驱动的因子生成和因子杂交与优化

2.1 底层字段驱动的因子生成

    利用提示工程,LLM 能够接收输入的底层字段、因子示例和常用算子,自动生成新因子。这种方式通过提供标准化的输入,使 LLM 能够快速生成符合特定格式和逻辑要求的因子,提升因子挖掘的效率和质量。
图片
资料来源:华泰证券金融工程(公众号)

2.1.1 底层字段、因子示例、常用算子的输入

i.   首先,LLM接受来自底层数据库的数据字段

    • 中低频字段:包括开盘价、收盘价、最高价、最低价、成交量等。
    • 基本面字段
      • 资产负债表字段:总资产、流动负债、股东权益等。
      • 现金流量表字段:经营活动现金流、投资活动现金流等。
      • 利润表字段:营业收入、净利润、销售成本等。
    • 高频字段:包括分钟频率的原始量价数据,包括开盘价、收盘价、最高价、最低价、成交额、成交量、成交笔数等。

      图片

      资料来源:华泰证券金融工程(公众号)

ii.  其次,采用 Few-Shot 方式,在模型 prompt 中加入已有的因子示例

    • 格式包括因子名称、数学表达式和含义。这些示例有助于引导 LLM 理解如何构造因子,确保生成的因子符合特定的格式和语义要求。

iii. 最后,输入常用算子
    • 基本面算子:包括元素算子(同比、环比、绝对值等)、截面算子(截面排序等)、关系算子(逐元素加减乘除、逐元素分位数加减乘除),时序算子(标准差、最大值、最小值等)。
    • 图片

      资料来源:华泰证券金融工程(公众号)

    • 高频算子:包括元素算子、关系算子、聚合算子(标准差、均值、最大值、偏度、峰度、协方差等)、聚合展开算子(分钟收益率、累加、累乘、滚动窗口等),采样算子(特定时点采样)。
2.1.2 生成因子表达式
    LLM 基于输入的数据字段,生成初步的因子,包括因子的名称、数学表达式以及因子的含义。
    • 低频因子挖掘:利用量价数据,让 LLM 提供原创性的中低频因子。例如变异系数因子,该因子通过收盘价和成交量的变异系数来衡量股票的波动性和流动性,并进行组合计算,得到了多种变异系数因子。
    • 图片
      资料来源:华泰证券金融工程(公众号)
    • 基本面因子挖掘:LLM 可以全面的考虑基本面字段之间的逻辑关系,生成有清晰的逻辑支撑和效果的因子。
    • 高频因子挖掘:在高频维度上,LLM 可以考量算子间细致的逻辑关系,对高频数据进行复杂的日频化格式转换。例如使用高频委托价和委托量构建的买卖盘力量差异因子,其在日频上的表现尤为突出。
    • 图片

      资料来源:国金证券研究所

2.1.3 输出解释器
    将因子名称、数学表达式和含义从因子的原始 LLM 输出文本中提取出来,并组织成一个预定义的结构化格式,确保最终的输出格式一致且规范。 
   例如,若生成的因子为“量价动量因子(Price-Volume Momentum Factor)”= “Rank_Mul(Decay_Linear(TS_Return(S_DQ_CLOSE, 10),10),Rank(Div(S_DQ_VOLUME, TS_Mean(S_DQ_VOLUME, 10))))”,解析器会把该文本转换为如下结构化内容:
{ "因子名称": "量价动量因子(Price-Volume Momentum Factor)", "因子计算方法": "Rank_Mul(Decay_Linear(TS_Return(S_DQ_CLOSE, 10), 10), Rank(Div(S_DQ_VOLUME, TS_Mean(S_DQ_VOLUME, 10))))", "因子含义": "这个因子的目标是衡量一只股票在价格和成交量变化之间的协同关系。具体地,因子利用过去10个交易日的收益率和成交量变化的相对排名,构建了一个动量因子。当某只股票近期价格上涨且成交量增加时,该因子可能取较高值,表示动量增强的趋势;反之,如果成交量增加但价格下跌,因子值可能较低。"}
图片
资料来源:HFT整理
2.1.4 因子测试与调仓策略
    对于中低频因子,采用 5 天滚动数据来构建因子并进行周度调仓测试;
    对于高频因子,首先进行日频调仓测试,其次考虑成本过高的问题,进一步将因子降频至周频以观察效果。
2.1.5 代码生成与组合优化

    通过让LLM生成代码,简化因子的测试与组合优化过程。模型可以提供因子测试的代码框架,帮助研究人员快速实现因子测试和组合优化。然而,需要对模型生成的代码进行校验和调整,以确保其符合实际的使用需求。

2.2 文本与多模态数据驱动的因子生成

    LLM 能够自动分析海量研报、学术论文等文本数据以及多模态数据(如图表和数值数据),基于这些内容生成相关假设,并定义和构建对应的因子公式。这使得 LLM 可以从大量已有研究中提取有效信息,为因子设计提供丰富的理论支持和数据依据。

图片

资料来源:Kou, Zhizhuo et al. “Automate Strategy Finding with LLM in Quant investment.” ArXiv abs/2409.06289 (2024): n. pag.

2.2.1 构建因子库

    i.   数据来源
        • 使用大型语言模型(LLM),如 ChatGPT 的自定义版本,来处理多种数据来源。这些数据包括:
          • 文本数据(如学术文章、财务报告等):提供传统的财务和经济信息。
          • 视觉数据(如交易图表、K 线图等):帮助捕捉市场动态。
          • 数值数据(如股票价格、成交量等):提供历史价格和交易数据。
        • 通过分析这些数据,LLM 会生成大量初步的 Alpha 因子,这些因子可以用于预测股票的未来收益。
      ii.  分类和筛选
        • 这些初步生成的 Alpha 因子将经过 LLM 的过滤和分类,被细分为不同类别(如动量因子、波动率因子、基本面因子等)。
        • LLM 的多模态处理能力使其不仅可以对文本进行分析,还可以结合其他数据形式,以确保因子的多样性和有效性。
        • 生成的 Alpha 因子被称为种子Alpha因子,形成一个“工厂”,这些因子是之后策略构建的基础。

      2.2.2 多智能体因子评估与优化

          一旦 Alpha 因子被筛选出来,下一步就是决定这些因子如何运用在实际的投资策略中。这部分是通过多智能体系统完成的。

      i.   智能体系统的角色

        • 智能体可以理解为一个个具有不同分析视角和风险偏好的小专家,每个智能体根据不同的市场数据进行评估。
        • 每个智能体可以根据特定的风险偏好市场分析标准来评估不同的种子 Alpha 因子。例如,有些智能体可能更倾向于在高波动的市场中找到合适的因子,而有些智能体则更适合在稳定的市场环境中选择因子。

      ii.  多模态评估与持续优化的反馈循环

        • 智能体不仅分析单一类型的数据,它们还结合了文本、数值和视觉等多模态数据来源,以便对种子 Alpha 因子进行更准确的评估。
        • 每个智能体会对 Alpha 因子进行回测,即在历史市场数据上测试这些因子的表现,以确保它们能够提供稳定的预测效果。
        • 通过持续地反馈循环,实现因子和策略的自我优化。每轮回测后,系统会根据结果自动调整因子,提出更具预测力的新因子,优化因子的预测效果。

      iii. 置信度评分

        • 在对因子进行评估后,每个智能体会给因子打一个置信度评分。这个评分代表智能体对该因子的可靠性和表现能力的信心。
        • 评分高的因子会被选入最终的策略构建阶段,以保证选用的因子质量高、风险较小。

          图片

          图片

          资料来源:Kou, Zhizhuo et al. “Automate Strategy Finding with LLM in Quant investment.” ArXiv abs/2409.06289 (2024): n. pag.

      2.3 人机交互驱动的因子生成

          通过将 LLM 与人机交互结合,研究人员能够直接输入自己的交易想法,LLM 可以将这些模糊描述转换为为因子生成的明确 Prompt,补充相关的金融信息。LLM 再接受经过处理的 Prompt,生成因子。这种方式不仅提高了因子挖掘的效率,还保证了因子与研究者意图的高度一致性
      图片
      资料来源:Wang, Sai et al. “Alpha-GPT: Human-AI Interactive Alpha Mining for Quantitative Investment.” ArXiv abs/2308.00016 (2023): n. pag.

      2.3.1 用户输入交易想法

          自然语言描述:用户通过自然语言描述他们的投资需求或想法,例如“动量因子”或“基于成交量的预测因子”。这种自然语言描述通常是比较模糊的,不具备严格的结构化。
        • 示例
          • “基于最近 10 天的价格动量,寻找可能的预测信号。
          • “结合成交量和市场波动率,生成有用的因子。
      2.3.2 知识编译器处理输入
          知识编译器的主要任务是将用户的自然语言请求转换为可以被 LLM 更好理解的特定领域提示,以便于 LLM 生成更合适的输出。
      • 知识编译器(Knowledge Compiler)
        • 领域上下文增强
          • 知识编译器会将用户的描述转换为一个更具上下文意义的提示。它不仅包含用户的需求,还会补充金融领域的相关信息,使 LLM 更好地理解生成因子的目标。
        • 具体操作
          • 例如,将“动量因子”转换为“一个基于最近 10 天价格变化速率并结合成交量的动量因子,预测未来 10 天的回报表现”。这样可以明确 LLM 生成因子的逻辑要求。
        • 上下文示例
          • 知识编译器可能会在提示中加入类似因子的示例。比如给 LLM 提示某些典型因子是如何描述和应用的,这样可以帮助 LLM 在生成时模仿这些已知模式,生成更加合理的因子表达式。

      2.3.3 LLM 生成因子

          LLM 接收经过知识编译器处理的提示,使用内部的大量金融数据和模式来生成可能有效的 Alpha 因子。LLM 生成的内容包括两部分:自然语言的因子描述和对应的数学表达式。
      i.   生成自然语言描述
        • 目的
          • 自然语言描述是用来解释 Alpha 因子的逻辑和使用场景的。例如,LLM 生成的描述可能包含因子背后的金融理论或预测逻辑。通过加入经整合的关于 Alpha 挖掘的额外知识、信息、文献和数据的知识库模块提高 LLM 的性能和准确性。
        • 示例
        • “这个动量因子基于过去 10 天的价格变化,结合成交量,预测未来的收益表现。它旨在捕捉短期市场趋势,适合波动性较高的市场环境。”
      ii.  生成数学表达式
        • 生成的示例
           Alpha_i = MovingAverage(Price, 10) / sqrt(Volume)
            • 这个表达式可能描述了一个因子:它通过取最近 10 天的价格移动平均并除以成交量的平方根,得出一个标准化的信号,用来判断市场的买卖压力。
        • 生成逻辑:LLM 在生成这些数学表达式时,基于大量的金融数据和公式的学习,利用其对金融市场信号的理解,将自然语言转化为数学模型。

      2.4 情绪与新闻驱动的因子生成

          LLM 在处理非结构化文本数据(如新闻、社交媒体)方面具有明显的优势。通过自然语言处理,LLM 能够从这些文本数据中提取具有预测力的因子。目前有学者采用一种称为“顺序知识引导提示(SKGP)”的方法,使用 LLM 来提取新闻中的因子。

      图片
      资料来源:Wang, Meiyun et al. “LLMFactor: Extracting Profitable Factors through Prompts for Explainable Stock Movement Prediction.” Annual Meeting of the Association for Computational Linguistics (2024).

      2.4.1 顺序知识引导提示(Sequential Knowledge-Guided Prompting, SKGP)

      • 匹配和获取股票新闻背景知识:核心在于将目标股票 stock_target 与目标预测日期 date_target 的目标新闻 news_target 进行匹配,再匹配与目标新闻 news_target 相关的股票列表 stock_match。接下来,利用 LLMs 通过填空提示(fill-in-the-blank)技术来获取目标股票和匹配股票之间的关系。上述方法显著提高了对新闻内容的理解,为后续的因子生成和股票价格走势预测提供了坚实的基础。
      Prompt = { f"请填空:stock_target和stock_match最可能处于___关系" }
      • 生成影响股价的新闻情绪因子:与传统的关键词提取或情感分析不同,第二阶段是从未加工的新闻中提取可能影响股票价格的关键因素。LLM 输出的影响因素并不局限于新闻中的词汇,其会考虑新闻的内容及其对股票走势的潜在影响,并总结内容中的重要元素。这些因素与股票走势的关联度比关键词、情感、新闻摘要或整篇新闻文章更为紧密,因此提供了更高可能性的市场趋势预测。
      Prompt = { f"请从以下新闻中提取可能影响股票目标股价的前k个因素" }
      • 预测股票价格走势:通过将前两部提取的关系、因素,和股票历史价格走势数据输入 LLM,来预测未来股票价格的上升或下降,并提供预测的理由。其中,将历史价格走势时间序列数据转换为时间模板(TimeTemplate),结构为“在 date_i,stock_target 的价格上升/下降”。此外还构建了价格模板(PriceTemplate),包括初始指令和结果指令。
      Prompt={    f"基于以下信息,请判断股票价格的方向是上涨还是下跌,填空并给出理由:关系+因子+历史股价走势", #初始指令    f"在date_i,stock_target的价格将会___" #结果指令    }

      2.5 因子杂交与优化

          LLM 还可用于因子的生成与优化,通过 Few-Shot 学习方式在已有因子基础上进行学习和模仿,生成新因子。例如,将 LLM 与遗传算法结合,通过因子杂交与变异的方式生成新的量化因子。
      图片

      资料来源:《ChatGPT加持的遗传算法 - 变异融合出新的量化因子》

      2.5.1 因子杂交
      • 趋势关注:将不同因子结合生成新因子。例如,将资金流入动量因子与价格动量因子结合,产生复合动量因子,从而综合流动性和价格趋势。
      • 加权相加:通过加权相加的方法进行简单组合,例如在表达树的根部增加乘法和加法操作符。
      prompt={    f"基于你上述已写出的XXX因子和XXX因子的代码,能否用这两个因子杂交,并写出新的因子?不要随意拼凑这两个因子,请给出你杂交这两个因子的思考过程"    }
      2.5.2 因子变异
      • 无方向的变异:让 LLM 自行添加少量改动,比如在 RSI 因子中加入加权移动平均线(EMA)。
      prompt={ f"基于你上述已写出的XXX因子代码 -写出 添加少量的改动并创造出新的因子 的改进方案 -根据改进方案写出这个因子的Python代码" }
      • 有方向变异:指定特定的修改方向,例如在 RSI 因子中添加 volume 数据,使得因子可以反映交易量对价格走势的影响。
      prompt={    f"基于你上述已写出的XXX因子代码      -写出将 'volume' 数据加入这个因子的理由      -根据理由,写出这个因子加入了'volume'的Python代码"    }

      2.5.3 因子入库检查与优化

          LLM 生成的因子数量庞大,需进行筛选与评估。LLM 可以通过语义分类快速筛选出独特性高的因子,减少因子库中同质化现象,并在初步回测中筛查因子的适应度。它还能根据因子的相似性降低重复计算的资源消耗,确保因子库的多样性和效率。

      3.LLM 应用于因子挖掘的挑战与展望

          LLM 挖掘因子的可解释性受限,使用需谨慎。模型的复杂性也可能导致其在因子生成过程中仍存在过拟合风险。
          未来,通过更有效的数据预处理方法和模型优化策略,或将进一步提升 LLM 生成因子的质量和效率。同时,通过与其他机器学习算法和量化工具的结合,LLM 或能在因子挖掘中发挥更重要的作用,成为投资策略设计中的核心工具。
          HFT研究组(量化方向)正进行项目复现与新的探索工作,请期待我们后续的成果

      参考资料

      1. 《华泰金工 | GPT 因子工厂 - 多智能体与因子挖掘》
      2. 《华泰金工 | GPT 因子工厂 2.0:基本面与高频因子挖掘》
      3. 《Alpha 掘金系列之五:如何利用 ChatGPT 挖掘高频选股因子?》
      4. 《Automate Strategy Finding with LLM in Quant investment》
      5. 《RD-Agent:微软开源自动化 Quant 工厂》
      6. 《下一代 Alpha 因子挖掘范式与架构设计》
      7. 《【浙商智能配置】基于人机互动和大语言模型的因子挖掘平台》
      8. 《LLMFactor :大模型结合 SKGP 提供可解释的股价预测(存疑)》
      9. 《AI 大模型在 A 股股票量化投资中的应用:解密 Alpha 因子的生成与优化》
      10. 《ideaQuant | 用 ChatGPT 加持的遗传算法 - 变异融合出新的量化因子》