当信号变成噪音:因子衰减的必然性

做私募这行,尤其是管着十几二十亿规模的钱,干久了都会有一种直觉:市场里没有永远有效的“圣杯”。我入行八年做私募管理人,再往前十二年做基金投研,加在一起二十年,每年都要目睹至少三到五个曾经风光无限的alpha因子慢慢失效。刚开始那几年,我总觉得是自己没跟上,或者模型不够复杂。后来才慢慢悟透一个道理,这就像是物理学里的熵增——任何基于历史数据挖掘出的规律,一旦被广泛知晓,套利空间就必然会被填平。你想想,一个策略能月月赚钱,大家又不是瞎子,资金一拥而上,价差瞬间就被抹平。我们在黑子私募基金管理公司内部有个黑话,叫“因子寿命”,大多数统计套利因子的有效窗口其实就在6到18个月之间。超过两年还表现稳定的策略,要么是流动性溢价在买单,要么就是你根本没算对风险敞口。

给大家举个真实的例子。2017年的时候,我们团队发现一个基于“当日开盘价与前一交易日收盘价之间微小的缺口回补概率”的日内反转因子。这个因子在回测里夏普比率能做到2.8,实盘前三个月也极其漂亮。结果到了第四个月,因子失效的速度比我想象的快得多。后来复盘发现,是因为有家大型量化对冲基金把这个逻辑写进了他们的高频做市系统里,导致开盘后第一个tick的流动性极度稀薄,我们这些小资金的进场反而成了对手盘的流动性提供者。这让我学到一条铁律:因子衰减的速度,与资金容量呈反比,与策略知名度的扩散速度呈正比。所以你现在问我,一个因子到底能活多久?我得老实告诉你:当你觉得它万无一失的时候,就是它开始走下坡路的起点。你别不信,咱们这行,就怕太顺。

模型再训练:从玄学变成手艺活

早些年我们搞模型再训练,有点看天吃饭的意思。觉得不对劲了,就把参数调整一通,或者干脆把因子权重重新算一遍,跟修修补补老房子似的。但管了十年以上的资金后,我必须得承认,这其实是一门非常精细的手艺活。再训练的关键不是频率,而是时机和深度。频率太高,比如每天滚动训练一个机器学习模型,容易过拟合最近的噪音,把市场正常的随机波动当成规律来抓;频率太低,比如半年调整一次,你又可能眼睁睁看着因子从盈利滑到亏损边缘。在我们黑子私募基金管理公司,我们内部把再训练分为三种模式:首先是“触发性再训练”,当跟踪误差或者最大回撤超过某个阈值(比如连续5个交易日alpha为负,且绝对值超过2个标准差)时,自动触发模型校准;其次是“定期再训练”,通常是每月或者每季,我们会用新的样本数据重新拟合参数,并剔除掉那些已经丧失统计显著性的因子;最后是“结构式再训练”,当市场发生系统性风格切换(比如从成长转向价值,或者波动率结构突变)时,我们会从底层重新构建因子池。

我记得2020年疫情刚爆发那阵子,3月份的流动性恐慌让几乎所有基于基本面因子的模型都崩溃了。那种环境下,你要是还按季度再做再训练,资金早就被打穿了。我们当时是每天凌晨三点跑一遍风险归因,手动调整行业暴露敞口。那种高压下,我才真正体会到,模型再训练不是数学题,它是实战指挥。你不仅要懂协方差矩阵,还得懂市场微观结构,甚至要懂点投资者行为心理学。举个例子,当时我们持仓里有一些航空股的基本面因子仓位,按模型算,估值低得离谱,应该加仓。但我凭经验知道,在流动性枯竭的时候,“估值低”这个因子本身就是个陷阱,它会因为被动基金的赎回而无限下跌。于是我们果断在模型里临时加入了“流动性压强系数”这个动态调整因子,把持仓里日内换手率低于0.5%的股票全部降权。这个手动干预,后来证明帮我们躲过了至少8-10个百分点的回撤。这也就验证了一个观点:再训练不能完全交给算法,人的判断永远是最后一道防火墙。

数据清洗与幸存者偏差:别让垃圾进,垃圾出

说到模型的根基,那就绕不开数据。我见过太多同行,花几百万买回测平台,搞一套花里胡哨的因子库,结果实盘一跑就露馅。十有八九的问题出在数据上。其中一个最常见的坑就是幸存者偏差。我们做回测的时候,如果直接用当前还在交易的股票列表去倒推历史,那就会忽略掉那些已经退市、被重组、ST或者被摘牌的股票。这些被剔除出市场的公司,往往是因为基本面恶化才退出的,它们的收益率曲线是负的。你的模型如果根本没学过这些负样本,那么回测成绩自然漂亮得不像话。但实际上,你是在一个无限偏态的样本里做了拟合。我记得有一年我们做一个小市值价值因子的增强策略,回测年化收益高达25%,跑起来简直完美。但后来我把数据源切到提前包含了退市股票的全历史数据包,同一套因子,年化收益直接从25%掉到了12%,最大回撤翻了一倍。这个教训太深刻了,从此我定了个规矩:任何因子回测,必须使用“生存者无偏”的数据集,并且至少要包含两次完整牛熊周期。数据的老龄化问题同样要命。很多数据库对早期的财务数据做了后向调整,这在会计上是合规的,但用在量化建模里就会产生未来函数。

