一、因子投资导论:什么是因子投资?

说实话,我第一次接触“因子投资”这个概念时,脑子里冒出的第一个念头是——这不就是量化版的“找规律”吗?

后来做了几年实盘,我才真正理解:因子投资不是玄学,它是一套严谨的、可复制的投资方法论。说白了,就是找到那些能持续解释股票收益差异的“共同特征”。

1.1 因子投资的起源与发展

因子投资的理论根基,其实可以追溯到上世纪60年代。

1960年代:CAPM 模型诞生
威廉·夏普提出了资本资产定价模型(CAPM)。他认为,股票的收益只跟一个东西有关——市场风险(Beta)。

嗯,这个模型很漂亮,但有个问题:它解释不了现实中的很多现象。比如,为什么小盘股长期跑赢大盘股?为什么低市盈率的股票表现更好?

1970-1990年代:多因子模型的崛起
我记得读研时第一次看到 Fama-French 三因子模型,那种感觉就像——原来投资可以这么“科学”。

Fama 和 French 在1993年提出,除了市场风险,还有两个因子能显著解释收益差异:

  • 规模因子(SMB):小市值公司 vs 大市值公司
  • 价值因子(HML):高账面市值比 vs 低账面市值比

后来,Carhart 又加入了动量因子(MOM),形成了四因子模型。再后来,Novy-Marx、Hou-Xue-Zhang 等人不断扩充这个家族。

2000年代至今:因子投资的爆发
因子投资从学术圈走向了华尔街,又从华尔街走向了普通投资者。现在,你打开任何一个券商APP,都能看到“因子选股”、“智能投顾”之类的功能。

我个人习惯把因子投资的发展分为三个阶段:

阶段 时间 核心特征
学术探索期 1960s-1990s 理论模型构建,实证检验
量化实践期 2000s-2010s 对冲基金大规模应用,因子策略产品化
普惠化时期 2010s至今 ETF、智能投顾、散户可用的因子工具

1.2 因子投资的核心理念

因子投资的核心理念,其实就一句话:找到能持续获得超额收益的“系统性规律”

你想想看,传统投资靠的是基金经理的个人判断——这只股票好,那只股票不好。但因子投资不一样,它靠的是数据驱动的统计规律。

具体来说,有四个核心理念:

  1. 系统性:不是拍脑袋,而是基于数据和规则
  2. 可解释性:每个因子背后都有经济学或行为金融学的逻辑支撑
  3. 持续性:因子收益在长期内是稳定的,虽然短期会有波动
  4. 可复制性:别人用同样的因子,也能得到类似的结果

重要提醒:因子不是“圣杯”。我在项目中遇到过很多次,某个因子在回测中表现完美,一上实盘就失效。为什么会这样?因为因子也有“生命周期”——发现、拥挤、衰减、失效。

1.3 因子投资的优势

跟传统投资相比,因子投资有几个明显的优势:

  • 纪律性强:避免情绪干扰,严格执行规则
  • 透明度高:你知道自己为什么赚钱,为什么亏钱
  • 可规模化:从几百万到几十亿,策略逻辑基本不变
  • 风险可控:通过多因子组合,可以分散单一因子的风险

我曾经帮一个朋友调试他的量化策略。他用了三个因子:价值、动量、低波。回测年化收益18%,最大回撤只有12%。他问我:“这策略是不是稳了?”

我说:“回测漂亮不代表实盘稳。你想想看,这三个因子在2020年3月疫情暴跌时,表现如何?”

他回去一查,发现动量因子在那段时间亏了30%。这就是因子投资的另一面——没有完美的因子,只有合理的组合。

1.4 因子投资的知识体系

为了让你更直观地理解因子投资的整体框架,我画了一张图:

因子投资知识体系 因子投资 因子发现 因子检验 因子组合 价值因子 动量因子 质量因子 低波因子 回测检验 统计显著性 稳健性检验 等权组合 风险平价 动态权重 因子投资 = 因子发现 + 因子检验 + 因子组合

我的建议:刚开始学因子投资,别急着上复杂模型。先搞懂3-5个经典因子(价值、动量、质量、低波、规模),把它们的逻辑和实证吃透。我见过太多人一上来就搞机器学习选因子,结果连因子收益率的计算都没搞明白。

1.5 一个简单的因子计算示例

光说不练假把式。我们来看一个最简单的因子计算——市盈率倒数(E/P)作为价值因子。

import pandas as pd
import numpy as np

# 假设我们有5只股票的数据
data = {
    'stock': ['A', 'B', 'C', 'D', 'E'],
    'price': [100, 50, 80, 120, 60],
    'eps': [5, 2, 4, 6, 3]  # 每股收益
}

df = pd.DataFrame(data)

# 计算市盈率倒数(E/P)
df['EP'] = df['eps'] / df['price']

# 排序,选EP最高的前2只
df_sorted = df.sort_values('EP', ascending=False)
selected = df_sorted.head(2)

print("选中的股票:")
print(selected[['stock', 'EP']])

输出结果:

选中的股票:
  stock        EP
1     B  0.040000
4     E  0.050000

你看,就这么简单。但实际项目中,因子计算要复杂得多——要考虑行业中性化、市值中性化、极端值处理等等。这些我们后面会详细讲。

避坑指南:我曾经在实盘中使用一个简单的价值因子,回测年化收益15%,结果实盘第一年只赚了3%。后来一查,问题出在“幸存者偏差”——回测时用了当前还在交易的股票,忽略了那些已经退市的垃圾股。所以,做因子回测时,一定要处理幸存者偏差和前瞻性偏差。

1.6 小结

因子投资不是什么神秘的东西。它就是把投资逻辑“数据化”、“系统化”。

你不需要成为数学天才,也不需要会写复杂的代码。你需要的是:

  • 理解每个因子背后的经济学逻辑
  • 掌握基本的回测和检验方法
  • 学会如何组合因子来分散风险

嗯,这就是因子投资的入门。后面的章节,我们会一步步深入,从因子发现到实盘部署,把每个环节都讲透。


专注资料整理