第四章:因子分类体系——估值、成长、质量、动量、波动率、流动性

做量化这几年,我见过不少新手一上来就猛怼几百个因子,结果回测曲线漂亮得像假图,实盘一跑就崩。说白了,因子不是越多越好,关键得知道每个因子背后在讲什么故事。

今天咱们就把六大类因子掰开揉碎聊清楚。我个人习惯把因子分成两类:一类是「赚什么钱」,另一类是「怎么亏钱」。估值、成长、质量属于前者,动量、波动率、流动性属于后者。你想想看,是不是这个理?

核心观点:因子分类不是为了分类而分类,而是为了理解收益来源和风险暴露。每类因子都有其经济学逻辑和统计特征,乱用会出大问题。

因子分类体系 收益来源因子 📊 估值因子 📈 成长因子 ✅ 质量因子 风险暴露因子 ⚡ 动量因子 🌊 波动率因子 💧 流动性因子 估值、成长、质量 → 解释股票为什么涨 动量、波动率、流动性 → 解释股票怎么波动

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

估值因子是量化界的「老炮儿」。PE、PB、PS、PCF,这些指标大家应该不陌生。但我得说句实话——光看PE低就买,你可能会掉坑里。

我在项目中遇到过一只银行股,PE只有4倍,看着便宜得离谱。结果呢?坏账率飙升,PE从4倍变成2倍,股价腰斩。为什么?因为PE是静态的,它反映的是过去,不是未来。

我的经验:估值因子最好做「相对估值」,也就是和行业均值比、和历史分位数比。绝对数值意义不大。比如一个科技公司PE 30倍,看着贵,但如果行业平均是50倍,它反而是便宜的。

常用的估值因子构造方式:

  • PE_TTM: 滚动市盈率,用过去12个月净利润
  • PB_LF: 市净率,用最新财报净资产
  • PS_TTM: 市销率,适合亏损企业
  • EV/EBITDA: 企业价值倍数,跨行业比较更靠谱
# 估值因子计算示例
import pandas as pd

def calc_pe_ttm(market_cap, net_profit_ttm):
    """计算滚动市盈率,注意处理负利润"""
    pe = market_cap / net_profit_ttm
    # 负PE没有意义,设为NaN
    pe[net_profit_ttm <= 0] = np.nan
    # 极端值截断,我一般用1%和99%分位数
    lower = pe.quantile(0.01)
    upper = pe.quantile(0.99)
    pe = pe.clip(lower, upper)
    return pe

2. 成长因子:买的是未来

成长因子,说白了就是看一家公司「跑得快不快」。营收增速、利润增速、分析师预期增速,这些都是成长因子的核心。

但这里有个坑——高成长往往伴随着高估值。我记得2019年有一批科技股,营收增速超过100%,市场给到100倍PE。结果增速一放缓,股价直接腰斩。所以成长因子不能单独用,得和估值因子搭配。

成长指标 计算方式 注意事项
营收增长率 (本期营收 - 上期营收) / 上期营收 剔除并购带来的非内生增长
净利润增长率 (本期净利润 - 上期净利润) / 上期净利润 注意非经常性损益
ROE增长率 杜邦分解后的可持续增长率 比单纯利润增速更稳定
分析师预期调整 上调家数 - 下调家数 反映市场情绪变化

避坑指南:我曾经用单季度营收增速做因子,结果回测效果极好。后来发现是因为金融行业季度波动大,导致因子在季报发布前后有严重的「未来信息泄露」。解决办法是用TTM增速,或者做行业中性化处理。

3. 质量因子:好公司不等于好股票

质量因子衡量的是公司的「体质」。ROE、毛利率、资产负债率、现金流质量,这些指标能告诉你一家公司是不是「优等生」。

但有意思的是,纯质量因子在A股表现并不好。为什么?因为好公司大家都看得到,价格已经反映在股价里了。我做过一个测试,用ROE最高的10%股票构建组合,年化收益还不如沪深300。

质量因子真正的用法是「排雷」——把财务质量差的公司剔除掉,而不是用它来选股。比如毛利率低于行业均值1个标准差以上的公司,直接排除。

# 质量因子排雷示例
def quality_screening(df):
    """多维度质量筛选"""
    # 毛利率低于20%的剔除
    df = df[df['gross_margin'] > 0.2]
    # 资产负债率高于80%的剔除(金融行业除外)
    df = df[(df['debt_ratio'] < 0.8) | (df['industry'] == '金融')]
    # 经营现金流为负的剔除
    df = df[df['operating_cf'] > 0]
    return df

4. 动量因子:趋势是你的朋友

动量因子,就是「追涨杀跌」的量化版本。过去3-12个月涨得好的股票,未来一段时间往往继续涨。这个现象在学术界叫「动量效应」。

但我得提醒你,A股的动量效应和美股不太一样。美股是长期动量(12个月)有效,A股是短期动量(1-3个月)更明显。而且A股有严重的「反转效应」——涨多了必跌,跌多了必涨。

关键点:动量因子在A股需要做「动量+反转」的复合处理。我常用的方法是:用过去3个月收益做动量,但剔除过去1个月收益最高的10%股票(防止追高被套)。

5. 波动率因子:低波动异象

波动率因子很有意思。传统金融学认为高风险高收益,但现实中恰恰相反——低波动率的股票长期收益反而更高。这就是著名的「低波动异象」。

为什么会这样?我个人的理解是:高波动股票往往被散户追捧,导致价格虚高;低波动股票没人关注,反而有安全边际。再加上机构投资者有「彩票偏好」,喜欢买高波动股票搏一把,结果反而亏了钱。

波动率因子的构造方式:

  • 历史波动率: 过去60天日收益率的标准差
  • 特异波动率: 剔除市场因子后的残差波动率
  • 下行波动率: 只考虑负收益的波动率

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

流动性因子,说白了就是「能不能顺利买卖」。换手率、成交额、买卖价差、Amihud非流动性指标,这些都是衡量流动性的工具。

我在实盘中吃过流动性的亏。有一次策略信号出来,我买了一只小盘股,结果挂单半小时都没成交。等成交了,价格已经滑了2%。这就是流动性风险——你看到的收益,可能被交易成本吃掉一大半。

流动性指标 含义 阈值参考
日均换手率 交易活跃度 < 1% 为低流动性
日均成交额 资金容量 < 5000万 需谨慎
Amihud指标 价格冲击成本 > 0.1 为高冲击
买卖价差 交易摩擦成本 > 0.5% 需注意

实用技巧:流动性因子最好作为「权重调整」工具,而不是选股标准。比如低流动性股票降低仓位,高流动性股票正常配置。这样既能控制交易成本,又不会错过潜在机会。

嗯,这六大类因子,每一类都有它的脾气。估值因子怕「价值陷阱」,成长因子怕「增速放缓」,质量因子怕「价格透支」,动量因子怕「趋势反转」,波动率因子怕「黑天鹅」,流动性因子怕「交易枯竭」。

做多因子模型,说白了就是把这些因子组合起来,让它们互相弥补、互相制约。下一章咱们就聊聊怎么把这些因子「揉」在一起,构建真正的Alpha信号。


专注资料整理