今天,我们来继续学习量化选股因子alpha101,alpha101是一组由WorldQuant发表的论文《101 Formulaic Alphas》中给出的101个基于行情数据的因子,这些因子可以结合机器学习来进行量化选股。WorldQuant是一家全球量化资产管理公司,该公式被认为是全球量化界的黄埔军校,培养出了一批顶级的Quant人才。根据资料显示这里面还有不少因子仍然有效,我们先来看看函数定义,然后分析一下公式含义,在后续的系列文章中我们将自己跑一下代码分析这些因子在A股的有效性。
系列文章一:解锁大厂量化交易秘诀:选股因子分析(一)
Alpha#8(-1 * rank(((sum($open, 5) * sum($returns, 5)) - delay((sum($open, 5) * sum($returns, 5)),10))))这个量化因子可以分为以下几个部分:
sum($open, 5):表示过去5个交易日的股票开盘价之和。
sum($returns, 5):表示过去5个交易日的股票收益率之和。
(sum($open, 5) * sum($returns, 5)):将过去5个交易日的股票开盘价之和和收益率之和相乘。
delay((sum($open, 5) * sum($returns, 5)),10):将过去5个交易日的股票开盘价之和和收益率之和乘积向前推迟10个交易日。
((sum($open, 5) * sum($returns, 5)) - delay((sum($open, 5) * sum($returns, 5)),10)):计算过去5个交易日的股票开盘价和收益率乘积与向前推迟10个交易日的乘积之差。
rank(((sum($open, 5) * sum($returns, 5)) - delay((sum($open, 5) * sum($returns, 5)),10))):将第5步中的差值进行排名。
最后,整个量化因子乘以-1得到负数。
综上所述,该量化因子的计算步骤如下:
计算过去5个交易日的股票开盘价之和。
计算过去5个交易日的股票收益率之和。
将过去5个交易日的股票开盘价之和和收益率之和相乘。
将过去5个交易日的股票开盘价之和和收益率之和乘积向前推迟10个交易日。
计算过去5个交易日的股票开盘价和收益率乘积与向前推迟10个交易日的乘积之差。
对第5步中的差值进行排名。
将排名乘以-1得到负数。
这个量化因子的目的可能是寻找过去一段时间内的股票开盘价和收益率之间的相对关系,并且将这种关系的强度通过排名映射到一个连续的数值范围内,以便于后续的股票策略设计和分析。由于这个量化因子是负的,因此它可能会被用作股票策略中的“做空”信号,即认为排名较低的股票可能会在未来表现较差。
Alpha#9((0 < ts_min(delta($close, 1), 5)) ? delta($close, 1) : ((ts_max(delta($close, 1), 5) < 0) ?delta($close, 1) : (-1 * delta($close, 1))))
这个量化因子可以分为以下几个部分:
delta($close, 1):表示今天的收盘价减去昨天的收盘价。
delta($close, 1):同上。
delta($close, 1):同上。
ts_min(delta($close, 1), 5):表示过去5个交易日中,每日的收盘价变化量(即今天的收盘价减去昨天的收盘价)的最小值。
0 < ts_min(delta($close, 1), 5):如果过去5个交易日中,每日的收盘价变化量的最小值大于0,则返回真,否则返回假。
((0 < ts_min(delta($close, 1), 5)) ? delta($close, 1) : ((ts_max(delta($close, 1), 5) < 0) ?delta($close, 1) : (-1 * delta($close, 1)))):如果第5步为真,则返回今天的收盘价减去昨天的收盘价;否则,如果过去5个交易日中,每日的收盘价变化量的最大值小于0,则返回今天的收盘价减去昨天的收盘价;否则返回今天的收盘价减去昨天的收盘价的相反数,即今天的收盘价比昨天下跌了。
综上所述,这个量化因子的计算步骤如下:
计算今天的收盘价减去昨天的收盘价。
计算今天的收盘价减去昨天的收盘价。
计算今天的收盘价减去昨天的收盘价的相反数。
计算过去5个交易日中,每日的收盘价变化量(即今天的收盘价减去昨天的收盘价)的最小值。
如果过去5个交易日中,每日的收盘价变化量的最小值大于0,则返回今天的收盘价减去昨天的收盘价;否则进入步骤6。
如果过去5个交易日中,每日的收盘价变化量的最大值小于0,则返回今天的收盘价减去昨天的收盘价;否则返回今天的收盘价减去昨天的收盘价的相反数,即今天的收盘价比昨天下跌了。
这个量化因子的目的可能是寻找股票价格的短期涨跌趋势,并且根据趋势的不同,采取不同的交易策略。具体来说,当过去5个交易日中,每日的收盘价变化量的最小值大于0时,表明股票价格存在上涨趋势,因此可以考虑买入;当过去5个交易日中,每日的收盘价变化量的最大值小于0时,表明股票价格存在下跌趋势,因此可以考虑卖出或做空;否则表明股票价格波动较为平稳,可以考虑持有或观望。
Alpha#10rank(((0 < ts_min(delta($close, 1), 4)) ? delta($close, 1) : ((ts_max(delta($close, 1), 4) < 0)? delta($close, 1) : (-1 * delta($close, 1)))))这个量化因子可以分为以下几个部分:
delta($close, 1):表示今天的收盘价减去昨天的收盘价。
delta($close, 1):同上。
delta($close, 1):同上。
ts_min(delta($close, 1), 4):表示过去4个交易日中,每日的收盘价变化量(即今天的收盘价减去昨天的收盘价)的最小值。
0 < ts_min(delta($close, 1), 4):如果过去4个交易日中,每日的收盘价变化量的最小值大于0,则返回真,否则返回假。
((0 < ts_min(delta($close, 1), 4)) ? delta($close, 1) : ((ts_max(delta($close, 1), 4) < 0)? delta($close, 1) : (-1 * delta($close, 1)))):如果第5步为真,则返回今天的收盘价减去昨天的收盘价;否则,如果过去4个交易日中,每日的收盘价变化量的最大值小于0,则返回今天的收盘价减去昨天的收盘价;否则返回今天的收盘价减去昨天的收盘价的相反数,即今天的收盘价比昨天下跌了。
rank(((0 < ts_min(delta($close, 1), 4)) ? delta($close, 1) : ((ts_max(delta($close, 1), 4) < 0)? delta($close, 1) : (-1 * delta($close, 1))))):将第6步中的结果进行排名。
综上所述,这个量化因子的计算步骤如下:
计算今天的收盘价减去昨天的收盘价。
计算今天的收盘价减去昨天的收盘价。
计算今天的收盘价减去昨天的收盘价的相反数。
计算过去4个交易日中,每日的收盘价变化量(即今天的收盘价减去昨天的收盘价)的最小值。
如果过去4个交易日中,每日的收盘价变化量的最小值大于0,则返回今天的收盘价减去昨天的收盘价;否则进入步骤6。
如果过去4个交易日中,每日的收盘价变化量的最大值小于0,则返回今天的收盘价减去昨天的收盘价;否则返回今天的收盘价减去昨天的收盘价的相反数,即今天的收盘价比昨天下跌了。
对第6步中的结果进行排名。
这个量化因子的目的与前一个类似,都是寻找股票价格的短期涨跌趋势,并且根据趋势的不同采取不同的交易策略。与前一个因子不同的是,这个因子的计算中使用了一个较短的时间窗口(4天),因此更注重短期的价格变化情况。
Alpha#11((rank(ts_max(($vwap - $close), 3)) + rank(ts_min(($vwap - $close), 3))) *rank(delta($volume, 3)))
这个量化因子可以分为以下几个部分:
$vwap - $close:表示当日的成交量加权平均价减去当日的收盘价。
ts_max(($vwap - $close), 3):表示过去3个交易日中,每日的成交量加权平均价减去收盘价的最大值。
rank(ts_max(($vwap - $close), 3)):对第2步中的结果进行排名。
ts_min(($vwap - $close), 3):表示过去3个交易日中,每日的成交量加权平均价减去收盘价的最小值。
rank(ts_min(($vwap - $close), 3)):对第4步中的结果进行排名。
delta($volume, 3):表示今天的成交量减去3天前的成交量。
rank(delta($volume, 3)):对第6步中的结果进行排名。
((rank(ts_max(($vwap - $close), 3)) + rank(ts_min(($vwap - $close), 3))) *rank(delta($volume, 3))):将第3步和第5步中的排名结果相加,并将结果与第7步中的排名结果相乘。
综上所述,这个量化因子的计算步骤如下:
计算当日的成交量加权平均价减去当日的收盘价。
计算过去3个交易日中,每日的成交量加权平均价减去收盘价的最大值。
对第2步中的结果进行排名。
计算过去3个交易日中,每日的成交量加权平均价减去收盘价的最小值。
对第4步中的结果进行排名。
计算今天的成交量减去3天前的成交量。
对第6步中的结果进行排名。
将第3步和第5步中的排名结果相加,并将结果与第7步中的排名结果相乘,得到最终的结果。
这个量化因子的目的可能是寻找股票价格和成交量之间的关系,并且根据关系的不同采取不同的交易策略。具体来说,这个因子计算了当日的成交量加权平均价和收盘价之间的差异,并将这个差异与过去几天的最大差异和最小差异以及成交量的变化量进行排名组合。排名操作将这些因子映射到一个连续的数值范围内,方便后续的股票策略设计和分析。
通过这个量化因子,可以识别出成交量和价格之间的正负相关性和强度。如果成交量和价格的正相关性比较强,那么这个因子的值可能会比较高,反之则可能比较低。根据这个因子的值和趋势,可以考虑采取不同的交易策略,比如当这个因子的值比较高时,可能要考虑买入股票,而当这个因子的值比较低时,则可能要考虑卖出或做空股票。
Alpha#12(sign(delta($volume, 1)) * (-1 * delta($close, 1)))抱歉,我的前一个回答有误。sign函数是一个符号函数,而不是正弦函数。我解释一下这个量化因子的计算方法:
delta($volume, 1):表示今天的成交量减去昨天的成交量。
sign(delta($volume, 1)):如果今天的成交量大于昨天的成交量,则返回1;如果今天的成交量小于昨天的成交量,则返回-1;如果今天的成交量等于昨天的成交量,则返回0。
delta($close, 1):表示今天的收盘价减去昨天的收盘价。
(-1 * delta($close, 1)):表示昨天的收盘价减去今天的收盘价。
(sign(delta($volume, 1)) * (-1 * delta($close, 1))):将第2步和第4步中的结果相乘。
综上所述,这个量化因子的计算步骤如下:
计算今天的成交量减去昨天的成交量。
如果今天的成交量大于昨天的成交量,则返回1;如果今天的成交量小于昨天的成交量,则返回-1;如果今天的成交量等于昨天的成交量,则返回0。这里使用的是符号函数sign(),而不是正弦函数。
计算今天的收盘价减去昨天的收盘价。
计算昨天的收盘价减去今天的收盘价。
将第2步和第4步中的结果相乘,得到最终的结果。
这个量化因子的目的可能是寻找成交量和价格之间的关系,并且根据关系的不同采取不同的交易策略。具体来说,这个因子计算了成交量的变化方向和价格的变化方向,并将它们相乘得到一个新的因子。如果成交量和价格的变化方向一致,那么这个因子的值为负数,反之则为正数。在这个量化因子中,用符号函数sign()来判断成交量变化的方向,并用负数的价格变化来表示价格的变化方向。因此,如果成交量和价格的变化方向一致,那么这个因子的值将为负数,表示市场可能出现了反转或调整的信号;如果成交量和价格的变化方向不一致,那么这个因子的值将为正数,表示市场可能会延续之前的趋势。
通过这个量化因子,可以识别出成交量和价格之间的关系和变化方向,并根据变化方向采取不同的交易策略。如果成交量和价格的变化方向不一致,那么可能要考虑跟随趋势进行交易;如果成交量和价格的变化方向一致,那么可能要考虑谨慎调整仓位或者进行逆向操作。
Alpha#13(-1 * rank(covariance(rank($close), rank($volume), 5)))
这个量化因子包含了以下几个步骤:
首先,将收盘价($close)和成交量($volume)的排名分别计算出来,得到两个排名序列;
接着,将这两个排名序列作为输入,计算它们在过去5天内的时间序列协方差(covariance);
再将这个协方差序列的排名(rank)计算出来;
最后,将这个排名序列乘以-1,得到最终的输出。
因此,这个量化因子的作用是计算收盘价和成交量之间在过去5天内的时间序列协方差,然后将计算出的结果按照排名进行排序并取相反数,表示越小的值越好。
Alpha#14((-1 * rank(delta($returns, 3))) * correlation($open, $volume, 10))这个量化因子包含了以下几个步骤:
首先,计算收益率($returns)在过去3天内的变化量,得到一个时间序列;
接着,将这个时间序列的排名(rank)计算出来,并将其乘以-1;
然后,计算开盘价($open)和成交量($volume)在过去10天内的时间序列相关性(correlation);
最后,将第2步计算出的排名序列和第3步计算出的相关性相乘,得到最终的输出。
因此,这个量化因子的作用是计算收益率在过去3天内的变化量,并将其排名后取相反数,表示越小的值越好;同时,也考虑了开盘价和成交量在过去10天内的相关性,表示开盘价和成交量的关系对该股票的影响。最终输出的值越小,表示该股票的收益率变化和开盘价与成交量之间的相关性越高,可能表明该股票更有价值或更有潜力。
Alpha#15(-1 * sum(rank(correlation(rank($high), rank($volume), 3)), 3))
这个量化因子包含了以下几个步骤:
首先,将最高价($high)和成交量($volume)的排名分别计算出来,得到两个排名序列;
接着,将这两个排名序列作为输入,计算它们在过去3天内的时间序列相关性(correlation);
再将这个相关性序列的排名(rank)计算出来;
接下来,对第3步计算出的排名序列在过去3天内进行求和(sum);
最后,将第4步的结果乘以-1,得到最终的输出。
因此,这个量化因子的作用是计算最高价和成交量之间在过去3天内的时间序列相关性,然后将计算出的结果进行排名,并在过去3天内进行求和,表示该股票在过去3天内最高价和成交量之间的相关性的总体表现。最终输出的值越小,表示该股票在过去3天内最高价和成交量之间的相关性越紧密,可能表明该股票更有潜力或者更具有投资价值。
Alpha#16(-1 * rank(covariance(rank($high), rank($volume), 5)))这个量化因子包含了以下几个步骤:
首先,将最高价($high)和成交量($volume)的排名分别计算出来,得到两个排名序列;
接着,将这两个排名序列作为输入,计算它们在过去5天内的时间序列协方差(covariance);
再将这个协方差序列的排名(rank)计算出来;
最后,将这个排名序列乘以-1,得到最终的输出。
因此,这个量化因子的作用是计算最高价和成交量之间在过去5天内的时间序列协方差,然后将计算出的结果进行排名,并取相反数,表示越小的值越好。最终输出的值越小,表示该股票在过去5天内最高价和成交量之间的波动性越小,可能表明该股票更稳定或者更适合用于风险控制。
Alpha#17(((-1 * rank(ts_rank($close, 10))) * rank(delta(delta($close, 1), 1))) *rank(ts_rank(($volume / mean($volume,20)), 5)))
这个量化因子包含了以下几个步骤:
首先,计算收盘价($close)在过去10天内的时间序列排名(ts_rank);
然后,将第1步计算出的排名序列乘以-1,得到一个排名序列;
接着,计算收盘价在过去1天内的一阶差分(delta),并对这个一阶差分再次进行一阶差分,得到二阶差分的时间序列;
再将第3步计算出的时间序列进行排名;
然后,将第4步计算出的排名序列再次乘以-1,得到一个排名序列;
接下来,计算成交量($volume)在过去20天内的平均值(mean),并将每日成交量除以这个平均值,得到一个相对成交量的时间序列;
然后,计算这个相对成交量的时间序列在过去5天内的时间序列排名;
最后,将第6步和第7步计算出的排名序列相乘,得到最终的输出。
因此,这个量化因子的作用是综合考虑了收盘价和成交量在过去10天内的排名、收盘价在过去2天内的二阶差分的排名以及相对成交量在过去5天内的排名。最终输出的值越小,表示该股票在这些方面的表现越好,可能表明该股票更有投资价值或者更适合用于投机交易。
Alpha#18(-1 * rank(((stddev(abs(($close - $open)), 5) + ($close - $open)) + correlation($close, $open,10))))这个量化因子包含了以下几个步骤:
首先,计算收盘价($close)和开盘价($open)之差的绝对值,并在过去5天内计算它们的标准差(stddev);
然后,将第1步计算出的标准差加上收盘价和开盘价之差得到一个时间序列;
接下来,计算收盘价和开盘价在过去10天内的时间序列相关性(correlation);
最后,将第2步和第3步计算出的结果相加,并将相加的结果进行排名并取相反数。
因此,这个量化因子的作用是综合考虑了收盘价和开盘价之间的差异度(即第1步计算的标准差和差值),以及收盘价和开盘价在过去10天内的相关性。最终输出的值越小,表示该股票在这些方面的表现越好,可能表明该股票更有投资价值或者更适合用于投机交易。
Alpha#19((-1 * sign((($close - delay($close, 7)) + delta($close, 7)))) * (1 + rank((1 + sum($returns,250)))))
这个量化因子包含了以下几个步骤:
首先,计算收盘价($close)和7天前的收盘价之差,得到一个时间序列;
然后,计算收盘价在过去7天内的一阶差分(delta),并将两个时间序列相加;
接下来,将第2步计算出的结果取符号函数(sign);
然后,计算收益率($returns)在过去250天内的时间序列累加和(sum);
接着,将第4步计算出的时间序列加1,并将加1后的时间序列进行排名;
最后,将第3步和第5步计算出的结果相乘,并将相乘的结果取相反数。
因此,这个量化因子的作用是综合考虑了收盘价和7天前的收盘价之差以及收益率在过去250天内的累加和。最终输出的值越小,表示该股票在这些方面的表现越好,可能表明该股票更有投资价值或者更适合用于投机交易。具体地,第1步和第2步计算的结果可以反映出当前收盘价与一周前的收盘价的差异程度以及收盘价的短期变化趋势;第4步计算的结果可以反映出该股票的长期收益表现,而第5步计算的结果则对这个长期收益表现进行排名,从而将其转化为一个相对指标。
Alpha#20(((-1 * rank(($open - delay($high, 1)))) * rank(($open - delay($close, 1)))) * rank(($open -delay($low, 1))))这个量化因子包含了以下几个步骤:
首先,计算开盘价($open)与前一天的最高价(delay($high, 1))之差,并将差值的排名序列计算出来;
然后,将第1步计算出的排名序列乘以-1,得到一个排名序列;
接下来,计算开盘价与前一天的收盘价(delay($close, 1))之差,并将差值的排名序列计算出来;
然后,将第3步计算出的排名序列与第2步计算出的排名序列相乘,得到一个排名序列;
接着,计算开盘价与前一天的最低价(delay($low, 1))之差,并将差值的排名序列计算出来;
最后,将第4步计算出的排名序列与第5步计算出的排名序列相乘,得到最终的输出。
因此,这个量化因子的作用是综合考虑了开盘价与前一天的最高价、收盘价、最低价之间的差异性。该量化因子的输出值越小,表示该股票在这些方面的表现越好,可能表明该股票更具有投资价值或者更适合用于投机交易。具体来说,第1步和第3步计算的结果可以反映出当前开盘价与前一天的最高价、收盘价的差异程度,第5步计算的结果可以反映出当前开盘价与前一天的最低价的差异程度,而第2步到第4步计算出的排名序列则通过对这些差异程度进行排名,从而将其转化为一个相对指标。
TODO 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。美港通配资提示:文章来自网络,不代表本站观点。