首页 > 新闻中心 > > 正文

世界热点!解锁大厂量化交易的秘籍:选股因子分析(六)

时间:2023-06-21 11:32:10 来源:个人图书馆-常熟老李jlr5mr

今天,我们来继续学习量化选股因子alpha101,alpha101是一组由WorldQuant发表的论文《101 Formulaic Alphas》中给出的101个基于行情数据的因子,这些因子可以结合机器学习来进行量化选股。WorldQuant是一家全球量化资产管理公司,该公司被认为是全球量化界的黄埔军校,培养出了一批顶级的Quant人才。根据资料显示这里面还有不少因子仍然有效,我们先来看看函数定义,然后分析一下公式含义,在后续的系列文章中我们将自己跑一下代码分析这些因子在A股的有效性。

系列文章1:解锁大厂量化交易秘诀:选股因子分析(一)

系列文章2:解锁大厂量化交易秘诀:选股因子分析(二)


(相关资料图)

系列文章3:解锁大厂量化交易秘诀:选股因子分析(三)

系列文章4:解锁大厂量化交易的秘籍:选股因子分析(四)

系列文章5:解锁大厂量化交易的秘籍:选股因子分析(五)

Alpha#51(((((delay($close, 20) - delay($close, 10)) / 10) - ((delay($close, 10) - $close) / 10)) < (-1 *0.05)) ? 1 : ((-1 * 1) * ($close - delay($close, 1))))

解析:

((delay($close, 20) - delay($close, 10)) / 10):当前收盘价与10天前的收盘价之差,再与20天前的收盘价与10天前的收盘价之差做平均,得到的值除以10。

((delay($close, 10) - $close) / 10):10天前的收盘价与当前收盘价之差,得到的值除以10。

(((delay($close, 20) - delay($close, 10)) / 10) - ((delay($close, 10) - $close) / 10)):将步骤1和步骤2得到的两个值相减。

(((delay($close, 20) - delay($close, 10)) / 10) - ((delay($close, 10) - $close) / 10)) < (-1 *0.05):判断步骤3得到的值是否小于-0.05。

如果步骤4的值为真,则返回1;否则,执行步骤6。

(-1 * 1) * ($close - delay($close, 1)):当前收盘价与前一天收盘价之差,再乘以-1和1,得到的值为当前收盘价相对于前一天收盘价的变化幅度的相反数。

整个条件语句的含义为:如果当前收盘价相对于10天前和20天前的收盘价变化幅度较小(小于-0.05),则返回1;否则,返回当前收盘价相对于前一天收盘价的变化幅度的相反数。

Alpha#52
((((-1 * ts_min($low, 5)) + delay(ts_min($low, 5), 5)) * rank(((sum($returns, 240) -sum($returns, 20)) / 220))) * ts_rank($volume, 5))

解析:

ts_min($low, 5):取最近5个交易日的最低价的最小值。

-1 * ts_min($low, 5):将步骤1的结果乘以-1。

delay(ts_min($low, 5), 5):取5个交易日前步骤1的结果。

((-1 * ts_min($low, 5)) + delay(ts_min($low, 5), 5)):计算步骤2和步骤3得到的结果之和。

sum($returns, 240):计算最近240个交易日的收益率之和。

sum($returns, 20):计算最近20个交易日的收益率之和。

(sum($returns, 240) -sum($returns, 20)) / 220:计算步骤5和步骤6的差值除以220的结果。

rank(((sum($returns, 240) -sum($returns, 20)) / 220)):将步骤7的结果在所有股票中排名9. ts_rank($volume, 5):取最近5个交易日的成交量在所有股票中排名。

((-1 * ts_min($low, 5)) + delay(ts_min($low, 5), 5)) * rank(((sum($returns, 240) -sum($returns, 20)) / 220)):将步骤4和步骤8得到的结果相乘。

((-1 * ts_min($low, 5)) + delay(ts_min($low, 5), 5)) * rank(((sum($returns, 240) -sum($returns, 20)) / 220))) * ts_rank($volume, 5):将步骤10和步骤9得到的结果相乘。

整个表达式的含义为:将最近5个交易日的最低价的最小值取负数,再加上5个交易日前的最小值,得到的结果与最近240个交易日的收益率与最近20个交易日的收益率之差除以220的结果在所有股票中排名相乘,再乘以最近5个交易日的成交量在所有股票中排名的结果。

Alpha#53(-1 * delta(((($close - $low) - ($high - $close)) / ($close - $low)), 9))

解析:

$close:当前收盘价。

