ChatGPT挖掘高频选股因子:从Transformer原理到买卖盘力量因子实战

📅 发布时间:2026/10/18 20:40:28
ChatGPT挖掘高频选股因子:从Transformer原理到买卖盘力量因子实战
简介这份国金证券金融工程专题报告聚焦如何借助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到TransformerChatGPT为什么比传统模型更会“抓重点”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.22B因子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高不代表多头能赚钱分组单调性才是关键。从那以后我每次拿到模型生成的因子都强制走一遍流程先看分组收益是否单调再看多头超额是否稳定最后算一遍不同调仓频率下的交易成本。这三步走完才能判断一个因子值不值得进一步研究。希望这些经验能帮你少走点弯路。如果你对完整的因子构建细节、回测数据和代码示例感兴趣这份资料里都有更详细的记录可以拿来对照着看。本文还有配套的精品资源点击获取