☰
ChatGPT挖掘高频选股因子:从Transformer原理到买卖盘力量因子实战
2026/10/18 20:40:06 网站建设 项目流程

简介:这份国金证券金融工程专题报告聚焦如何借助ChatGPT挖掘高频选股因子,面向量化研究员、因子投资从业者及对大语言模型金融应用感兴趣的进阶读者。报告系统梳理了ChatGPT的模型演进、Scaling Law与RLHF训练机制,并重点讲解提示工程中的角色—任务—指令公式与思维链提示技巧,随后以因子挖掘为实战场景,展示价量变异系数因子与高频买卖盘力量因子的构建与测试过程,其中卖盘力量因子在周频下多头年化超额收益约9.77%至10.20%,并据此构建中证1000指数增强策略,年化超额收益7.17%、信息比率0.57。资源为单个PDF文件,压缩包约2.16MB,内容含模型原理、提示工程指南、因子测试与代码能力评估等完整章节,并附风险提示。目前已有248人学习,适合希望将大模型方法落地于量化选股研究的读者参考。

1. 当量化研究员遇上ChatGPT:它到底能帮上什么忙

你可能听过这样一种说法:把选股这件事交给AI,让它自己“想”出赚钱的因子。听起来像玄学,但背后其实有一套可以拆解的逻辑。打个比方,传统量化研究员挖因子,像是拿着铲子在矿山里一铲一铲地刨,经验丰富的人知道往哪挖,但体力有限、速度有限。而ChatGPT这类大语言模型,更像是一个读过海量研报、论文和代码的“实习生”——它不一定真懂市场,但它见过足够多的“套路”,能在你给出清晰指令后,快速拼凑出一些你没想到的组合方式。

这篇内容要讲清楚的,就是“用ChatGPT挖掘高频选股因子”这件事到底是什么、为什么可行、边界在哪里。它不教你写代码,也不承诺收益,而是帮你建立一套判断框架:知道它能做什么、不能做什么,以及当你看到类似“AI选股”的说法时,能分辨出哪些是真实测试过的结果,哪些只是概念包装。读完你至少能明白,所谓“AI挖因子”不是让模型预测涨跌,而是让它在你设定的规则下,生成可被验证的候选因子表达式。

2. 从LSTM到Transformer:ChatGPT为什么比传统模型更会“抓重点”

2.1 传统语言模型的两大短板

要理解ChatGPT在量化研究里为什么能派上用场,得先看它和上一代模型差在哪。在ChatGPT出现之前,处理文本序列任务的主流模型之一是LSTM,也就是长短期记忆网络。它在处理一句话时,会按顺序一个词一个词地读,然后试图记住前面的信息来推断后面的内容。这个思路本身没问题,但有两个硬伤。

第一个硬伤是“一视同仁”。LSTM在处理一句话时,很难自动判断哪些词更重要、哪些词只是修饰。比如“这家公司营收超预期增长”和“这家公司营收不及预期增长”,关键词“超”和“不及”决定了整句话的方向,但LSTM对每个词的权重区分不够敏锐,容易把关键信号淹没在噪声里。第二个硬伤是“记性不够长”。当句子或文档很长时,LSTM对开头信息的记忆会迅速衰减,导致它在处理长距离依赖时丢信息。这两个问题放在量化场景里就很致命——研报里的逻辑链条往往很长,因子构建的约束条件也常常分散在多处,模型如果抓不住重点,给出的结果就会跑偏。

2.2 Transformer的自注意力机制:给每个词打分

2017年提出的Transformer架构,核心创新就是自注意力机制。通俗地说,它不再按顺序一个词一个词地读,而是把整句话里所有词两两之间都算一遍“关联度”,然后给每个词分配一个权重。还是用刚才的例子,“超预期”里的“超”会被赋予更高的权重,因为它和“增长”这个结果的关联最强。这样一来,模型就能在长文本里精准抓住关键信息,不会因为句子长就忘掉开头说了什么。

ChatGPT正是基于Transformer架构的大语言模型。它的参数规模从GPT-1的1.17亿一路涨到GPT-3的1750亿,这种量级的参数提升带来了一个叫“涌现”的现象——当模型大到一定程度,它会突然表现出一些训练时没 explicitly 教过的能力,比如推理、类比、甚至写代码。打个比方,这就像你往一个瓶子里不断加沙子,加到某个临界点,沙子突然能堆出一个稳定的锥形结构,而不是一直塌下去。参数量的增长让模型从“死记硬背”变成了“举一反三”。

