一、因子投资基础:什么是因子?因子投资的发展历程、因子投资的核心理念

大家好,我是老李。今天咱们开始聊因子组合优化与权重分配。第一节课,我想先带大家把地基打牢——到底什么是因子?这东西是怎么一步步变成今天这个样子的?

说实话,我刚开始接触量化那会儿,听到“因子”两个字,第一反应是“这不就是选股指标吗?”后来踩了不少坑才明白,因子远不止这么简单。

1.1 什么是因子?

因子,说白了就是一种能够解释资产收益差异的共性特征。你想想看,为什么茅台涨的时候,五粮液也跟着涨?为什么银行股跌的时候,保险股也难受?因为它们背后有共同的驱动力。

我个人习惯把因子分成三类:

  • 风格因子:市值、估值、动量、波动率这些
  • 宏观因子:利率、通胀、经济增长
  • 统计因子:主成分分析提取出来的抽象因子

举个例子,你写一个选股策略,用市盈率排序买便宜的股票。这里的“市盈率”就是一个因子暴露。但要注意,因子不是指标本身,而是指标背后那个能解释风险收益的抽象概念

核心理解:因子 = 系统性风险的来源 = 收益的驱动力

一个特征能成为因子,必须满足:
① 能解释截面收益差异
② 有经济学逻辑支撑
③ 样本外表现稳定

我在项目中遇到过一件事。有个同事拿了几百个技术指标跑回测,收益曲线漂亮得不行。结果实盘三个月就崩了。为什么?因为那些指标只是统计上的巧合,没有因子逻辑。嗯,这里要注意——不是所有能赚钱的信号都叫因子

1.2 因子投资的发展历程

因子投资不是凭空冒出来的。我把它分成四个阶段,大家看看自己现在处在哪个阶段:

阶段 时间 代表人物/理论 核心贡献
萌芽期 1950s-1970s Markowitz、Sharpe 均值-方差框架、CAPM
发展期 1980s-1990s Fama-French 三因子模型(市值、估值、市场)
成熟期 2000s-2010s Carhart、Novy-Marx 动量因子、盈利因子等
爆发期 2010s至今 量化机构、学术圈 成百上千个因子、机器学习因子

我记得最早接触因子投资时,看的还是Fama和French那篇1993年的论文。当时觉得三因子模型简直是神作——原来市场收益可以被拆解得这么清楚。后来做多了才发现,因子也在进化

举个例子,2000年之前,市值因子(小盘股溢价)非常显著。但2000年之后,尤其是2010年以后,小盘股溢价在美国市场几乎消失了。为什么会这样?因为太多人知道了这个因子,大家都在买小盘股,溢价就被套利掉了。

我的经验:因子有生命周期。一个因子从被发现到失效,平均5-10年。所以做因子投资,不能死守老一套。

1.3 因子投资的核心理念

因子投资的核心理念,我用一句话概括:识别并系统性地暴露于有溢价的风险因子

这里面有三个关键词:

  1. 识别:找到真正能解释收益的因子,而不是噪音
  2. 系统性:不是靠主观判断,而是用规则化的方式
  3. 风险溢价:因子收益本质上是对承担风险的补偿

你想想看,为什么价值因子长期有效?因为买便宜的股票,意味着你要承受“价值陷阱”的风险——可能公司基本面真的恶化了。这个风险不是白担的,市场会给你补偿。

我个人习惯把因子投资和传统投资做个对比:

维度 传统投资 因子投资
决策依据 个股分析、主观判断 因子暴露、系统规则
风险来源 公司特有风险 系统性因子风险
收益来源 选股能力 因子溢价
可复制性 低(依赖个人能力) 高(规则化、可回测)

我曾经犯过一个错误。刚开始做因子投资时,我试图把所有能想到的因子都塞进模型,觉得因子越多越安全。结果呢?过拟合得一塌糊涂,样本外表现惨不忍睹。后来我才明白,因子投资的核心不是堆因子,而是理解因子

避坑指南:我曾经在实盘策略里同时用了市盈率和市净率两个因子,结果发现它们相关性高达0.85。这导致因子暴露重复,组合风险没分散,反而集中了。后来我学会了做因子相关性分析,才避免了这个坑。

1.4 因子投资的知识体系

下面这张图是我自己整理的因子投资知识体系,大家可以看看各个模块之间的关系:

因子投资 因子定义与分类 发展历程 核心理念 风格因子 宏观因子 统计因子 因子 vs 指标 萌芽期(1950s) 发展期(1980s) 成熟期(2000s) 爆发期(2010s) 识别因子 系统性暴露 风险溢价 因子生命周期 因子投资 = 用系统化方式获取风险溢价

这张图把因子投资的三个核心模块串起来了。左边是因子定义,中间是发展历程,右边是核心理念。大家可以看到,这三个模块是相互支撑的——没有清晰的定义,就谈不上发展;没有发展历程的理解,核心理念就成了空中楼阁。

1.5 一个简单的因子示例

光说不练假把式。我给大家看一个最简单的因子构建代码,用Python实现:

import pandas as pd
import numpy as np

# 假设我们有股票数据
# 构建一个简单的价值因子:市盈率的倒数(E/P)
def build_value_factor(price_data, earnings_data):
    """
    构建价值因子
    price_data: 价格数据,每列是一只股票
    earnings_data: 每股收益数据
    """
    # 计算市盈率
    pe_ratio = price_data / earnings_data
    
    # 因子值 = 市盈率的倒数
    factor_value = 1 / pe_ratio
    
    # 标准化处理(去极值、中性化)
    factor_value = factor_value.clip(
        lower=factor_value.quantile(0.01),
        upper=factor_value.quantile(0.99)
    )
    
    return factor_value

# 使用示例
# factor = build_value_factor(price_df, eps_df)

这段代码很简单,但包含了因子构建的核心步骤:计算原始指标 → 转化为因子值 → 处理极端值。我在实际项目中,还会加上行业中性化和市值中性化处理,这个后面章节会详细讲。

记住:因子构建只是第一步。真正难的是因子检验、因子组合、权重分配。这也是咱们这门课后面要重点讲的内容。

好了,第一章的内容就到这里。因子投资的基础概念、发展历程和核心理念,希望大家能有个整体认识。下一章咱们开始聊因子数据的获取与预处理——这可是个容易踩坑的环节。


公众号:蓝海数据掘金营,微信deep3321