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 核心逻辑:因子 + 行业 = 轮动策略

把因子投资和行业轮动结合起来,逻辑其实很简单:

  1. 选因子:找出能预测行业收益的因子(比如动量、估值、盈利质量)
  2. 打分:用这些因子给每个行业打分
  3. 排序:按分数高低排序,买入高分行业,卖出低分行业
  4. 调仓:定期重新打分、重新排序

我做过一个回测,用动量因子做行业轮动。每个月末计算各行业过去3个月的涨幅,买入前5个行业,卖出后5个行业。年化超额收益大概在8%左右。当然,这是理想情况,实盘会有摩擦成本。

避坑指南:我曾经犯过一个错误——直接用个股因子去预测行业。结果发现行业内部的个股差异太大,导致信号不稳定。后来我改用行业层面的因子(比如行业平均估值、行业动量),效果才稳定下来。

1.5 实战价值:为什么值得做?

因子投资在行业轮动中的价值,我总结为三点:

  • 系统化:不再凭感觉选行业,而是用数据说话
  • 可复制:策略逻辑清晰,可以回测、可以优化
  • 可解释:赚了亏了都知道原因,不是黑箱操作

你想想看,传统的基本面分析,研究员说「我看好新能源」,你问为什么,他说「因为政策支持、技术突破」。听起来有道理,但你怎么验证?因子投资不一样。你说「我买入低估值行业」,我可以回测过去10年,低估值行业是不是真的跑赢了高估值行业。这就是系统化的力量。

1.6 知识体系框架

下面这张图是我自己梳理的本章知识结构,方便你建立整体认知:

因子投资与行业轮动知识体系 因子投资 行业轮动 因子+行业轮动 发展历史 萌芽期 (1960s-1980s) 发展期 (1990s-2000s) 成熟期 (2010s至今) 核心逻辑流程 选因子 打分 排序 调仓 实战价值 系统化 可复制 可解释

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)

这段代码虽然简单,但核心思想已经体现出来了:用因子(动量)给行业排序,然后选排名靠前的行业。当然,实战中要考虑的东西多得多——因子组合、风险控制、交易成本等等。这些我们后面会慢慢展开。

一个小建议:刚开始做因子投资,别追求复杂。从单因子开始,跑通流程,再慢慢加东西。我见过太多人一上来就搞十几个因子,结果哪个因子贡献了多少都说不清楚。

蓝海数据掘金营,专注资料整理