abs(x)
绝对值 of x
解析:
返回 x
的绝对值,即忽略 x
的符号,仅返回其数值大小。例如,abs(-5)
将返回 5
。
add(x, y, filter = false)
, x + y
所有输入相加(至少需要 2 个输入)。如果 filter = true
,在相加前将所有输入的 NaN 过滤为 0。
解析:
将多个输入值相加。如果 filter
参数设置为 true
,则在相加之前,将所有 NaN 值替换为 0
,以避免计算过程中出现 NaN 结果。
densify(x)
将许多桶的分组字段转换为较少数量的可用桶,以提高分组字段的计算效率。
解析:
优化分组字段,通过减少分组的数量来提高计算效率。这在处理大量分组数据时尤为有用,可以降低计算资源的消耗。
divide(x, y)
, x / y
x
除以 y
解析:
执行除法运算,将 x
除以 y
。例如,divide(10, 2)
将返回 5
。
inverse(x)
1 / x
解析:
返回 x
的倒数。如果 x = 2
,则 inverse(x)
返回 0.5
。
log(x)
自然对数。例如:log(high/low)
使用 high/low
比率的自然对数作为股票权重。
解析:
计算 x
的自然对数(以 e
为底)。在金融中,常用于处理比例数据,以便更好地分析其变化趋势。
max(x, y, ..)
所有输入中的最大值。至少需要 2 个输入。
解析:
返回一组数中的最大值。例如,max(3, 7, 2)
将返回 7
。
min(x, y ..)
所有输入中的最小值。至少需要 2 个输入。
解析:
返回一组数中的最小值。例如,min(3, 7, 2)
将返回 2
。
multiply(x, y, ... , filter=false)
, x * y
所有输入相乘。至少需要 2 个输入。filter
设置为 true
时,将 NaN 值设置为 1
。
解析:
将多个输入值相乘。如果 filter
参数设置为 true
,则在相乘之前,将所有 NaN 值替换为 1
,以确保计算结果不受 NaN 值的影响。
power(x, y)
x
的 y
次方
解析:
将 x
提升到 y
次方。例如,power(2, 3)
将返回 8
。
reverse(x)
-x
解析:
返回 x
的相反数。例如,reverse(5)
将返回 -5
。
sign(x)
如果输入为 NaN,则返回 NaN。
解析:
返回 x
的符号。如果 x
为正数,返回 1
;如果为负数,返回 -1
;如果为零,返回 0
。如果 x
是 NaN,则返回 NaN。
signed_power(x, y)
将 x
提升到 y
次方,并保持 x
的符号。
解析:
计算 x
的 y
次方,同时保留 x
的正负号。例如,signed_power(-2, 3)
将返回 -8
。
subtract(x, y, filter=false)
, x - y
x
减 y
。如果 filter = true
,则在相减前将所有输入的 NaN 过滤为 0
。
解析:
执行减法运算,将 y
从 x
中减去。如果 filter
参数设置为 true
,则在相减之前,将所有 NaN 值替换为 0
。
and(input1, input2)
逻辑与运算符,如果两个操作数都为真,则返回真,否则返回假。
解析:
执行逻辑与操作,仅当所有输入均为真(通常表示为 1
)时,结果为真;否则为假(0
)。
if_else(input1, input2, input3)
如果 input1
为真,则返回 input2
,否则返回 input3
。
解析:
类似于编程语言中的三元运算符,用于根据条件选择不同的值。
input1 < input2
如果 input1
小于 input2
,则返回真,否则返回假。
解析:
执行小于比较操作,用于判断一个值是否小于另一个值。
input1 <= input2
如果 input1
小于或等于 input2
,则返回真,否则返回假。
解析:
执行小于等于比较操作,用于判断一个值是否小于或等于另一个值。
input1 == input2
如果两个输入相同,则返回真,否则返回假。
解析:
执行等于比较操作,用于判断两个值是否相等。
input1 > input2
逻辑比较运算符,用于比较两个输入。
解析:
执行大于比较操作,用于判断一个值是否大于另一个值。
input1 >= input2
如果 input1
大于或等于 input2
,则返回真,否则返回假。
解析:
执行大于等于比较操作,用于判断一个值是否大于或等于另一个值。
input1 != input2
如果两个输入不相同,则返回真,否则返回假。
解析:
执行不等于比较操作,用于判断两个值是否不相等。
is_nan(input)
如果 input
为 NaN,则返回 1
,否则返回 0
。
解析:
检查输入是否为 NaN(非数值),用于数据清洗和缺失值处理。
not(x)
返回 x
的逻辑非。如果 x
为真(1
),则返回假(0
);如果 x
为假(0
),则返回真(1
)。
解析:
执行逻辑非操作,用于反转布尔值。
or(input1, input2)
逻辑或运算符,如果任一或两个输入为真,则返回真,否则返回假。
解析:
执行逻辑或操作,只要有一个输入为真,结果就为真。
days_from_last_change(x)
自 x
上次变化以来的天数。
解析:
计算当前天数与 x
上次发生变化的天数差,用于识别变化频率。
hump(x, hump = 0.01)
限制 x
的变化量和幅度(从而降低换手率)。
解析:
通过限制 x
的变化幅度,减少策略的频繁交易,降低换手率。
kth_element(x, d, k)
通过回溯 d
天返回 x
的第 k
个值。如果 k=1
,可用于填补缺失数据。
解析:
在时间序列中查找第 k
个值,常用于数据填补和历史数据分析。
last_diff_value(x, d)
返回过去 d
天内最后一个与当前 x
不同的 x
值。
解析:
查找时间序列中最近一次 x
变化的值,用于识别最新的非重复数据点。
ts_arg_max(x, d)
返回过去 d
天时间序列中最大值的相对索引。如果当前天是最大值,返回 0
;如果前一天是最大值,返回 1
。
解析:
确定过去 d
天内 x
的最大值出现的位置,用于识别时间窗口内的极值点。
ts_arg_min(x, d)
返回过去 d
天时间序列中最小值的相对索引。如果当前天是最小值,返回 0
;如果前一天是最小值,返回 1
。
解析:
确定过去 d
天内 x
的最小值出现的位置,用于识别时间窗口内的极小值点。
ts_av_diff(x, d)
返回 x
减去过去 d
天的均值 (tsmean(x, d)
)。处理 NaN 值时,均值计算忽略 NaN。
解析:
衡量当前值相对于过去 d
天平均值的偏差,用于识别趋势和异常值。
ts_backfill(x, lookback = d, k=1, ignore="NAN")
回填过程,用有意义的值替换 NaN 或 0
值(即第一个非 NaN 值)。
解析:
填补时间序列中的缺失值,确保数据的连续性和完整性。
ts_corr(x, y, d)
返回过去 d
天内 x
和 y
的相关性。
解析:
计算两个时间序列在指定时间窗口内的相关系数,用于分析它们之间的线性关系。
ts_count_nans(x, d)
返回过去 d
天内 x
的 NaN 值数量。
解析:
统计时间序列中缺失值的数量,用于数据质量评估和清洗。
ts_covariance(y, x, d)
返回过去 d
天内 y
和 x
的协方差。
解析:
衡量两个时间序列在指定时间窗口内的协同变化程度,用于风险管理和多因子分析。
ts_decay_linear(x, d, dense = false)
返回过去 d
天内 x
的线性衰减值。dense=false
表示稀疏模式,将 NaN 视为 0
;dense=true
则不处理 NaN。
解析:
应用线性衰减函数,对时间序列数据进行加权,强调最近的数据点,降低较早数据的影响。
ts_delay(x, d)
返回 x
在 d
天前的值。
解析:
获取时间序列中 d
天前的数据点,用于计算滞后指标和趋势分析。
ts_delta(x, d)
返回 x
减去 x
在 d
天前的值。
解析:
计算时间序列中 x
的变化量,用于衡量增长或下降的幅度。
ts_mean(x, d)
返回过去 d
天内 x
的平均值。
解析:
计算时间序列在指定时间窗口内的平均值,用于识别趋势和中心倾向。
ts_product(x, d)
返回过去 d
天内 x
的乘积。
解析:
计算时间序列在指定时间窗口内所有值的乘积,用于特定的数学分析。
ts_quantile(x, d, driver="gaussian")
计算 ts_rank
,并对其值应用由 driver
分布决定的逆累积分布函数。driver
可选为 "gaussian"
(默认)、"uniform"
、"cauchy"
。
解析:
将时间序列数据进行分位数转换,并根据指定的分布模型进行调整,用于标准化和概率分布分析。
ts_rank(x, d, constant = 0)
对过去 d
天内 x
的值进行排名,然后返回当前值的排名加上 constant
。默认情况下,constant = 0
。
解析:
评估当前数据点在过去 d
天内的相对排名,用于趋势识别和排序策略。
ts_regression(y, x, d, lag = 0, rettype = 0)
返回与回归函数相关的各种参数。
解析:
执行时间序列回归分析,返回回归模型的参数,如斜率、截距、R² 等,用于预测和趋势分析。
ts_scale(x, d, constant = 0)
返回 (x - ts_min(x, d)) / (ts_max(x, d) - ts_min(x, d)) + constant
。此操作符类似于缩放操作,但在时间序列空间中进行。
解析:
标准化时间序列数据,使其值在 [0, 1]
范围内波动,有助于比较不同时间窗口的数据。
ts_std_dev(x, d)
返回过去 d
天内 x
的标准差。
解析:
计算时间序列在指定时间窗口内的波动性,用于风险评估和趋势分析。
ts_step(1)
, step(1)
返回天数计数器。
解析:
用于计数时间序列中的天数,常用于循环或递增操作。
ts_sum(x, d)
返回过去 d
天内 x
的总和。
解析:
计算时间序列在指定时间窗口内的累积值,用于识别总体趋势和累计效果。
ts_zscore(x, d)
Z-score 是一种数值测量,描述一个值与一组值的均值的关系。Z-score 是以标准差为单位的离均差:(x - tsmean(x,d)) / tsstddev(x,d)
。此操作符有助于减少异常值和回撤。
解析:
标准化时间序列数据,衡量当前值与过去 d
天平均值的偏差程度,有助于识别异常和趋势。
normalize(x, useStd = false, limit = 0.0)
计算某日期所有有效 Alpha 值的平均值,然后从每个元素中减去该平均值。
解析:
对横截面数据进行均值归一化,消除整体偏移,使得各个 Alpha 值更具相对意义。
quantile(x, driver = gaussian, sigma = 1.0)
对原始向量进行排名,移动排名后的 Alpha 向量,并根据 driver
分布(gaussian
、cauchy
、uniform
)应用逆累积分布函数。如果 driver
是 uniform
,则简单地将每个 Alpha 值减去所有 Alpha 值的均值。
解析:
将数据进行分位数转换,并根据指定的概率分布进行调整,用于标准化和概率分布分析。
rank(x, rate=2)
对输入在所有工具中进行排名,并返回一个在 0.0
到 1.0
之间均匀分布的数值。为了精确排序,可以将 rate
设置为 0
。
解析:
将数据进行排名并标准化到 [0, 1]
范围,用于量化模型中的排序和分布分析。
scale(x, scale=1, longscale=1, shortscale=1)
将输入按账面规模(booksize)进行缩放。可以通过指定额外参数来分别缩放多头和空头仓位。
解析:
对数据进行缩放处理,以适应不同的投资组合规模或仓位管理策略。
winsorize(x, std=4)
对 x
进行 Winsor 化,确保所有 x
的值都在指定的标准差倍数范围内。详细信息可查阅维基百科。
解析:
通过限制极端值(异常值)的影响,提高数据的稳健性,减少异常值对模型的干扰。
zscore(x)
Z-score 是一种数值测量,描述一个值与一组值的均值的关系。Z-score 是以标准差为单位的离均差。
解析:
标准化数据,使其均值为 0
,标准差为 1
,用于比较不同数据集或识别异常值。
vec_avg(x)
计算向量字段 x
的平均值。
解析:
对向量数据进行平均处理,用于获取整体趋势或中心值。
vec_sum(x)
计算向量字段 x
的总和。
解析:
对向量数据进行求和,用于累积值或整体量化分析。
bucket(rank(x), range="0, 1, 0.1" 或者 buckets = "2,5,6,7,10")
将浮点值转换为用户指定桶的索引。桶操作符对于创建分组值非常有用,这些分组值可以作为输入传递给 GROUP
。
解析:
对数据进行分桶处理,将连续值转换为离散的类别,有助于分类和分组分析。
trade_when(x, y, z)
仅在指定条件下改变 Alpha 值,并在其他情况下保持 Alpha 值不变。还允许在指定条件下关闭 Alpha 仓位(分配 NaN 值)。
解析:
根据条件触发交易信号,控制 Alpha 值的变动和仓位管理,避免在不合适的时机进行交易。
group_backfill(x, group, d, std = 4.0)
如果某个日期和工具的值为 NaN,则从同一组的工具中计算过去 d
天内所有非 NaN 值的 Winsor 化均值来填补。
解析:
在分组数据中填补缺失值,通过计算组内其他工具的统计值,提高数据的完整性和稳健性。
group_mean(x, weight, group)
组内所有元素的加权平均值。
解析:
计算分组数据的加权均值,用于识别组内的中心趋势和比较工具间的表现。
group_neutralize(x, group)
对 Alpha 进行组中性化处理。组可以是子行业、行业、部门、国家或常数。
解析:
消除组内的共同因素影响,使 Alpha 值更能反映工具的独特表现,减少组间的系统性偏差。
group_rank(x, group)
为组内的每个元素分配相应的排名。
解析:
在指定分组内对数据进行排序,生成相对排名,用于横截面分析和策略优化。
group_zscore(x, group)
计算组内的 Z-score,即描述一个值相对于组内均值的关系。Z-score 是以标准差为单位的离均差。
解析:
在分组数据中标准化 Alpha 值,衡量每个工具相对于其组的表现,有助于识别相对强势或弱势工具。
上述操作符涵盖了从基础的算术和逻辑运算,到复杂的时间序列和分组处理。这些操作符在量化分析和策略开发中起到关键作用,帮助分析师和交易者对数据进行各种计算、标准化、过滤和转换,以构建有效的投资模型和策略。
通过合理使用这些操作符,可以构建出复杂而高效的量化策略,提升投资组合的表现和风险控制能力。
如果你有具体的操作符需要进一步解析或在策略中如何应用的疑问,请随时告知!