WorldQuant BRAIN Alpha

目录

一、核心概念

1.1 什么是Alpha?

1.2 FastExpression语言特点

1.3 Alpha的生命周期

二、数据字段 (Data Fields)

2.1 什么是数据字段?

2.2 常用数据字段分类

2.3 数据字段的处理

三、运算符大全

3.1 运算符分类总览

3.2 算术运算符 (Arithmetic)

3.3 逻辑运算符 (Logical)

3.4 时间序列算子 (Time Series)

常用时间窗口

3.5 横截面算子 (Cross Sectional)

3.6 分组算子 (Group)

常用的分组维度

3.7 高级算子

四、Alpha构建规则与语法

4.1 基本语法规则

4.2 Alpha表达式结构

4.3 数据流向

4.4 关键概念

4.4.1 Alpha向量

4.4.2 中性化

4.4.3 标准化

4.4.4 多空市场中性化

五、常见算子组合模式

5.1 基础模式

5.2 动量类模式

5.3 反转类模式

5.4 波动率类模式

5.5 成交量验证模式

六、实战Alpha示例

6.1 示例1:基础反转Alpha

6.2 示例2:上涨天数计数Alpha

6.3 示例3:三重验证Alpha

6.4 示例4:行业中性化Alpha

6.5 示例5:条件触发Alpha

七、Alpha模拟与评估

7.1 模拟参数设置

7.2 关键评估指标

八、常用算子速查表

8.1 按功能分类速查

8.2 常见组合模式

九、补充说明

9.1 分级权限系统

9.2 NaN值处理

9.3 性能优化


一、核心概念

1.1 什么是Alpha?

在WorldQuant BRAIN平台中,Alpha是一个可预测资产未来价格走势的数学模型或数学表达式。它的本质是:

  • 输入:某只股票当前及历史的市场数据(价格、成交量、财务指标等)

  • 输出:一个预测信号值,通常介于-1到1之间,代表对股票未来表现的预期

  • 正数:预测股票将跑赢大盘(买入或做多)

  • 负数:预测股票将跑输大盘(卖出或做空)

1.2 FastExpression语言特点

FastExpression是WorldQuant BRAIN平台的专属语言,具有以下特点:

  • 声明式风格:你只需要描述“要什么数据”和“怎么计算”,不需要关心底层循环实现

  • 表格化数据处理:所有操作都在一个虚拟的“股票×时间”的大表格上进行

  • 丰富的内置算子:提供了7大类、60+个核心操作符

  • 无需编程背景:平台设计使得即使没有编码经验的小白也能快速上手

1.3 Alpha的生命周期

在WorldQuant BRAIN系统中,Alpha遵循以下生命周期:

  1. 生成:使用数据字段和运算符构建表达式

  2. 模拟:在历史数据上进行回测,评估表现

  3. 改进:通过相关性分析、剪枝等技术优化

  4. 提交:将高质量的Alpha提交到平台

二、数据字段 (Data Fields)

2.1 什么是数据字段?

数据字段是Alpha的“原材料”,指的是一个命名的数据集合。平台提供数百种数据字段,涵盖价格、成交量、财务指标等多个维度。

2.2 常用数据字段分类

类别

字段示例

说明

价格类

close

收盘价

open

开盘价

high

最高价

low

最低价

vwap

成交量加权平均价

收益类

returns

日收益率

returns_5

5天累计收益率

returns_20

20天累计收益率

成交量类

volume

成交量

adv20

过去20天平均成交量

turnover

换手率

基本面类

fnd9_asset

总资产

fnd9_liability

总负债

fnd28_value_05480

账面价值(示例)

市值类

cap

市值

2.3 数据字段的处理

在实际使用前,数据字段通常会经过预处理:

# 处理缺失值:用120天前的数据回填
ts_backfill(field, 120)

# 处理异常值:4倍标准差缩尾处理
winsorize(field, std=4)

三、运算符大全

WorldQuant BRAIN平台提供7大类、60+个核心操作符。下面按类别详细介绍。

3.1 运算符分类总览

类别

描述

典型算子

算术类

基础数学运算

add、divide、log、power

逻辑类

条件判断与逻辑运算

and、or、if_else、greater

时间序列类

历史数据处理

ts_corr、ts_rank、ts_sum、ts_delay

横截面类

跨股票比较分析

rank、quantile、zscore

向量类

向量场运算

vec_avg、vec_sum

变换类

数据预处理

bucket、trade_when

分组类

分组统计分析

group_rank、group_mean

3.2 算术运算符 (Arithmetic)

算子

语法

说明

加法

x + y或add(x, y)

两数相加

减法

x - y或sub(x, y)

两数相减

乘法

x * y或multiply(x, y)

两数相乘

除法

x / y或divide(x, y)

两数相除

绝对值

abs(x)

返回x的绝对值

对数

log(x)

自然对数

幂运算

power(x, y)

x的y次方

3.3 逻辑运算符 (Logical)

算子

语法

说明

大于

greater(x, y)

如果x > y,返回True,否则False

小于

less(x, y)

如果x < y,返回True,否则False

等于

