3. 因子搜索概述

因子搜索概述 学习卡片

在量化投资与特征工程中,因子是连接原始数据与预测目标的桥梁。一个有效的因子,往往能够把杂乱的市场信息压缩成可排序、可解释、可交易的信号。传统做法依赖研究员的经验与金融逻辑,手工构造动量、价值、质量、波动率等因子;而符号回归驱动的因子搜索,则把“构造什么表达式”转化为一个可计算的搜索问题,让算法在算子、变量与常数组成的空间中自动寻找候选因子。理解因子搜索的整体框架,是后续掌握符号回归与复杂度控制的前提。

一、因子挖掘在量化投资与特征工程中的作用

因子挖掘的核心价值,在于从高维、低信噪比的数据中提取对收益或风险具有解释力的结构。在量化投资中,因子通常用于选股、择时、风险暴露估计与组合优化;在更广义的特征工程中,因子等价于面向预测任务构造的派生特征。二者本质一致:都是通过变换、组合与筛选,把原始字段转化为更具判别力的输入。

因子挖掘的作用可以归纳为三点。第一,降维与提纯:把数百个原始字段压缩为若干具有经济含义或统计显著性的因子,降低模型过拟合风险。第二,非线性关系表达:许多市场规律并非线性,例如“低波动且高动量”的股票可能表现更好,符号回归能够用乘除、条件、排序等结构表达这类交互。第三,可解释性:相比黑箱模型,符号表达式通常可以还原为“营收增速除以波动率”这类可读规则,便于研究员复核与风控审查。

因子搜索不是替代金融逻辑,而是把逻辑假设转化为搜索约束。没有约束的搜索,容易得到统计上漂亮但经济上荒谬的表达式。

二、搜索空间定义:算法在哪里找因子

搜索空间决定了因子搜索的上限与效率。一个完整的搜索空间通常由四部分构成:变量集合、算子集合、常数与参数、结构约束。变量集合是原始输入字段,如开盘价、收盘价、成交量、财务指标、行业哑变量等;算子集合包括算术算子(+、-、*、/)、时序算子(滞后、差分、滚动均值、滚动标准差)、横截面算子(排序、标准化、分组中性化)以及逻辑算子(大于、小于、条件选择)。常数与参数用于调节窗口长度、阈值和权重;结构约束则限定表达式深度、算子类型、变量使用次数等。

搜索空间的设计需要平衡表达力与可搜索性。空间过小,可能遗漏有效因子;空间过大,搜索成本急剧上升,且容易产生过拟合。实践中常采用分层策略:先在小规模、强约束的空间中快速筛选,再逐步放宽约束进行精细搜索。例如,初始阶段只允许“单变量+滚动算子”,后期再引入双变量交互与条件结构。

搜索空间配置示例:
variables: [close, volume, roe, pe, momentum_20d]
operators:
  arithmetic: [+, -, *, /]
  time_series: [ts_mean(window), ts_std(window), ts_delta(lag)]
  cross_section: [rank, zscore, neutralize(industry)]
constraints:
  max_depth: 4
  max_variables: 3
  allowed_windows: [5, 10, 20, 60]
  forbid: [division_by_zero, future_data]

三、目标函数设计与评估指标

目标函数是搜索的“指南针”,它把因子好坏转化为可优化的数值。在量化场景中,目标函数通常不是单一指标,而是多个维度的加权组合。常见维度包括:预测能力(IC、RankIC、回归R²)、收益表现(多空组合年化收益、夏普比率、最大回撤)、稳定性(IC均值与标准差之比、分年度表现一致性)、换手与成本(换手率、交易成本调整后收益)以及复杂度惩罚(表达式长度、算子数量、变量个数)。

符号回归中,目标函数常写成“拟合优度减去复杂度惩罚”的形式。复杂度惩罚至关重要:若不惩罚,算法会倾向于生成极长表达式,在样本内表现优异,但样本外迅速失效。惩罚项可以是表达式节点数、深度、或有效算子数量的线性/非线性函数。

