第二十四章:高频因子库

做高频交易的人都知道,因子就是你的武器库。没有因子,你连市场的大门都摸不着。今天咱们就来聊聊高频因子库的完整构建流程——从分类到构建,从检验到组合,再到最后的衰减分析。

我个人习惯把高频因子分成三大类:价格类、订单流类和微观结构类。价格类因子看的是价格变化模式,订单流类因子看的是买卖力量的博弈,微观结构类因子则深入到盘口的每一个细节。你想想看,这三类因子其实对应了市场信息的三个不同层次。

因子分类:先搞清楚你在看什么

我在项目中遇到过不少新手,上来就堆砌因子,结果回测效果一塌糊涂。其实分类是第一步,也是最关键的一步。

类别 典型因子 数据来源 更新频率
价格类 收益率、波动率、价格动量 Tick级成交数据 毫秒级
订单流类 买卖压力、订单不平衡、VPIN Level2行情 秒级
微观结构类 买卖价差、深度斜率、订单簿熵 订单簿快照 毫秒级

说白了,价格类因子是「结果」,订单流类因子是「过程」,微观结构类因子是「环境」。三者缺一不可。

因子构建:从原始数据到可用信号

构建因子时,我最常犯的错误就是过度拟合。嗯,这里要注意——高频因子的构建必须遵循「简洁有效」的原则。

举个例子,构建一个简单的买卖压力因子:

def build_order_imbalance_factor(tick_data):
    """
    构建订单不平衡因子
    """
    # 计算主动买盘和主动卖盘
    buy_volume = tick_data[tick_data['side'] == 'B']['volume'].sum()
    sell_volume = tick_data[tick_data['side'] == 'S']['volume'].sum()
    
    # 标准化处理
    total_volume = buy_volume + sell_volume
    if total_volume == 0:
        return 0
    
    # 因子值在[-1, 1]之间
    imbalance = (buy_volume - sell_volume) / total_volume
    
    return imbalance

你看,就这么几行代码。我曾经见过有人用50个参数去拟合一个因子,结果实盘第一天就崩了。记住:高频因子的核心是捕捉市场微观结构中的规律,而不是用数学公式去硬凑。

因子检验:别被回测骗了

因子检验这块,我吃过不少亏。最惨的一次,一个看起来完美的因子,实盘跑了一周就失效了。后来复盘发现,问题出在检验方法上。

核心检验指标:

  • IC值(信息系数):衡量因子与未来收益的相关性,绝对值大于0.05才算有效
  • Rank IC:排序后的IC值,更稳健,不容易受极端值影响
  • 夏普比率:因子组合的夏普比率至少要大于1.5
  • 换手率:高频因子的换手率通常很高,但超过50%就要警惕了

检验时还有一个坑——数据窥探偏差。你想想看,如果你用同一段数据反复调整因子参数,最后得到的「好结果」其实只是运气。我的做法是:把数据分成训练集、验证集和测试集,比例大概是6:2:2。

因子组合:1+1>2的艺术

单个因子再强,也有失效的时候。因子组合的目的就是分散风险,提升稳定性。

我常用的组合方法有两种:

  1. 等权组合:简单粗暴,把多个因子的信号等权重加总。适合因子之间相关性较低的情况。
  2. 动态权重组合:根据近期表现调整权重。比如过去N天IC值高的因子,权重就大一些。

这里有个小技巧——组合前一定要做相关性分析。如果两个因子的相关系数超过0.7,那就只保留一个。否则组合后的效果跟单个因子没什么区别。

我的经验:组合3-5个低相关性的因子效果最好。太多因子反而会引入噪声,太少又不够分散。

因子衰减:没有永恒的圣杯

所有高频因子都会衰减,这是铁律。为什么?因为市场在进化,套利机会会被填平。

我观察过上百个因子的生命周期,发现一个规律:

因子类型 平均有效周期 衰减模式
简单价格因子 1-3个月 快速衰减
订单流因子 3-6个月 缓慢衰减
微观结构因子 6-12个月 阶梯式衰减

我曾经有一个微观结构因子,用了整整8个月都表现良好。结果有一天突然失效了,后来发现是交易所改了撮合规则。所以,定期监控因子的衰减情况非常重要。

避坑指南:我曾经因为一个因子连续3个月表现好就放松了监控,结果第4个月直接亏了5%。现在我的系统里,每个因子都有独立的衰减监控模块,一旦IC值连续5天低于阈值,自动降低权重。

完整的因子生命周期管理

说了这么多,其实我想表达的是——高频因子库不是建完就完事了。它是一个动态的系统,需要持续维护。

下面这张图是我个人习惯的因子管理流程:

高频因子生命周期管理流程 因子分类 价格/订单流/微观结构 因子构建 简洁有效原则 因子检验 IC/夏普/换手率 因子组合 等权/动态权重 因子衰减监控 IC连续5天低于阈值 失效后重新构建 实盘部署

你看,整个流程是个闭环。因子失效了怎么办?不是直接扔掉,而是回到构建阶段,看看能不能优化。我见过太多人,因子一失效就放弃,其实很多时候只是参数需要微调。

最后说一句——高频因子库的维护,本质上是对市场微观结构理解的持续深化。你越了解市场,构建的因子就越持久。这个道理,做久了自然就懂了。