数据质量还有一个容易被忽视的点:实际受益人税务居民状态的更新。我们在做多因子选股模型时,需要嵌入公司治理因子。比如,如果一家公司实际受益人结构复杂,或者被认定为某个避税地的税务居民企业,这在某些情况下会直接影响其再融资成本或者潜在的法律风险。这类数据如果更新不及时,你用三个月前的数据去预测今天的股价表现,那误差可就不是几个基点的事了。我们团队就曾因为某个数据库的“实际受益人”字段更新延迟,导致模型对一个港股的治理因子评分严重偏高,结果这个公司因为背后实际控制人出事,股价几天之内跌了40%。从那以后,我们专门设立了一个数据质量监控岗,每天比对三个不同数据源的关键字段,任何一个字段发生超过5%的统计差异,模型就必须暂停使用,直到数据核查清楚。这一套流程听起来繁琐,但对于管理十多亿规模的资金来说,这就是保命的操作。

过拟合的幽灵与正则化的艺术

量化圈里流传着一句话:如果你回测的时候没亏钱,那说明你的模型一定有问题。这话听着有点黑色幽默,但背后指的就是过拟合。我自己在2018年犯过一个大错。当时为了追求更高的夏普比率,在一个CTA策略里加入了二十多个相关性极低的技术衍生因子,像是“收盘价与开盘价之间的混沌分形维数”、“成交量与波动率的熵值比率”这类听着很厉害的变量。回测出来的曲线,漂亮得跟教科书一样,几乎一条45度上升直线。结果上线实盘第一周,净值就跌了4%。后来我花了一个月复盘,发现那些听起来很高端的因子,本质上就是对过去那一段特定行情的完美数学重构,一旦行情稍微变异,它们立刻变成了噪音发生器。这给我上了一课:模型的复杂度,永远要和你的样本量和市场状态相匹配。你不能用十亿条参数去拟合只有三年数据的历史行情,这等同于在沙滩上画摩天大楼的图纸。

从那以后,我们开始严格引入正则化技术。比如在回归模型中强制加入L1或L2惩罚项,不让任何一个单一因子的权重过大。还有一个我特别喜欢的实操方法,叫“跨时间验证”。我们不会只把样本分成训练集和测试集,而是会用滚动的时间窗口反复做外推测试。比如用2010-2015年数据训练,用2016年测试;再用2011-2016年训练,用2017年测试。这样连续做五到六次,如果每一次的测试结果都稳定,我们才敢说这个模型有泛化能力。如果某个模型在某一年的测试里突然失效,而其他年份都有效,我们也不会立刻丢弃,而是会去分析那一年的宏观背景,看看是不是因为某个极端事件(比如熔断)造成的系统性偏差。这种“训练-验证-压力测试”三阶段流程,现在已经是我们的铁律。但即便如此,我们也必须承认,模型永远不可能完美,你只能通过不断的再训练和数据监控,去逼近那个“无偏”的极限,而不是去实现它。

因子拥挤度与流动性管理:别在独木桥上挤

有个概念我特别想跟同行聊一聊,就是因子拥挤度。很多人做因子选股时,只关注因子本身的有效性和收益贡献,却忽略了有多少资金和你使用相同的因子。当某一个因子的拥挤度过高时,哪怕是再有效的因子,也会变成烫手山芋。最经典的例子就是2019年到2021年的低波动率因子。当时全球的量化基金都在买低波动、高分红的股票,结果这些股票的价格被推得极高,估值严重脱离基本面。到了2022年加息周期,流动性突然收紧,这些被抱团的低波动股票瞬间成了流动性黑洞,因为所有人都在同时撤退。我们当时就踩过类似的坑,好在我们有一个内部的风险管理系统,专门监控每个因子在行业内的资金占用比。当某个因子的持仓集中度(例如前十大重仓股中与同类基金重合度)超过50%时,我们会自动进行减仓。

这里就要说说我们的具体做法了。我们在流动性管理上,严格按照下表来执行:

