第六部分 · 项目实战与工程化 · 第 21 章

避坑:常见错误和如何读研究

量化新手亏钱,常常不是因为不懂高深理论,而是掉进了几个反复出现的坑:看起来赚钱,其实在偷看未来的答案。这一章先把这些最常见的错误一个个摆出来,让你在自己的项目里能认出它们;再讲一项同样重要的能力——如何读量化研究报告和论文:先找它的假设和数据口径,再看结论,别被漂亮的曲线和术语牵着走。

读完这一章,你会明白

  • 量化新手最常见的假收益来自未来函数、幸存者偏差、成本低估和过拟合。
  • 样本外、容量、基准、交易规则和复盘记录决定回测能否接近真实研究。
  • 读量化资料要先看问题、数据、基准、成本、样本外和风险,再看结论。
  • 报告的立场、样本选择和展示方式会影响读者判断,不能把宣传材料当研究证明。
第 21 章概念路径 1 未来函数 2 幸存者偏差 3 过拟合 4 忽略容量 5 把回测当实盘 6 没有复盘记录 7 先看研究问题 8 如何做读后复现

本图从“未来函数”走到“如何做读后复现”,用于先看第 21 章的关键路径,再回到正文补细节。

1. 未来函数

未来函数是回测里最致命的错误之一。它指模型在历史某个时点使用了当时还不知道的信息。比如用年报数据在年报公布前交易,用当天收盘价生成信号又假设当天收盘成交,用未来指数成分构造股票池。

未来函数最可怕的地方是,它会让策略表现异常好。模型不是聪明,而是提前看了答案。你越优化,越可能放大这个错误。

排查方法是画时间线。每个字段都写清楚: 事件发生时间、数据公布时间、你接收数据时间、信号生成时间、下单时间、成交时间。只要特征晚于决策时点,就不能用。

2. 幸存者偏差

幸存者偏差是只看活下来的样本。用今天仍上市的股票回测十年前,会漏掉退市、长期停牌、表现很差的公司。结果当然会变好,因为失败者被删掉了。

基金和产品研究也有幸存者偏差。只看现在还在运营的基金,会漏掉清盘或表现差的基金。行业平均收益会被高估。

解决方法是使用历史当时的股票池和产品样本。退市股票要保留,退市前无法卖出的风险要处理。不要让数据库自动替你美化历史。

很多策略毛收益不错,扣成本后没了。成本不只是佣金,还包括印花税、过户费、买卖价差、滑点、冲击成本、融资融券成本、期货展期和基差。

高换手策略尤其容易被成本杀死。单次交易只赚一点点,但频繁交易不断付费。回测里少扣 0.05%,一年可能差很多。

解决方法是做成本敏感性。用 0 成本、正常成本、两倍成本、三倍成本分别跑。如果策略只在低成本下能活,就要谨慎。

3. 过拟合

过拟合是模型记住了历史噪声。量化里过拟合很容易发生,因为你可以试很多因子、很多参数、很多样本区间。试得足够多,总能找到一条好看的历史曲线。

过拟合策略常有几个特征: 参数稍微变就崩,收益集中在少数年份,样本外差,逻辑解释牵强,交易成本一加就没,回撤阶段无法解释。

防过拟合要靠纪律: 减少自由度,保留真正样本外,记录所有实验,做参数稳定性,优先选择简单可解释策略。

样本外污染是你声称某段数据没参与训练,但实际上反复看它、根据它改策略。你看一次测试集结果,再调整因子或参数,测试集就已经影响研究决策。

金融研究里,研究员本人也会过拟合。看过太多历史图形后,你会下意识选择符合历史的规则。即使代码没有泄漏,人的选择也可能泄漏。

解决方法是分层验证。训练集调模型,验证集选参数,最终测试集尽量少碰。更进一步,用模拟盘和小实盘作为真正未来样本。

过拟合:样本内越漂亮,样本外可能越崩 净值 样本内(用来调参数) 样本外(没见过的新数据) 回测里美如画 实盘一上就崩 参数试得越多、模型越复杂,越容易“背下”历史噪声,而不是学到规律

过拟合是量化头号杀手:你在历史数据里反复调参,做出一条完美曲线,其实只是把当年的偶然噪声背了下来。换到没见过的新数据(样本外),立刻原形毕露。

4. 忽略容量

容量是策略能容纳多少资金。很多小盘、低流动性、短周期策略在小资金上能跑,资金一大就把价格推走。回测如果不限制参与率,会假设自己可以用任意资金按历史价格成交。