eq(x, y)

如果x == y,返回True,否则False

and(x, y)

逻辑与

or(x, y)

逻辑或

条件判断

if_else(cond, true_val, false_val)

如果cond为真,返回true_val,否则返回false_val

3.4 时间序列算子 (Time Series)

时间序列算子是Alpha构建的核心,它们处理一只股票自身的历史数据。

算子

语法

说明

延迟

ts_delay(field, d)

返回d天前的field值

差值

ts_delta(field, d)

计算当前值与d天前值的差值:field - ts_delay(field, d)

求和

ts_sum(field, d)

计算过去d天的总和

均值

ts_mean(field, d)或ts_avg(field, d)

计算过去d天的平均值

标准差

ts_std_dev(field, d)

计算过去d天的标准差

排名

ts_rank(field, d)

计算field在过去d天中的时间序列排名(值在0-1之间)

相关系数

ts_corr(field1, field2, d)

计算过去d天内field1和field2的相关系数

协方差

ts_covariance(field1, field2, d)

计算过去d天内field1和field2的协方差

偏度

ts_skewness(field, d)

计算过去d天的偏度

峰度

ts_kurtosis(field, d)

计算过去d天的峰度

最大值

ts_max(field, d)

过去d天的最大值

最小值

ts_min(field, d)

过去d天的最小值

指数衰减加权

ts_decay_exp_window(field, d)

指数衰减加权和,越近的数据权重越大

回归残差

ts_regression(field1, field2, d)

对过去d天做线性回归,返回残差

常用时间窗口

窗口

对应天数

说明

5

5天

1周(交易日)

22

22天

1个月(约)

66

66天

3个月

120

120天

6个月

240

240天

1年

250

250天

1年(BRAIN常用)

3.5 横截面算子 (Cross Sectional)

横截面算子处理的是同一时间点,所有股票之间的比较。

算子

语法

说明

排名

rank(field)

对全体股票的field值进行排名,结果均匀分布在0-1之间

分位数

quantile(field, n)

将股票分成n个分位数,返回所属的分位数编号

Z-Score

zscore(field)

标准化:(field - mean)/std,使均值为0,标准差为1

归一化

normalize(field)

将值缩放到[-1, 1]区间

截断

truncate(field, min, max)

将超出[min, max]的值截断到边界

3.6 分组算子 (Group)

分组算子允许你在特定分组内进行统计分析,是实现行业中性化的核心工具。

算子

语法

说明

分组均值

group_mean(field, group)

计算每个分组内的均值

分组标准差

group_std(field, group)

计算每个分组内的标准差

分组排名

group_rank(field, group)

在每个分组内分别进行排名

分组中性化

group_neutralize(field, group)

减去分组均值:field - group_mean(field, group)

分组Z-Score

group_zscore(field, group)

在每个分组内分别做Z-Score标准化

常用的分组维度

分组参数

说明

industry

行业

subindustry

子行业

sector

部门

bucket(rank(cap), 10)

按市值分10组

3.7 高级算子

算子

语法

说明

回归中性化

regression_neut(field1, field2)

剔除field2对field1的线性影响

向量中性化

vector_neut(field1, field2)

向量正交化处理

交易条件

trade_when(condition, field, default)

仅在condition为真时使用field,否则用default值

四、Alpha构建规则与语法

4.1 基本语法规则

规则

说明

表达式结尾

整个Alpha表达式的最后一句话不需要使用分号;中间语句可以用分号分隔

注释

和C语言一样,/* 注释内容 */用于多行注释

大小写

运算符和字段名通常区分大小写

空格

运算符和操作数之间可以用空格提高可读性

4.2 Alpha表达式结构

一个完整的Alpha表达式通常由以下部分组成:

中间计算结果1;
中间计算结果2;
最终Alpha表达式  /* 最后一行的计算结果就是Alpha信号 */

4.3 数据流向

Alpha表达式的计算过程可以理解为:

  1. 原始数据 → 2. 算子变换 → 3. Alpha向量 → 4. 中性化 → 5. 标准化 → 6. 投资组合

4.4 关键概念

4.4.1 Alpha向量

指因子初始值的向量。例如对负收益率执行排名操作后,会为每只股票生成一个对应的值向量。

4.4.2 中性化

从向量中的每个值减去该组向量值的平均值,使得所有向量值的总和=0。这可以消除特定分组(如行业、市场)的影响。

4.4.3 标准化

将生成的值缩放,使得alpha向量值的绝对值总和为1。

4.4.4 多空市场中性化

使用标准化后的权重,分配资金构建投资组合。正值代表做多,负值代表做空,使得多空头寸平衡。

五、常见算子组合模式

5.1 基础模式

模式

表达式示例

说明

原始字段

field

直接使用原始数据

排名

rank(field)

横截面排序

反转

-rank(field)

取排名的相反数,常用于反转策略

时间序列排名

ts_rank(field, 22)

过去22天的时间序列排名

5.2 动量类模式

动量效应:近期上涨的资产倾向于继续上涨,近期下跌的资产倾向于继续下跌。