2.3 RLHF:让模型学会“说人话”

光有参数和架构还不够。ChatGPT之所以让人觉得“懂人话”,还有一个关键步骤叫RLHF,也就是基于人类反馈的强化学习。这个过程分三步:先请标注员对一批指令做示范回答,微调模型;然后让模型对同一个问题生成多个答案,标注员对这些答案按好坏排序,用排序结果训练一个打分模型;最后用这个打分模型去优化模型的输出,让它越来越贴近人类偏好的回答方式。

这套机制放在量化研究里意味着什么?意味着当你用自然语言描述一个因子构建需求时,模型更有可能理解你的意图,而不是机械地匹配关键词。比如你说“我要一个用委托价和委托量构建的、有原创性的高频因子”,它不会只给你一个教科书上的动量因子,而是会尝试组合买卖盘的力量差异。当然,这种“理解”仍然是统计意义上的,不是真正的金融逻辑推理,所以后面我们会专门讲它的边界在哪里。

3. 提示工程:为什么你问的方式决定了它答的质量

3.1 提示公式的三要素:角色、任务、指令

很多人用ChatGPT觉得“不好用”,往往是因为问得太随意。提示工程的核心,就是通过设计输入来引导模型输出你想要的结果。最基本的提示公式包含三个部分:角色、任务、指令。角色是让模型扮演某个身份,任务是说清楚你要它生成什么,指令是附加的约束条件。

举个例子,如果你直接问“给我一个选股因子”,模型可能会给你一个烂大街的动量因子。但如果你说“作为一名资深的量化研究员,请给出一个你认为行之有效的选股因子,该因子必须具有原创性、有逻辑支撑、且在历史回测中有出色表现”,模型给出的结果就会明显更具体、更贴近实际研究需求。这背后的原理是,角色设定相当于给模型一个“上下文锚点”,让它从海量知识里调取与这个角色相关的表达方式和思维模式;指令约束则是在缩小搜索空间,避免它给出过于宽泛的答案。

3.2 思维链提示:让模型一步步想

除了标准提示公式,还有一种针对复杂任务的提示方式叫思维链提示。它的思路是让模型把一个问题拆成多个步骤,逐步推导,而不是直接给最终答案。这在量化研究里特别有用,因为因子构建往往涉及多个环节:数据选取、公式设计、降频处理、标准化方式。如果直接问“怎么改进IC指标”,模型可能给不出太有针对性的回答。但如果你引导它先分析IC指标在什么情况下会失效,再让它提出改进方案,它就能一步步逼近你想要的答案。

原文里有一个很典型的例子:研究员发现两个因子IC值相近,但一个多头表现好、一个多头表现差,说明IC指标本身有缺陷。直接问ChatGPT怎么改进,它给出的回答比较泛。但通过思维链提示,先让它意识到“分组收益差异”这个问题,再引导它考虑A股做空限制,最终它给出了“给多头组赋予更高权重计算加权IC”的方案。这个方案不一定是最优的,但它说明模型在逐步引导下,能够参与到研究逻辑的推演中,而不是只做一个答案生成器。

3.3 提示工程的边界:它不懂市场,只懂模式

这里要泼一盆冷水。提示工程再精细,也不能让模型真正理解金融市场的运行规律。它的所有输出,本质上都是基于训练数据里的统计规律做的模式匹配。当你让它构建一个高频因子时,它给出的公式可能逻辑上自洽,但未必符合A股的实际交易约束。比如它可能设计出一个需要做空才能实现的因子,但A股个股做空受限,这个因子就没法直接落地。所以提示工程的作用是“引导”而非“保证”,最终能不能用,还得靠回测和逻辑检验。

4. 高频因子挖掘实战:买卖盘力量因子是怎么被“问”出来的

4.1 从价量变异系数到高频数据:为什么要换赛道

