量化因子发现与选择方法

文章目录

量化交易中的因子发现与筛选方法


一、因子发现方法

1. 数据驱动挖掘

  • 统计方法:通过相关性分析、协整检验、Granger因果检验等,从历史数据中寻找与收益率显著相关的变量。
  • 机器学习:使用随机森林、LASSO回归、梯度提升树(如XGBoost)等算法自动提取有效特征。
  • 事件驱动:分析财报发布、政策变化、市场事件对价格的影响(如财报超预期因子)。

2. 理论驱动构建

  • 行为金融学:基于投资者心理偏差设计因子(如过度反应因子、羊群效应因子)。
  • 风险溢价理论:捕捉风险溢价(如波动率风险溢价、流动性溢价)。
  • 套利定价理论(APT):基于多因子模型(如Fama-French三因子、五因子模型)。

二、常见因子类型

因子类别 典型因子示例 应用场景
技术因子 动量、波动率、换手率、RSI、布林带 短期趋势跟踪、反转策略
基本面因子 市盈率(PE)、市净率(PB)、ROE 价值投资、长线选股
情绪因子 新闻舆情、社交媒体热度、期权隐含波动率 事件驱动、市场情绪对冲
另类数据因子 卫星图像数据、供应链数据、ESG评分 行业轮动、ESG主题投资

三、因子筛选流程

1. 初步筛选

  • 显著性检验:剔除p值>0.05的因子(如通过t检验或ANOVA)。
  • 相关性过滤:剔除与其他因子相关性>0.7的冗余因子(如使用皮尔逊相关系数矩阵)。

2. 样本外测试

  • 分层回测:将因子在训练集(样本内)和测试集(样本外)分别测试,剔除样本外表现显著下降的因子。
  • 过拟合检验:通过随机数据生成器(如White's Reality Check)验证因子有效性。

3. 经济逻辑验证

  • 理论一致性:剔除与经济逻辑矛盾的因子(如“股价尾号为8的股票收益更高”缺乏逻辑支撑)。
  • 稳定性分析:剔除在不同市场周期(牛市/熊市)表现不稳定的因子。

四、策略案例:多因子选股策略

1. 因子库选择

假设因子库包含以下候选因子:

  • 动量因子(20日收益率)
  • 波动率因子(60日收益率标准差)
  • 质量因子(ROE排名)
  • 价值因子(市盈率倒数)
  • 换手率因子(5日平均换手率)

2. 筛选过程

剔除因子:质量因子(ROE排名)

  • 原因
    • 多重共线性:与价值因子(市盈率倒数)相关性高达0.85。
    • 样本外失效:在2020-2023年回测中,质量因子在测试集的IC(信息系数)从0.12降至-0.05。

保留因子:动量、波动率、换手率

  • 原因
    • 动量因子:样本内外IC均>0.1,且与波动率因子相关性仅0.3。
    • 波动率因子:在熊市中表现稳定(IC=0.18),符合“低波动异象”理论。
    • 换手率因子:高频数据中与短期动量形成互补(相关性0.2)。

3. 策略构建

  • 信号生成
    1# 组合权重:动量(40%) + 波动率(30%) + 换手率(30%)
    2def generate_signal(df):
    3    df['momentum'] = df['close'].pct_change(20)
    4    df['volatility'] = df['close'].pct_change().rolling(60).std()
    5    df['turnover_rank'] = df['turnover'].rank(pct=True)
    6    # 综合得分
    7    df['score'] = 0.4*df['momentum'] - 0.3*df['volatility'] + 0.3*df['turnover_rank']
    8    return df['score'].rank(pct=True)