一、因子挖掘概述

做量化这几年,我越来越觉得因子挖掘就像是在市场里「寻宝」。你想想看,市场每天产生海量数据,但真正能帮你赚钱的信号,其实就藏在那些不起眼的角落里。

今天咱们就来聊聊因子挖掘这件事。我会结合自己踩过的坑,把这块讲透。

1.1 什么是因子

因子,说白了就是一个能预测股票未来收益的特征变量。比如市盈率、动量、换手率,这些都是因子。

我习惯把因子分成三类:

  • 基本面因子:像PE、PB、ROE这些,反映公司经营状况
  • 技术面因子:比如过去20天的收益率、成交量变化
  • 另类因子:新闻情绪、供应链数据、卫星图像等

举个例子,你发现「过去5天涨幅超过10%的股票,接下来一周大概率会回调」——这个「过去5天涨幅」就是一个因子。

核心要点:因子不是随便找个指标就行。它必须满足三个条件——可解释、可复现、有预测力

1.2 因子挖掘在量化交易中的价值

有人问我:因子挖掘到底值不值得花时间?我的回答是:绝对值。

我在2018年做过一个回测,当时只用了5个常见因子,年化收益不到8%。后来花了两个月做特征工程,把因子扩充到30多个,年化直接翻了一倍。嗯,这就是因子的力量。

具体来说,因子挖掘的价值体现在:

  1. 发现超额收益来源——找到别人没注意到的规律
  2. 提升模型稳定性——多因子组合比单因子抗揍得多
  3. 降低过拟合风险——好的因子有经济学逻辑支撑

我的经验:别一上来就搞复杂模型。先把基础因子做扎实,效果往往比堆模型好得多。

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