在中低频维度上,研究员先让ChatGPT尝试了基于价量数据的变异系数因子。具体做法是计算过去5天收盘价的变异系数和成交量的变异系数,然后相乘或相除,构建出四个因子。回测结果显示,这些因子的IC指标看起来不错,T统计量都大于2,但多头组合的年化超额收益很低,有的甚至是负的。这说明因子虽然有一定的排序能力,但单调性不好,多头组没有明显优势,很难直接用来构建策略。

于是研究员把方向转向高频数据。高频数据里独有的委托价和委托量信息,传统因子挖掘用得相对少,拥挤度低,而且可能包含与低频因子不同的信息。这里的关键限制是:要求ChatGPT只能使用委托价和委托量来构建因子,并且要有原创性。这个约束条件很重要,因为它逼着模型跳出“动量、反转、波动率”这些常见套路,去组合更高频的微观结构信息。

4.2 买卖盘力量因子的构建逻辑

经过引导,ChatGPT给出了买卖盘力量因子的构建思路。核心逻辑是:买盘力量取决于买入委托量和买入委托价相对于市场价格的偏离程度,卖盘力量取决于卖出委托量和卖出委托价相对于市场价格的偏离程度。具体公式可以简化为:

# 买盘力量:买入委托量越大、买入委托价越接近或高于市价,买盘越强 BForce = BVol * (1 - price_bid / price) # 卖盘力量:卖出委托量越大、卖出委托价越接近或低于市价,卖盘越强 SForce = SVol * (price_ask / price - 1) # 买卖盘力量差异:标准化后衡量买卖双方力量的失衡程度 BSForce = (BForce - SForce) / (BForce + SForce)

这里的BVol和SVol分别是前十档的买入委托量和卖出委托量均值,price_bid和price_ask是买入和卖出委托价的均值,price是当前市场价格。BSForce做了标准化处理,是为了让因子在不同股票之间可以横向比较。这个构建方式的好处是,它同时考虑了“量”和“价”两个维度,而且买卖盘差异因子直接刻画了供需失衡,逻辑上比较直观。

4.3 日频表现亮眼,但衰减是硬伤

回测结果显示,在日频调仓下,买卖盘力量差异因子的表现相当突出:多头年化超额收益率达到17.29%,多空夏普比率4.51,最大回撤只有4.88%。这个数字在量化研究里算是很不错的。但问题也很明显:因子衰减速度太快,基本上第二天就失效了。这意味着如果按日频调仓,交易成本会吃掉大部分收益。单边千分之二的手续费听起来不高,但每天换仓一次,一年下来成本累积非常可观。

所以研究员把因子降到周频测试。降频之后,买卖盘力量差异因子因为衰减太快,基本没用了,但买盘力量因子和卖盘力量因子还能用。卖盘力量因子的多头年化超额收益率在周频下是10.20%,买盘力量因子是9.77%。虽然多空单调性一般,但多头组合的表现还能接受。最终,研究员用卖盘力量因子构建了中证1000指数增强策略,在考虑单边千分之二手续费的情况下,年化超额收益率7.17%,信息比率0.57。这个结果说明,高频因子降频后虽然损失了一部分信息,但仍然能提供一定的选股能力。

5. 常见误区:ChatGPT挖因子不是“一键印钞”

5.1 误区一:以为模型能直接预测涨跌

这是最容易搞混的一点。ChatGPT在量化研究里的角色是“因子生成器”,不是“预测器”。它做的是根据你的提示,给出一个因子构建的表达式或逻辑,然后你需要用历史数据去回测这个因子,看它是否有效。它不会告诉你“明天哪只股票会涨”,也不会直接输出一个可以交易的策略。把它当成一个能帮你快速生成候选因子的工具,而不是一个能替代研究流程的黑匣子。

5.2 误区二:以为IC高就一定赚钱

IC指标衡量的是因子排序与未来收益排序的相关性,但它有一个明显缺陷:IC值相同的两个因子,实际收益可能天差地别。原文里举了一个例子,A因子IC值0.22,B因子IC值0.25,但A因子多头表现好,B因子多头表现最差。原因在于IC是全局相关性,没有区分不同分组的贡献。如果因子在多头组的区分度不够,即使整体IC高,实际做多也很难赚到钱。所以看因子不能只看IC,还要看分组单调性、多头超额收益、换手率等多个维度。

5.3 误区三:以为模型给的代码可以直接跑