$low:当前最低价。

$high:当前最高价。

($close - $low):当前收盘价与最低价之差。

($high - $close):最高价与当前收盘价之差。

(($close - $low) - ($high - $close)):计算步骤4和步骤5的差值。

(($close - $low) - ($high - $close)) / ($close - $low):将步骤6的结果除以步骤4的结果,得到一个相对价格的指标。

delta((((($close - $low) - ($high - $close)) / ($close - $low))), 9):计算步骤7的指标在9个交易日内的变化量。

-1 * delta((((($close - $low) - ($high - $close)) / ($close - $low))), 9):将步骤8的结果乘以-1。

整个表达式的含义为:计算当前收盘价相对于其价格区间的中心位置的偏离程度,然后计算这个指标在过去9个交易日内的变化量,并将其乘以-1。

Alpha#54
((-1 * (($low - $close) * ($open^5))) / (($low - $high) * ($close^5)))

解析:

$low:当前最低价。

$close:当前收盘价。

$open:当前开盘价。

$high:当前最高价。

($low - $close):最低价与当前收盘价之差。

($low - $high):最低价与最高价之差。

($close^5):当前收盘价的5次方。

($open^5):当前开盘价的5次方。

($low - $close) * ($open^5):将步骤5和步骤8的结果相乘。

($low - $high) * ($close^5):将步骤6和步骤7的结果相乘。

(($low - $close) * ($open^5))) / (($low - $high) * ($close^5)):将步骤9和步骤10的结果相除。

-1 * (($low - $close) * ($open^5))) / (($low - $high) * ($close^5)):将步骤11的结果乘以-1。

整个表达式的含义为:计算价格区间中最低价与当前收盘价之差与最低价与最高价之差的乘积,然后将其除以当前收盘价的5次方与当前开盘价的5次方的乘积,并将结果乘以-1。

Alpha#55(-1 * correlation(rank((($close - ts_min($low, 12)) / (ts_max($high, 12) - ts_min($low,12)))), rank($volume), 6))

解析:

$close:当前收盘价。

ts_min($low, 12):最近12个交易日的最低价的最小值。

($close - ts_min($low, 12)):当前收盘价与最近12个交易日的最低价的最小值之差。

ts_max($high, 12):最近12个交易日的最高价的最大值。

(ts_max($high, 12) - ts_min($low, 12)):最近12个交易日的价格区间。

(($close - ts_min($low, 12)) / (ts_max($high, 12) - ts_min($low, 12))):将步骤3和步骤5的结果相除,得到一个相对价格的指标。

rank((((($close - ts_min($low, 12)) / (ts_max($high, 12) - ts_min($low, 12)))))):将步骤6的指标在所有股票中排名。

rank($volume):最近交易日的成交量在所有股票中排名。

correlation(rank((($close - ts_min($low, 12)) / (ts_max($high, 12) - ts_min($low,12)))), rank($volume), 6):计算步骤7和步骤8在过去6个交易日内的相关性。

-1 * correlation(rank((($close - ts_min($low, 12)) / (ts_max($high, 12) - ts_min($low,12)))), rank($volume), 6):将步骤9的结果乘以-1。

整个表达式的含义为:计算最近12个交易日的相对价格指标,然后将其在所有股票中排名,并计算最近交易日的成交量在所有股票中排名的相关性,在过去6个交易日内的平均值,并将其乘以-1。

Alpha#56
(0 - (1 * (rank((sum($returns, 10) / sum(sum($returns, 2), 3))) * rank(($returns * cap)))))

解析:

$returns:当前收益率。

sum($returns, 10):计算最近10个交易日的收益率之和。

sum(sum($returns, 2), 3):计算最近6个交易日的收益率之和。

(sum($returns, 10) / sum(sum($returns, 2), 3)):将步骤2和步骤3的结果相除,得到一个相对收益率的指标。

rank((sum($returns, 10) / sum(sum($returns, 2), 3))):将步骤4的指标在所有股票中排名。

cap:当前市值。

$returns * cap:将当前收益率与当前市值相乘。

rank(($returns * cap)):将步骤7的结果在所有股票中排名。

rank((sum($returns, 10) / sum(sum($returns, 2), 3))) * rank(($returns * cap)):将步骤5和步骤8得到的结果相乘。

1 * (rank((sum($returns, 10) / sum(sum($returns, 2), 3))) * rank(($returns * cap))):将步骤9的结果乘以1。

(0 - (1 * (rank((sum($returns, 10) / sum(sum($returns, 2), 3))) * rank(($returns * cap))))):将步骤10的结果乘以-1,并减去0。

