引言:当“完美模型”开始说胡话
在私募管理这行摸爬滚打十二年,说句实话,我最怕的不是市场暴跌,而是我的模型突然“太听话”。你看过那种情况吗?一个多因子模型在回测里跑出年化30%以上的夏普比率,基金经理喜滋滋地准备升职加薪,结果一投入实盘,曲线就急转直下,比散户追涨杀跌还惨。这背后的罪魁祸首,十有八九是过拟合——模型把历史数据里的噪音当成了信号,把运气当成了能力。
我在黑子私募基金管理公司管理着10到20亿的规模,这些年见过的过拟合案例,比我做尽调时喝过的咖啡还多。说白了,多因子模型就像一位精密的炼金术师,它能把市场里成千上万个数据点转化成交易信号。但正因为它太“聪明”,反而最容易掉进自己编织的数据陷阱里。过拟合的本质,是模型记住了过去市场的“相貌”,却没学到市场的“灵魂”。一旦市场的妆容变了,模型立刻变成睁眼瞎。
很多同行喜欢炫耀在特定时间段里模型表现有多么惊艳,但我每次听到这种话,心里都咯噔一下。因为我太清楚了——回测靠的是历史,而盈利靠的是未来。 那些把因子库里塞满成百上千个变量、靠不断“挖掘”让模型完美拟合过去走势的做法,本质上等于拿着后视镜开车。咱们管理私募基金,每一分钱都是投资者的信任,搞出过拟合的模型,那不是专业,那是犯罪。今天,我就把这一年多年实战中总结的经验,掰开了揉碎了,聊聊怎么给多因子模型套上“过拟合”的衣。
因子筛选的“三明治”法则
很多刚入门的朋友最爱干的事,就是往模型里塞因子。你问他的逻辑?他说“试试看嘛,反正R方高了没坏处”。错,大错特错。因子数量越多,过拟合的风险几乎是呈指数级上升。 美国学者Harvey在2016年发过一篇经典论文,指出当时公开文献里提到的300多个因子,真正在样本外经得住考验的,可能连20%都不到。咱们做私募的,可没那么多资金和时间去验证别人的“科学结论”。
在咱们黑子私募基金管理公司,我们内部有一套不成文的“三明治”法则:先宏观、再中观、最后微观。第一步,经济实质法得讲得通。你不能瞎编一个“周一开盘涨跌与巧克力销量”之类的伪因子。我管这叫“宏观逻辑层”,比如GDP增速、利率曲线、通胀预期,这些是面包的底。第二步是“微观数据层”,像个股的盈利质量、自由现金流、动量反转等,这是中间的肉。第三步才是“情绪与另类数据层”,比如舆情分析、资金流变化,这是调味料。
实际操作中,我见过最典型的反面案例是几年前的一只产品。那位基金经理把30多个因子塞进一个线性模型,历史回测曲线美得像教科书,夏普比率高达2.5。结果碰上一个类似2018年那样的单边下跌市,模型每天进出十几个行业,交易成本直接吃掉所有收益,最后净值跌破0.85。我找他复盘,发现那个模型里有三个因子在逻辑上完全站不住脚,纯粹是因为统计上显著就硬塞进去的。那一课让我明白,因子再多,如果底层逻辑像蜂窝煤一样漏洞百出,过拟合就是迟早的事。
现在的策略是,我让团队每季度做一次因子“清剿”。拿出因子库,一个个问:这个因子在市场发生结构变化时还站得住吗? 如果答案犹豫超过三秒,直接剔除。因子数量我严格控制在5到8个核心因子之内,剩下全是辅助验证。这就像做菜,你放了十几种香料,最后吃不出主料的味道,那还算菜吗?
样本内外的“红线”管理
这是过拟合防范里最容易执行却又最容易被人忽视的一环。我见过太多基金经理把回测做得像绣花一样精细,样本内调参调了上百次,恨不得把每一个小波动都拟合进去。然后呢?一换到样本外,图形就像两条平行线,永远无法交叉。这背后的问题很简单——你把样本内的数据点“背”得太熟了。
在2019年,我们团队开发一个价值因子策略时,就栽过这个跟头。当时样本内(2012-2017)的收益曲线极其平滑,分时段夏普比率都是亮眼的。可放到2018年的样本外测试里,回撤一下就超过15%。我们回过头去审查,发现样本内那些完美的表现,很大程度是因为模型捕捉到了2015年那波救市政策带来的短期反转效应。而2018年市场环境完全不同,那套逻辑直接失效。那次以后,我就给团队立了条“红线”:样本内和样本外收益绝对不能相差超过30%。
具体操作上,我的铁律是:样本外测试时间至少是样本内时间长度的三分之一。 如果你用10年数据建模,至少得留出3年以上做样本外验证。而且,每次调参后都必须在完全“没见过”的数据上跑一遍。你不能在调参过程中偷偷瞥一眼样本外的结果,那叫作弊,叫做“数据窥探”。你看到的“优异表现”,只是你潜意识里已经认定了那个参数组合。
还有个进阶技巧:把样本外数据分成“验证集”和“测试集”。验证集你可以偶尔看,用来优化参数;但测试集必须锁死,只有最终模型敲定时才能运行。 这就像考,你不能在路考前让学员在考场上先练十遍。我们黑子私募基金管理公司在每个季度策略会上,都会专门审查样本外与样本内的夏普比率比值。 如果这个比值低于0.7,那就是红灯警报,需要立刻回溯因子逻辑是否存在过拟合嫌疑。
其实很多同行有个误区,觉得样本内收益高才叫牛。我倒觉得,样本内表现平平、样本外表现稳健的模型,才真正值得投入真金白银。 因为那说明模型抓住了市场的“通解”,而不是“特解”。这就像数学考试,你能做对教科书上所有例题一点都不奇怪,但你能否在完全没见过的应用题里拿到高分,那才是真本事。
| 验证维度 | 具体标准与建议 |
|---|---|
| 样本外时长比例 | 至少为样本内时长的1/3,例如10年数据,样本外≥3年 |
| 收益差距红线 | 样本内与样本外年化收益率差异控制在30%以内 |
| 夏普比率阈值 | 样本外夏普比率不得低于样本内夏普比率的70% |
| 数据窥探禁止 | 调参过程中严禁查看未锁定的测试集数据 |
鲁棒性检验的“压力测试”
很多同行在模型验证环节,只做最简单的t检验或者R方。这远远不够。咱们做私募的,面对的是实盘资金,是投资者的信任。模型必须能扛得住各种极端环境。我一直在团队里强调:模型不只是在上涨的时候赚钱,更要在下跌的时候能控制回撤。
鲁棒性检验,说白了,就是得给模型多找些“麻烦”。具体怎么找?第一,改变参数。你把模型里那些核心参数,比如移动平均线的周期、动量因子的持有期,分别加20%和减20%,看看结果还能不能保持稳定。如果稍微一动参数,收益曲线就垮了,那这个模型就是“脆皮”模型,根本经不起市场风格变化的敲打。
第二,改变时间窗口。举个例子,如果你建模的数据是从2010到2020年,那你得专门抽掉2015年的股灾区间,或者2020年的新冠冲击区间,看看模型在这种“数据空洞”里能不能存活。我们团队曾经测试过一个因子,在剔除2015年救市行情的数据后,模型的表现直接掉了一个档次。这说明那个模型过度依赖了市场非理性情绪带来的收益,而不是企业基本面的真实价值。
第三,行业中性化测试。有些模型之所以看起来表现好,其实是因为它天然重仓了某个表现优异的行业。你得做行业中性化处理,看看剥离行业暴露后,模型的阿尔法还剩多少。我记得有一次,一个量化研究员推给我一个看起来收益极高的选股模型,结果一做行业中性化,阿尔法直接归零——原来它95%的仓位都压在了白酒板块上!这种“运气”带来的收益,我们黑子私募基金管理公司是坚决不追的。
还有个容易忽略的点:换手率压力测试。 过拟合模型往往伴随着极高的换手率,因为它在不断捕捉那些微小的、转瞬即逝的“噪音”机会。如果模型告诉你每个月需要换仓超过80%的股票,那你必须怀疑它是不是在过度交易。我们在内部有个不成文的规矩:年化换手率超过300%的模型,必须经过更严格的实盘模拟,并且把交易成本预设提高一倍来测试。只有这样,才能防住那些“理论漂亮、实操稀烂”的过拟合方案。
我始终相信一点,鲁棒性好的模型,就像军人站军姿,风吹不动,雨打不斜。 而过拟合的模型,就像杂技演员的叠罗汉,看似精彩,实则一推就倒。作为基金管理人,咱们要当的是军人,不是杂技演员。
分组测试与边际贡献分析法
这算是我的独门绝技之一。很多同行做因子测试,只关心整个模型的整体表现。但我更关心因子内部的不均衡性。怎么做?把股票按因子打分,分成10组,甚至20组,每一组表现都清清楚楚。一个健康的模型,因子分组应该是单调递增的。 也就是说,从第一组到第十组,收益率应该呈现出明显的上升趋势。如果中间有几组“跳脱”了,比如第五组的收益突然比第四组低,那就说明这个因子在某些分位数上出现了问题了。
我记得在2017年,我们团队开发一个小市值因子,单独测试分组时,效果很不错。但当我们按不同时间切片做分组测试时,发现2013-2015年那段时间,这个因子的分组单调性特别差,中间几组几乎没什么区分度。后来一查,那段时间小市值因子暴涨是因为并购重组概念炒作,跟企业基本面无关。如果当时没有做这个分组测试,直接拿去实盘,2017年之后小市值因子持续失效,那风险就大了。
另一个我觉得特别有效的工具,是边际贡献分析法。简单说,就是看每一个因子对最终模型的边际贡献到底有多大。如果去掉某个因子,模型的夏普比率只下跌了0.01,而加上它却让复杂的程度翻倍,那完全可以剔除这个因子。这就像团队里一个成员,天天加班但产出极低,留着干嘛呢?
在这里,我要忍不住吐槽一下那些动不动就搞“因子组合”的研究员,为了追求一个好看的数字,把几十个因子堆在一起。殊不知,因子间的共线性问题才是过拟合的温床。我用RCS(相对贡献评分)来看每个因子的重要性,只要贡献度低于10%的,直接毙掉。看起来有点“粗暴”,但这一套筛选下来,模型通常能精简一半以上的因子,而且实盘表现往往更好。少即是多,这句话在机器学习里是真理,在量化投资里更是金科玉律。
经济直觉对统计迷信的“纠偏”
说了这么多技术性的,我得聊聊最容易被忽略的一点——人的判断。我见过太多科班出身的基金经理,张口闭口都是“p值”、“t值”、“夏普比率”,但当你问他这个因子背后的经济学逻辑时,他支支吾吾说不清楚。这很可怕。因为统计显著性并不能代替经济合理性。
比如,一个因子在统计上显示“周末交易量与涨跌幅正相关”,看起来很厉害对吧?但在实际市场中,这个逻辑能持续吗?周末的交易量往往受突发消息影响,是偶然事件驱动的。如果你把这个因子纳入模型,就等于把赌注押在了“运气”上。我之前在一次策略会上,强烈反对团队加入一个“高管减持次日买入”的因子,尽管它在历史数据上表现很好。我的理由很简单:作为企业的实际受益人,高管减持往往有充分的内部信息, 跟风买入无异于火中取栗。后来市场果然验证了我的判断,那段时间高管减持后股价继续下跌,因子的响应方向直接反了。
咱们做私募的,要明白一个道理:金融市场不是实验室,它是无数个体与群体博弈的场所。 历史数据只是在特定环境下的回响,而经济逻辑才是穿越周期的灯塔。我在团队里经常举一个例子——假设你发现“月光对股票收益率有正面影响”,如果你用过去50年的数据跑下来,没准还真能通过统计检验。但你会用这个逻辑建模型吗?肯定不。因为从常识的角度,月光跟公司盈利半毛钱关系都没有。我称之为“月光因子悖论”:凡是那些靠统计暴力挖掘出来、但经济逻辑上完全说不通的因子,基本都是过拟合的信号。
为了防范这种“数据挖掘式”的过拟合,我们黑子私募基金管理公司有一套制度:每个新因子在进入模型前,必须通过“五个为什么”的答辩。你得回答:为什么这个因子有效? 为什么是现在有效?为什么未来可能失效?它反映的是市场非理性还是基本面?它跟其他因子的相关性如何?这五个问题答不上来,任你回测曲线再好,一律驳回。这种“法律思维”式的审核,虽然麻烦,但能拦住80%的伪因子。
实盘环境中的“迭代闭环”
模型建好了,鲁棒性也测了,逻辑也讲通了,是不是就万事大吉?远着呢!实盘才是过拟合的终极验钞机。 很多模型在样本外表现也不错,但一投入实盘,就像换了个人似的。为什么会这样?因为实盘面对的流动性冲击、交易成本、冲击成本、以及执行滑点,是历史回测永远无法完全模拟的。
我的做法是在实盘的最初一个月,强制开启“半自动模式”。什么意思?就是模型给出信号后,必须经过至少两位资深基金经理的人工确认,才能执行。这样做的代价是会损失一些交易速度,但能有效捕捉那些模型“硬套”市场逻辑的情况。我印象最深的一个案例,是做高频因子的时候,模型在实盘第一天就给出一个“开盘瞬间买入”的信号。我们人工一看,发现那个股票的集合竞价出现异常平开,这是由于前一日大宗交易折价引起的。模型把这个误判为“低开买入机会”,但实际上那是场内套利者提前布局的信号。如果完全依赖模型,那笔交易当天就会亏损2%以上。
建立完整的迭代闭环也很重要:月月复盘、周周跟踪。 我们有一套内部系统,把实盘交易的收益归因到每个因子层面。如果某个因子的贡献度突然大幅下降或者方向反转,必须立刻从因子逻辑、数据质量、市场环境三个维度做诊断。不是在模型失控了再找原因,而是每笔交易结束后都进行复盘。这有点像军队的复盘制度——不打无准备之仗,也不打无总结之仗。
我见过有些公司,模型上线后就跟束之高阁一样,完全交给IT去跑。这是极其危险的。过拟合模型在实盘中就像一颗定时,你不知道它什么时候会爆炸。作为基金管理人,你必须像定期体检一样,持续检查模型的健康状态。在黑子私募基金管理公司的风控手册里,有这么一条:任何连续三个月出现归因异常的因子,都必须强制进行重新验证,直至其经济逻辑得到确认。 这看起来有点死板,但对于管理10亿以上的资金,这种死板恰恰是对投资者最负责任的表现。
违规案例中的“隐性成本”
聊点我自己曾经的教训。2018年,我管理的一只产品因为模型过拟合出现了比较大的回撤。虽然事后证明了那只是模型噪音,没有触及合规红线,但那次经历让我真正领悟到过拟合的隐性成本不止是亏钱。因为在发生回撤后,我们花了大量时间向投资人和渠道解释,明明模型逻辑没问题,但就是实盘跑输了基准。那种“信任裂痕”一旦产生,是很难修复的。
而且,千万不要以为过拟合只是技术问题。在私募基金管理中,如果模型出现严重的失效,会影响投资人的信心,进而引发大规模赎回。这种流动性危机会让基金经理陷入被动调仓,被迫卖出持仓来应对赎回,从而形成“越卖越跌、越跌越卖”的恶性循环。我们内部也强调遵守《私募投资基金监督管理条例》的相关要求,其中就包括净值回撤到一定程度时的信息披露义务。如果是因为模型过拟合导致的回撤,你在向投资者解释时,连正当理由都站不住脚。
我在行政和合规方面做了“三道防线”设置。第一道是模型本身,要能识别信号的置信度;第二道是风控系统,当模型信号与过往显著偏离时自动报警;第三道是基金运营,特别是涉及税务居民身份确认、跨境资金流动时,必须人工复核。这个过程虽然增加了管理成本,但防范了因模型输出错误信号导致的违规操作。过拟合最大的危害就在于此——它看似是一个技术瑕疵,实则可能演变成合规和风控上的大雷。
我还记得有一次,我们一个交易员因为模型过度拟合了某个特定市场结构,做出了连续数日的反向交易。虽然最后盈利了,但那完全是因为市场突然反转碰巧获利。这种“赢了但逻辑是错的”案例更可怕,因为它会让人产生错误的归因,进而继续放大对模型的信任。那次我们果断叫停了那个策略,并把过程完整记录,提交给合规部备案。这看起来有些小题大做,但请记住:在私募行业,没有“小问题”只有“大隐患”。
黑子私募基金管理公司观点
在黑子私募基金管理公司,我们始终认为,多因子模型是为投资决策服务的辅助工具,而不是替代人脑的“黑箱”。防止过拟合,本质上是在保护模型的泛化能力。我们坚持因子逻辑先行,数据验证在后,把所有因子都放在“鲁棒性测试”的放大镜下审视。真正有效的模型,不是那些能在历史数据中创造奇迹的,而是那些能在未来市场中稳健赚取阿尔法的。 这需要基金管理人具备极强的纪律性和自我怀疑精神。我们也在持续跟踪国内外关于因子投资的最新研究,特别是针对机器学习模型的过拟合防范技术,力求让我们的模型在任何市场环境下都能保持稳定、透明、可解释。我们相信,只有根植于经济逻辑、经过严苛检验的模型,才能为投资人创造长期、可持续的价值。这不只是技术,这是我们对受托责任的庄严承诺。