一、因子挖掘概述
做量化这几年,我越来越觉得因子挖掘就像是在市场里「寻宝」。你想想看,市场每天产生海量数据,但真正能帮你赚钱的信号,其实就藏在那些不起眼的角落里。
今天咱们就来聊聊因子挖掘这件事。我会结合自己踩过的坑,把这块讲透。
1.1 什么是因子
因子,说白了就是一个能预测股票未来收益的特征变量。比如市盈率、动量、换手率,这些都是因子。
我习惯把因子分成三类:
- 基本面因子:像PE、PB、ROE这些,反映公司经营状况
- 技术面因子:比如过去20天的收益率、成交量变化
- 另类因子:新闻情绪、供应链数据、卫星图像等
举个例子,你发现「过去5天涨幅超过10%的股票,接下来一周大概率会回调」——这个「过去5天涨幅」就是一个因子。
核心要点:因子不是随便找个指标就行。它必须满足三个条件——可解释、可复现、有预测力。
1.2 因子挖掘在量化交易中的价值
有人问我:因子挖掘到底值不值得花时间?我的回答是:绝对值。
我在2018年做过一个回测,当时只用了5个常见因子,年化收益不到8%。后来花了两个月做特征工程,把因子扩充到30多个,年化直接翻了一倍。嗯,这就是因子的力量。
具体来说,因子挖掘的价值体现在:
- 发现超额收益来源——找到别人没注意到的规律
- 提升模型稳定性——多因子组合比单因子抗揍得多
- 降低过拟合风险——好的因子有经济学逻辑支撑
我的经验:别一上来就搞复杂模型。先把基础因子做扎实,效果往往比堆模型好得多。
1.3 因子挖掘的完整流程
整个流程我画了个图,你一看就明白了:
这五个步骤环环相扣,缺一不可。我一个个说:
第一步:数据获取
数据是因子挖掘的「原材料」。我一般会拿这几类数据:
- 行情数据(日线、分钟线)
- 财务数据(季报、年报)
- 资金流向数据
- 舆情数据(可选)
注意:数据质量决定因子质量。我曾经因为某只股票复权数据没处理好,导致回测结果虚高,差点上线实盘。后来养成了习惯——拿到数据先做一遍「数据体检」。
第二步:特征工程
这是整个流程里最花时间的环节,也是咱们这门课的重点。特征工程包括:
- 数据清洗(去极值、填充缺失值)
- 特征变换(标准化、对数化)
- 特征衍生(滚动窗口计算、截面排名)
- 特征筛选(相关性分析、IC分析)
我习惯用Python的pandas和numpy来做这些操作。给你看个简单的例子:
import pandas as pd
import numpy as np
# 计算过去20天的动量因子
def calc_momentum(close, window=20):
return close / close.shift(window) - 1
# 截面标准化
def standardize_cross_section(df):
return (df - df.mean()) / df.std()
第三步:因子构建
特征工程做完后,就要把特征「包装」成可用的因子。这一步要注意:
- 因子要可计算(不能用到未来数据)
- 因子要可解释(别搞黑箱)
- 因子要可复现(换个人也能算出来)
第四步:回测验证
因子好不好,回测说了算。我一般会看这几个指标:
| 指标 | 含义 | 合格标准 |
|---|---|---|
| IC值 | 因子与未来收益的相关性 | 绝对值 > 0.02 |
| IR值 | IC的稳定性 | > 0.5 |
| 夏普比率 | 风险调整后收益 | > 1.0 |
| 最大回撤 | 最坏情况下的亏损 | < 20% |
第五步:组合优化
多个因子选出来后,怎么组合?我常用的方法:
- 等权组合(简单但有效)
- IC加权(按预测能力分配权重)
- 机器学习集成(XGBoost、LightGBM等)
避坑指南:我曾经在组合优化上过度优化,搞了20多个因子做加权,结果回测漂亮,实盘一塌糊涂。后来学乖了——因子数量控制在5-10个,效果反而更好。
1.4 本章小结
因子挖掘不是一蹴而就的事。它需要你:
- 对市场有深刻理解
- 对数据有敬畏之心
- 对模型有迭代耐心
接下来的课程,我会带着你一步步走完这五个环节。咱们先从数据获取和特征工程开始,把地基打牢。
记住一句话:好的因子,胜过复杂的模型。
公众号:蓝海资料掘金营,微信deep3321