AI量化交易实战:从因子挖掘到策略回测的完整链路

发布时间:2026/11/3 12:25:15
AI量化交易实战:从因子挖掘到策略回测的完整链路

1. 从"因子"到"淘金":AI量化这波浪潮到底在淘什么

"量化大淘金时代"这个说法,第一次听会觉得有点夸张,但如果你最近一年真的在跑策略、调因子、盯回测曲线,大概率会有同感。以前做量化,门槛卡在两个地方:一是数据清洗和因子挖掘极度依赖人工经验,二是策略从想法到可回测代码的链路太长,一个念头到一行能跑的Python,中间隔着好几天的脏活。现在AI把这两段路都压短了,短到很多人第一次感觉到"想法比算力更稀缺"。

先把概念说清楚。这里说的"量化",指的是用量化交易策略代码把交易逻辑写成可回测、可执行的规则系统,核心资产是因子——也就是那些能对资产未来收益有一定解释力或预测力的特征变量。传统量化里,因子靠人想、靠统计筛;AI量化里,因子可以靠模型生成、靠大模型辅助写代码、靠Agent自动迭代。所谓"淘金",淘的不是某一只票,而是能稳定跑出正超额收益的因子组合和策略框架。

那AI到底改变了什么?我自己的体感是三点。第一,写代码的门槛塌了。以前你要会pandas、会numpy、会回测框架,现在用Codex这类AI编程工具,你把逻辑用中文讲清楚,它能给你搭出七七八八的骨架,你只需要修关键部分。第二,因子挖掘的搜索空间被打开了。以前人工试几十个因子就到头了,现在可以用程序批量生成候选因子,再用因子分析法快速筛。第三,迭代速度变了。一个策略从想法到初步验证,从过去的一周压缩到一两天,这意味着你可以试更多方向,试错成本大幅下降。

但这里必须泼一盆冷水:AI降低的是"实现成本",不是"赚钱难度"。市场是零和的,当所有人都能用AI快速生成策略时,真正稀缺的东西会从"会写代码"转移到"有独特的数据视角、有严谨的验证纪律、有对过拟合的敬畏"。我见过太多人用AI三小时搭出一个回测夏普比率3.0的策略,实盘一跑就崩,原因后面会细讲。所以这篇东西不是教你"用AI躺赚",而是把AI量化这条链路拆开,讲清楚每个环节该怎么做、坑在哪、哪些是AI能帮你的、哪些必须你自己扛。

适合谁看?如果你是有一定Python基础、想入门量化交易策略的开发者,这篇能帮你少走弯路;如果你是已经在做量化、想引入AI提效的从业者,里面的因子筛选和过拟合防范部分应该对你有用;如果你完全零基础,也能看懂整体框架,知道该往哪个方向补课。下面我按真实做项目的顺序,从环境搭建一路讲到实盘前的最后一道关。

2. 环境与工具链:Codex、AGENTS.md和本地量化栈怎么搭

2.1 为什么我建议先用AI编程工具把骨架跑通

很多人一上来就纠结"用哪个回测框架",其实顺序反了。正确的顺序是:先用AI编程工具把"数据获取→因子计算→回测→评估"这条最小链路跑通,跑通之后再考虑换更专业的框架。原因很简单,量化的学习曲线陡峭,如果一开始就陷在框架的API细节里,很容易在还没看到第一条回测曲线时就放弃。

Codex这类AI编程工具在这里的价值,是帮你把样板代码写出来。你不需要背pandas的rolling写法,不需要记回测框架的接口,你只需要把逻辑讲清楚。比如你可以直接说:"读一个CSV,列是date、open、high、low、close、volume,计算20日动量因子,按因子值分5组,做多第5组做空第1组,持有5天,输出每组的年化收益和夏普比率。"它能给你一个能跑的版本,你在它基础上改。

但要注意,AI生成的量化代码有几个高频问题:一是未来函数,也就是用了当天收盘后才知道的信息去决定当天开盘的操作;二是幸存者偏差,股票池只用了现在还活着的票;三是交易成本缺失,回测里没扣手续费和滑点。这三个问题AI默认都不会帮你处理,必须你自己检查。我一般会在提示词里明确写"不要使用未来数据,所有信号基于T日收盘计算,T+1开盘执行",能减少一部分问题,但最终还是得人工审。

