首页  

WorldQuant 101 因子     所属分类 quant 浏览量 14
WorldQuant的“101个阿尔法因子”
是其研究团队在2015年发表的一篇著名论文《101 Formulaic Alphas》中提出的。
这篇论文系统地列举了101个市场中性、纯因子化(仅使用价格和交易量数据)的阿尔法信号公式。

这些因子并非直接给出可以盈利的策略,而是经过标准化处理的“信号表达式”。
其核心思想是展示如何通过数学公式和简单的运算,将原始数据转化为预测未来价格走势的信号。



重要说明:
公式是表达式,不是代码:
论文给出的是数学表达式,需要使用者自行转换为代码(Python, C++等)。
基础操作符:论文定义了一系列基础操作符,所有因子都由这些操作符组合而成:
delay: 滞后,取过去第d天的值。 delay(close, d) = close[t-d]
rank: 横截面排名(默认升序)。rank(x) = (x的横截面排名 - 1) / (股票总数 - 1)
ts_min, ts_max: 时间序列上的滚动最小/最大值。
delta: 差分。delta(x, d) = x[t] - x[t-d]
correlation, covariance: 滚动窗口的相关系数和协方差。
scale: 将横截面数据缩放,使其绝对值之和为1。
decay_linear: 线性加权移动平均(权重递减)。
ts_argmax, ts_argmin: 滚动窗口内最大值/最小值出现的位置(索引)。
product: 滚动窗口内求和。
stddev: 滚动标准差。
ts_rank: 时间序列上的滚动排名。



以下是部分代表性因子及其计算公式的精要解释,以展示其构造逻辑。
完整101个因子请查阅原始论文。

部分因子示例及计算逻辑
Alpha #1:

公式:rank(ts_argmax(pow(((high + low) / 2), 2) - volume, 5))

逻辑:
计算一个“动能-交易量”组合指标在过去5天内达到最大值的日期,然后对股票的横截面排名。
偏向于寻找该指标近期创下新高(即处于强势状态)的股票。

Alpha #12:

公式:(sign(delta(volume, 1)) * (-1 * delta(close, 1)))

逻辑:一个简单的反转信号。
如果今天的成交量变化与价格变化方向相反(例如,放量下跌或缩量上涨),则给出正向信号;
如果同向,则给出负向信号。

Alpha #23:

公式:(sum(high, 20) / 20) < high ? (-1 * delta(high, 1)) : 0

逻辑:
如果当日最高价高于其20日均价,则做空当日最高价的变化(赌反转)。否则不交易。
这是一个条件反转因子。

Alpha #31:

公式:((close - open) / ((high - low) + 0.001))

逻辑:计算日内收益率与日内振幅的比率。
这个值高表示股票开盘后一路强势上涨,可能延续动量。
这是经典的“实体/影线”比率。

Alpha #48:

公式:-(indneutralize(correlation(close, volume, 5), IndClass.subindustry))

逻辑:这是一个“行业中性化”的因子。
先计算每只股票过去5天的价量相关性,然后在行业内进行中性化处理(减去行业内均值)。
indneutralize是关键,确保因子暴露是行业内的相对强弱,而非行业beta。

Alpha #50:

公式:-1 * ts_max(rank(correlation(rank(volume), rank(vwap), 5)), 5)

逻辑:
计算成交量排名和VWAP排名的5天相关性,
然后对其排名,并取过去5天内的最大值,最后取负。
这个因子结构复杂,旨在捕捉价量关系模式的失效或反转。

Alpha #51:

公式:((((high + low) / 2) + close) < (open + close) ? (-1 * (close - open)) : 0)

逻辑:一个条件因子。
如果当日“中价”低于“平均价”,则做空开盘-收盘价差(即赌当日上涨趋势会反转)。否则不交易。

Alpha #101:

公式:((close - open) / ((high - low) + 0.001))

逻辑:这个与Alpha 31完全相同,论文中可能存在笔误或重复,但这也说明了这种“日内动能”形态的重要性。


核心特点与使用注意事项 纯技术性:完全不依赖基本面数据,仅使用日内OHLCV数据,可高频计算。 市场中性化隐含:大多数因子通过 rank() 进行横截面比较,天然具有市场中性属性(多空组合)。 行业中性化:部分因子明确使用 indneutralize() 剔除行业影响,这是实际生产中至关重要的一步。 过拟合风险:101个因子是在大量历史数据上挖掘出来的,存在数据窥探偏差。直接使用很可能失效。 需要再加工:这些是“原始信号”,实际使用必须进行: 严格的回测:在不同市场、不同周期验证。 组合优化:将多个信号合成一个稳健的组合,降低单一信号噪音。 风险控制:控制行业、市值、风格等风险暴露。 成本考虑:考虑交易成本和流动性。 如何获取与使用? 原始论文:搜索 "101 Formulaic Alphas WorldQuant" 可以找到PDF。 开源实现: GitHub上有许多用Python/Pandas/Numpy对这些因子的实现项目 例如搜索 worldquant 101 alphas python 但请注意,不同实现可能有细节差异(如排名方式、处理NaN值等)。 研究起点: 最好的使用方式是将其作为研究因子构建思想的宝库, 理解其背后的金融逻辑(动量、反转、价量关系、微观结构等), 然后结合自己的研究和市场理解,创造或改进自己的因子。 WorldQuant的101个因子是量化交易领域的一个里程碑, 它展示了如何系统性地、工业化地生产和表达阿尔法信号。 但它不是一个“即插即用”的赚钱秘籍,而是一份顶级的“因子构建语法手册”。

上一篇    
量化投资Python实战指南

python随机数种子作用及使用方法

python3抽象类使用实例