容量问题会让收益随规模下降。机构策略常常需要在收益和规模之间取舍。个人资金小,容量压力小一些,但也不能完全忽略流动性。

解决方法是限制单日参与成交量比例,设置成交额过滤,估计冲击成本。任何需要吃掉大量成交量的策略,都要重新看收益。

量化很容易发现相关性。某个指标高的股票过去表现好,某个宏观变量变化后市场上涨,某个文本词频和收益有关。但相关不等于因果。

相关性可能来自共同驱动、样本偶然、行业暴露或数据泄漏。比如某个因子有效,可能只是因为它偏小盘;某个宏观指标有效,可能只是那几年政策环境特殊。

解决方法是做中性化、分组、跨时期和跨市场验证,并提出经济解释。你不一定要证明严格因果,但要知道相关性为什么可能持续。

5. 把回测当实盘

回测是历史排练,不是实盘。回测没有真实排队,没有心理压力,没有网络故障,没有券商拒单,没有临时规则变化,没有客户赎回。

实盘还会改变你。看到账户连续亏损,你可能手动停掉策略;看到连续赚钱,你可能加仓。人的干预会让实盘和回测不同。

解决方法是模拟盘、小资金、严格日志和预先写好的干预规则。不要在情绪最强的时候临时决定策略命运。

策略赚钱不代表有 Alpha。市场涨了 30%,你的策略涨 20%,绝对赚钱但相对跑输。市场跌了 20%,你的策略跌 5%,绝对亏钱但相对表现很好。

没有基准,你不知道自己赚的是市场 Beta、行业风格,还是模型能力。很多策略所谓收益,只是长期满仓股票市场。

解决方法是为每个策略选合适基准,报告超额收益、跟踪误差、信息比率和风险暴露。

6. 没有复盘记录

不记录实验,你会重复犯错。今天试一个因子,明天改一个参数,后天换一个股票池,最后只记得最好结果,忘了中间失败。

没有复盘,研究无法积累。你不知道哪些方向已经证明不行,哪些错误反复出现,哪些收益来自运气。

解决方法是写实验日志。每个想法、配置、结果、结论和下一步都记录。失败记录和成功记录同样重要。

金融资料很多,质量差异也很大。券商研报可能有启发,学术论文可能严谨,基金月报可能贴近产品,网络文章可能通俗。但无论来源多权威,你都不能只看结论。读量化资料的顺序应该是: 它研究什么问题,用了什么数据,有没有未来函数,基准是什么,成本怎么扣,样本外如何,结论能不能交易。

7. 先看研究问题

一篇好报告会清楚说明自己研究什么。是研究某个因子是否有效,还是研究某个策略组合,还是分析市场微观结构,还是评价一个产品? 问题不同,评价标准不同。

如果报告标题很大,比如“AI 量化策略年化 50%”,但正文说不清预测目标、资产范围和交易规则,就要警惕。好的研究问题通常具体: 在中证 500 股票池中,低波动因子在 2015-2024 年月频调仓下是否有超额收益。

问题越具体,越容易检验。问题越模糊,越容易用漂亮话掩盖缺陷。读报告时先把问题翻译成一句可检验的话。

数据来源决定可信度。报告应说明使用哪些数据: 行情、财务、指数成分、公告、分析师预测、期货合约、宏观数据。还要说明数据供应商、复权口径、样本区间和更新时点。

时间范围也很关键。只覆盖牛市的策略,不能证明熊市也有效。只覆盖两三年的研究,很容易被市场风格支配。跨越多个周期的样本更有说服力,但也要注意市场制度变化。

如果报告没有披露数据来源和时间范围,或者只说“历史数据显示”,可信度就要打折。没有数据口径,结果无法复现。

8. 看股票池和基准

股票策略必须说明股票池。全 A 股、沪深 300、中证 500、中证 1000、某行业股票,结果完全不同。股票池还要说明是否剔除 ST、停牌、新股、低流动性股票。

基准也必须匹配。中证 1000 股票池做出来的策略,拿沪深 300 当基准可能误导;小盘风格策略如果不控制市值暴露,超额可能只是小盘 Beta。

读报告时问一句: 它和谁比? 如果没有基准,或者基准明显不合适,收益结论就不完整。

很多报告展示毛收益,但真实投资看净收益。报告应说明佣金、印花税、滑点、冲击成本、换手率、容量和成交假设。如果策略换手很高,成本尤其重要。

可执行性包括停牌、涨跌停、T+1、交易单位、成交额和参与率。一个策略每天买卖低流动性股票,却假设全部按收盘价成交,结果再好也不可信。

