第三章 因子分类与定义:基本面因子、技术因子、另类数据因子
做量化这几年,我最大的感触就是——因子是策略的灵魂。你想想看,没有好的因子,再牛的模型也是白搭。今天咱们就来聊聊因子的分类和定义,把这三类因子掰开揉碎了讲清楚。
我个人习惯把因子分成三大类:基本面因子、技术因子、另类数据因子。每一类都有自己的脾气秉性,咱们一个一个来看。
3.1 基本面因子:价值、成长、质量
基本面因子,说白了就是看公司"底子"好不好。这类因子来源于财务报表,是量化投资的基石。
3.1.1 价值因子
价值因子的核心逻辑是——买便宜的。我在项目中遇到过很多次,市场情绪会把好公司砸出"黄金坑",这时候价值因子就派上用场了。
常见的价值因子指标:
| 指标 | 计算公式 | 说明 |
|---|---|---|
| 市盈率(PE) | 股价 / 每股收益 | 越低越便宜 |
| 市净率(PB) | 股价 / 每股净资产 | 破净股常被关注 |
| 股息率 | 每股股息 / 股价 | 越高越有安全边际 |
| 市销率(PS) | 市值 / 营业收入 | 适合亏损企业 |
3.1.2 成长因子
成长因子看的是"未来"。你想想看,一家公司现在赚1块,明年赚2块,后年赚4块——这种公司谁不爱?
常用的成长指标:
- 营收增长率:连续3年复合增长率 > 20% 算优质
- 净利润增长率:注意剔除非经常性损益
- ROE增长率:反映资本使用效率的提升
- 分析师预期调整:这个我单独拿出来说——分析师上调盈利预测,往往是个强信号
3.1.3 质量因子
质量因子,说白了就是看公司"身体好不好"。盈利能力强、财务健康、管理优秀——这样的公司才值得长期持有。
我常用的质量因子组合:
# 质量因子打分示例
def quality_score(df):
"""
df: 包含财务数据的DataFrame
返回: 质量综合得分
"""
# ROE - 盈利能力
roe_score = df['ROE'].rank(pct=True)
# 毛利率 - 护城河
margin_score = df['毛利率'].rank(pct=True)
# 资产负债率 - 财务安全(越低越好)
debt_score = 1 - df['资产负债率'].rank(pct=True)
# 综合得分
total_score = (roe_score + margin_score + debt_score) / 3
return total_score
核心要点:质量因子在牛市中表现平平,但在熊市中能帮你"少亏钱"。我做过回测,2018年大熊市,质量因子组合只跌了8%,而沪深300跌了25%。
3.2 技术因子:动量、反转、波动率
技术因子看的是"市场行为"。价格、成交量、波动——这些数据里藏着交易者的情绪。
3.2.1 动量因子
动量因子的逻辑很简单——强者恒强。过去涨得好的股票,未来一段时间还会继续涨。
嗯,这里要注意:动量有"时间窗口"之分。
- 短期动量:1-3个月,容易反转
- 中期动量:6-12个月,最稳定
- 长期动量:12个月以上,效果减弱
我个人习惯用12个月剔除最近1个月的动量。为什么?因为最近1个月容易有"短期噪音"。
3.2.2 反转因子
反转因子和动量因子是"冤家"。反转因子认为——跌多了会涨,涨多了会跌。
为什么会这样?因为市场经常"过度反应"。我记得2015年股灾时,很多股票跌了70%以上,但半年后反弹了50%——这就是反转的力量。
反转因子的常见用法:
# 反转因子计算
def reversal_factor(price_df, lookback=20):
"""
price_df: 价格数据
lookback: 回看天数
返回: 反转因子值(负值表示超跌)
"""
# 计算过去N日收益率
ret = price_df.pct_change(lookback)
# 反转因子 = -收益率(跌得越多,因子值越大)
reversal = -ret
return reversal
3.2.3 波动率因子
波动率因子很有意思。低波动率的股票,长期收益反而更好——这就是著名的"低波动异象"。
我在项目中遇到过,很多新手喜欢追高波动率的"妖股",结果亏得很惨。低波动策略虽然涨得慢,但胜在稳健。
3.3 另类数据因子
另类数据,说白了就是"非传统数据"。这些数据以前没人用,现在成了量化机构的"秘密武器"。
3.3.1 另类数据的来源
| 数据来源 | 示例 | 应用场景 |
|---|---|---|
| 卫星图像 | 停车场车辆数 | 零售店客流量预测 |
| 网络爬虫 | 电商评论量 | 产品销量预测 |
| 支付数据 | POS机交易额 | 消费行业景气度 |
| 新闻情绪 | NLP情感分析 | 事件驱动策略 |
3.3.2 另类数据的处理难点
另类数据虽好,但处理起来很麻烦。我总结了几点:
- 数据清洗:噪声多,需要大量预处理
- 频率对齐:日频数据和周频数据怎么融合?
- 过拟合风险:数据维度太高,容易"挖"出假规律
- 时效性:有些数据今天有用,明天就失效了
3.4 因子分类框架图
下面这张图,是我自己整理的因子分类框架。你看一眼就能明白各类因子的关系。
3.5 因子选择的实战思路
说了这么多,到底怎么选因子?我的建议是——不要贪多。
我见过很多新手,一上来就搞几十个因子,结果模型过拟合得一塌糊涂。我个人习惯是:先选3-5个核心因子,跑通流程,再慢慢加。
举个例子,一个经典的"价值+质量+动量"组合:
# 因子组合示例
def factor_combo(df):
"""
价值+质量+动量 三因子组合
"""
# 价值因子:低PE
value = -df['PE'].rank(pct=True)
# 质量因子:高ROE
quality = df['ROE'].rank(pct=True)
# 动量因子:过去6个月收益
momentum = df['ret_6m'].rank(pct=True)
# 等权组合
combo = (value + quality + momentum) / 3
return combo
记住:因子不是越多越好,关键是"有效+稳定"。我做过统计,市场上真正有效的因子不超过20个,大部分都是"噪音"。
好了,这一章的内容就到这里。因子分类是量化投资的基础,把这三类因子吃透了,后面的模型构建才能得心应手。
公众号:蓝海资料掘金营,微信deep3321