一、因子投资基础:什么是因子?因子投资的发展历程、因子投资的核心理念
大家好,我是老李。今天咱们开始聊因子组合优化与权重分配。第一节课,我想先带大家把地基打牢——到底什么是因子?这东西是怎么一步步变成今天这个样子的?
说实话,我刚开始接触量化那会儿,听到“因子”两个字,第一反应是“这不就是选股指标吗?”后来踩了不少坑才明白,因子远不止这么简单。
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 因子投资的核心理念
因子投资的核心理念,我用一句话概括:识别并系统性地暴露于有溢价的风险因子。
这里面有三个关键词:
- 识别:找到真正能解释收益的因子,而不是噪音
- 系统性:不是靠主观判断,而是用规则化的方式
- 风险溢价:因子收益本质上是对承担风险的补偿
你想想看,为什么价值因子长期有效?因为买便宜的股票,意味着你要承受“价值陷阱”的风险——可能公司基本面真的恶化了。这个风险不是白担的,市场会给你补偿。
我个人习惯把因子投资和传统投资做个对比:
| 维度 | 传统投资 | 因子投资 |
|---|---|---|
| 决策依据 | 个股分析、主观判断 | 因子暴露、系统规则 |
| 风险来源 | 公司特有风险 | 系统性因子风险 |
| 收益来源 | 选股能力 | 因子溢价 |
| 可复制性 | 低(依赖个人能力) | 高(规则化、可回测) |
我曾经犯过一个错误。刚开始做因子投资时,我试图把所有能想到的因子都塞进模型,觉得因子越多越安全。结果呢?过拟合得一塌糊涂,样本外表现惨不忍睹。后来我才明白,因子投资的核心不是堆因子,而是理解因子。
避坑指南:我曾经在实盘策略里同时用了市盈率和市净率两个因子,结果发现它们相关性高达0.85。这导致因子暴露重复,组合风险没分散,反而集中了。后来我学会了做因子相关性分析,才避免了这个坑。
1.4 因子投资的知识体系
下面这张图是我自己整理的因子投资知识体系,大家可以看看各个模块之间的关系:
这张图把因子投资的三个核心模块串起来了。左边是因子定义,中间是发展历程,右边是核心理念。大家可以看到,这三个模块是相互支撑的——没有清晰的定义,就谈不上发展;没有发展历程的理解,核心理念就成了空中楼阁。
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