3. 因子体系设计原则
多因子行业轮动的第一步不是写代码,而是把"因子体系"设计对。一个可用的因子体系需要同时回答三个问题:用哪些因子(分类与覆盖)、每个因子为什么有效(金融逻辑)、如何保证回测结果可信(避免未来函数与幸存者偏差)。三者缺一,评分模型就可能"看起来很美、实盘失效"。
一、因子分类:五类因子各司其职
行业轮动中常用的因子可归为五类,它们刻画的是行业不同维度的属性:
- 动量类:过去20/60/120日收益率、相对强弱(行业指数/基准指数)、动量加速度。逻辑是趋势延续与资金惯性,适合捕捉中短期轮动。
- 估值类:行业PE、PB、PS及其历史分位数、股息率。逻辑是均值回归与风险溢价补偿,低估值行业在中期具备更高预期收益。
- 质量类:ROE、毛利率、经营现金流/净利润、资产负债率。逻辑是盈利能力与财务稳健性带来持续超额收益,防御属性强。
- 成长类:营收增速、净利润增速、分析师一致预期上调比例。逻辑是景气度上行驱动盈利预期修正。
- 情绪类:换手率、成交额占比、北向资金净流入、融资余额变化。逻辑是资金行为与市场关注度,常作为反转或确认信号。
分类的意义在于控制共线性与覆盖度:同一类因子高度相关,若五类中只取动量,模型就退化为单因子趋势跟踪;若五类均衡配置,则能兼顾进攻与防御。实践中建议每类保留1~2个代表因子,总因子数以8~12个为宜。
二、因子构建的金融逻辑:先有假设,再有公式
因子不是"算出来有效就用",而是先有经济假设。以动量因子为例,其金融逻辑是"投资者对信息反应不足导致价格趋势延续",因此构建时应使用剔除最近一个月的收益率(12-1动量),以规避短期反转效应。若直接使用最近20日收益,测出的可能不是动量而是反转。
再以估值因子为例,直接用行业PE绝对值会受行业属性干扰(银行天然低PE、科技天然高PE),因此应转换为行业内历史分位数或相对全市场估值折溢价。质量因子则需注意财务数据的披露滞后:一季报4月底才披露,若在3月就用一季报ROE,就是典型的未来函数。
三、两类致命偏差:未来函数与幸存者偏差
未来函数指在时点t使用了t之后才可得的信息。常见形式包括:用当期收盘价计算当日信号并当日成交、用未披露的财报数据、用事后修正过的历史数据、用全样本分位数做标准化。防护方法是严格建立信息可用时点表:行情数据T日收盘后可用、T+1开盘成交;财务数据按法定披露截止日延后使用;所有滚动统计只用截至t的历史窗口。
幸存者偏差指回测样本只包含"活到今天"的行业或成分股,剔除了已退市、已合并或已更名的对象,导致收益被高估。行业轮动中尤其要注意行业分类的历史变更:申万行业分类多次调整,若用最新分类回溯历史,等于用未来信息重构了过去的行业归属。防护方法是使用Point-in-Time(PIT)行业归属表,按每个历史时点当时生效的分类与成分构建行业指数。
四、落地示例:一个可执行的因子清单
假设我们为28个申万一级行业构建月度轮动评分,可采用如下配置(示例参数,非实测结果):
| 类别 | 因子 | 计算口径 | 方向 | 数据处理 |
|---|---|---|---|---|
| 动量 | 12-1月收益 | 过去252日收益剔除最近21日 | 正 | 行业中性化 |
| 估值 | PB历史分位 | 近5年PB分位数 | 负 | 取负号后标准化 |
| 质量 | ROE(TTM) | 最近四个季度滚动 | 正 | 按披露日滞后 |
| 成长 | 营收增速 | 最新报告期同比 | 正 | 按披露日滞后 |
| 情绪 | 换手率变化 | 近20日均换手/近120日均换手 | 负 | 缩尾处理 |
每个因子先做去极值(MAD法)→ 标准化(Z-score)→ 行业中性化(对行业哑变量回归取残差),再按类别等权合成类别得分,最后按动量30%、估值20%、质量20%、成长20%、情绪10%加权得到综合分。权重是示例假设,实际应通过IC/IR检验与滚动优化确定。
五、设计阶段的验收清单
在进入评分与回测前,建议逐项核对:因子是否覆盖至少四类;每个因子是否有明确的经济假设与方向约定;所有输入数据是否标注了"可用时点";行业归属是否使用PIT数据;是否保留了已退市/已变更样本;标准化是否只用滚动窗口。任何一项不通过,都应先修正数据管道,而不是调整权重去"拟合"出好看的结果——后者本身就是一种隐蔽的未来函数。
因子体系设计是整个轮动模型的"地基"。分类保证覆盖度,金融逻辑保证可解释性,偏差防护保证可信度。三者确定之后,后续的评分合成、IC检验与组合构建才有意义。