
如果你问一个量化研究员AI 在投资里的价值到底是什么答案往往不是“预测股价更准”而是“把整条研究链路压缩到机器能自动迭代的速度”。市面上关于“AI 投资”的讨论很多大部分停留在用大模型读新闻、做情绪分析这类浅层 Demo 上。真正把 AI 当作投资基础设施来建设的机构并不多Two Sigma 是其中最有代表性的一家。这篇文章不准备复述访谈原文而是从工程视角拆解 Two Sigma 对外表达过的核心方法论AI 为什么能进入投资决策、它在哪些环节真正起作用、一套可落地的 AI 投资系统长什么样、以及从回测到实盘之间最常见的坑是什么。如果你正在做量化策略或者计划在技术团队里引入 AI 辅助投资决策这篇文章会给你一个相对完整的框架。1. AI 赋能投资的真正含义从“预测”到“工程链路”很多人对量化投资的 AI 应用有一个误解以为 AI 就是用来预测涨跌的。实际上在成熟机构的投资流程中模型预测只是整条链路上的一个节点。真正决定盈利能力的是数据是否干净、特征是否稳定、回测是否可信、风控是否及时、执行是否低成本。Two Sigma 对外传递的一个核心观点是投资是一门数据密集型科学。它的技术体系包含了大规模分布式计算、机器学习、数据工程和交易执行模型只是其中一个环节。这意味着AI 赋能投资的本质不是“找到一个神奇的深度学习模型”而是用工程化的方式把传统投研中依赖人工经验的部分逐步替换成可量化、可回溯、可自动迭代的系统。国内很多团队在实践 AI 投资时犯的第一个错误就是单独抽出一个模型反复调参忽略了数据、特征、回测和实盘之间的整体一致性。模型在训练集上表现再好只要链路里有一个环节存在偏差实盘结果都可能与预期完全偏离。2. Two Sigma 的方法论数据即资产系统即策略从公开访谈和材料来看Two Sigma 的方法论可以提炼成两个关键判断。2.1 数据即资产传统投资研究依赖财报、宏观经济数据、分析师报告。这些数据低频、结构化、且市场定价效率已经比较高。Two Sigma 真正的技术积累在于处理大规模另类数据比如卫星图像、电商消费数据、供应链数据、地理位置数据等。这里的关键不是“数据更多”而是“数据更早”。当一份财报发布时市场所有人看到的信息是一样的但如果能通过卫星图像提前判断某个零售巨头的停车场客流变化就意味着你在信息扩散之前就形成了判断。这个时间差才是量化机构愿意花大量成本建设数据管道的原因。有意思的是Two Sigma 并不认为数据本身是秘密真正的壁垒在于清洗和标注数据的系统能力。原始数据噪声极大、格式混乱、存在缺失和错误如果不经过严格的数据治理直接喂给模型会产生严重偏差。2.2 系统即策略第二个判断是投资策略不是一个模型文件而是一套持续运行的系统。策略的生命力来自系统不断吸收新数据、重新训练、评估、部署和监控的能力。传统投研流程是线性的研究员提出假设分析师验证交易员执行。一站接一站周期以周或月为单位。AI 系统则把这一整套流程压缩成自动化管道数据处理完自动生成特征特征进入训练任务模型更新后自动跑回测回测达标自动进入模拟盘模拟盘稳定再进入实盘。整个周期可能从几周压缩到几天甚至几小时。这个视角对技术团队非常重要。它意味着做 AI 投资核心不是招几个算法工程师而是建设一套“数据到决策”的工程系统。团队里需要数据工程师、平台工程师、算法研究员和量化策略师的协作缺一不可。3. AI 赋能投资的核心环节拆解从工程角度看一个相对完整的 AI 投资系统至少要包含六个环节。每个环节都有独立的难点和坑。环节解决什么问题核心难点AI 的角色数据工程获取、清洗、对齐数据原始数据噪声大、字段缺失、时间对齐复杂自动化清洗、异常检测特征工程把原始数据转化为预测信号特征有效性衰减、过拟合风险自动特征组合、因子挖掘模型训练学习特征与未来收益的关系非平稳、标签噪声、过拟合监督学习、强化学习回测验证评估策略的历史表现未来函数、幸存者偏差交叉验证、场景模拟风险控制控制组合的极端损失尾部风险、流动性风险压力测试、组合优化执行优化降低交易成本和冲击滑点、市场冲击、延迟算法交易、智能拆单3.1 数据工程一切模型的地基AI 投资系统的第一道工序是数据工程。在传统软件开发中数据质量问题通常只影响功能正确性但在投资系统中数据错误会直接影响收益和风险。常见的数据问题包括幸存者偏差只保留当前仍在上市的股票退市股票被剔除导致回测结果虚高。复权价格误差除权除息日未正确复权导致收益计算失真。财务数据时间戳错位用当期财报数据预测当期收益实际上财报数据发布有滞后。多源数据对齐失败行情数据、财务数据、另类数据的时间粒度不一致合并后产生脏数据。这些问题要用专门的数据管道解决。一个最小可行的数据管道至少包含数据抓取、清洗、质量校验、存储和版本管理。# 文件路径data_pipeline.py import pandas as pd import numpy as np def load_price_data(file_path: str) - pd.DataFrame: 加载行情数据并做基础清洗 df pd.read_csv(file_path, parse_dates[date]) # 检查缺失值 if df[close].isnull().any(): print(f发现缺失价格 {df[close].isnull().sum()} 条使用前向填充) df[close] df[close].fillna(methodffill) # 删除重复行 df df.drop_duplicates(subset[symbol, date]) # 按股票和时间排序 df df.sort_values([symbol, date]).reset_index(dropTrue) return df def forward_fill_financial_data(df: pd.DataFrame) - pd.DataFrame: 财务数据前向填充。 财报发布日期通常晚于报告期若直接用报告期预测会产生未来函数。 这里假设 df 已包含公告日期 announcement_date 字段。 df df.sort_values([symbol, announcement_date]) df[pe_ratio] df.groupby(symbol)[pe_ratio].ffill() df[net_profit] df.groupby(symbol)[net_profit].ffill() return df这里真正容易踩坑的地方是复权问题。如果直接拿未复权的价格计算收益率在分红除息日会产生虚假的下跌模型会错误地学习到“临近除息日股价下跌”这类无意义规律。3.2 特征工程预测信号的产生特征工程的任务是把原始行情、财务和另类数据转换成对预测未来收益有用的因子。常见因子有三类价量因子动量、反转、波动率、换手率。基本面因子估值、盈利增长、杠杆率。另类因子新闻情绪、搜索指数、供应链关系。特征的核心评估标准是稳定性和单调性。好的因子应当在长期内持续有效并且因子值与未来收益之间呈现稳定关系。# 文件路径feature_engineering.py import pandas as pd import numpy as np def add_price_features(df: pd.DataFrame) - pd.DataFrame: 生成基础价量因子 # 按股票分组计算收益率 df[daily_return] df.groupby(symbol)[close].pct_change() # 20日动量T-20 到 T-1 的累计收益不含当日 df[momentum_20d] df.groupby(symbol)[close].transform( lambda x: x.shift(1) / x.shift(21) - 1 ) # 20日波动率 df[volatility_20d] df.groupby(symbol)[daily_return].transform( lambda x: x.shift(1).rolling(20).std() ) # 换手率 df[turnover] df[volume] / df[float_share] # 去极值 def winsorize(s: pd.Series, lower: float 0.01, upper: float 0.99) - pd.Series: lo, hi s.quantile(lower), s.quantile(upper) return s.clip(lo, hi) for col in [momentum_20d, volatility_20d, turnover]: df[col] df.groupby(symbol)[col].transform(winsorize) return df这里特别要注意的是动量因子不能用当日收益。如果在计算动量时没有把当日收益排除特征里就包含了未来信息回测会被污染。4. 传统量化与 AI 量化从“逻辑驱动”到“数据驱动”理解了核心环节之后回头看 Two Sigma 与传统量化的区别会更有感知。传统量化研究通常是逻辑驱动研究员基于金融理论提出假设比如“低估值股票长期跑赢高估值股票”然后写代码验证。这种方式的优点是可解释性高缺点是搜索空间有限只能验证人想到过的逻辑。AI 量化的思路是数据驱动模型可以自动探索大量非线性关系发现人可能忽略的模式。但在 AI 量化中模型的“可解释性换取预测能力”是常态。维度传统量化AI 量化特征来源人工设计自动化挖掘 人工设计模型复杂度线性模型为主树模型、深度网络更新频率月/周级天/小时级可解释性高低数据依赖结构化财务数据多源异构数据主要风险假设失效过拟合与数据泄漏需要明确的是AI 量化并不是要取代传统量化。更准确的说法是AI 扩展了量化研究的边界。5. 从零搭建一个 AI 投资系统最小可运行原型这一节从技术视角给出一个最小可运行的 AI 投资系统原型。它不能用于实盘但能帮助你完整理解 AI 投资链路中各个模块的关系。5.1 系统整体架构一个最小系统包含四个模块数据模块负责加载、清洗价格和财务数据。特征模块负责生成模型输入特征。模型模块负责训练模型并输出下一期收益预测。回测模块负责根据预测构建组合并评估收益。数据模块 - 特征模块 - 模型模块 - 回测模块 ^ | |________________________| 模型更新循环5.2 模型训练示例这里用 LightGBM 作为模型示例。选择树模型而不是深度学习的原因很简单在中小规模金融数据上树模型更容易取得稳健效果且对特征尺度和缺失值更友好。# 文件路径train_model.py import lightgbm as lgb import pandas as pd import numpy as np from sklearn.model_selection import TimeSeriesSplit # 假设 df 已经包含特征列和未来收益列 # df pd.read_parquet(features.parquet) # db 包含列momentum_20d, volatility_20d, turnover, label features [momentum_20d, volatility_20d, turnover] # 按时间序列切分避免随机切分造成的数据泄漏 tscv TimeSeriesSplit(n_splits5) for fold, (train_idx, test_idx) in enumerate(tscv.split(df)): train_df df.iloc[train_idx] test_df df.iloc[test_idx] model lgb.LGBMRegressor( n_estimators300, learning_rate0.05, num_leaves15, min_child_samples50, subsample0.8, colsample_bytree0.8, random_state42 ) model.fit( train_df[features], train_df[label], eval_set[(test_df[features], test_df[label])], callbacks[lgb.early_stopping(50)] ) test_df[pred] model.predict(test_df[features]) print(fFold {fold}: feature importance - {dict(zip(features, model.feature_importances_))})这个示例中最重要的点是TimeSeriesSplit。金融数据是时间序列随机 K 折切分会把未来数据混入训练集造成“未来函数”问题。用时间序列切分可以避免这种情况。5.3 回测模块示例回测模块的作用是模拟策略的历史表现。一个最简单的回测逻辑是每天买入预测值最高的 N 只股票卖出不在列表中的股票按日度调仓计算收益。# 文件路径backtest.py import pandas as pd import numpy as np def run_backtest(df: pd.DataFrame, top_k: int 10): 简单日度调仓回测。 df 必须包含 date, symbol, pred, return 列。 return 是当天收益率。 df df.sort_values([date, pred], ascending[True, False]) # 每天选预测最高的 top_k 只股票 selected df.groupby(date).head(top_k).copy() # 组合收益等权持有 top_k 股票取当日收益均值 portfolio_returns selected.groupby(date)[return].mean() # 计算累计净值 cumulative (1 portfolio_returns).cumprod() # 计算年化收益率和最大回撤 total_return cumulative.iloc[-1] - 1 sharpe portfolio_returns.mean() / portfolio_returns.std() * np.sqrt(252) # 最大回撤 peak cumulative.cummax() max_drawdown (cumulative / peak - 1).min() print(f累计收益: {total_return:.2%}) print(f夏普比率: {sharpe:.2f}) print(f最大回撤: {max_drawdown:.2%}) return portfolio_returns, cumulative这个回测极度简化忽略了交易成本、滑点、涨跌停限制和流动性结果只能用于演示流程不能作为策略有效性的判断依据。5.4 运行与验证流程完整流程可以这样串联# 1. 数据清洗 python data_pipeline.py # 2. 特征生成 python feature_engineering.py # 3. 模型训练 python train_model.py # 4. 回测验证 python backtest.py如果模型训练输出中的 feature importance 显示某一特征占比超过 90%需要警惕该特征是否已经包含了未来信息。6. 从回测到实盘最容易翻车的四个问题AI 投资系统最有迷惑性的阶段就是回测。回测效果好不等于实盘能赚钱这之间隔着大量隐性问题。6.1 过拟合模型记住了历史噪声金融数据信噪比极低模型很容易在训练集上记忆噪声。解决过拟合的常用方式包括降低模型复杂度限制树深度或神经网络层数。增加正则化。交叉验证时保持时间顺序。使用独立的样本外数据做最终验证。在训练模型时遵循一个原则样本外验证的次数不要超过 10 次。每验证一次就会多一次“人为选择好结果”的机会验证次数越多样本外结果越不可信。6.2 数据泄漏回测结果虚高的头号原因数据泄漏发生在“模型使用了当时不可能获得的信息”时。常见场景包括财务数据未做前向填充直接用报告期数据当期预测。特征归一化时使用了全样本统计量。动量因子包含了当日收益。股票池没有考虑上市日期导致未来上市股票进入回测。排查数据泄漏最有效的方法是做一次“时间穿越”测试把训练集截止到 2023 年底测试集只保留 2024 年的数据并且确保所有特征都只用了 2023 年底之前的信息。6.3 交易成本与流动性纸上富贵与真实盈亏的分水岭回测通常默认按收盘价成交且可以买入任意数量。实盘中存在冲击成本、佣金、滑点和涨跌停限制。流动性的约束在回测中尤其容易被忽略如果一个策略每天都要买入市占率极低的小盘股实盘可能还没建完仓价格已经被推高了。处理方式是在回测中引入成本模型按成交金额的固定比例例如双边千分之二扣除成本并限制单只股票成交金额不超过其日均成交额的某个比例。6.4 模型漂移市场会变模型也会失效市场环境不是静止的。一个在震荡市表现良好的模型可能在趋势市里迅速失效。模型漂移管理需要持续监控预测分布是否发生偏移。特征重要度是否发生显著变化。组合理论收益与实际跟踪误差是否超出阈值。当监控指标异常时应该触发人工介入流程而不是让模型继续自动交易。7. 技术团队落地 AI 投资的实践建议如果你所在的技术团队计划在 AI 投资方向做尝试以下几个建议会很有帮助。7.1 从单一资产、单一策略起步不要一开始就搭建全资产、多策略的复杂系统。选择流动性最好的市场例如沪深 300 成份股选择信噪比相对较高的因子例如动量、质量先把一条链路完整跑通再逐步扩展。7.2 用简单模型建立基线在引入深度学习之前先实现一个简单的线性模型或决策树模型作为系统基线。这样做有两个好处验证数据管道和回测框架的正确性。为后续复杂模型提供对比标准。如果复杂模型无法明显超越简单基线说明问题很可能在数据或特征层面而不是模型复杂度不够。7.3 数据管道先于模型建设判断团队是否适合做 AI 投资可以先问一个问题目前是否有自动化、可监控的数据管道如果没有任何模型工作都是沙上建塔。数据管道建设的优先级应该是行情数据清洗与复权。财务数据对齐与前向填充。交易限制数据涨跌停、停牌、ST接入。另类数据积累新闻、搜索、电商等。7.4 风控系统必须独立于策略系统风控不应该和策略耦合在一个模块里。独立的强风控体系包括单票持仓上限。行业暴露上限。最大回撤熔断机制。模型预测置信度过低时的自动降仓。风控规则应当由风控团队独立制定策略团队只有建议权。这样可以避免研究人员为了短期业绩突破风控限制。7.5 建立数据与模型全链路监控AI 投资系统是一个长期运行的系统必须建立全面的监控体系。包含数据质量监控、特征分布监控、模型预测分布监控、回测与实盘收益偏差监控四层。# 文件路径monitor.py import pandas as pd def check_metrics(returns: pd.Series, benchmark_returns: pd.Series, window: int 20): 监控组合收益与基准收益的相对表现 df pd.DataFrame({portfolio: returns, benchmark: benchmark_returns}) # 滚动相对强弱 df[relative] (1 df[portfolio]).cumprod() / (1 df[benchmark]).cumprod() current df[relative].iloc[-1] avg df[relative].rolling(window).mean().iloc[-1] std df[relative].rolling(window).std().iloc[-1] # 如果相对净值跌破均值减 2 倍标准差触发预警 alert_threshold avg - 2 * std if current alert_threshold: print(ALERT: 策略相对基准显著走弱) else: print(OK: 策略相对表现正常)7.6 团队技能结构的搭建AI 投资团队不是单纯的算法团队需要四种角色的配合角色核心技能主要职责数据工程师数据治理、管道建设数据清洗、对齐、监控平台工程师分布式计算、部署训练平台、回测平台算法研究员机器学习、统计特征挖掘、模型调优量化策略师金融逻辑、组合优化策略设计、风控评估如果团队刚开始尝试成员可以一专多能但不建议同时兼任策略和风控这两个角色在利益上存在天然冲突。8. AI 不是投资的银弹但也不是噱头在量化投资领域AI 最大的价值不是预测未来而是把投资研究从“手工作坊”推向“工业化流水线”。Two Sigma 的实践给国内技术团队的启示可以归纳为三点第一AI 投资是系统能力不是单个模型的能力。数据、特征、回测、执行、风控任何一环掉链子整个系统都会偏离预期。第二数据质量和工程链路比算法更重要。在金融场景中9 成的“模型效果好但实盘失效”案例根源都是数据泄漏、错误对齐或回测偏差而不是模型算法不够先进。第三信任需要验证验证需要流程。AI 模型的预测结果必须经过严格回测、模拟盘、小资金实盘的层层验证才能逐步放大资金规模。这个流程没有捷径。对于个人开发者和技术团队不用急着从头搭建完整的 AI 投资系统。更务实的路径是先把手上的数据清洗干净构建一个简单的因子库再引入树模型做预测最后逐步补上回测和模拟盘。过程中积累的工程问题处理和基础设施才是真正有价值的部分。AI 模型会持续迭代投资市场也会持续变化但“数据到决策”的工程链路建设始终是量化投资的核心基本功。这也是这篇文章希望帮你理清的关键点。