halo 的技术博客

返回

引言#

在量化投资的世界里,有一句行话:“Alpha 越来越难找了”。随着市场竞争日趋激烈,简单的基本面因子和技术指标已经被充分定价,超额收益的源泉转向了更复杂的因子构建和更精细的数据处理。本文将从实战角度出发,梳理一套完整的 Python 量化因子挖掘流程。

Python量化

因子挖掘的核心逻辑#

因子(Factor),本质上是一个能够解释和预测股票收益的信号。一个有效的因子需要具备三个特征:

  • 经济学逻辑:不是纯粹的数据挖掘产物,而是有合理的经济学解释
  • 统计显著性:在统计检验中表现出稳定的预测能力
  • 实际可交易性:考虑交易成本和流动性后的净收益为正

因子挖掘的完整流程通常包括:数据获取 → 数据清洗 → 特征构建 → 因子检验 → 回测验证。

第一步:数据获取与清洗#

数据质量直接决定了因子的可靠性。在实际工作中,数据清洗往往占据 60%-70% 的时间。

基础数据源#

数据清洗要点#

  1. 处理缺失值:对于财务数据的空值,需要判断是”未披露”还是”不存在”,处理策略完全不同
  2. 异常值检测:使用 MAD(中位数绝对偏差)法比 3-sigma 更稳健
  3. 幸存者偏差:必须使用包含退市股票的全量数据,否则回测结果会严重高估
  4. 前视偏差:财务数据必须在公告日而非报告期结束时点才可用
def clean_financial_data(df):
    """清洗财务数据,处理异常值和缺失值"""
    # MAD 法去极值
    median = df.median()
    mad = (df - median).abs().median()
    
    upper = median + 5 * mad
    lower = median - 5 * mad
    
    df_clean = df.clip(lower, upper)
    
    # 向前填充缺失值(季度数据)
    df_clean = df_clean.fillna(method='ffill', limit=2)
    
    return df_clean
python

第二步:特征构建与因子工程#

经典因子示例#

  1. 动量因子:过去 N 个月的累计收益率
  2. 反转因子:短期超买超卖信号
  3. 波动率因子:已实现波动率、下行波动率
  4. 质量因子:ROE、毛利率、资产负债率等基本面指标
  5. 情绪因子:基于新闻文本的情感分析得分

复合因子的构建#

真正有竞争力的因子往往是多个基础信号的组合。例如,将”低波动 + 高质量 + 动量”三个维度融合:

第三步:因子检验体系#

构建因子只是第一步,验证因子是否有效才是关键。

IC 分析#

信息系数(Information Coefficient)衡量因子值与未来收益的相关性:

from scipy.stats import spearmanr

def calculate_ic(factor_value, forward_return):
    """
    计算 Rank IC
    factor_value: 因子值 Series
    forward_return: 未来一期收益 Series
    """
    ic, p_value = spearmanr(factor_value, forward_return)
    return {
        'IC': ic,
        'p_value': p_value,
        'ICIR': ic / factor_value.std()  # IC 信息比
    }
python

分层回测#

将股票按因子值分为 5 组或 10 组,观察各组未来收益的单调性:

  • 如果 Top 组持续跑赢 Bottom 组,因子有效
  • 如果收益与分组不存在单调关系,因子无效
  • 如果 Bottom 组反而跑赢,因子方向可能反了

关键指标#

  • Rank IC 均值 > 0.03 视为有效因子
  • ICIR > 0.5 视为稳定因子
  • 分位数组合单调性:Top-Bottom 的收益差显著为正

第四步:风险控制与因子拥挤度#

2026 年,因子拥挤已经成为量化圈的热门话题。当一个因子被太多资金追逐时,其超额收益会迅速衰减。

检测拥挤度的方法#

  1. 持仓重合度:计算因子组合与主要量化基金持仓的重合比例
  2. 估值偏离度:因子选股组合的估值相对历史均值的偏离程度
  3. 因子收益衰减:监测因子近 1 年、3 年、5 年的 IC 趋势

因子分析

实战建议#

对于有志于进入量化领域的新人,以下建议可能对你有用:

  1. 从简单因子开始:先用 PE、PB、ROE 等基本面因子验证整个流程跑通,再尝试复杂因子
  2. 重视数据清洗:再好的因子也经不起脏数据的污染。把数据处理代码写清楚、写规范
  3. 理解业务逻辑:因子的背后是投资逻辑,不是纯粹的数字游戏
  4. 持续迭代:因子的有效期是有限的,需要不断挖掘新因子、淘汰失效因子
  5. 工具选择:Python(pandas + numpy + scipy)足以覆盖 90% 的因子挖掘需求,进阶可学 statsmodels 和 sklearn

结语#

因子挖掘是量化投资中最具创造性的工作之一。它既需要扎实的数理基础,也需要对市场的深刻理解。Python 生态系统为这项工作提供了强大的工具链,但真正的 Alpha 来自于研究者的洞察力和持续学习能力。在 AI 大模型加速渗透金融领域的今天,传统的因子挖掘方法论正在与机器学习深度融合——这既是挑战,也是新的机会窗口。

Python量化因子挖掘实战:从数据清洗到Alpha信号
https://blog.halo26812.eu.org/blog/python-factor-mining
Author halo
Published at 2026年6月22日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