2.2 AGENTS.md:给AI Agent立规矩的配置文件

如果你用的是支持Agent模式的AI编程工具,AGENTS.md这个文件值得单独讲。它的作用是给AI Agent提供项目级的上下文和约束,相当于你给一个新人写的"项目须知"。在量化项目里,这个文件能极大提升AI生成代码的可用性。

我自己的AGENTS.md一般包含这几块内容。第一是项目结构说明,告诉Agent数据放哪、因子代码放哪、回测脚本放哪。第二是编码规范,比如"所有因子函数必须接收DataFrame返回Series"、"禁止在因子计算中使用shift(-n)"。第三是数据约定,比如"日期列统一为datetime类型"、"价格已做前复权处理"。第四是禁止事项,明确列出不许用未来数据、不许硬编码股票代码等。

# AGENTS.md 示例片段 ## 项目结构 - data/raw/ 原始数据 - data/processed/ 清洗后数据 - factors/ 因子计算脚本 - backtest/ 回测与评估 ## 编码约束 - 因子函数签名: def factor_xxx(df: pd.DataFrame) -> pd.Series - 禁止使用 shift(-n) 等未来函数 - 所有收益率计算必须扣除 0.1% 单边手续费 ## 数据约定 - 日期列为 datetime64 类型,升序排列 - 价格列为前复权价

有了这个文件,Agent生成的代码质量会稳定很多。实测下来,同一个需求,有AGENTS.md和没有,返工率能差一半以上。这个投入非常值。

2.3 本地量化栈的最小可用组合

工具选型上,我的建议是"够用就好,别过度工程"。下面这个组合是我目前用得最顺的:

环节工具选择理由
数据处理pandas + numpy生态成熟,AI最熟悉,生成代码准确率高
回测自写轻量回测 或 backtrader自写可控性强,backtrader功能全但学习成本高
因子分析alphalens 或自写IC分析alphalens标准化好,自写灵活
可视化matplotlib简单直接,AI生成准确
AI辅助Codex类工具写样板、查bug、解释报错

为什么不推荐一上来就用重型框架?因为重型框架的抽象层多,出问题时你很难定位是框架的锅还是你逻辑的锅。自写一个两百行的回测引擎,虽然简陋,但每一行你都能看懂,出了问题好排查。等你对量化流程熟了,再换框架不迟。

提示:如果你在本地部署量化模型或做模型量化压缩(比如把模型转成int8、onnx格式),注意量化版本和原始版本的数值对齐问题。常见的情况是量化后模型输出和原模型有偏差,回测结果对不上,这时候要先做数值一致性校验,再谈策略效果。

3. 因子挖掘:AI能帮你生成,但筛选必须靠纪律

3.1 因子到底是什么,用生活化的方式理解

先打个比方。你要判断一个学生未来能不能考好,你会看什么?看他过去的成绩、看他每天学习时长、看他上课专注度。这些"能反映未来表现的指标",就是因子。量化里也一样,我们要找的是那些"能反映股票未来涨跌"的指标。

常见的因子分几大类。动量类:过去涨得好的,未来可能继续涨(趋势延续)。反转类:过去跌太多的,可能反弹。价值类:估值低的可能被低估。质量类:盈利能力强、负债低的公司更稳。波动类:波动小的股票风险调整后收益可能更好。每一类下面又能衍生出几十个具体因子,比如20日动量、60日反转、市盈率倒数、ROE、换手率波动等等。

AI在因子挖掘上的作用,是帮你批量生成候选因子。你可以让AI根据某个逻辑生成一批因子表达式,比如"基于成交量和价格的关系生成10个量价因子",它会给你类似"成交量加权价格偏离度""量价相关性""换手率动量"这样的候选。这一步AI确实快,几分钟能给你几十个。

3.2 因子分析法:怎么判断一个因子值不值得用

生成了一堆因子,接下来是筛选。这里就要用到因子分析法。核心看几个指标:

