核心解答
股票量化中有一个非常隐蔽的问题。
你的代码没有报错。
交易逻辑也没有偷看未来价格。
回测结果甚至非常稳定。
但它仍然可能从数据源头就已经高估了策略。
这个问题叫幸存者偏差。
一、今天看到的公司,是已经活下来的公司
假设今天有1000家上市公司。
你拿这1000家公司去回测十年前的策略。
问题是:
十年前真实市场里并不只有今天这1000家公司。
还有一些公司已经:
退市;
破产;
被并购;
长期停牌;
被指数淘汰。
如果这些失败样本从历史数据中消失,相当于你提前知道了“哪些公司最终活到了今天”。
二、为什么它会让策略变漂亮
想象一个选股策略专门买基本面较弱、估值较低的公司。
真正历史中,其中一部分公司可能最终退市。
但如果数据集只留下今天仍然存活的公司,那些最差的结果就被自动删除了。
策略看起来会比当时真正能够实现的结果更好。
三、指数成分股也会产生同样的问题
例如研究历史指数策略。
如果直接使用今天的指数成分股回测过去十年,也可能出现偏差。
因为十年前指数里的成分公司与今天并不完全相同。
正确做法应该使用历史每个时点真实存在的成分列表。
四、点时数据非常重要
量化研究应尽量使用 point-in-time 数据。
也就是:
在历史某一天,只让策略看到当时真正可以获得的信息。
不能使用后来才修订的数据。
不能使用后来才公布的财务信息。
不能用今天的股票池倒推过去。
五、为什么这类错误最危险
因为它不会让程序崩溃。
相反,它通常会让结果更加漂亮。
而越漂亮的结果,人越容易相信它。
这也是为什么一个合格的量化系统,必须先做数据审计,再讨论策略收益。
结论
股票量化的第一步,不是寻找神奇指标。
而是确认:
历史股票池是不是历史真实股票池;
退市证券是否存在;
财务数据是什么时候公开的;
复权和公司行为是否正确;
交易成本是否真实。
如果这些基础不成立,后面再复杂的模型也可能建立在错误数据上。
继续阅读相关研究
继续了解这个主题
信号出现不等于订单一定成交。涨跌停、停牌、一字板、流动性和竞价阶段都会让理想回测与真实A股执行产生巨大差异。
阅读全文 →股票量化你是不是偷看了未来?股票回测里的前视偏差有多危险前视偏差不会让程序报错,反而常常让回测异常漂亮。真正关键的是历史某个时点到底能不能获得那条数据。
阅读全文 →股票量化股票回测为什么必须处理复权?拆股和分红会制造“假收益”拆股、反向拆股和现金分红会改变历史价格或持仓数量。量化回测如果混用未复权价格和复权收益,很容易制造不存在的暴涨暴跌。
阅读全文 →量化研究一个量化策略从想法到实盘,中间到底应该经历多少道测试?成熟量化流程不是“想法→回测赚钱→上线”,而是从数据审计、样本内、Walk-Forward、样本外、压力测试到小规模实盘逐层验证。
阅读全文 →淄博卓亚网络科技服务有限公司
电话:15269365953
地址:山东省淄博市张店区体育场街道办事处华光路2号泽泉消防市场三楼S18