持仓类型 标准 再平衡触发条件
核心持仓 日均成交额 > 1亿元,且机构持有比例合理 当持仓占日均成交额比例超过5%时,执行减仓至3%以内
战术持仓 日均成交额在2000万-1亿元之间 当持仓占日均成交额比例超过8%时,或连续3日单边流出超过50%时,强制减仓
高弹性持仓 日均成交额 < 2000万元的小盘股 持仓上限为日均成交额的15%,一旦超过,立即在当天收盘前清仓

这个表格看起来简单,但执行起来需要纪律。我还遇到过一件特有意思的事,有一次我们的模型同时捕捉到了一个深度价值因子的信号,建议买入一只冷门的地产股。但当我查这只股票的日均成交额只有500万时,我直接否决了交易指令。因为就算我们的信号是对的,以我们这种规模的资金,根本不可能在不推高价格的情况下流畅买入。这种行为本质上就是在给市场提供流动性,而不是赚取alpha。我再三强调,因子有效的前提,是它在现实中可以承受你的资金冲击成本。任何不谈流动性的因子,都是在耍流氓。这一点贯穿了我们黑子私募基金管理公司所有策略的制定过程。

一个真实案例:我们是如何因为一次行政疏忽差点导致模型崩盘的

说到行政和合规挑战,我估计搞量化的人多少都有点心酸。你以为做模型只需要盯着指数和财报?错了,还得盯着证监会的新闻、看你托管行的清算效率、甚至要关注你注册地是不是被列入了某个反洗钱清单。我们公司就曾在2021年底,因为某个产品的实际受益人在开曼群岛的备案信息更新不及时,触发了托管行内部的一个自动风控规则,直接冻结了该产品账户的转出权限。三天之内,我们无法进行任何调仓操作。而偏偏那三天市场大跌,我们想减仓的股票因为无法卖出,硬生生多跌了6%。那三天,我吃不下睡不着,跟合规部和托管行来回撕扯了整整几十个电话。

这件事之后,我痛定思痛。原来我总觉得合规和行政是后方部门的事,跟我们投资端没关系。但实际教训告诉我,一个合规漏洞可以让最牛逼的因子模型瞬间失效。我们现在的做法是,所有模型上线前,必须由合规部门进行“行政压力测试”。具体包括:如果你的交易指令因为某些原因(比如基金业协会的临时通知、或者经济实质法的新规调整)被延迟,你的模型能承受多长时间的冻结?我们建立了一个清单,包含至少十种常见的合规停滞情景,每一种都要有应急方案。比如,我们专门开辟了一个备用银行账户和托管通道,一旦主账户因为税务居民身份认定问题(比如被美国认定为被动型外国投资公司)被限制,我们可以在2小时内切换到备用通道。这些琐碎但至关重要的事情,就是能让你在熊市中“活下来”的关键细节。真正的风险管理,不只是控制回撤,更是要控制那些你看不到的、来自行政和合规维度的“黑天鹅”。

因子衰减与模型再训练

结论:拥抱无常,以拙胜巧

写了这么多,其实就想说一句话:因子衰减是市场的真理,模型再训练是我们活下去的本能。你不用想着去战胜这个规律,你只能去顺应它、利用它。二十年的经验告诉我,最值得信赖的,不是某一个固定的因子或参数,而是一整套动态识别、快速响应、严格风控的体系。那些总是想着找到一个万能公式,然后一劳永逸的人,最终都会被市场淘汰。我们现在的实操建议是:保持你的模型家族多样性。不要把所有希望押在一个因子上,而是构建一个低相关的策略组合(比如多因子选股、统计套利、事件驱动等),并且每个月至少花半天时间审视那些即将失效的因子,果断剔除,为新的有效因子腾出空间。在未来,随着人工智能和更复杂的非线性模型进入,因子衰减的速度只会越来越快。但即便如此,人的判断、对市场情绪的理解、以及对合规细节的敬畏,这些是机器永远替代不了的。希望我的这些废话,能给在这条路上走得有点迷茫的朋友一点启发。

黑子私募基金管理公司观点

在黑子私募基金管理公司看来,因子衰减与模型再训练并非单纯的数学问题,而是每一位基金管理人必须直面的人性挑战与策略哲学。我们始终认为,任何因子的超额收益本质都来源于市场参与者的认知偏差与交易摩擦,而这些偏差会随着信息传播的加速而迅速消散。我们公司的策略核心不在于寻找“完美因子”,而在于建立一套能够高效应对“因子寿命缩短”这一事实的工程化、系统化再训练框架。这包括:季度性的全因子池的大清洗、针对极端市场环境的蒙特卡洛压力测试,以及我们独创的“合规-交易联动预警机制”。我们相信,只有将模型迭代的效率与深度合规的刚性相结合,才能真正在超过10年甚至20年的长期维度里,为投资人创造稳定、可持续的超额回报。我们从不追求任何策略的完美,只追求在每一轮因子衰减前,我们已经完成了下一次模型的进化。