2025年用DeepSeek优化价量因子

  • 来源:信达证券
  • 发布时间:2025/03/25
  • 浏览次数:472
  • 举报
相关深度报告REPORTS

用DeepSeek优化价量因子.pdf

用DeepSeek优化价量因子。本文是深度学习揭秘系列之三。聚焦于借助DeepSeek模型对选股因子进行生成与改进,在量化投资领域展开深入探索。研究以Qlib集成的Alpha158量价因子为基础,该因子集涵盖日内、波动、价、量及量价相关性五类因子。通过设定统一测算口径,运用特定的PromptEngineering和AI交互流程,借助DeepSeek对原始因子进行优化,以及生成相关性较低的新因子,取得显著成果。在因子优化方面,多数因子经DeepSeek优化后预测能力提升显著。测试的Alpha158因子集中,75%的因子RankIC均值提升,50%的因子RankIC均值达1.2倍提升,35%的因子...

一、Alpha158 因子体系解析与优化框架

1.1、Qlib 算子与 Alpha158 因子集概述

在前期的系列研究报告中,我们借助 Github 上的开源项目 Qlib,采用其所集成的 Alpha158 量价因子开展了 模型层面的基础研究。Alpha158 量价因子是一个丰富且多样化的因子集合,它涵盖了基于价格和成交量等多维 度信息构建的多种因子。从因子构成来看,若不考虑窗口期,该因子集包含 42 个基础因子。而当纳入窗口期考 量时,部分因子综合考虑了 5 日、10 日、20 日、30 日以及 60 日等不同长度的交易日窗口期,由此,Alpha158 因子集扩展为共计 158 个因子。为了更系统地理解和分析这些因子,我们依据其特征与计算逻辑,将 Alpha158 因子细致地划分为以下 5 大类别: 日内因子:这些因子仅使用当天的开盘价、收盘价、最高价、最低价以及均价数据,共包含 13 个因子。这 些因子捕捉了市场在单个交易日内的波动和变化特征。 波动因子:波动因子主要衡量股票价格的波动性,共包含 5 个因子。波动性因子可以帮助我们理解股票价格 的变动幅度和频率,从而更好地评估风险和收益。 价因子:价因子是基于股票的价格信息计算得出的,共包含 100 个因子。这些因子涉及多种价格计算方法和 统计指标,能够反映出股票价格的长期和短期趋势。 量因子:量因子基于成交量数据,共包含 30 个因子。成交量是市场交易活动的直接反映,量因子能够提供 关于市场流动性和投资者行为的重要信息。 量价相关性因子:这些因子同时考虑了成交量和价格的关系,共包含 10 个因子。通过分析量价关系,可以 更深入地了解市场的供需动态和价格变动的内在驱动力。

Qlib 中集成了大量基于 Cython 的算子,这些算子与高开低收均价成交量数据巧妙结合,共同构成了因子表 达式。将因子表达式输入 Qlib 框架,即可高效地对因子进行高性能计算。在此背景下,如何巧妙运用 DeepSeek 对因子表达式进行改进,进而实现对因子选股能力的显著增强,成为本章着重研究的核心内容。

1.2、动态交互框架:基于 Prompt Engineering 的因子优化流程设计

由于 Alpha158 量价因子支持多种窗口期的灵活计算,为确保研究结果的一致性与可比性,在测算因子 RankIC 均值与 ICIR 时,我们统一将窗口期参数设定为 20 个交易日。同时,明确以下的回测细节:回测区间:2013 年 12 月 31 日至 2024 年 12 月 31 日。 剔除:剔除上市不满 365 个自然日的新股,剔除 ST 股。 中性化:对因子进行市值行业中性化 。 交易频率:周频调仓,以下周第一个交易日的 VWAP 价格成交,计算 VWAP 收益率的 RankIC 均值与 ICIR。 方向调整:根据 RankIC 均值的正负,对因子方向进行调整,使得 RankIC 为正,便于比较。 因子优化流程如下: 1) 对于每个因子,至少进行 3 次深度优化。在这 3 次优化过程中,让 DeepSeek 挖掘因子改进的潜力。若在 3 次优化后,优化因子的 RankIC 均值最大值达到原始因子的 1.5 倍,这意味着该因子已实现显著优化,此时 将直接终止优化流程,并输出历次优化结果,以保留最佳优化路径与成果。 2) 若 3 次优化未能达到上述目标,即优化因子的 RankIC 均值未提升至原始因子的 1.5 倍,则继续进行优化。 在后续优化过程中,最多尝试 5 次。这是为了在尽可能挖掘因子潜力的同时,避免过度优化导致的复杂性增 加与收益递减,以及无谓的 token 消耗。若经过 5 次尝试后仍未达标,则终止优化并输出历次优化结果。