评估维度 常用指标 关注点 典型阈值/经验
预测能力 IC、RankIC、ICIR 因子值与未来收益的相关性 |IC|>0.03,ICIR>0.3
收益表现 多空年化、夏普、最大回撤 组合层面的经济价值 夏普>1,回撤可控
稳定性 分年度IC、滚动IC 是否依赖特定市场环境 多数年份同向
换手与成本 换手率、成本后收益 可交易性与容量 换手率与策略匹配
复杂度 表达式长度、深度、变量数 过拟合风险与可解释性 深度≤4,变量≤3

目标函数的设计需要与投资目标一致。若策略偏重选股,应提高IC与RankIC权重;若偏重组合收益,应加入多空组合指标;若对交易成本敏感,则必须把换手率纳入惩罚。一个实用的做法是:先以IC类指标做粗筛,再以组合指标做精筛,最后用复杂度与稳定性做终审。

四、方法流程与案例场景

一个完整的因子搜索流程通常包含以下步骤:

  1. 问题定义:明确预测目标(如未来20日收益)、股票池、调仓频率与约束条件。
  2. 数据准备:清洗原始数据,处理缺失值、异常值与停牌,构造基础变量。
  3. 搜索空间设定:选择变量、算子、窗口与结构约束,确定复杂度上限。
  4. 目标函数设计:组合预测能力、收益、稳定性与复杂度惩罚。
  5. 搜索与优化:使用符号回归、遗传规划或强化学习在空间中搜索候选因子。
  6. 样本外验证:在滚动窗口或留出期上检验因子表现,避免未来函数与数据窥探。
  7. 筛选与入库:按评估指标排序,人工复核经济逻辑,纳入因子库。

以一个具体场景为例:某研究员希望挖掘A股中短期反转因子。变量集合包括过去5日、10日、20日收益率与成交量;算子包括排序、差分、滚动均值与除法;约束深度不超过3,变量不超过2。搜索得到候选表达式“-1 * rank(ts_delta(close, 5)) / ts_std(volume, 20)”,其含义是“5日价格变化的反向排序除以20日成交量波动”。该因子在样本外IC均值为0.04,ICIR为0.45,多空组合夏普为1.2,表达式深度为3,变量数为2,通过复杂度审查。研究员进一步检查发现,该因子在熊市与震荡市中表现较好,在单边牛市中失效,于是将其作为条件因子使用,而非全天候因子。

案例启示:搜索得到的因子需要结合市场状态做条件化使用。单一因子的失效场景,往往比其平均表现更有信息量。

五、常见误区与复盘

因子搜索实践中,以下误区最为常见。第一,目标函数单一化:只看IC,忽略换手与成本,导致因子在实盘中无法盈利。第二,复杂度失控:不设深度与变量约束,算法生成超长表达式,样本内完美、样本外崩溃。第三,数据窥探:在全部历史上反复搜索与调参,导致样本外表现被高估。第四,忽略经济逻辑:接受统计显著但无法解释的因子,增加风控与合规风险。第五,搜索空间与目标不匹配:例如用日频算子搜索高频信号,或变量集合缺少关键字段,导致搜索无效。

复盘时,建议从三个层面检查:数据层面,是否存在未来函数、幸存者偏差、复权错误;搜索层面,目标函数是否与投资目标一致,复杂度惩罚是否合理;验证层面,是否采用滚动样本外、是否考虑交易成本与容量。只有把因子搜索视为“假设生成—验证—筛选”的闭环,而非一次性优化,才能持续产出稳健因子。

符号回归可以自动生成表达式,但不能自动生成投资逻辑。任何进入实盘的因子,都必须经过经济含义复核、样本外验证与风控审查。

综上,因子搜索概述的核心在于:明确因子挖掘在量化投资与特征工程中的定位,合理定义搜索空间,设计兼顾预测能力与复杂度的目标函数,并建立多维评估指标体系。掌握这一框架后,后续的符号回归算法与复杂度控制技术,才能有的放矢地应用于实际因子挖掘任务。