整个表达式的含义为:计算最近10个交易日的收益率与最近6个交易日的收益率的总和之间的相对收益率指标,将其在所有股票中排名,然后将当前收益率与当前市值相乘,将其在所有股票中排名,再将这两个排名的结果相乘,并将结果乘以-1。

Alpha#57(0 - (1 * (($close - $vwap) / decay_linear(rank(ts_argmax($close, 30)), 2))))

解析:

$close:当前收盘价。

$vwap:当前加权平均价。

($close - $vwap):计算当前收盘价与当前加权平均价之差。

ts_argmax($close, 30):计算最近30个交易日中收盘价最高的交易日距离当前的天数。

rank(ts_argmax($close, 30)):将步骤4的结果在所有股票中排名。

decay_linear(rank(ts_argmax($close, 30)), 2):将步骤5的排名结果按指数衰减,得到一个加权排名。

(($close - $vwap) / decay_linear(rank(ts_argmax($close, 30)), 2)):将步骤3的结果除以步骤6的加权排名。

1 * (($close - $vwap) / decay_linear(rank(ts_argmax($close, 30)), 2)):将步骤7的结果乘以1。

(0 - (1 * (($close - $vwap) / decay_linear(rank(ts_argmax($close, 30)), 2)))):将步骤8的结果乘以-1,并减去0。

整个表达式的含义为:计算当前收盘价与当前加权平均价之差,然后将其除以按指数衰减加权的最近30个交易日中收盘价最高的交易日距离当前的天数在所有股票中排名的结果,并将结果乘以-1。

Alpha#58
(-1 * ts_rank(decay_linear(correlation(indneutralize($vwap, indclass.sector), $volume,3.92795), 7.89291), 5.50322))

解析:

$vwap:当前加权平均价。

indclass.sector:当前股票所属的行业。

indneutralize($vwap, indclass.sector):对当前加权平均价在行业内进行中性化处理。

$volume:当前成交量。

correlation(indneutralize($vwap, indclass.sector), $volume, 3.92795):计算当前加权平均价在行业内进行中性化处理后与当前成交量之间的相关性。

decay_linear(correlation(indneutralize($vwap, indclass.sector), $volume, 3.92795), 7.89291):将步骤5的结果按指数衰减,得到一个加权相关性。

ts_rank(decay_linear(correlation(indneutralize($vwap, indclass.sector), $volume,3.92795), 7.89291), 5.50322):将步骤6的加权相关性在所有股票中排名。

-1 * ts_rank(decay_linear(correlation(indneutralize($vwap, indclass.sector), $volume, 3.92795), 7.89291), 5.50322):将步骤7的排名结果乘以-1。

整个表达式的含义为:计算当前加权平均价在行业内进行中性化处理后与当前成交量之间的相关性,并将其按指数衰减加权,然后将其在所有股票中排名,并将结果乘以-1。

Alpha#59(-1 * ts_rank(decay_linear(correlation(indneutralize((($vwap * 0.728317) + ($vwap *(1 - 0.728317))), indclass.industry), $volume, 4.25197), 16.2289), 8.19648))

解析:

$vwap:当前加权平均价。

(($vwap * 0.728317) + ($vwap *(1 - 0.728317))):计算加权平均价的加权平均值,权重为0.728317和0.271683。