ChatGPT确实能给出量化研究常用的框架代码,比如因子测试框架、组合优化代码。但它的代码往往需要微调才能符合实际需求。比如它可能用了某个库的旧版本语法,或者没有考虑A股的特殊约束(涨跌停、停牌、做空限制)。原文里也提到,对模型所给代码进行微调可以大幅提升研究效率,但前提是你得看得懂代码,知道哪里需要改。如果直接把代码复制粘贴就跑,翻车的概率很高。

5.4 误区四:以为提示一次就能拿到完美因子

提示工程是一个迭代过程。第一轮提示得到的因子可能太宽泛,第二轮加上约束条件后会更具体,第三轮可能需要针对回测结果里的问题再做调整。原文里的买卖盘力量因子也是经过多轮引导才成型的。如果指望一句话就让模型给出一个可直接上线的因子,大概率会失望。更现实的做法是:把模型当成一个能快速给出多个候选方案的助手,然后你用专业判断去筛选和优化。

5.5 误区五:忽略模型的随机性

ChatGPT的输出有一定的随机性。同一个提示,不同时间问,可能得到不同的回答。在情感分析任务里,如果输入文本没有明确的情感词,模型给出的分类结果可能不稳定。在因子挖掘里,这种随机性意味着你不能把一次输出当成唯一解,最好多问几次,看看哪些因子在不同轮次里反复出现,那些可能更值得深入测试。

6. 什么时候该用ChatGPT挖因子,什么时候别用

6.1 适合用的场景:需要快速生成候选因子

如果你已经有一个明确的数据范围(比如只用委托价和委托量),并且需要快速得到一批候选因子表达式,ChatGPT可以帮你省去大量翻文献、拍脑袋的时间。它的优势在于“广度”——它见过足够多的因子构建套路,能在你给定约束后,快速组合出一些你没想到的形式。比如买卖盘力量因子,如果不是限定只能用委托价和委托量,可能很难想到用买卖盘力量差异来刻画供需失衡。这种“约束下的创新”是它比较擅长的。

另外,如果你需要写一些标准化的量化研究代码,比如因子测试框架、分组回测、组合优化,ChatGPT也能给出可用的模板。你只需要在它的基础上调整参数和逻辑,就能省下不少写重复代码的时间。

6.2 不适合用的场景:需要严格逻辑验证和实盘风控

但如果你需要的是一个可以直接上实盘的策略,ChatGPT不能替代你的研究流程。它给出的因子必须经过严格的历史回测、样本外检验、交易成本测算、风险归因,才能判断是否可用。而且它对市场微观结构的理解是统计层面的,不是因果层面的。它不知道A股有涨跌停限制,不知道停牌股票不能交易,不知道流动性冲击会怎样影响成交价。这些都需要你用专业判断去补足。

还有一个容易被忽略的点:因子衰减。ChatGPT给出的高频因子可能在日频上表现很好,但衰减极快,降频后效果大打折扣。如果你不做降频测试和交易成本测算,直接按日频信号交易,手续费可能把超额收益全部吃掉。原文里的买卖盘力量差异因子日频多头超额17.29%,但降到周频后基本失效,这就是一个典型的“看起来很美但实际难落地”的例子。

6.3 一个具体的判断框架

判断维度适合用ChatGPT不适合用ChatGPT
任务类型生成候选因子表达式、写标准化代码实盘策略风控、因果推断
数据范围有明确约束条件需要模型自己判断用什么数据
输出用途作为研究起点,后续人工筛选直接作为交易信号
验证要求可以接受多轮迭代和回测要求一次输出即可用
逻辑深度模式匹配和组合创新需要严格金融逻辑推导

6.4 我踩过的坑

刚开始接触这类工具时,我也以为只要提示写得好,就能直接拿到一个能赚钱的因子。结果第一次跑回测,IC看起来不错,但多头组合的超额收益是负的。后来才明白,IC高不代表多头能赚钱,分组单调性才是关键。从那以后,我每次拿到模型生成的因子,都强制走一遍流程:先看分组收益是否单调,再看多头超额是否稳定,最后算一遍不同调仓频率下的交易成本。这三步走完,才能判断一个因子值不值得进一步研究。

希望这些经验能帮你少走点弯路。如果你对完整的因子构建细节、回测数据和代码示例感兴趣,这份资料里都有更详细的记录,可以拿来对照着看。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询