IC(信息系数):因子值和未来收益的相关系数。IC越高越好,一般绝对值超过0.03就算有点用,超过0.05算不错。但要注意IC的稳定性,单期IC高不代表什么,要看IC的均值、标准差和ICIR(IC均值除以IC标准差)。

分组收益单调性:把股票按因子值分成5组或10组,看各组未来收益是不是单调递增或递减。如果第1组到第5组收益忽高忽低,说明因子没有稳定的区分能力。

换手率:因子值变化太快会导致高换手,交易成本吃掉收益。一个IC不错但每天换手的因子,实盘可能亏钱。

因子相关性:新因子和已有因子的相关性。如果相关性0.9,那它基本没带来新信息,加进去只是增加复杂度。

我一般会写一个统一的因子评估脚本,输入因子值,输出上面这些指标。用AI生成这个脚本很快,但评估标准必须你自己定,因为不同策略对因子的要求不一样。做高频的看重IC和换手,做中低频的看重单调性和稳定性。

3.3 因子图优化与因子组合的思路

单个因子往往不够强,所以要把多个因子组合起来。这里有个概念叫因子图优化,本质是把因子之间的关系建模成图结构,通过优化找到最优的因子组合权重。听起来玄乎,其实核心思想不复杂:因子之间有的互补、有的冗余,组合的目标是让整体信号更强、更稳。

实操上,最简单的组合方式是等权打分:把每个因子做标准化,然后等权相加。进阶一点用IC加权:IC高的因子给高权重。再进阶用机器学习:把因子作为特征,未来收益作为标签,训练一个模型来预测。但要注意,机器学习模型极易过拟合,样本外表现经常崩,所以必须做严格的样本外测试。

注意:因子组合不是越多越好。我见过有人堆了50个因子,回测夏普比率很高,实盘一塌糊涂。原因是因子太多导致过拟合,模型记住了训练集的噪声。一般10到20个低相关因子就够了,关键是每个因子都要有逻辑支撑,不能是纯数据挖掘出来的。

4. 策略回测:那些让回测曲线"好看"的陷阱

4.1 未来函数:量化新手最容易踩的坑

未来函数是回测里最隐蔽也最致命的坑。它的定义是:在决策时使用了当时还不可能知道的信息。举个具体例子,你计算"当日涨幅"用的是当日收盘价,然后用这个涨幅决定"当日买入",这就是未来函数,因为当日收盘时你才知道收盘价,但买入动作发生在收盘前。

AI生成的代码里,未来函数非常常见,因为AI不理解交易的时间顺序,它只理解数学关系。常见的未来函数形式包括:用shift(-1)取未来数据、用全样本的均值做标准化、用未来才知道的财务数据。检查方法很简单:把回测的时间轴想象成真实交易,逐笔问自己"这个信息在决策那一刻拿到了吗"。

我自己的做法是,在因子计算函数里强制加一道检查:所有涉及时间的操作,只允许用shift(正数)或rolling的过去窗口。然后在回测引擎里,信号生成和执行之间强制隔一个周期。这样能从机制上堵住大部分未来函数。

4.2 幸存者偏差与股票池的构建

幸存者偏差指的是:你回测时用的股票池,是"现在还存在"的股票,但历史上有些股票已经退市了,它们不在你的池子里。这会导致回测结果虚高,因为退市的往往是表现差的。

解决办法是使用历史成分股数据,也就是每个时间点当时真实存在的股票列表。这个数据获取有一定门槛,但如果你做的是指数增强类策略,至少要用指数成分股的历史变动数据。如果实在拿不到,退而求其次,在回测里加入"退市股票按最后价格清算"的逻辑,能部分缓解。

4.3 交易成本:被忽视的收益杀手

很多人的回测不扣交易成本,结果曲线漂亮得不像话。实盘一跑,手续费和滑点直接把收益吃光。交易成本包括:佣金(一般万分之一到万分之三)、印花税(卖出千分之一)、滑点(买卖价差加冲击成本,一般按0.05%到0.2%估算)。