以上 prompt 主要在于实现以下目的:

任务与信息传达:我们首先将 AI 带入资深量化选股因子专家的角色,简洁明了地阐述任务目标,即根据现 有的截面日频量化选股因子相关信息,对特定因子进行改进,以显著提升其 RankIC 均值。同时,通过 [{factor_algo}]明确原始因子表达式,使 AI 清晰理解原始因子的量化逻辑;借助{direction}变量说明因子方 向,帮助 AI 进一步区分不同类型因子,如反转因子与动量因子,从而为因子改进提供精准方向。

数据与算子说明:详细告知 AI 可用变量,包括 open(开盘价)、open(开盘价)、close(收盘价)、high(最 高价)、high(最高价)、low(最低价)、vwap(均价)、vwap(均价)、volume(成交量),这些变量作为因 子计算的基础数据,为模型改进因子表达式提供丰富素材。同时,将 Qlib 项目中的 ops.py 文件代码输入进 大语言模型,以[{code_content}]的形式让 AI 清楚了解有哪些算子可用,以及每个算子的具体使用方法,为因子表达式的创新改进提供技术支持。

测试条件与评估告知:向 AI 明确后文中将以 20 个交易日为窗口期进行测试,并且在测试过程中会对因子 进行方向调整、市值行业中性化等预处理操作。同时,告知 AI 原始因子在特定条件下的 RankIC 均值与 ICIR, 使其对原始因子的选股效果形成初步评估,从而在改进过程中有针对性地提升因子表现。

任务要求与思路引导:再次强调以提升因子的 RankIC 均值为核心目标,要求对因子表达式进行改进。先列 出至少 5 个改进方案,并对每个方案可能提升因子 IC 的潜力进行比较,最终返回认为最好的因子表达式及 其优化逻辑,因子表达式格式参考提供的样例。这不仅为模型提供了清晰的任务要求,还通过推荐的初始思 路引导 Deepseek 在思维链中进行系统、全面的初步思考。

注意事项明确:为确保模型改进的准确性与有效性,我们还明确了一系列注意事项。例如,限定只使用提供 的算子,且保证调用方法正确,防止大模型幻觉导致 AI 使用不存在的算子;提示对因子进行正确的去量纲 操作,转换成比例形式,以保证不同股票间可比;统一除 Ref 外每个算子的窗口期以%d 表示,避免 AI 将某 些算子的窗口期设置为其他值;要求从逻辑出发进行改进,避免 AI 因大模型幻觉“猜测”优化后的因子 IC 统 计量;强调因子根本逻辑不能被改变,防止为追求高 RankIC 而改变因子本质类型。

返回格式约束:按照特定格式要求 AI 返回结果,其中改进后因子表达式写在中括号内部,不得换行,表达 式内部括号统一使用小括号。优化逻辑要分点罗列,并对改进后的因子表达式进行详细解释。这种严格的格 式约束,方便了 Python 代码对返回内容进行准确解析。

其主干内容设计思路为:首先以提升因子的 RankIC 均值为目标,引导模型比较之前表达式得到的 RankIC 均 值与 ICIR,在此基础上继续对因子表达式进行改进。特别强调在必要情况下,可以推翻过去的方案重新思考,避 免优化结果陷入局部最优解,确保模型能够持续探索更优的因子表达式。同时,通过收集原始因子和历次优化因 子的表达式与预测效果,以详细罗列的方式(如原始因子表达式为:{},RankIC 均值为{},ICIR 为{},因子方 向为{};第 1 次改进后因子表达式为{},RankIC 均值为{},ICIR 为{},因子方向为{}……)让 AI 全面、深入地 分析过去的优化方向与效果,从而有针对性地进一步改进或重新思考因子表达式。通过 prompt_init 与 prompt_opti 的协同配合,我们构建了一个完整、高效的与大语言模型交互的体系,形成因子优化的底层框架。