如果报告只说“未考虑交易成本”,你应该把它当成灵感,不是可投资结论。成本是策略的一部分,不是附录小字。

9. 看样本外和稳健性

样本内好不够,要看样本外。报告是否把数据分成训练、验证、测试? 参数是否只在训练集调? 测试集是否被反复使用? 是否做滚动验证?

稳健性包括换不同参数、不同市场阶段、不同股票池、不同成本假设后,结论是否仍大致成立。一个策略只在某个参数组合下好看,很可能过拟合。

读报告时,特别注意那些只展示最佳参数、不展示失败参数的研究。真正可信的研究会告诉你结果对关键假设有多敏感。

报告如果只展示年化收益,不展示最大回撤、波动率、夏普、换手、杠杆、暴露和尾部风险,就是严重不完整。收益和风险必须一起看。

还要看收益路径。收益是否集中在少数几个月? 回撤持续多久? 是否有长时间横盘? 是否在市场危机中失效? 这些决定投资者能不能拿住。

好的报告会展示不舒服的信息。差的报告只展示漂亮曲线。研究不是广告,必须经得起坏问题。

10. 看经济解释

量化结果不一定必须有完美理论,但至少要有合理解释。因子为什么可能有效? 是风险补偿、行为偏差、信息滞后、流动性补偿,还是制度约束?

没有解释的信号更容易失效,也更难坚持。一个纯数据挖掘信号历史很好,但你不知道它为什么赚钱,当它亏损时你无法判断是暂时回撤还是彻底失效。

经济解释也不能代替数据。故事很顺,回测不行,也不能用。好研究需要故事和证据互相支持。

券商研报、基金月报、产品白皮书都有立场。券商可能希望服务客户,基金公司可能希望展示产品,自媒体可能希望吸引流量。立场不代表内容一定错,但读者要知道它为什么写。

产品材料尤其要小心。它可能突出有利阶段,弱化回撤和风险;可能展示费前收益,或者只展示代表性产品。你要看合同、费用、净值、风险揭示和完整历史。

读任何资料都要把“作者想让我相信什么”和“证据实际支持什么”分开。

11. 如何做读后复现

看到一个有意思的策略,不要马上实盘。先做简化复现。用你能拿到的数据,按报告描述的股票池、因子、调仓和成本重跑一遍。复现不必完全一致,但应看方向是否接近。

复现过程中,你会发现报告没有说清的细节: 缺失值怎么处理,极端值怎么截尾,停牌怎么处理,财报公告日用哪个,行业分类用哪个版本。这些细节会显著影响结果。

复现失败不一定说明报告造假,也可能是数据口径不同。但如果一个结论对细节极度敏感,实用价值就要打折。

第一,研究问题是什么? 第二,数据来源和时间范围是什么? 第三,股票池和基准是什么? 第四,是否避免未来函数和幸存者偏差? 第五,交易成本和成交假设是什么?

第六,样本外表现如何? 第七,风险指标和回撤如何? 第八,结果是否稳健? 第九,收益来源能否解释? 第十,我能否用自己的数据复现大方向?

这十个问题可以贴在你的研究笔记开头。每读一篇资料都过一遍,你的判断力会比单纯收藏报告提高得多。

小结

这一章的正文不是让你记住几个孤立名词,而是要把它们放回同一条因果链里。读完后,先用自己的话复述下面几条判断,再顺着“小节回看”检查是否能解释每一步。

  • 量化新手最常见的假收益来自未来函数、幸存者偏差、成本低估和过拟合。
  • 样本外、容量、基准、交易规则和复盘记录决定回测能否接近真实研究。
  • 读量化资料要先看问题、数据、基准、成本、样本外和风险,再看结论。
  • 报告的立场、样本选择和展示方式会影响读者判断,不能把宣传材料当研究证明。

小节回看

  • 1. 未来函数
  • 2. 幸存者偏差
  • 3. 过拟合
  • 4. 忽略容量
  • 5. 把回测当实盘
  • 6. 没有复盘记录
  • 7. 先看研究问题
  • 8. 看股票池和基准
  • 9. 看样本外和稳健性
  • 10. 看经济解释
  • 11. 如何做读后复现

自测

为什么未来函数会让回测特别好看?

因为模型提前使用了当时不可见的信息,等于偷看答案。

幸存者偏差为什么会高估收益?

它删除了退市、失败或表现差的样本,只留下活下来的资产。

为什么读报告要先看研究问题?

问题具体才可检验,否则漂亮结论可能掩盖数据和交易假设缺陷。

报告没有交易成本时该怎么看?

只能当作研究灵感,不能当成可投资结论。