# 计算250天价格涨幅
ts_delta(close, 250) / ts_delay(close, 250)

# 计算250天内上涨的天数
ts_sum(if_else(greater(returns, 0), 1, 0), 250)

5.3 反转类模式

反转效应:短期涨幅过大的股票可能回调,跌幅过大的股票可能反弹。

# 短期反转:做空过去5天涨幅最大的股票
-rank(ts_delta(close, 5))

# 长期反转:做空过去120天涨幅最大的股票
-rank(returns_120)

5.4 波动率类模式

# 波动率偏度:实际波动与预期波动的差异
power(ts_std_dev(abs(returns), 30), 2) - power(ts_std_dev(returns, 30), 2)

5.5 成交量验证模式

# 成交量异常:当日成交量与过去20天平均成交量的比值
volume / adv20

# 成交量异常的持续性:该比值在过去5天的时间序列排名
ts_rank(volume / adv20, 5)

六、实战Alpha示例

6.1 示例1:基础反转Alpha

/* 基础反转Alpha */
- rank(returns_120)

说明:做多过去120天表现最差的股票(跌幅最大),做空过去120天表现最好的股票(涨幅最大)。这是经典的长期反转策略。

6.2 示例2:上涨天数计数Alpha

/* 过去250天上涨天数计数 */
ts_sum(if_else(greater(returns, 0), 1, 0), 250)

分步解析

  • greater(returns, 0):判断当天收益率是否为正

  • if_else(..., 1, 0):将布尔值转为数值(1表示上涨,0表示下跌)

  • ts_sum(..., 250):对过去250天的结果求和

6.3 示例3:三重验证Alpha

这是一个经典的101因子之一,结合了反转、价格加速度和成交量验证。

/* 三重验证Alpha */
(
    (-1 * rank(ts_rank(close, 10))) * 
    rank(ts_delta(ts_delta(close, 1), 1)) * 
    rank(ts_rank((volume / adv20), 5))
)

分步解析

部分

表达式

含义

第一部分

-1 * rank(ts_rank(close, 10))

捕捉近期弱势股的反转信号

第二部分

rank(ts_delta(ts_delta(close, 1), 1))

捕捉价格变化的加速度

第三部分

rank(ts_rank((volume / adv20), 5))

验证成交量的异常信号

核心逻辑:仅当三个条件同时满足时,因子值才显著:

  1. 近期弱势股(有反转预期)

  2. 价格波动加剧(有加速度信号)

  3. 成交量持续放大(资金验证)

6.4 示例4:行业中性化Alpha

/* 行业内资产负债比排名 */
group_rank((fnd9_asset / fnd9_liability), subindustry)

说明:在每个子行业内,对公司的资产负债比进行排名。做多行业内财务稳健的公司,做空财务风险高的公司。

6.5 示例5:条件触发Alpha

/* 低波动率时才交易 */
trade_when(
    ts_rank(ts_std_dev(returns, 10), 252) < 0.9,  /* 条件:过去10天波动率排名在90%以下 */
    -rank(ts_delta(close, 5)),                    /* 策略:5日反转 */
    -1                                            /* 默认值:不满足条件时做空 */
)

七、Alpha模拟与评估

7.1 模拟参数设置

在提交模拟时,可以配置以下参数:

参数

默认值

说明

instrumentType

EQUITY

金融工具类型

region

USA

地理区域

universe

TOP3000

股票池(市值最大的3000只)

delay

1

信号延迟天数

neutralization

SUBINDUSTRY

中性化方式

truncation

0.08

极端值截断水平

pasteurization

ON

是否启用“消毒”处理

testPeriod

P2Y

回测周期(2年)

7.2 关键评估指标

指标

说明

Sharpe Ratio

夏普比率,衡量风险调整后收益

Fitness

平台综合评分,结合Sharpe、Turnover等指标

Turnover

换手率,衡量交易频率

Returns

总回报率

Volatility

波动率

Coverage

覆盖率,信号覆盖的股票比例

八、常用算子速查表

8.1 按功能分类速查

功能

算子

排名类

rank、group_rank、ts_rank

统计类

mean、std、corr、covariance、skewness、kurtosis

时间序列

delay、delta、sum、mean、std_dev、rank、decay_exp_window

条件类

if_else、greater、less、eq、trade_when

中性化

group_neutralize、regression_neut、vector_neut

分组

subindustry、industry、sector、bucket

8.2 常见组合模式

# 横截面排名
rank(field)

# 行业中性化排名
group_rank(field, subindustry)

# 过去22天时间序列排名
ts_rank(field, 22)

# 标准化
zscore(field)

# 条件计数
ts_sum(if_else(greater(field, threshold), 1, 0), window)

九、补充说明

9.1 分级权限系统

WorldQuant BRAIN平台采用分级解锁机制:

  • 基础操作符:对所有用户开放

  • 高级操作符:需要达到Expert、Master和Grandmaster Genius级别才能使用

9.2 NaN值处理

平台提供完善的缺失值处理机制,确保数据质量和计算稳定性。

9.3 性能优化

支持dense/sparse模式选择,以平衡计算效率与内存使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值