1.3、优化效果验证:RankIC 的跨周期普适性与稳定性突破

经过对 DeepSeek 改进后因子的测试,在设定的 5 次迭代范围内,29 个窗口期因子的表现呈现出积极态势。 具体而言,共有 22 个因子的 RankIC 有所提升,其中 15 个因子的 RankIC 均值提升至 1.2 倍以上,10 个因子的 RankIC 均值更是提升至 1.5 倍以上,这些因子在选股能力的提升幅度上较为突出。 在衡量因子稳定性及预测能力的 ICIR 指标方面,同样有 23 个因子实现提升。其中 14 个因子的 ICIR 提升至 1.2 倍以上,10 个因子的 ICIR 提升至 1.5 倍以上。这一系列数据体现出 DeepSeek 对多数因子的优化卓有成效, 切实增强了因子在选股策略中的有效性与可靠性。

以上测算基于周频调仓,并将表达式中的窗口期%d 设置为 20。为进一步探究 DeepSeek 优化效果的稳定性, 我们思考若将窗口期设置为其他参数,优化出来的因子表达式是否仍能保持提升态势?为此,本文选取 Alpha158 中优化后 RankIC 均值有提升的因子,对原始表达式与改进后 20 日 RankIC 均值最高的表达式,在 5 / 10 / 20 / 30 / 60 个交易日的窗口期下测算其 RankIC 均值。

1.4、以波动率因子为例:洞察模型优化方向

我们选取波动率因子 std20 展开深入剖析,以此探究 DeepSeek 对因子的改进方式,并明晰因子选股效果的 提升究竟源于大语言模型的内在实力还是偶然因素。 std20 因子的原始表达式为“Std($close, %d)/$close”,其含义明确,旨在计算过去 20 个交易日收盘价的标准 差,并通过除以收盘价实现去量纲处理,以此衡量价格的波动程度。

在第一次改进中,DeepSeek 将因子表达式修改为“Mean(Greater($high-$low, Greater(Abs($high-Ref($close,1)), Abs($low-Ref($close,1)))), %d)/$close”,该表达式在原始基础上,对分子进行了创新调整,引入了平均真实波幅 ATR 的概念。此 ATR 捕捉了价格波动中的日内波动、向上跳空和向下跳空三种模式,相较于单纯依赖收盘价标 准差,能更为敏锐地识别价格剧烈波动的股票。分母依旧维持除以最新收盘价的形式,保持去量纲的操作。引入 ATR 计算波动率后,因子的 RankIC 均值从 4.03%提升至 6.18%,ICIR 从 0.31 提升至 0.42,年化多头超额从 - 2.23%提升至 0.71%,年化多空收益从 7.33%大幅提升至 17.42%。

在 第 二 次 改 进 中 , DeepSeek 将 因 子 表 达 式 修 改 为 “ EMA(Greater($high-$low,Greater(Abs($highRef($close,1)),Abs($low-Ref($close,1))))*$volume,%d)/EMA($volume,%d)/$close”,该表达式在第一次优化表达式 的基础上,主要实施了两点关键改进: 1) 引入成交量加权机制:将真实波动幅度(TR)与当日成交量相乘,强化量价共振效应,高成交量伴随的波动更 具信息含量,通过 EMA($volume, %d)消除成交量绝对值影响,构建单位成交量波动比率。 2) 采用 EMA 双重平滑:对分子分母同时进行指数加权平均,既保留成交量加权特性又加强近期数据的权重。 DeepSeek 对该因子的逻辑解释为:“该因子通过成交量加权的指数移动平均真实波动率,捕捉资金流动驱动 的价格不稳定性。相比简单平均 TR,成交量加权能识别主力资金参与的异常波动,EMA 处理强化了近期市场情 绪的敏感性,双重 EMA 标准化有效剥离了量价量纲差异。该设计同时满足波动测量的全面性、量价关系的协同 性以及市场记忆衰减的特性,预期能更精准识别高投机风险个股。”,可以看出模型对该因子的理解基本无误。 经此改进,因子的 RankIC 均值由第一次优化的 6.18%提升至 7.8%,ICIR 由 0.42 提升至 0.55,年化多头超 额从 0.71%提升至 5.24%,年化多空收益由 17.42%提升至 33.81%。从相关对比图中能够明显观察到,该波动率 因子在 2015 年的回撤得到显著改善。

