ReachRich研究笔记

A股量化研究

A股因子验证:如何识别过拟合与样本外失效

阅读一份因子研究时,需要核对四件事:定义在计算日是否已经能够算出,相关性用的是哪一种口径、对应哪一段持有期收益,参数是否在看到结果之前已经固定,以及成交约束是否被单独记录。

先把因子写成可复现的定义

如果别人不能按记录重做,后面的相关性就无法核对。定义至少写明:使用哪些字段,回看多长,这些字段在计算日是否已经公开,股票范围怎样划定,持有多久,以及方向假设是高值更好还是低值更好。

只写“过去一段时间的收益”,还不能复现。需要说明用哪个价格、是否复权、窗口的起止,以及在哪个交易日收盘后才能计算。这里只列出定义应包含的项目,不给出现成参数,也不报告历史表现。方向假设应在查看结果之前写下。看完结果再把符号反过来,并说成原来的假设,只是把事后选择写成了事前规则。

只使用当时已经可得的数据

财务数据按披露时点使用,而不是按报告期结束日当作当时已经知道。股票范围使用计算日当时可得的历史成员,并说明后来退市的公司在当时是否仍在范围内。停牌、缺失和无法形成信号的样本要单独记录:是剔除、沿用上一值,还是当天不产生信号。

不要用今天的股票名单,或修订之后的数据,无条件还原历史。名称变更、代码复用和事后修正,都会让“现在查得到”不等于“当时用得上”。材料如果没有写明数据版本和覆盖范围,先记下缺口,不要补成一个看起来完整的样本。

写明相关性是哪一种,以及它对应哪段收益

常见的信息系数,是在同一时点把每只股票的因子值与它随后一段持有期收益对齐,再看二者的相关程度。必须写明用的是 Pearson 相关,还是 Spearman 秩相关。Rank IC 通常指后者,也就是先把因子和收益都换成名次再计算相关;有的程序库会把秩相关直接称作 IC。因此不能把所有 IC 都理解成 Pearson 相关,也不能把不同材料里的 IC 直接放在一起比。

这个相关对应的是后续持有期收益,不是已经扣除费用、并处理停牌和滑点之后的交易净收益。阅读时看逐期、分阶段、分组,以及覆盖了多少股票,而不只看一个均值或一条曲线。本文不设适用于所有 A 股因子的 IC、IR 或 t 值通过线。

Alphalens 文档把逐期信息系数定义为因子值与其后若干期收益的 Spearman 秩相关。用这个定义对照报告里的写法,可以看出不同材料是不是在使用同一种口径。手里如果只有截图或汇总表,应向材料索要原始定义、收益标签和相关算法。可以请 RiQi 指出缺了哪一项,不要让它补造数字。

选完参数之后,再看没有参与选择的资料

独立验证的顺序是:先固定假设和允许搜索的参数范围,再观察没有参与这次选择的后续资料。已经看过某段验证结果又回去改规则,这段资料就不再是独立样本,应改记为又一次开发。

收益标签如果跨越开发与验证的分界,持有期会把分界一侧的价格带进另一侧的标签。应按持有期检查重叠和信息泄漏。按日期切一刀,并不能自动证明没有泄漏;简单的时间切分也不是对所有研究都充分的证据。时间切分、覆盖和历史成员的进一步要求,见样本外验证手册。

样本外变差要对照全部尝试,不能只归因为过拟合

每次改窗口、股票池、行业处理方式或持有期,都是一次尝试。应保留全部版本和没有采用的失败尝试,包括邻近参数。再看结果是否只集中在少数阶段、行业或市值分组。多次搜索之后挑出最好的一个,不能再按只做了一次检验来解释。

样本外表现变差,并不能单独证明原因就是过拟合。成本假设变化、数据覆盖或历史成员变化、市场结构变化,都可能造成同样的落差,需要逐项核对。

Bailey 等人的原文说明,多次搜索后再挑出一个结果,会带来选择风险;单次留出样本并不能普遍排除这种风险。Harvey、Liu 与 Zhu 的作者摘要进一步说明,多重检验需要同时考虑尝试次数,以及这些尝试之间的相关性。某一篇论文里的 t 值门槛,不能当成所有 A 股因子的通用通过线。

从相关性和分组走到可成交,还要另记约束

IC、分组收益和扣除成本后的组合,回答的是三件不同的事。相关性高,并不表示按这个因子交易就能得到同样的净收益。分组收益还没有处理成交。组合还要记录:信号在何时可知,委托在何时成交,停牌或涨跌停时是否无法成交,容量和换手是否被考虑,费用和滑点怎样假设。

这些是研究假设的记录,不是交易指令,也不承诺收益。成本和复权怎样阅读,见A股策略回测怎么看:成本、复权与样本外验证。

若要复核一份已经存在的报告,可阅读回测复核指南。它说明如何检查信号时点、成交时点、成本、样本外区间和尝试次数,并不是一个正在运行的网页回测编辑器。账号可用的研究页面包括ReachRich 量化研究中心,可以查看行情、筛选和已有报告;RiQi用来整理已经准备好的实验记录。

用自己的材料填写实验记录

记录若始终按同一套项目写下定义、区间、尝试和成交假设,不同版本才能放在一起比较,别人也才能按记录复现。下面的空位由你填写自己的材料。

因子名称与版本:
定义:字段、回看长度、计算时点、股票范围、持有期、方向假设
数据版本与披露:数据版本、财务披露时点、历史成员与覆盖
开发区间与验证区间:
收益标签:价格口径、持有期、是否与切分边界重叠
尝试:参数列表、总次数、未采用的邻近参数
分组:阶段、行业、规模或其他切片
成交与成本假设:信号时点、成交时点、停牌或涨跌停、费用与滑点
已有结果与材料位置:
仍需检验的问题:

把填好的记录交给 RiQi 时,任务应限于:只整理我提供的记录,指出缺少哪一项依据,不补造数字,也不给出验证结论。打开 RiQi 后由你自己粘贴和发送,页面不会替你预填或自动提交。

本文讨论研究方法,不构成投资建议。

Powered by ReachRich