我建议回测时单边成本按0.15%到0.2%扣,宁可高估也不要低估。然后看策略的换手率,如果年换手率超过20倍,成本影响会非常大。一个年化收益15%、换手率30倍的策略,扣掉成本可能只剩5%。所以低换手策略在实盘中往往更有优势。

成本项常见取值说明
佣金0.01%-0.03%双边收取
印花税0.1%仅卖出
滑点0.05%-0.2%视流动性而定
单边合计0.15%-0.2%保守估算

4.4 过拟合:回测夏普3.0为什么实盘会崩

过拟合是量化里最本质的敌人。它的表现是:策略在历史数据上表现极好,但在新数据上表现很差。原因是策略学到了历史数据里的噪声,而不是真正的规律。

判断过拟合的方法有几个。样本外测试:把数据分成训练集和测试集,在训练集上调参数,在测试集上验证。如果测试集表现远差于训练集,就是过拟合。参数敏感性:把参数微调一下,如果表现剧烈变化,说明策略不稳定。多市场验证:在A股有效的策略,拿到其他市场试试,如果完全失效,可能是过拟合。

我自己的纪律是:任何策略在实盘前,必须通过至少两年的样本外测试,且样本外夏普比率不低于样本内的60%。达不到这个标准,不管回测多好看,都不上实盘。

5. 从回测到实盘:最后一道关怎么过

5.1 模拟盘:实盘前的必经环节

回测通过后,不要直接上实盘,先跑模拟盘。模拟盘是用真实行情、虚拟资金跑策略,能暴露很多回测发现不了的问题:数据延迟、信号执行偏差、极端行情下的表现。

模拟盘至少跑一个月,重点观察:实际成交价和理论价的偏差、策略在行情剧烈波动时的表现、系统的稳定性(有没有断线、数据缺失)。我见过回测很好但模拟盘就崩的策略,原因是回测用的是日线,模拟盘发现盘中信号触发时流动性不足,根本买不进。

5.2 仓位管理与风险控制

实盘和回测最大的区别是心理。回测里回撤30%只是一个数字,实盘里回撤30%是真金白银,会让你睡不着觉,进而做出错误决策。所以仓位管理必须提前定好。

我的建议是:单策略初始仓位不超过总资金的20%,跑顺了再逐步加。同时设定最大回撤止损线,比如回撤达到15%就暂停策略,检查是市场环境变了还是策略失效了。不要死扛,也不要频繁开关,要有明确的规则。

5.3 持续监控与策略迭代

策略上线不是终点,而是起点。市场环境会变,曾经有效的因子会失效。所以要持续监控因子的IC变化、策略的收益回撤比、换手率等指标。一旦发现因子IC持续走低,就要考虑替换或调整。

AI在这里又能帮上忙:用Agent定期跑因子评估脚本,自动生成监控报告,异常时提醒你。但决策还是得人来做,因为AI不知道你的风险偏好和资金状况。

6. 一些掏心窝子的实操心得

做量化这几年,踩过的坑比跑通的策略多得多。分享几条我觉得最值钱的体会。

第一条,先跑通再优化。很多人卡在"我要设计一个完美的策略"上,结果半年过去一行代码没写。正确的做法是先跑通一个最简单的策略,哪怕它很烂,跑通了你才知道整个链路长什么样,才知道该优化哪里。

第二条,对AI生成的代码保持怀疑。AI能帮你省80%的体力活,但剩下20%的关键逻辑必须你自己把关。尤其是涉及时间顺序、成本计算、数据对齐的地方,AI经常出错。

第三条,回测好看不等于能赚钱。我见过太多回测夏普3.0、实盘亏钱的例子。回测只是筛掉明显不行的策略,真正能不能赚钱,得看实盘。所以别在回测上过度优化,那是自欺欺人。

第四条,记录每一次实验。哪个因子、什么参数、什么结果,都记下来。量化是实验科学,没有记录就没有积累。我用一个简单的表格记录每次实验,时间长了能看出哪些方向有戏、哪些是死胡同。

最后说个具体的:如果你刚开始,别碰高频。高频对数据、系统、成本的要求极高,新手进去就是送钱。从中低频的日频策略开始,把因子、回测、风控这套流程走熟,再考虑往高频走。这个顺序不能反。