在第三次改进中,DeepSeek 将因子表达式优化为“EMA(Greater(Greater($high-$low,Greater(Abs($highRef($close,1)),Abs($low-Ref($close,1)))),Abs($open-Ref($close,1)))*Sign($close-Ref($close,1)+1e5)*$volume,%d)/EMA($volume,%d)/$close”。此表达式在第二次优化的基础上,又增添了两点改进: 1) 四维波动极值捕捉:在原有三重比较基础上新增开盘跳空缺口($open 与前收盘价差),形成 high-low、highprev_close、low-prev_close、open-prev_close 四维波动极值筛选。 2) 引入方向敏感系数:通过 Sign($close-Ref($close,1))捕捉收盘方向,下跌日波动赋予负权重强化空头波动信号。 DeepSeek 对该因子的逻辑解释为:“该因子通过整合日内波动、隔夜跳空和方向性量价信息,构建多维波动 冲击指标。在捕捉最大价格变动的基础上,通过收盘方向符号强化下跌波动的负面效应,结合成交量加权突出资 金驱动的不稳定性。相比前两版改进,该设计更精准识别空头力量主导的异常波动,预期可提升对风险溢价补偿 要求的定价能力。” 第三次优化后,因子的 RankIC 均值由第二次优化的 7.8%略微降低至 7.01%,但 ICIR 由 0.55 提升至 0.79, 年化多头超额由 5.24%提升至 6.29%,年化多空收益由 33.81%大幅提升至 51.10%。从测算效果来看,虽然第三 次优化的 RankIC 均值有所下降,但 ICIR、年化多头超额收益与年化多空超额收益均有显著提升。然而,从人为 主观理解因子的角度,我们认为 DeepSeek 对因子的理解存在一定偏差。 原始波动因子与历次优化因子均为负向因子,意味着因子值越大,后续可能跑输市场整体;因子值越小,后 续可能战胜市场整体。 第 三 次 的 因 子 表 达 式 中 “ Greater(Greater($high-$low,Greater(Abs($highRef($close,1)),Abs($low-Ref($close,1)))),Abs($open-Ref($close,1)))”部分会返回一个正数,而表达式中“Sign($closeRef($close,1)”部分则根据当天的涨跌调整前者的方向(涨为 1,跌为-1)。因此,若股票长期下跌,分子端可能 为负数,因子值较小;若长期盘整,分子端趋近于 0;若呈上涨趋势,分子端为正数,因子值较大。所以,我们 理解该因子在原有波动率因子的基础上,叠加了反转因子,从而使因子 ICIR 及收益得到一定提升。

除优化成功的案例外,我们也对优化无明显提升的案例进行了总结与分析。以 Beta20 因子为例,DeepSeek 在该因子上尝试了 5 次优化,但 RankIC 均值和 ICIR 均未得到提升。Beta20 原始因子构造逻辑为过去 N 个交易 日收盘价的斜率除以收盘价,因子方向为负向,本质仍为反转因子。由于受到 prompt 中“因子根本逻辑不能被改 变”的限制,DeepSeek 主要对分母端进行改进尝试,但效果不佳。类似的情况还出现在 min20 因子与 qtlu20 因子 上,同样因分子端逻辑限制,导致改进效果不显著。

二、从优化到创造:基于大语言模型的新因子生成范式

2.1、从零生成的困境:独立探索下的效率与效果瓶颈

在第一章里,我们以 Alpha158 原始因子表达式为依托,借助 DeepSeek 开展因子改进工作,取得了一定成 果,但也察觉到部分因子受限于原有逻辑,难以进一步优化。由此引发思考:若给予 DeepSeek 更自由的发挥空 间,使其从因子改进转向从零进行因子生成的任务,它能否巧妙组合各类算子与可用数据,挖掘出具备出色选股 能力的因子?这正是本节着力探讨的核心问题。

因子生成部分的 prompt_init 与因子优化部分的 prompt_init 大致相似,只是去除了对 Alpha158 表达式和 IC 统计量的描述,同时为模型设定了生成周度 ICIR 在 0.8 以上因子的明确目标。prompt_opti 部分则着重将历次生 成的表达式与 IC 统计量反馈给模型,促使模型在前述基础上不断改进。在实际操作过程中,我们发现模型可能 会将表达式修改得过于复杂,而实际效果却不尽人意,所以在 prompt_opti 中特别提示模型,可适时简化表达式 或者重新构思全新方案。

2.2、案例驱动的突破:基于先验知识的低相关性因子挖掘

在上一节中,我们让 DeepSeek 从零开始生成因子,历经 20 次迭代,挖掘出的因子 ICIR 仍未达预期。那么, 若为模型提供一些成功案例,使其能总结这些案例的优点,是否能实现更出色的因子挖掘效果呢?基于此,本节 我们将第一章中的 Alpha158 原始因子表达式、优化后的表达式以及对应的 IC 统计量作为“成功案例”输入模型, 探究在此基础上能否取得更好成果。

经过有限测试,最终生成了 5 个 ICIR 在 0.8 以上的因子。其中,第一次尝试经一次迭代便得到满足条件的 因子表达式,有时则需历经 8 次迭代才得到较好的因子。 尽管我们在 prompt 中要求新因子与参考样例因子相关性尽可能低,但 DeepSeek 作为大语言模型自身不具备计算能力。因此,我们测算了新因子与样例因子中 ICIR 大于 0.7 的因子之间的相关性,以及新因子之间的相关 性。

以新生成的前两个因子为例,分析 DeepSeek 所生成因子的底层逻辑。

第一个有效因子表达式为: EMA(Greater($close-Ref($close,1),0)*Power($close/Ref($close,1)-1,2)*$volume,%d)/EMA($volume,%d)- EMA(Greater(Ref($close,1)-$close,0)*Power(Ref($close,1)/$close-1,2)*$volume,%d)/EMA($volume,%d)

AI 对该因子的逻辑解释为:“该因子捕捉量价协同增强效应。分子端计算上涨日价格涨幅平方与成交量的加 权均值(EMA),突出强势股的量能驱动特征;分母端进行成交量标准化消除规模影响。通过对称计算下跌日的 量价惩罚项并做差值,有效区分多头与空头动能。价格涨幅平方处理放大突破行情的区分度,EMA 平滑避免短 期噪声,最终形成兼具趋势强度和量能验证的双向驱动因子。” 可见 DeepSeek 对因子表达式的理解基本正确。通过学习样例表达式,AI 在第一次迭代中便能够使用 “$volume/EMA($volume,%d)”表达成交量加权。在创新性上,AI 使用“上涨日价格变动×涨幅平方 - 下跌日 价格变动×跌幅平方”区分多头与空头动能,使得因子 ICIR 达到 0.83。

第二个有效因子表达式为:

EMA(($close/Ref($close,1)-1)*Sign($volume-EMA($volume,%d))*Abs($close/Ref($close,1)-1),%d)/Std($close/Ref($close,1)-1,%d)

AI 对该因子的逻辑解释为:“该因子聚焦量价共振的强度维度:1)价格收益率与成交量突破 EMA 的方向符 号相乘,捕捉量价同向动量;2)乘以收益率绝对值强化大波动日的信号权重;3)EMA 平滑保留趋势持续性特 征;4)用收益率波动率标准化消除市场整体波动影响。通过"方向×幅度×量能验证"三维度构建纯净动量信号。” 人为拆分该因子,表达式分子由 3 个 部 分 相 乘 组 成 “ ($close/Ref($close,1)-1) ”、“ Sign($volume-EMA($volume,%d))”和“Abs($close/Ref($close,1)-1)”。不难发现,对于连续放量大涨,或者连续缩量大跌,又或 者处于盘整过程中涨时放量跌时缩量的股票,在该表达式中的分子端值会偏大,反之则偏小。而在分母端除以近 期的波动率,则进一步放大了近期连续放量大涨或缩量大跌的因子值。该因子周频 ICIR 达到 0.82,且与第一个 因子的相关性仅为 8.92%。