((($vwap * 0.728317) + ($vwap *(1 - 0.728317))):对步骤2的结果在行业内进行中性化处理。

indclass.industry:当前股票所属的行业。

indneutralize((($vwap * 0.728317) + ($vwap *(1 - 0.728317))), indclass.industry):对步骤3的结果在行业内进行中性化处理。

$volume:当前成交量。

correlation(indneutralize((($vwap * 0.728317) + ($vwap *(1 - 0.728317))), indclass.industry), $volume, 4.25197):计算步骤5的结果与当前成交量之间的相关性。

decay_linear(correlation(indneutralize((($vwap * 0.728317) + ($vwap *(1 - 0.728317))), indclass.industry), $volume, 4.25197), 16.2289):将步骤7的结果按指数衰减加权,得到一个加权相关性。

ts_rank(decay_linear(correlation(indneutralize((($vwap * 0.728317) + ($vwap *(1 - 0.728317))), indclass.industry), $volume, 4.25197), 16.2289), 8.19648):将步骤8的加权相关性在所有股票中排名。

-1 * ts_rank(decay_linear(correlation(indneutralize((($vwap * 0.728317) + ($vwap *(1 - 0.728317))), indclass.industry), $volume, 4.25197), 16.2289), 8.19648):将步骤9的排名结果乘以-1。

整个表达式的含义为:计算当前加权平均价的加权平均值,对其在行业内进行中性化处理,然后计算中性化后的加权平均值与当前成交量之间的相关性,并将其按指数衰减加权。将加权相关性在所有股票中排名,并将结果乘以-1。

Alpha#60
(0 - (1 * ((2 * scale(rank((((($close - $low) - ($high - $close)) / ($high - $low)) * $volume)))) -scale(rank(ts_argmax($close, 10))))))

解析:

$close:当前收盘价。

$low:当前最低价。

$high:当前最高价。

($close - $low):当前收盘价与最低价之差。

($high - $close):最高价与当前收盘价之差。

(($close - $low) - ($high - $close)):计算步骤4和步骤5的差值。

($high - $low):当前价格区间。

(($close - $low) - ($high - $close)) / ($high - $low):将步骤6的结果除以步骤7的结果,得到一个相对价格的指标。

$volume:当前成交量。

(((($close - $low) - ($high - $close)) / ($high - $low)) * $volume):将步骤8和步骤9的结果相乘,得到一个相对价格和成交量的指标。

rank((((($close - $low) - ($high - $close)) / ($high - $low)) * $volume))):将步骤10的指标在所有股票中排名。

scale(rank((((($close - $low) - ($high - $close)) / ($high - $low)) * $volume)))):将步骤11的排名结果进行归一化。

ts_argmax($close, 10):计算最近10个交易日中收盘价最高的交易日距离当前的天数。

rank(ts_argmax($close, 10)):将步骤13的结果在所有股票中排名。

scale(rank(ts_argmax($close, 10))):将步骤14的排名结果进行归一化。

((2 * scale(rank((((($close - $low) - ($high - $close)) / ($high - $low)) * $volume)))) - scale(rank(ts_argmax($close, 10)))):将步骤12和步骤15的归一化结果相减,再将结果乘以2。

1 * ((2 * scale(rank((((($close - $low) - ($high - $close)) / ($high - $low)) * $volume)))) - scale(rank(ts_argmax($close, 10))))):将步骤16的结果乘以1.

(0 - (1 * ((2 * scale(rank((((($close - $low) - ($high - $close)) / ($high - $low)) * $volume)))) - scale(rank(ts_argmax($close, 10)))))):将步骤17的结果乘以-1,并减去0。

整个表达式的含义为:计算当前收盘价与当前价格区间内的相对价格指标和成交量的乘积,将其在所有股票中排名并进行归一化处理,然后计算最近10个交易日中收盘价最高的交易日距离当前的天数在所有股票中排名并进行归一化处理,将这两个归一化结果相减,再将结果乘以2,并将最终结果乘以-1。

TODO
关键词:
x 广告
5月11日15时至12日15时,北京新增本土新冠肺炎病毒感染者36例

  中新网北京5月12日电(记者 杜燕)北京市疾病预防控制中心副主任、全国新型冠状病毒肺炎专家组成员庞星火在12日召开的北京市新冠肺炎疫

通讯:范长江侄女范家敏:“伯伯为全家带来新闻力量”

  中新网巴彦淖尔5月12日电 题:范长江侄女范家敏:“伯伯为全家带来新闻力量”  中新网记者 李爱平  50岁的范家敏人生中的“骄傲

四川广安新增无症状感染者25例 2000余名医务人员支援邻水

  (抗击新冠肺炎)四川广安新增无症状感染者25例 2000余名医务人员支援邻水  中新网成都5月12日电(王爵 王林)12日上午,四川广安市召

国际护士节拳拳之心战疫情:小桌子,大责任

  中新网西宁5月12日电 题:国际护士节拳拳之心战疫情:小桌子,大责任  中新网记者 张添福  5月8日,是母亲节。在青海,恰是很多

京杭大运河全线通水 入河北省南运河水量近1.5亿立方米

  中新社石家庄5月12日电 (李晓伟 任树春 吕培)据河北省水利厅12日消息,4月28日,京杭大运河实现近一个世纪以来首次全线通水,截至5

广东暴雨天气将持续 需继续做好防御

  中新网广州5月12日电 (记者 王坚)广东省气象局12日发布消息称,10日到12日早晨,该省大部分市县先后出现了暴雨到大暴雨局地特大暴雨

x 广告

Copyright   2015-2022 起点评测网版权所有   备案号:皖ICP备2022009963号-12   联系邮箱: 39 60 29 14 2@qq.com