1. 因子投资与行业轮动概述:定义、发展历史、核心逻辑与实战价值
1.1 到底什么是因子投资?
因子投资,说白了就是找规律。
你想想看,股票涨跌背后有没有共性?有的股票涨是因为业绩好,有的因为估值低,有的因为动量强。这些「共性原因」就是因子。我个人习惯把因子理解成「股票的基因」——每只股票都携带多种基因,而因子投资就是找出那些能持续带来超额收益的基因组合。
举个例子。我早期做量化时,发现一个简单规律:过去一个月涨得好的股票,下个月往往还能继续涨。这就是动量因子。后来我又发现,估值低的股票长期跑赢估值高的,这是价值因子。把这些因子组合起来,就是因子投资的核心。
核心定义:因子投资是一种系统化的投资方法,通过识别和暴露于特定的风险溢价来源(因子),来获取超越市场的收益。
1.2 行业轮动又是什么?
行业轮动,就是资金在不同行业之间「搬家」。
经济好的时候,资金往周期行业跑——钢铁、煤炭、有色。经济差的时候,资金躲进防御行业——医药、消费、公用事业。这个现象我入行第一年就注意到了。当时我还在用Excel手动拉数据,发现每次PMI数据发布后,行业涨跌顺序几乎像教科书一样标准。
为什么会这样?因为不同行业对宏观经济的敏感度不同。你想想看,经济复苏时,大家先买什么?先买汽车、家电这些可选消费。等经济过热了,资金才会去追资源品。这就是行业轮动的底层逻辑。
我的经验:行业轮动不是玄学,是经济周期在股市里的投影。我建议初学者先从「美林时钟」框架入手,虽然简单,但能帮你建立直觉。
1.3 因子投资的发展历史——从学术到实战
因子投资不是新鲜事。它的历史可以分成三个阶段:
| 阶段 | 时间 | 代表人物/事件 | 核心贡献 |
|---|---|---|---|
| 萌芽期 | 1960s-1980s | Sharpe、Lintner | CAPM模型,提出市场因子 |
| 发展期 | 1990s-2000s | Fama-French | 三因子模型(规模、价值、市场) |
| 成熟期 | 2010s至今 | 量化基金、Smart Beta | 多因子组合、行业因子、机器学习因子 |
我记得刚入行时,前辈们还在争论「因子到底有没有用」。那时候Fama-French的三因子模型刚被国内接受。现在呢?因子投资已经是量化机构的标配了。嗯,时代变化真快。
1.4 核心逻辑:因子 + 行业 = 轮动策略
把因子投资和行业轮动结合起来,逻辑其实很简单:
- 选因子:找出能预测行业收益的因子(比如动量、估值、盈利质量)
- 打分:用这些因子给每个行业打分
- 排序:按分数高低排序,买入高分行业,卖出低分行业
- 调仓:定期重新打分、重新排序
我做过一个回测,用动量因子做行业轮动。每个月末计算各行业过去3个月的涨幅,买入前5个行业,卖出后5个行业。年化超额收益大概在8%左右。当然,这是理想情况,实盘会有摩擦成本。
避坑指南:我曾经犯过一个错误——直接用个股因子去预测行业。结果发现行业内部的个股差异太大,导致信号不稳定。后来我改用行业层面的因子(比如行业平均估值、行业动量),效果才稳定下来。
1.5 实战价值:为什么值得做?
因子投资在行业轮动中的价值,我总结为三点:
- 系统化:不再凭感觉选行业,而是用数据说话
- 可复制:策略逻辑清晰,可以回测、可以优化
- 可解释:赚了亏了都知道原因,不是黑箱操作
你想想看,传统的基本面分析,研究员说「我看好新能源」,你问为什么,他说「因为政策支持、技术突破」。听起来有道理,但你怎么验证?因子投资不一样。你说「我买入低估值行业」,我可以回测过去10年,低估值行业是不是真的跑赢了高估值行业。这就是系统化的力量。
1.6 知识体系框架
下面这张图是我自己梳理的本章知识结构,方便你建立整体认知:
1.7 一个简单的代码示例
最后,给你看一段我早期写的代码。虽然简陋,但能说明因子投资在行业轮动中的基本思路:
import pandas as pd
import numpy as np
# 模拟行业收益率数据
np.random.seed(42)
industries = ['银行', '地产', '医药', '消费', '科技', '能源']
dates = pd.date_range('2020-01-01', periods=12, freq='M')
# 生成模拟数据
data = pd.DataFrame(
np.random.randn(12, 6) * 0.05 + 0.01,
index=dates,
columns=industries
)
# 计算动量因子(过去3个月收益率)
momentum = data.rolling(3).mean()
# 每月末选前2个行业
def select_top_industries(row, n=2):
return row.nlargest(n).index.tolist()
selected = momentum.apply(select_top_industries, axis=1, n=2)
print("每月选中的行业:")
print(selected)
这段代码虽然简单,但核心思想已经体现出来了:用因子(动量)给行业排序,然后选排名靠前的行业。当然,实战中要考虑的东西多得多——因子组合、风险控制、交易成本等等。这些我们后面会慢慢展开。
一个小建议:刚开始做因子投资,别追求复杂。从单因子开始,跑通流程,再慢慢加东西。我见过太多人一上来就搞十几个因子,结果哪个因子贡献了多少都说不清楚。