一、因子投资基础:什么是因子、因子溢价来源、因子投资组合构建逻辑
各位同学,咱们今天聊点实在的。
因子投资,说白了就是找规律。你想想看,市场上几千只股票,为什么有的涨有的跌?背后肯定有某种力量在驱动。这种力量,就是因子。
1.1 什么是因子?
因子,是能解释股票收益的共同特征。我习惯把它理解成「股票的基因」。
举个例子:
- 价值因子:低市盈率的股票,长期跑赢高市盈率的
- 动量因子:过去涨得好的股票,未来一段时间还会涨
- 规模因子:小市值公司,长期收益高于大市值公司
- 质量因子:高ROE、低负债的公司,表现更稳健
每个因子就像一把尺子,量出股票的某种特质。我个人做策略时,至少会看3-5个因子,单一因子太容易翻车了。
核心观点:因子不是玄学,是统计学上显著、经济学上有解释的收益来源。
1.2 因子溢价从哪来?
这个问题我当年也困惑过。为什么小市值公司长期收益更高?为什么便宜的公司反而赚更多?
学术界主要有两派解释:
| 解释流派 | 核心观点 | 我的理解 |
|---|---|---|
| 风险补偿说 | 因子溢价是对承担额外风险的补偿 | 小公司波动大,流动性差,溢价是合理的 |
| 行为偏差说 | 投资者系统性犯错,因子溢价是纠偏 | 大家都追热门股,冷门股反而被低估 |
我个人更倾向于两者兼有。举个例子,价值因子——便宜的公司往往被市场抛弃,这里面既有风险因素(公司确实可能出问题),也有行为因素(大家过度悲观了)。
避坑指南:我曾经以为因子溢价是永恒的,后来发现不是。2018年到2020年,价值因子连续跑输成长因子,很多同行扛不住清盘了。因子会失效,这是常态。
1.3 因子投资组合构建逻辑
好,理论说完了,咱们上点干货。因子投资组合怎么搭?我一般分四步走:
- 因子定义:把因子量化成可计算的指标
- 股票打分:每只股票在每个因子上打分
- 组合构建:选得分高的股票,配权重
- 再平衡:定期调整,保持因子暴露
下面我写一段Python代码,演示最简单的多因子打分流程:
import pandas as pd
import numpy as np
# 模拟数据:10只股票,3个因子
df = pd.DataFrame({
'stock': ['A','B','C','D','E','F','G','H','I','J'],
'pe_ratio': [8, 15, 22, 10, 30, 12, 18, 25, 9, 20],
'momentum': [0.15, 0.08, -0.05, 0.12, 0.02, 0.18, 0.06, -0.02, 0.10, 0.04],
'size': [50, 200, 500, 80, 1000, 30, 150, 800, 60, 300] # 市值(亿)
})
# 因子标准化(Z-score)
def zscore(series):
return (series - series.mean()) / series.std()
# 注意:PE是反向因子,越低越好
df['pe_z'] = -zscore(df['pe_ratio']) # 加负号
df['mom_z'] = zscore(df['momentum'])
df['size_z'] = -zscore(df['size']) # 小市值加分
# 等权合成综合得分
df['total_score'] = (df['pe_z'] + df['mom_z'] + df['size_z']) / 3
# 选前30%的股票
top_n = int(len(df) * 0.3)
selected = df.nlargest(top_n, 'total_score')
print("选中的股票:")
print(selected[['stock', 'total_score']])
这段代码很基础,但核心逻辑都在了。你想想看,实际做的时候,因子数量会更多,权重也不是简单的等权,但骨架就是这个。
注意:标准化方法有很多种,Z-score、百分位排名、MAD(中位数绝对偏差)我都用过。我个人偏好MAD,对异常值更鲁棒。曾经有一次数据里有个极端值,Z-score直接让整个打分系统崩了,从那以后我就改用MAD了。
1.4 本章知识体系
下面这张图,是我自己梳理的因子投资基础框架,你看一眼就能明白整体脉络:
这张图把本章的核心逻辑串起来了。从因子定义出发,理解溢价来源,最后落到组合构建。每一步都有坑,后面章节我会一个一个拆开讲。
个人经验:刚开始做因子投资时,我总想找「万能因子」。后来发现,没有哪个因子能通吃所有市场环境。关键是理解每个因子背后的逻辑,知道什么时候该用它,什么时候该躲着它。
嗯,第一章就到这里。因子投资的门槛不高,但要做好,需要大量实践。代码可以复制,但经验得自己攒。
公众号:蓝海资料掘金营,微信deep3321