4、因子分类与构建:估值因子、成长因子、质量因子、动量因子、反转因子、波动率因子、流动性因子

好,咱们进入正题。这一章聊的是多因子模型的核心——因子本身。你想想看,没有好的因子,再牛的模型也是白搭。我个人习惯把因子分成几大类,每一类背后都有不同的逻辑和故事。今天咱们就把估值、成长、质量、动量、反转、波动率、流动性这七大类因子,一个一个拆开来看。

4.1 估值因子:便宜才是硬道理?

估值因子,说白了就是看股票贵不贵。最常用的三个指标:PE、PB、PS。

  • PE(市盈率):股价 / 每股收益。PE低,说明市场对这家公司的盈利预期不高,可能被低估。但要注意,亏损公司的PE是负的,没法直接用。
  • PB(市净率):股价 / 每股净资产。适合银行、保险这类重资产行业。PB小于1,理论上你买股票比买公司净资产还便宜。
  • PS(市销率):股价 / 每股销售收入。适合还没盈利的成长型公司,比如早期的亚马逊。

我在项目中遇到过一个问题:直接用原始PE做因子,效果很差。为什么?因为不同行业的PE差异太大了。银行股PE常年5-8倍,科技股PE动不动50倍以上。所以一定要做行业中性化处理。

核心要点:估值因子必须做行业中性化,否则你选出来的全是行业因子,不是估值因子。

4.2 成长因子:买的是未来

成长因子关注的是公司的增长速度。两个核心指标:营收增长率和利润增长率。

我一般用过去3-5年的复合增长率,而不是单年数据。单年数据太容易受偶然因素影响了。比如某公司今年卖了一套房产,利润暴增,但这不是常态。

构建成长因子时,有个坑要注意:基数效应。一家公司去年利润是1亿,今年是2亿,增长率100%。另一家公司去年利润是100亿,今年是110亿,增长率只有10%。你能说前者成长性更好吗?不一定。所以我会结合增长率的绝对值一起看。

小技巧:我习惯用「标准化增长率」——把增长率除以增长率的波动率。这样能剔除掉那些靠运气暴增的公司。

4.3 质量因子:好公司长什么样?

质量因子衡量的是公司的盈利能力、运营效率和财务健康度。三个经典指标:ROE、ROA、毛利率。

指标 公式 含义
ROE 净利润 / 净资产 股东每投入1块钱能赚多少
ROA 净利润 / 总资产 公司每用1块钱资产能赚多少
毛利率 (收入-成本) / 收入 产品本身的赚钱能力

ROE高不一定就是好公司。我曾经踩过一个坑:某公司ROE高达30%,但仔细一看,它的负债率也高得吓人。ROE可以通过加杠杆来虚增,所以一定要结合负债率来看。我一般会用「ROE - 负债率调整项」来构建质量因子。

注意:毛利率要分行业看。软件公司的毛利率可以到80%,零售公司可能只有20%。跨行业比较毛利率没有意义。

4.4 动量因子与反转因子:趋势还是回归?

这两个因子放在一起说,因为它们是一对冤家。

动量因子:过去N个月收益高的股票,未来还会继续涨。N一般取6-12个月。我习惯用过去12个月剔除最近1个月的收益,这样可以避免短期反转效应的影响。

反转因子:过去N个月收益低的股票,未来会反弹。N一般取1个月或更短。说白了就是「跌多了会涨」。

为什么会有这两种相反的效应?我个人理解是:动量反映的是趋势延续,反转反映的是过度反应后的修正。两者在不同时间尺度上起作用。

构建动量因子时,我建议用累计超额收益,而不是简单收益。因为大盘涨的时候,几乎所有股票都在涨,动量因子会失效。用超额收益可以剔除市场整体走势的影响。

4.5 波动率因子:风险与收益的博弈

波动率因子衡量的是股票价格的波动程度。常用的指标有:

  • 历史波动率:过去N天收益的标准差
  • 已实现波动率:日内高频收益的标准差
  • 特异波动率:剔除市场因子后的残差波动率

有意思的是,低波动率股票长期来看反而比高波动率股票收益更高。这就是著名的「低波动率异象」。我在做A股回测时也验证了这一点——低波动率组合的年化收益比高波动率组合高出3-5个百分点。

构建波动率因子时,要注意波动率聚集效应。高波动率时期往往持续一段时间,低波动率时期也是。所以直接用原始波动率做因子,会有很强的自相关性。我一般会做一阶差分,或者用波动率的排名变化来构建因子。

4.6 流动性因子:能买能卖才是王道

流动性因子衡量的是股票交易的难易程度。常用的指标有:

  • 换手率:成交量 / 流通股本
  • Amihud非流动性指标:日收益率的绝对值 / 日成交额
  • 买卖价差:卖一价 - 买一价

流动性差的股票,你买进去容易,想出来就难了。我见过一个策略,回测收益很高,但一实盘就崩了。为什么?因为策略选的全是小盘股,换手率极低,根本买不到足够的量。

构建流动性因子时,我建议用对数换手率而不是原始换手率。因为换手率的分布是右偏的,取对数后更接近正态分布,因子效果更好。

4.7 因子构建的通用流程

不管哪种因子,构建流程都差不多。我总结了一个四步法:

  1. 数据清洗:处理缺失值、异常值、停牌数据
  2. 因子计算:按照公式计算原始因子值
  3. 因子处理:去极值、标准化、中性化
  4. 因子检验:IC分析、分组回测、多空收益

下面是一个简单的因子构建代码示例:

import pandas as pd
import numpy as np

def build_pe_factor(df):
    """
    构建PE因子
    df: 包含'close', 'eps'列的DataFrame
    """
    # 计算PE
    df['pe'] = df['close'] / df['eps']
    
    # 处理异常值:用MAD方法去极值
    median = df['pe'].median()
    mad = (df['pe'] - median).abs().median()
    df['pe'] = df['pe'].clip(median - 5*mad, median + 5*mad)
    
    # 标准化
    df['pe_zscore'] = (df['pe'] - df['pe'].mean()) / df['pe'].std()
    
    return df[['pe_zscore']]

经验之谈:因子处理这一步,很多人会忽略。但恰恰是这一步,决定了因子最终的效果。我见过有人直接用原始因子做回测,结果因为几个极端值,整个策略都变形了。

4.8 本章小结

好了,七大类因子咱们都过了一遍。估值因子看便宜,成长因子看增速,质量因子看盈利,动量因子看趋势,反转因子看回归,波动率因子看风险,流动性因子看交易。每个因子都有自己的逻辑和适用场景。

最后说一句:没有完美的因子,只有合适的组合。下一章咱们就聊聊怎么把这些因子组合起来,构建一个稳健的多因子模型。

因子分类与构建知识体系 多因子模型 估值因子 PE / PB / PS 成长因子 营收增长 / 利润增长 质量因子 ROE / ROA / 毛利率 动量因子 过去N个月收益 反转因子 短期过度反应修正 波动率因子 历史波动率 / 特异波动率 流动性因子 换手率 / Amihud指标 数据清洗 因子计算 因子处理 因子检验

专注资料整理