三、策略应用与组合绩效验证:复合因子在指增组合中的增益

在前两章中,我们借助 DeepSeek 成功实现了对原始 Alpha158 因子的优化,并在此基础上挖掘出 5 个相关 性较低的新因子。从单因子测试结果来看,优化因子与新因子均展现出出色的选股预测能力。那么,若采用线性 模型将这些因子进行复合,效果究竟如何?落实到指增组合上,又能带来多少提升?这是本节重点探讨的内容。

3.1、复合因子的收益增强:中证 800 中 RankIC 均值提升至 11.03%

我们以量价因子作为输入特征,在全 A 股票范围内,运用惩罚系数为 0.001 的 Lasso 模型对因子进行合成。 具体而言,训练集长度设定为过去 5 个自然年,每年年初重新估算模型参数,这些参数将用于接下来一年的因子 合成以及对未来 5 个交易日的收益预测。

若使用 Alpha158 增强因子替代原始因子,代入 Lasso 模型进行合成,结果显示增强合成因子的最终选股能 力略优于原始合成因子。增强合成因子的 RankIC 均值为 11.03%,超越了原始因子的 10.6%。从各年份数据来看, 仅 2015、2021 与 2025 年 RankIC 均值低于原始合成因子,在其他年份均有不同程度的提升。同时,增强合成因 子的年化多头超额收益为 23.5%,收益波动比为 4.66,这表明增强合成因子在获取收益方面具有一定优势,且收 益的稳定性相对较好。

