Appearance
操作符详细解释
导航
正文
操作符学习文档
本文档按类别整理 WorldQuant BRAIN 平台 Alpha 表达式中可用的操作符,包含名称、定义与说明,便于查阅与书写表达式。
一、算术类(Arithmetic)
| 名称 | 定义 | 说明 |
|---|---|---|
| add | add(x, y, filter = false),即 x + y | 逐元素相加,可多输入。filter=true 时在求和前将 NaN 视为 0。 |
| subtract | subtract(x, y, filter=false),即 x - y | 从左到右逐元素相减,支持两个及以上输入。filter=true 时在相减前将 NaN 视为 0。 |
| multiply | multiply(x, y, ... , filter=false),即 x * y | 逐元素相乘,可多输入。filter=true 时在相乘前将 NaN 视为 0。 |
| divide | divide(x, y),即 x / y | x 除以 y。 |
| power | power(x, y) | x 的 y 次方(x ^ y)。 |
| signed_power | signed_power(x, y) | x 的 y 次方,结果保留 x 的符号。 |
| sqrt | sqrt(x) | x 的非负平方根。等价于 power(x, 0.5);有符号根用 signed_power(x, 0.5)。 |
| log | log(x) | 自然对数,常用于对正值序列做变换。 |
| abs | abs(x) | 绝对值,去掉负号。 |
| sign | sign(x) | 符号:正为 +1,负为 -1,零为 0;NaN 仍为 NaN。 |
| reverse | reverse(x) | 取反,即 -x。 |
| inverse | inverse(x) | 1 / x。 |
| min | min(x, y ..) | 所有输入中的最小值,至少 2 个输入。 |
| max | max(x, y, ..) | 所有输入中的最大值,至少 2 个输入。 |
| densify | densify(x) | 将多桶分组字段压缩为更少、仅包含可用桶,便于计算。 |
二、逻辑类(Logical)
| 名称 | 定义 | 说明 |
|---|---|---|
| if_else | if_else(条件, 值1, 值2) | 条件为真返回值 1,为假返回值 2。 |
| and | and(input1, input2) | 两输入均为 1(真)时返回 1,否则返回 0。 |
| or | or(input1, input2) | 任一输入为 1 时返回 1,否则返回 0。 |
| not | not(x) | 逻辑取反:x 为 1 返回 0,为 0 返回 1。 |
| equal | input1 == input2 | 相等为 1,否则为 0。 |
| not_equal | input1 != input2 | 不相等为 1,否则为 0。 |
| greater | input1 > input2 | input1 大于 input2 为 1,否则为 0。 |
| greater_equal | input1 >= input2 | input1 大于等于 input2 为 1,否则为 0。 |
| less | input1 < input2 | input1 小于 input2 为 1,否则为 0。 |
| less_equal | input1 <= input2 | input1 小于等于 input2 为 1,否则为 0。 |
| is_nan | is_nan(input) | 若 input 为 NaN 返回 1,否则返回 0。 |
三、时间序列类(Time Series)
| 名称 | 定义 | 说明 |
|---|---|---|
| ts_delay | ts_delay(x, d) | 取 x 在 d 天前的值,用于访问历史。 |
| ts_delta | ts_delta(x, d) | 当前值与 d 天前值的差,用于刻画变化或动量。 |
| ts_sum | ts_sum(x, d) | 过去 d 天 x 的和。 |
| ts_mean | ts_mean(x, d) | 过去 d 天 x 的简单平均。 |
| ts_std_dev | ts_std_dev(x, d) | 过去 d 天 x 的标准差。 |
| ts_zscore | ts_zscore(x, d) | 过去 d 天内的 Z-score,表示当前值相对近期均值的偏离(以标准差计)。 |
| ts_scale | ts_scale(x, d, constant = 0) | 按过去 d 天的最小/最大值将序列缩放到 0–1,可有常数偏移。 |
| ts_rank | ts_rank(x, d, constant = 0) | 过去 d 天内当前值的排名(可选常数调整),用于标准化与相对表现。 |
| ts_quantile | ts_quantile(x, d, driver="gaussian") | 先算 ts_rank,再用指定分布(默认高斯)的逆 CDF 变换,用于分布整形。 |
| ts_av_diff | ts_av_diff(x, d) | 当前值减去过去 d 天的均值(均值计算时忽略 NaN),即 x - ts_mean(x,d)。 |
| ts_arg_min | ts_arg_min(x, d) | 过去 d 天内最小值出现在多少天前:今天为 0,昨天为 1,依此类推。 |
| ts_arg_max | ts_arg_max(x, d) | 过去 d 天内最大值出现在多少天前。 |
| ts_corr | ts_corr(x, y, d) | 过去 d 天 x 与 y 的 Pearson 相关系数。 |
| ts_covariance | ts_covariance(y, x, d) | 过去 d 天 y 与 x 的协方差。 |
| ts_decay_linear | ts_decay_linear(x, d, dense = false) | 过去 d 天对 x 做线性衰减平滑,近期权重大。 |
| ts_product | ts_product(x, d) | 过去 d 天 x 的乘积,可用于几何平均、复合收益等。 |
| ts_backfill | ts_backfill(x, lookback = d, k=1) | 用过去 lookback 天内最近的有效值填补 NaN,提高覆盖、降低缺失影响。 |
| ts_count_nans | ts_count_nans(x, d) | 过去 d 天内 NaN 的个数。 |
| kth_element | kth_element(x, d, k, ignore="NaN") | 过去 d 天中第 k 个值(可设置忽略规则),常用于回填缺失。 |
| ts_regression | ts_regression(y, x, d, lag = 0, rettype = 0) | 过去 d 天 y 对 x 的回归,返回与回归相关的多种统计量。 |
| ts_step | ts_step(1) | 按日递增的计数器,每天加 1。 |
| days_from_last_change | days_from_last_change(x) | 自该变量上次发生变化以来的天数。 |
| last_diff_value | last_diff_value(x, d) | 过去 d 天中与当前 x 不同的最近一个值。 |
| hump | hump(x, hump = 0.01) | 限制输入变化的幅度与次数,从而降低换手。 |
四、横截面类(Cross Sectional)
| 名称 | 定义 | 说明 |
|---|---|---|
| rank | rank(x, rate=2) | 在所有标的间对 x 排名,输出 0.0–1.0 的均匀分布;精确排序可用 rate=0。 |
| zscore | zscore(x) | 横截面 Z-score:相对该截面均值的标准差倍数。 |
| scale | scale(x, scale=1, longscale=1, shortscale=1) | 按规模缩放;可分别设置多头与空头的缩放系数。 |
| normalize | normalize(x, useStd = false, limit = 0.0) | 先求当日所有有效 Alpha 的均值,再对每个元素减去该均值。 |
| quantile | quantile(x, driver = gaussian, sigma = 1.0) | 对向量排名后经指定分布(gaussian/cauchy/uniform)变换;driver 为 uniform 时相当于减均值。 |
| winsorize | winsorize(x, std=4) | 将 x 限制在由均值 ± std 倍标准差确定的上下限内。 |
| vector_neut | vector_neut(x, y) | 求与向量 y 正交的 x*,使输出 x* 与 y 正交。 |
五、向量类(Vector)
| 名称 | 定义 | 说明 |
|---|---|---|
| vec_sum | vec_sum(x) | 对向量字段 x 求和。例:(2,3,5,6,3,8,10) → 37。 |
| vec_avg | vec_avg(x) | 对向量字段 x 求平均。例:(2,3,5,6,3,8,10) → 37/7 ≈ 5.29。 |
六、变换类(Transformational)
| 名称 | 定义 | 说明 |
|---|---|---|
| trade_when | trade_when(x, y, z) | 仅在满足某条件时更新 Alpha 值,否则保持;也可在满足条件时平仓(赋 NaN)。 |
| bucket | bucket(rank(x), range="0, 1, 0.1" 或 buckets = "2,5,6,7,10") | 将浮点值映射到用户指定区间的索引,常用于生成分组并作为 GROUP 的输入。 |
七、分组类(Group)
| 名称 | 定义 | 说明 |
|---|---|---|
| group_rank | group_rank(x, group) | 在每组内对 x 排名,每个元素得到其组内排名。 |
| group_mean | group_mean(x, weight, group) | 组内元素等于该组的(加权)均值。 |
| group_zscore | group_zscore(x, group) | 组内 Z-score:(x - 组均值) / 组标准差。 |
| group_scale | group_scale(x, group) | 组内归一化到 0–1:(x - 组最小) / (组最大 - 组最小)。 |
| group_neutralize | group_neutralize(x, group) | 按组对 Alpha 做中性化,组可为子行业、行业、板块、国家或常数等。 |
| group_backfill | group_backfill(x, group, d, std = 4.0) | 若某日某标的为 NaN,则用同组标的过去 d 天的非 NaN 值做 winsorize 后的均值填充。 |