第二章:常见因子家族全景解析

做量化投资这些年,我接触过形形色色的因子。说实话,真正经得起时间考验的,也就那么几大家族。今天咱们就把这些「常青树」因子掰开揉碎,好好聊一聊。

我个人习惯把因子分为六大类:价值、动量、质量、低波、规模和成长。你想想看,这六个维度基本覆盖了股票收益的绝大部分来源。嗯,咱们一个一个来看。

2.1 价值因子(Value Factor)

价值因子,说白了就是「捡便宜货」。买那些被市场低估的股票,等价格回归合理水平。我在项目中遇到过不少新手,以为市盈率低就是价值股,结果踩了「价值陷阱」的坑。

常用的价值指标有这些:

指标 计算公式 说明
市盈率(P/E) 股价 / 每股收益 越低越便宜,但要注意盈利质量
市净率(P/B) 股价 / 每股净资产 适合重资产行业
市销率(P/S) 股价 / 每股销售额 适合亏损但营收高的公司
股息率(Dividend Yield) 每股股息 / 股价 高股息往往意味着低估
避坑指南:我曾经用单一P/E指标选股,结果选到了一堆夕阳行业。后来我学会了多指标综合打分,效果好了不少。

2.2 动量因子(Momentum Factor)

动量因子,就是「追涨杀跌」的学术版。过去涨得好的股票,未来一段时间还会继续涨。为什么会这样?行为金融学告诉我们,这是投资者反应不足和羊群效应共同作用的结果。

我常用的动量指标:

  • 过去12个月收益率(剔除最近1个月,避免短期反转)
  • 过去6个月收益率(中期动量,A股效果不错)
  • 过去3个月收益率(短期动量,噪音较大)
  • RSI相对强弱指标(辅助判断超买超卖)
个人经验:动量因子在A股市场,持有期3-6个月效果最好。太短了容易被洗出去,太长了动量会衰减。

2.3 质量因子(Quality Factor)

质量因子,就是选「好公司」。盈利能力强的、财务健康的、管理优秀的公司,长期来看能跑赢市场。我记得刚开始做多因子模型时,总觉得质量因子太「基本面」了,后来发现它和动量因子搭配起来,效果出奇的好。

核心指标包括:

# 质量因子常用指标
ROE(净资产收益率)  > 15%  # 盈利能力
资产负债率          < 60%  # 财务安全
毛利率              > 30%  # 竞争优势
经营性现金流/净利润  > 1.0  # 盈利质量

重要提醒:质量因子不是越高越好。ROE超过40%的公司,往往不可持续。我见过太多高ROE公司,第二年就暴雷了。

2.4 低波因子(Low Volatility Factor)

低波因子,听起来有点反直觉——波动小的股票,长期收益反而更好。这被称为「低波动异象」。我在实盘中发现,低波因子在熊市里特别抗跌,牛市里虽然跑不赢,但回撤控制得非常好。

衡量波动的方法:

  • 历史波动率:过去252个交易日收益率的标准差
  • 贝塔系数:相对于市场的敏感度
  • 最大回撤:过去一年的最大跌幅
  • 特异波动率:剔除市场因素后的剩余波动
注意:低波因子在极端行情下会失效。比如2020年疫情暴跌时,所有股票波动都很大,低波因子也扛不住。这时候需要结合其他因子一起看。

2.5 规模因子(Size Factor)

规模因子,就是「小市值效应」。小盘股长期跑赢大盘股,这是Fama-French三因子模型的核心发现之一。不过,A股的小市值效应比美股更明显,但波动也更大。

我一般这样处理规模因子:

# 规模因子构建示例
import pandas as pd

def size_factor(df):
    """
    df: 包含市值数据的DataFrame
    返回:标准化后的规模因子值
    """
    # 取对数市值
    df['log_mktcap'] = np.log(df['market_cap'])
    # 市值中性化处理(剔除行业影响)
    df['size_neutral'] = df.groupby('industry')['log_mktcap'].transform(
        lambda x: (x - x.mean()) / x.std()
    )
    return df['size_neutral']
经验之谈:纯小市值策略在A股年化收益能到15-20%,但最大回撤也经常超过40%。我建议把规模因子和其他因子结合,比如「小市值+低波」,效果会好很多。

2.6 成长因子(Growth Factor)

成长因子,就是买「高增长」的公司。营收增长快、利润增长快的公司,市场愿意给更高的估值。但这里有个坑——高增长往往不可持续。

常用的成长指标:

指标 计算方式 注意事项
营收增长率 (本期营收-上期营收)/上期营收 连续3年增长更可靠
净利润增长率 (本期净利润-上期净利润)/上期净利润 小心非经常性损益
分析师预期增长率 未来1-2年EPS增长率预测 预期差是超额收益来源
可持续增长率 ROE × (1-分红率) 反映内生增长能力

核心逻辑:成长因子和价值因子其实是硬币的两面。高成长对应高估值,低成长对应低估值。我习惯把这两个因子结合起来做「GARP策略」(Growth at a Reasonable Price),也就是用合理的价格买成长。

2.7 因子家族知识体系

下面这张图,是我自己总结的因子家族全景图。你可以看到,六大因子之间既有独立性,又有交叉关系。

因子家族知识体系 价值因子 P/E, P/B, P/S, 股息率 动量因子 12M动量, 6M动量, RSI 质量因子 ROE, 负债率, 毛利率 低波因子 历史波动率, Beta, 回撤 规模因子 市值, 对数市值, 中性化 成长因子 营收增长, 利润增长, 预期 因子之间的交叉关系 价值 + 成长 = GARP策略 动量 + 质量 = 趋势增强 低波 + 规模 = 防御小盘 六大因子覆盖了股票收益的绝大部分来源 实际应用中建议3-5个因子组合使用

2.8 因子组合的实战思路

单因子策略,说白了就是「赌一个方向」。我建议至少用3个因子做组合。举个例子:

# 多因子打分组合示例
def multi_factor_score(df):
    """
    综合打分:价值 + 动量 + 质量
    权重分配:价值40% + 动量30% + 质量30%
    """
    # 各因子标准化
    df['value_z'] = (df['value_score'] - df['value_score'].mean()) / df['value_score'].std()
    df['momentum_z'] = (df['momentum_score'] - df['momentum_score'].mean()) / df['momentum_score'].std()
    df['quality_z'] = (df['quality_score'] - df['quality_score'].mean()) / df['quality_score'].std()
    
    # 综合得分
    df['total_score'] = 0.4 * df['value_z'] + 0.3 * df['momentum_z'] + 0.3 * df['quality_z']
    
    return df.sort_values('total_score', ascending=False)
个人建议:因子权重不是固定的。市场风格切换时,我会动态调整权重。比如2023年A股偏价值风格,我就把价值因子的权重提到50%以上。

好了,六大因子家族就聊到这儿。记住一句话:没有完美的因子,只有合适的组合。下一章咱们聊聊因子数据的获取和清洗,那可是实盘的第一步。

专注资料整理