进一步探讨第二章中生成的因子相对于原始 Alpha158 因子是否具有增量信息。我们将原始因子与生成因子 一同代入 Lasso 模型进行合成,并比较“原始 + 生成”合成因子与原始合成因子的选股能力。结果表明,“原始 + 生成”合成因子的 RankIC 均值为 10.94%,高于原始因子的 10.6%。从各年份数据来看,仅 2025 年 RankIC 均值 低于原始因子,在其他年份加入新生成因子后均有稳定提升。

最后,我们将所有因子,即原始因子、增强因子与生成因子一起代入 Lasso 模型,得到最终的合成因子。该 合成因子的 RankIC 均值为 11.41%,明显优于原始因子、增强因子以及叠加生成因子后的原始因子。在多头超额 收益方面,合成因子达到 24.64%,同样优于原始因子组合的 23.1%。

3.2、指增组合的实战检验:月度 800 指增超额提升近 1%

我们将 Lasso 模型合成的因子值应用到 800 指增策略中,以此深入探究大语言模型优化与生成的因子对指增 组合的增量贡献。约束条件与交易方式如下:

约束条件: 100%指数成分股内选股。个股权重最大偏离 0.8%。 中信一级行业最大偏离 3%。 市值风格最大偏离 0.01,其它 CNE5 风格最大偏离 0.3。 每次调仓单边换手率 40%以下。 交易方式: 月度调仓,以每月初第一个交易日的 VWAP 价格成交。 一字涨停不能买入,一字跌停不能卖出,停牌不能交易。

手续费:单边千分之一。 在中证 800 指数成分股中,将原始因子与 DeepSeek 优化因子及新生成因子叠加后得到复合因子。与原始因 子相比,复合因子展现出显著优势。月频 RankIC 均值从 9.01%提升至 10%,ICIR 从 0.93 提升至 1.01。

当落实到中证 800 指增组合层面,复合因子的优势进一步凸显。复合因子多头超额年化收益达到 7.92%,相 较于原始因子组合 7.05%的年化超额收益,实现了显著提升。同时,复合因子组合年化信息比为 1.89,相较于原 始组合 1.63 的年化信息比也有所增强。这表明复合因子不仅能够获取更高的超额收益,而且在风险调整后收益的稳定性方面表现更佳。


(本文仅供参考,不代表我们的任何投资建议。如需使用相关信息,请参阅报告原文。)

相关报告
评论
  • 相关标签
  • 相关专题
  • 相关文档
  • 相关文章
  • 全部热门
  • 本年热门
  • 本季热门
  • 最新文档
  • 最新精读
分享至