简介:这份PDF是国金证券金融工程专题报告《Alpha掘金系列之五:如何利用ChatGPT挖掘高频选股因子?》,面向量化研究员、金融工程从业者及对AI辅助投研感兴趣的进阶读者,聚焦大语言模型在因子挖掘与策略构建中的落地路径。资源包共1个PDF文件,约2.16MB,内容涵盖ChatGPT模型原理与演进、RLHF训练流程、提示工程公式与思维链提示技巧,以及周频变异系数因子、高频买卖盘力量因子的完整构建与测试过程,并给出中证1000指数增强策略的回测结果与代码能力评估。已有248人学习,读者可从中获得从提示设计到因子检验、再到策略回测的完整研究框架,同时了解模型随机性与历史数据回测的局限,适合作为AI量化选股的实操参考。
1. 到底什么是 ChatGPT 挖因子:一个让量化研究员少走弯路的类比
如果你第一次听到“用 ChatGPT 挖选股因子”,大概率会犯嘀咕:一个聊天机器人,怎么就跟量化研究扯上关系了?打个比方,传统因子挖掘像老师傅凭经验在旧仓库里翻零件,翻来翻去就那几样;而 ChatGPT 更像一个读过海量文献的实习生,你只要把需求说清楚,它就能给你拼出一个你没见过的组合方案。这里的“因子”,通俗说就是能用来给股票打分、预测涨跌的指标;而“挖因子”就是找出这种指标的过程。这份资料要回答的核心问题正是:把提示词写到位之后,大语言模型能不能给出有原创性、逻辑站得住、还能通过历史数据检验的选股因子。搞懂这件事,你就能判断 AI 在量化研究里到底是噱头还是真工具。
2. ChatGPT 为什么能挖因子:从 Transformer 到提示工程
2.1 大语言模型的底子:Transformer 解决了什么老问题
要理解 ChatGPT 为什么能参与因子挖掘,得先看它的底层架构。GPT 全称是 Generative Pre-trained Transformer,是一种大语言模型(LLM),通过学习大量文本数据来推断词语之间的关系。在它之前,处理文本序列常用的是 LSTM 模型,但 LSTM 有两个明显短板:一是对文本中不同词无法区分重要程度,没法让某些词权重更高;二是对长距离信息不能有效提取和记忆,导致大量信息丢失。
2017 年 Transformer 架构被提出后,这两个问题有了针对性解法。它通过自注意力机制(Self-attention mechanism)给输入数据的不同部分赋予不同权重,既能抓住上下文关系,又能处理更大的数据集。打个比方,LSTM 像一个记性不太好的人读长文章,读到后面忘了前面;Transformer 则像一个会划重点的读者,知道哪句话对当前问题最关键。正是这个底子,让模型有了理解复杂指令、生成结构化内容的能力,也为后面“按提示挖因子”提供了可能。
从演进看,GPT-1 参数约 1.17 亿,GPT-2 达到 15 亿,GPT-3 高达 1750 亿,到 GPT-4 又把输入从纯文本拓展到图片,理解能力进一步提升。参数规模的跃升不是数字游戏,它直接决定了模型能不能“举一反三”。
2.2 聪明从哪来:规模定律与 RLHF 的两重加持
ChatGPT 表现出较高智能水平,背后有两个关键因素。第一个是参数数量提升带来的涌现现象,也就是规模定律(Scaling Law)——模型规模扩大,能力会相应增强,到某个临界点后出现质变。第二个是 RLHF(人类反馈的强化学习),它让模型更懂人类偏好。
RLHF 的训练分三步,值得拆开看。第一步,从大量包含人类真实意图的指令集合中采样,聘请标注人员对这些指令进行标注,再用标注结果对模型做微调。第二步,再次采样指令作为输入,让模型给出多个不同输出,由标注员对这些输出的好坏排序,然后用排序结果训练一个打分模型(Reward Model),让模型输出更贴近人类最需要的答案。第三步,采样新的指令作为输入,根据打分模型进一步优化模型输出,最终得到成品模型。
通俗地说,这就像教一个实习生:先给他看标准答案(标注微调),再让他做几道题、你按好坏打分(训练打分模型),最后让他对着打分标准反复练(强化优化)。也正因如此,模型从 GPT-2 开始只需少量示例就能举一反三,形成了 Zero-shot(零样本)、One-shot(单样本)、Few-shot(少样本)的学习能力。对量化研究来说,这意味着你可以用几个示例把“我要什么样的因子”讲清楚,而不必从头训练模型。
2.3 提示工程:把“随口一问”变成“精准下单”
模型再强,问得含糊也白搭。提示工程(Prompt Engineering)就是开发和优化语言模型提示的方法,目的是让模型准确、高效地完成任务。最基本的提示公式包含三个部分:角色、任务、指令。一般形式是“作为一个【角色】,按照这些指示生成【任务】:【指令】”。
举个资料里的例子:希望模型充当客服,提示可以写成“作为一名【客服人员】,请生成【客户询问的回复】:【这些回复应当专业、准确、简洁】”。角色部分的作用是给模型灌输一种身份、约束它的行为;指令部分越详尽精确,回答越贴合预期。做量化研究时,可以把角色改成“资深量化研究员”,任务改成“给出一个行之有效的选股因子”,指令里再限定“具有原创性、有较强逻辑支撑、业绩表现出色”。
除了标准公式,还有针对不同任务的提示类型,比如知识生成提示、情感分析提示、强化学习提示、对抗性提示。其中对因子挖掘最有价值的是思维链提示(Chain-of-Thought Prompting):把复杂问题拆成多个步骤,引导模型逐步思考并自我纠偏。资料里有个典型场景——IC 指标(秩相关系数)存在漏洞,两个 IC 值相近的因子,多头表现可能天差地别。直接问模型“怎么改进 IC”,它答不到点子上;用思维链一步步引导,它先提出分组算 IC 再求均值,被指出逻辑漏洞后,才给出加权平均 IC 的方案,最后在提示 A 股做空限制后,才明白应给做多组更高权重。这个过程说明:模型有能力,但需要你像带新人一样不断纠偏,生搬硬套的情况并不少见。
3. 因子是怎么被“问”出来的:两类实战与易混边界
3.1 中低频尝试:变异系数因子的启示
先看中低频维度的测试。研究者让模型基于量价数据给出独特、原创的因子,模型给出的方案是在收盘价和成交量两个领域分别计算变异系数再相乘,用来衡量股票的波动性和流动性。所谓变异系数,就是标准差除以均值,通俗理解是“波动相对于水平的大小”,比单纯看波动率更能横向比较。
研究者在此基础上做了变形,把两者相除得到新因子,并用日频量价数据取过去 5 天的价格和成交量变异系数来构建。测试区间为 2016 年至 2022 年 8 月,股票范围是中证 1000 指数成份股,按周度调仓,每周初开盘价买入、每周最后一个交易日收盘价卖出。
结果如何?四个因子的 IC 均值从 2.79% 到 5.36% 不等,T 统计量均大于 2,说明价格和成交量的波动率都是越低越好,基本符合“低波动异象”。但问题出在多头上:虽然 IC 指标整体不错,多头组合年化超额收益却欠佳,表现最好的一个也只有 2.75%,因子单调性不够明显。这给了一个重要提醒——IC 好看不等于能赚钱,多头端表现才是策略落地的关键。这也是后面要反复强调的易混点。
3.2 高频突破:买卖盘力量因子为何更亮眼
高频数据是市场关注度高、拥挤度相对较低的领域,挖出的因子往往与传统因子有一定独立性。研究者限定模型只能使用高频数据里独有的委托量和委托价,并要求因子有原创性,经过引导后得到了买卖盘力量因子。
具体构建上,对每只股票每天的 3 秒快照数据,分别求出前十档的买入委托价、买入委托量、卖出委托价、卖出委托量,每个交易日求均值得到买盘力量、卖盘力量。考虑到横截面可比,买卖盘力量差异因子做了标准化修正。用公式表达大致是这样:
# 买盘力量:委托量乘以买价相对均价的偏离 BForce = BVol * (1 - price_bid_mean / price_mean) # 卖盘力量:委托量乘以卖价相对均价的偏离 SForce = SVol * (price_ask_mean / price_mean - 1) # 买卖盘力量差异:标准化到 [-1, 1] 区间,便于横截面比较 BSForce = (BForce - SForce) / (BForce + SForce)这段逻辑的关键在于:用委托量放大价格偏离的权重,再用差异除以总和做归一化,避免不同股票量级差异干扰排序。参数上,price_mean是当日均价,price_bid_mean和price_ask_mean分别是前十档买卖委托价的均值,BVol、SVol是对应委托量。
日频测试(2016 年 1 月至 2022 年 8 月,中证 1000 成份股,次日开盘价买入)显示,买卖盘力量差异因子表现突出:多空夏普比率 4.51,多头年化超额收益率 17.29%,最大回撤仅 4.88%。但它的致命弱点是衰减快,第二天基本失效。为贴近交易实际,研究者把买盘、卖盘力量因子降到周频测试,多头年化超额收益率分别为 9.77% 和 10.20%,虽然多空单调性一般,但多头组合尚可。最终用表现较好的卖盘力量因子构建中证 1000 指数增强策略,在单边千分之二手续费率下,年化超额收益率 7.17%,信息比率 0.57。
3.3 常见误区与易混概念:别把“能生成”当成“能用”
这一块是初学者最容易翻车的地方,几条边界必须分清。
第一,IC 高不等于策略好。易混点在于把 IC 当成因子质量的唯一标尺。为什么混?因为 IC 计算简单、直观。怎么区分?看多头组超额收益和单调性——资料里变异系数因子 IC 均值不低,多头超额却接近零甚至为负,就是典型反例。
第二,日频亮眼不等于周频可用。买卖盘力量差异因子日频多头超额 17.29%,但衰减极快,降到周频后基本失效,只能改用单方向的买盘、卖盘因子。判断标准是看因子半衰期与调仓频率是否匹配,调仓越慢,越要选衰减慢的因子。
第三,模型给的代码不等于能直接跑。资料明确测试了代码能力,模型对常用量化框架、函数能较准确给出结果,但细节需要人工核对微调,否则容易在数据对齐、字段含义上踩坑。
第四,提示一次成功不等于稳定复现。模型本身有随机性,同一提示多次输出可能不同,情感分析测试中就出现过输入没有明确情感词时结果不确定的情况。正确做法是把提示写成可复用的模板,并对输出做一致性校验。
第五,历史回测好不等于未来有效。所有因子测试都基于历史数据统计与建模测算,政策、市场环境变化时模型可能失效,交易成本提高也可能让收益下降甚至亏损。这条不是套话,是策略上线前必须过的压力测试关。
4. 什么时候该用、什么时候别用:一份边界判断清单
把上面这些串起来,就能回答最实际的问题:这套方法适合你吗?先看适用场景。当你需要快速扩充因子候选池、寻找与传统因子相关性低的思路时,用 ChatGPT 做“头脑风暴式”的因子生成是划算的,尤其是高频委托价、委托量这类字段组合,人脑容易陷入固定套路,模型反而能给出意想不到的拼接方式。资料里买卖盘力量因子能在日频拿到 17.29% 的多头年化超额,说明这条路走得通。另外,写因子测试框架、组合优化这类重复性代码时,让模型先出草稿再人工微调,确实能省下不少时间。
再看不该用或要慎用的情况。如果你指望模型直接吐出可上线的策略,那大概率要失望——它给的因子需要你补逻辑、做标准化、验证单调性,资料里变异系数因子 IC 尚可但多头乏力就是明证。如果调仓频率低、持有周期长,那些衰减快的日频因子就不合适,硬用只会被交易成本吃掉收益。如果对代码细节没有核对能力,直接拿模型输出跑回测,字段错位、未来函数这类坑很难自己发现。还有一点,模型回答有随机性,关键结论不能只问一次就采信。
我自己的习惯是:每次让模型生成因子后,先强制走一遍“逻辑自洽—数据可得—单调性检验—成本压力测试”四道关,任何一关不过就退回重问,绝不因为 IC 数字好看就放行。这份资料把提示公式、思维链用法、两类因子的完整测试结果和代码示例都整理在了一起,适合当作入门时的对照手册。希望帮到你。
本文还有配套的精品资源,点击获取