The Sail(帆船)

A lonely sail seeming white, 一艘孤独的帆船看起来像是白色的

In misty haze mid blue sea, 航行在朦胧的阴霾中和蓝色的大海中

Be foreign gale seeking might? 是为了在陌生的大风中寻找可能性吗?

Why home bays did it flee? 为什么从家里的海湾中逃走?

The sail’s bending mast is creaking, 帆船弯曲的桅杆吱吱作响

The wind and waves blast ahead, 向着风浪前进

It isn’t happiness it’s seeking, 它追求的不是幸福

Nor is it happiness it’s fled! 也不是在逃避幸福

Beneath are running ázure streams, 下面奔流着蓝色的水流

Above are shining golden beams, 上面闪烁着金色的光束

But wishing storms the sail seems, 它看似好像在期望着风暴来临

As if in storms is peace it deems. 好像在风暴中才能让它平静

先以这篇论文最后的一首诗做为开头,激励正在奋斗的你我,希望能在航行中找到自我。

我对alpha的理解为:

A小姐2017-01-01买入S1股票,2017-01-05卖掉,盈利100元,B小姐在这5天当中,没有一直持有S1股票,而是根据某一个规则在2017-01-02才买入,2017-01-02就买出,然后又在2017-01-03买入,在2017-01-05卖掉,盈利108元,这个规则就是一个正的alpha,经过之后的测试和参数优化是可能成为实盘策略的。

对alpha影响最大的因素

波动,成交量没有明显的影响,记住做量化交易就是在做波动。

里面用到的函数和变量

现在讲讲这101个公式里面常用的一些函数吧,我之前以为就是简单的计算,没想到还用到了相关性,协方差等等东东,好头大

发现聚宽竟然全部实现了,还有函数的说明

rank() 引用

排列所有工具的 x 值,然后返回的数值是介于0.0和1.0之间均匀分布的浮点数。

例如假设你有一个向量:

A = [29, 12, 5, 7, 10]

现在,将会为向量里的每个元素按升序分级,最小一级为 0:

A = [29, 12, 5, 7, 10]

A' = [4, 3, 0, 1, 2]

每个“等级”再除以(元素个数 - 1)。于是得到:

Rank (A) = [1.00, 0.75, 0.00, 0.25, 0.50]

所以您等到了一个从 0 到 1 间距相等的向量。

 rank_open = (data['openPrice'].rank(axis=1)-1)/(max_window-1)

Correlation(x, y, n)

计算向量 x 中的值在过去n天的相关系数。请注意,n 必须小于256。

在pandas里面有个相关方便的函数DataFrame.corr()直接返回-1~1的数值

# 计算相关系数
def Neg_pearson(x,y):
    upside = ((x-x.mean())*(y-y.mean())).sum()
    downside = np.sqrt((np.square(x-x.mean()).sum())*(np.square(y-y.mean()).sum()))
    return upside/downside

stddev()

标准差 标准差

表明数据的离散程度,与正态分布有着一定的关系,表示一组数据中的离散程度

signedpower(x,a)

x^a

就是x的a次方,我找的中文资料当中,解释为 Sign(x) * (Abs(x)^e)

Sign(x):如果 x > 0,就返回 1,如果 x < 0,则返回 -1,如果 x == 0,返回 0

不要把Sign当做sin了哦,np.sign()

在01号alpha当中的作用是将两数值间的差异放大

其实就是保留符号的次方处理

ts_max(x,d)

基于时间序列的最大值

max(x,d)

ts_max(x,d)

Ts_ArgMax(x,n)

ts_max(x,d)最大值对应的索引

np.argmax() 详解

returns

今天的收盘价减去昨天的收盘价带来的收益 close-to-close

delta(x,d)

今天的x值减去d天前的x值

ts_rank(x,d)

没有一个地方讲明白了,应该与最后一天的值在序列中的排名值0~1之间

vwap

公式说明

中文说明

Typical Price = (H+L+C)/3

Cumulative(Volume x Typical Price)/Cumulative(Volume)

adv{d}

d天的平均成交额

注意不是成交量

Sign(x)

如果 x > 0,就返回 1,如果 x < 0,则返回 -1,如果 x == 0,返回 0

scale(x,a)

scale(x,a) = rescaled x such that sum(abs(x))=a (the default is a=1) 将x中的值标准化,使x的绝对值的和为a,默认a=1

decay_linear(x,d)

向前d天内的权重移动平均,越靠近现在权重越大,对权重做标准化,使其和为1

cap

market cap,市场容量,其实就是某支股票的市值

这101个Alpha

这些alpha很难直接盈利,而且这些公式很多是不能直接写在代码中的,需要自己进行改造,和创建卖点,这些公式更多的应该是让我们熟悉一下哪些因素能带来正的收益,而应用到自己的策略里面

#01    (rank(Ts_ArgMax(SignedPower(((returns < 0) ? stddev(returns, 20) : close), 2.), 5)) - 0.5)

源码参考链接

还真是有点小复杂,我要是不看这个源码分析,自己一下还真是很难逆向分析这其中的奥秘,按这位作者的理解,应该就是判断连续下跌多少天了,越久反弹的可能性越大。平均回归型的策略。

2018.3.10: 这个策略呢?主要是对当前的股票池里面的股票进行分析,参考的就是前5天内最高值最近的买的权重越大。

#03    (-1 * correlation(rank(open), rank(volume), 10))

源码参考链接

该alpha主要表现在的成交量和价格的负相关,也就是简单的量价背离,但是这个在主观交易还行,实盘可不行的,回测下来效果还是有点差,这个源码实现对卖点的把握差了点,第二天卖出,而且没有止损和止盈的操作。

2018.3.11: 价量背离的信号,注意101alpha的这种形式很有意思,用一个公式表现出来

#02    (-1 * correlation(rank(delta(log(volume),2)), rank(((close-open)/open)),6))

源码参考链接

delta(log(volume),2) -> log(volume) - log(volume(-2)) -> log(volume/volume(-2)) 这句其实就是计算的2天的成交量变化率

2018.3.14: 和03类似,但是03是绝对值是对方向,而02是针对变化率的方向,按几何意义加速向上是走的内圆,缓慢向上走的是外圆。和03的意义差不多,放量下跌,缩量上涨,其实这个是行不通的,现实情况应该是放量滞涨要卖的,而这个公式是要买的。价量关系

#04    (-1 * Ts_Rank(rank(low), 9))

2018.3.14: 9天内最后一天的最低值如果是最低的说明上涨的概率大,如果是最高的则说明下跌概率大,我也是猜的,我擦,价格单边变动

#05    (rank((open-(sum(vwap,10)/10)))(-1abs(rank((close - vwap)))))

2018.3.14 这个很难用语言描述,看起来像是open close的变化方向背离,但是在计算close的时候用了abs,所以在某一种情况下又不是背离,有点复杂,也说明rank或许会有负值,上面对于rank的解读可能会有错,who knows?难道是波动变小,而且总体方向向上的变小才是买入点?

#06    (-1*correlation(open, volume, 10))

2018.3.15 你妹的,这不和3基本差不多么,只是这个是原始值,03做了个rank,价量关系

#07    ((adv20<volume)?((-1ts_rank(abs(delta(close,7)),60))sign(delta(close,7))):(-1*1))

成交量小于20天均线才进行计算,如果大于直接-1,不操作。

小于20天均线时,7天内价差变化越大越好,而且方向要是向下的。

2018.3.16 人肉理解出来竟然要求是缩量下跌7天左右,我去,前面不是有话题下跌10的吗?回头想想,101aplha内部还会有矛盾,说明只要下跌个7天以上,大概率会上涨,我去,竟然是这个理。

#08    (-1 * rank(((sum(open,5)sum(returns,5))-delay((sum(open,5)sum(returns,5)),10))))

2018.3.19 以 sum(open,5) x sum(returns,5)为基本计算单元,当前的送去10天前的值,当前面有个-1后,那么就是减去的值越小越好,那么还是跌的越多越好...这已经绕不开越跌越涨的坑了。价格单边变动

#09    ((0<ts_min(delta(close,1),5)) ? delta(close,1):((ts_max(delta(close,1),5)<0)?delta(close,1):(-1*delta(close,1))))

条件:ts_min(delta(close,1),5) > 0 -> 5天中最小的价差都是大于的,说明这几天都在涨

True: delta(close,1) -> 今天的价差,这个值肯定是大于0的

False: ts_max(delta(close,1),5)<0 ? delta(close,1): -1*delta(close,1) 这里又是一个3元运算,如果这5天中最大的价差都小于0(跌了5天)返回今天的价差,否则返回今天的价差的反向值

2018.3.20 我去,有点绕,连续上涨或者下跌都给大的权重,涨涨跌跌就不操作,这也能成为alpha?真是计算机算出来的有点反人类,我猜给大权重不一定是做多,因为美股是可以做空的。价格单边变动

#10    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)))))

条件:0<ts_min(delta(close,1),4) 4天内隔天价差都大于0,那就是连续涨4天

True: delta(close,1) 取最后一天的价差

False: ts_max(delta(close,1),4)<0 ? delta(close,1) : -1*delta(close,1) 连续跌4天的话,也是最后一天的价差,不然就是价差的反向值

Final: 最后做一个rank

2018.3.21 和09是一样的,从5天变为4天,最后加了个rank,价格单边变动

公式源码

#11    ((rank(ts_max((vwap-close),3)) + rank(ts_min((vwap - close), 3))) * rank(delta(volume, 3)))

元素1: rank(ts_max((vwap-close),3)) + rank(ts_min((vwap - close), 3)) vwap-close越大说明成交量越大?(有待考察),这里max和min相加会抵消

**元素2: ** rank(delta(volume, 3)) 这里就是成交量越大,分级越高

**简化版: ** 元素1 × 元素2

2018.3.24 成交量越大越优先买入, 价量关系

#12    (sign(delta(volume,1))*(-1 * delta(close,1)))

公式源码

2018.3.24 又是一个越跌放量越买,上涨缩量卖的策略,这次只是两天。价量关系

#13    (-1 * rank(covariance(rank(close), rank(volume), 5)))

2018.3.26 这个其实很简单,誻5天内价和量的相关性越小越值午操作,比如缩量上涨,还有放量下跌,其实这里面很多alpha的思路都差不多,就是计算方式有点不一样,价量关系

#14    ((-1rank(delta(return,3)))correlation(open,volume,10))

2018.3.27 开盘价和成交量的方向要一样,每天的收益在减少,操作 或者 开盘价和成交量的方向不一样,每天的收益在增加,操作。至于操作是买入还是卖出呢?这个在101alpha里面大家要注意。就这个alpha而言应该是卖出,因为一个是放量滞涨,一个是缩量疯狂往上涨。价量关系

#15    (-1 * sum(rank(correlation(rank(high), rank(volume), 3)), 3))

2018.3.28 万变不离其宗,最高价和成交量反着走时操作,价量关系

#16    (-1 * rank(covariance(rank(high), rank(valume), 5)))

2018.3.29 万变不离其宗,最高价和成交量反着走时操作,和上面一样,只是细节不同 价量关系

#17    (((-1 * rank(ts_rank(close,10))) rank(delta(delta(close,1),1))) rank(ts_rank((valume/adv21),5)))

A * B * C

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

10天内每天取最后一天的close的rank值,和rank10不一样,rank10是10个元素只比一次,上面那个要比10次,比较时后面的元素还没有,就是每天相对于前10天中收盘价的排名,越低值越大,因为有个-1做了变向

B rank(delta(delta(close, 1), 1))

价差的排名,这个嵌套有点多,上涨越多值越大

C rank(rs_rank((volume/adv20), 5))

成交量的变化值,上涨越多值越大

2018.3.30 价量关系 10天内下跌,然后最后两天又要往上涨,而且成交量还要涨就买入,卖出判断方式相反

#18    (-1 * rank(((stddev(abs((close - open)),5) + (close - open)) + correlation(close, open, 10))))

简化:-1 * rank( stddev(abs(close - open),5) + (close - open) + correlation(close, open, 10) )

stddev(abs(close - open),5)

5天内的波动,不管方向

close - open

涨跌幅

correlation(close, open, 10)

10天内开盘价和收盘价的关系,关系越小说明有反转,越大说明趋势,(VIP),这个理论挺有意思

2018.4.3 总结一下就是下跌趋势形成后操作,还要大波动下跌,或者:反转时的波动越大越操作,应该是向上反转,这个式子也有点难解释 波动,连续下跌,反转

#19    ((-1 * sign(((close - delay(close, 7)) + delta(close, 7)))) * (1 + rank((1 + sum(returns, 250)))))

-1 * sign(2 * delta(close, 7))

简化下来其实主浊相对于7天前价格是涨了还中跌了,这里有-1明显就是跌了好

1 + rank(1 + sum(returns, 250))

一天的收益和,越大越好

2018.4.3: 总的连接起来,就是1年之内跌得越多越好 超跌反弹

#20    (((-1*rank((open - delay(high,1)))) * rank((open - delay(close,1)))) * rank((open - delay(low,1))))

简化:-1 * rank(open - delay(high,1)) * rank(open - delay(close,1)) * rank(open - delay(low,1))

2018.4.8 3个乘数,一个-1。3个乘数,分别是O和昨天HLC的差的rank,这个其实不太好描述,阳线高开和阴线低开都会导致得分低,那么阳线低开和阴线高开是会得高分的。GAP

#21    ((((sum(close,8)/8) + stddev(close,8)) < (sum(close,2)/2))?(-1*1):(((sum(close,2)/2)<((sum(close,8)/8) - stddev(close,8)))?1:(((1<(volume/adv20)) || ((volume/adv20) == 1))? 1 : (-1 * 1))))

sum(close,8)/8 + stddev(close,8) < (sum(close,2)/2) 8bar周期的boll上轨如果小于2天均线,也就是如果近2天有大的波动,这样返回-1,这样就是不操作。如果没有大的波动再往下判断

sum(close,2)/2<(sum(close,8)/8) - stddev(close,8) 2天均线小于8bar周期的下轨,这样返回1,就是操作,如果不满足,就是2天均线在8bar周期的上轨和下轨之间往下判断

1<(volume/adv20) || (volume/adv20) == 1 不缩量的话就返回1,操作,缩量返回-1,不操作。

2018.4.8 也就是放量了但是没有波动太大或者往下有大的波动就操作。这个操作估计是买入。波动,价量关系

#22    (-1 * (delta(correlation(high, volume, 5), 5) * rank(stddev(close, 20))))

2018.4.8 波动越大然后价量相关性要相反才能操作。价量关系

#23    (((sum(high, 20)/20)<high)?(-1*delta(high,2)):0)

2018.4.9 最高价大于最高价的20天均线,而且还要是比对前两天的high要低,低得越多越操作。其实就是上涨后的调整。调整后买入

#24    ((((delta((sum(close,100)/100), 100)/delay(close,1000))<0.05) || ((delta((sum(close,100)/100),100)/delay(close,100)) == 0.05))?(-1 * (close - ts_min(close, 100))): (-1 * delta(close, 3)))

delta((sum(close,100)/100), 100)/delay(close,1000)<0.05 delta((sum(close,100)/100),100)/delay(close,100) == 0.05

100天的close均线值差分别和1000天前和100天前的close做比对,这个100和1000已经不太好解释了,暂时解释为长期缩量吧(也有可能还有其它含义)

-1 * (close - ts_min(close, 100))

上式成立(长期缩量)的话则返回如果今天是深度下跌(要跌破100天以来的低点),就去买吧

-1 * delta(close, 3)

上上式不成立(没有长期缩量),其实也是相对3天前下跌

2018.4.10 主要是长期缩量后突然下跌,其实就是缩量吸筹后再最后一调整后上涨,缩量后深跌, 不满足条件的选项就是一个下跌后上涨 超跌反弹

#25    rank(((((-1 * returns) * adv20) * vwap) * (high -close)))

rank(-1 * returns * adv20 * vwap * (high -close))

2018.4.11 high是不可能比close低的,这也就表明returns是负的才可能排名高,跌得越多,成交量相对大一点会排名更高放量下跌

#26    (-1*ts_max(correlation(ts_rank(volume,5), ts_rank(high,5), 5),3))

2018.4.12 价量背离 量价背离

#27    ((0.5 < rank((sum(correlation(rank(volume), rank(vwap), 6), 2)/2.0))) ? (-1*1):1)

策略源码

2018.4.13 买入负相关排名前一半的月股票 量价关系

#28    scale(((correlation(adv20,low,5) + ((high+low)/2)) - close))

2018.4.16 scale会标准化序列中的值使其加起来==1,暂且认为里面的式子值越大越好,缩量下跌,操作。 (high+low/2)-close这个值是下跌时比较大,这样correlation(adv20,low,5)中的low大概率是跌的,这样量也要跌corr才是正的。但是缩量下跌肯定是不能完全解释这个式子的,这个要注意。

#29    (min(product(rank(rank(scale(log(sum(ts_min(rank(rank((-1rank(delta((close-1), 5))))),2),1))))),1),5) + rs_rank(delay((-1returns),6),5))

2018.4.17 这个有点没人性了啊,计算因子只有close和return,但是中间的意思人工完全没法翻译了。

#30    (((1.0 - rank(((sign((close- delay(close,1))) + sign((delay(close,1) - delay(close,2)))) + sign((delay(close,2)-delay(close,3)))))) * sum(volume,5))/sum(volume,20))

源码参考

1.0 - rank(sign(close- delay(close,1)) + sign(delay(close,1) - delay(close,2)) + sign(delay(close,2)-delay(close,3)))

这部分值越大越好,那就是1.0后面的式子越小越好

sum(volume,5)/sum(volume,20)

如果近期放量,值就会变大

2018.4.18 放量下跌就买,而且这里定义了一个跌的形状,值得参考恐慌性下跌,就买入

#31    ((rank(rank(rank(decay_linear((-1rank(rank(delta(close,10)))), 10)))) + rank((-1delta(close,3)))) + sign(scale(correlation(adv20, low, 12))))

分成3部分相加:

rank(rank(rank(decay_linear(-1*rank(rank(delta(close,10))), 10))))

rank((-1*delta(close,3)))

sign(scale(correlation(adv20, low, 12)))

2018.4.19 连续缩量下跌,前面有放量下跌,应该是短期,而且下跌的程度深,缩量下跌一定要周期长才有买的动力

#32    (scale(((sum(close,7)/7) - close)) + (20*scale(correlation(vwap,delay(close,5), 230))))

2018.4.21 大体上可以用缩量下跌来表示,不过里面很多细节是很难用语言描述出来的

这里发现没有,放量下跌和缩量下跌都能成为alpha那么一定在某些细节上会有区别,这可能是里面的关键。

#33    rank((-1*((1-(open/close))^1)))

2018.4.25 这个尖不是异或是次方,在这里1次方是没有意义的,可能是他们做测试时试过N次方。open/close越大越好,这样就表示今天跌得越多,明天涨的可能性越大,因为这个只是一天,所以估计明天的买入也只是一天,不是长久持仓。

#34    rank(((1-rank((stddev(returns,2)/stddev(returns,5)))) + (1-rank(delta(close,1)))))

2018.4.26 关键是里面的两个rank,这两个rank内的值越小越好。那么就是2天的收益标准差要小于5天的收益标准差,就是要慢慢趋向于平稳,波动越来越小,第二个rank里面表示今天相对于昨天的价差越小越好,负得应该也行,简单来讲就是波动变小时操作

#35    ((Ts_Rank(volume,32)(1-Ts_Rank(((close+high)-low),16)))(1-Ts_Rank(returns,32)))

2018.4.27 成交量放大,同时波动越来越小的下跌价量关系

#36    (((((2.21rank(correlation((close-open),delay(volume,1),15))) + (0.7rank((open-close)))) + (0.73rank(Ts_Rank(delay((-1returns),6),5)))) + rank(abs(correlation(vwap,adv20,6))))+(0.6rank((((sum(close,200)/200)-open)(close-open)))))

2018.4.28 这个连2.21,0.7都出现了,非常不好用人类语言解释了,分为5块,权重最大的是价量同步,其次为6天前的收益要是负的,然后的上涨的越多越好,最后为低开后的上涨。

#37    (rank(correlation(delay((open-close),1),close,200)) + rank((open-close)))

源码

2018.4.29 我和上面这个源码的解读有点不一样,应该是200天内一直在下跌,但是跌幅越来越小,今天忽然来了一个大跌,后面上涨的概率更大连续阴跌

#38    ((-1rank(Ts_Rank(close,10)))rank((close/open)))

2018.4.30 10天之内连续下跌,最好最后一天是大阴棒连续下跌

#39    ((-1rank((delta(close,7)(1-rank(decay_linear((volume/adv20),9))))))*(1+rank(sum(returns,250))))

2018.5.1 250天也就是一年内的总收益越小越好,今天相对于7天前是下跌的,而且9天内成交量开始放大物极必反,放量下跌

#40    ((-1rank(stddev(high,10)))correlation(high,volume,10))

2018.5.2 1. high突然放大,但是成交量变小,我操,这不是下下跌的节奏吗? 2. high突然往下,但是成交量变大,这就是要往上回调的节奏

#41    (((high*low)^0.5)-vwap)

源码解读

变种:(((high*low)^0.5)-vwap)/close 这个变种的alpha非常不错

2018.5.3 价量关系这个公式不大好解释,当前价格越高,权重越低,但是上篇文章中取反倒是alpha出来了,也就是成交量放大的股票应该被选。

不过上篇文章里面提到了一个非常有意思的事情就是high*low与绝对值相关,数据没标准化过,变种里面除了一个close之后权重才会更有效。

#42    (rank((vwap-close))/rank((vwap+close)))

源码解读

2018.5.4 这个公式是一个平衡公式,就是不是一边倒的,close越低越好,但是close越小vwap也越小,这样H和L需要大一些,close相对要小一些,那么买入时应该会以阴线为主。

#43    (ts_rank((volume/adv20),20)ts_rank((-1delta(close,7)),8))

2018.5.7 放量下跌

#44    (-1*correlation(high,rank(volume,)5))

2018.5.8 量价关系要么缩量上涨,要么放量下跌。但是在A股里面缩量上涨一般来讲是危险信号。得实测一下。

#45    (-1((rank((sum(delay(close,5),20)/20))correlation(close,volume,2))*rank(correlation(sum(close,5),sum(close,20),2))))

2018.5.9 两种情况:高价股一直在下跌,最后两天放量下跌; 高价股一直在上涨,最后两天缩量上涨。里面用到了绝对价格,要注意,不是很靠谱,要么自己加个标准化。量价关系,长期单边反转

#46    ((0.25<(((delay(close,20)-delay(close,10))/10) - ((delay(close,10)-close)/10)))?(-11):(((((delay(close,20) - delay(close,10))/10) - ((delay(close,10) - close)/10))<0)?1:((-11)*(close-delay(close,1)))))

2018.5.12

delay(close,20)-delay(close,10) - delay(close,10)-close <= 2.5

这个式子要满足,分为两段20~10 10~0:

  1. 第一段上涨,第二段要么涨的幅度不能太大,要么下跌
  2. 第一段下跌,第二段要么跌的幅度不能太大,要么上涨

注意这个式子里面用的绝对值2.5,20天的价差才这么一点,说明主要要求的是最近20天波动越来越小

#47    ((((rank((1/close))volume)/adv20) * ((highrank((high-close)))/(sum(high,5)/5))) - rank((vwap-delay(vwap,5))))

2018.5.12 又有价格的绝对值,价格价,成交量慢慢放大量价关系

#48    (indneutralize(((correlation(delta(close,1), delta(delay(close,1),1),250)*delta(close,1))/close),IndClass.subindustry)/sum(((delta(close,1)/delay(close,1))^2),250))

2018.6.4 其实这条很早就分析了的,但是里面有一条IndClass.subindustry没法玩,所以查了很久的资料,工夫不负有心人,在quantopian里面找到了,但是这个行业数据是由一家公司(MoningStar)提供的,而且只有美股的,国内是没法用了

#49    (((((delay(close,20) - delay(close,10))/10)-((delay(close,10) - close)/10)) < (-10.1))?1:((-11)*(close-delay(close,1))))

(delay(close,20) - delay(close,10)) - (delay(close,10) - close) < -1? 1 :-1*(close-delay(close,1))

2018.6.4 直接用了价格,这其实是不合理的。最好的alpha出现在深跌10天,再缓跌10天,这样结果是大于1的

#50    (-1*ts_max(rank(correlation(rank(volume), rank(vwap), 5)),5))

2018.6.5 volume和vwap负相关越大越好,放量下跌or缩量上涨**价量关系 **

#51    (((((delay(close,20) - delay(close,10))/10) - ((delay(close,10) - close)/10))<(-10.05))?1:((-11)*(close-delay(close,1))))

(delay(close,20) - delay(close,10)) - (delay(close,10) - close)< -0.5 ? 1 : -1*(close-delay(close,1))

2018.6.6 md的,这和49是一模一样的,只是参数不一样,101alpha有点特别水

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

2018.6.7 最近一年的收益率要大,最近放量,但是收益率下降,简单来讲就是中期调整 价量关系,中期调整

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

2018.6.8 9天前的某根bar,震幅要大,而且还要是下跌的。怎么看这个alpha都不靠谱。

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

2018.6.9 这是一个需要均衡的公式,不是一边倒的,不好解释,不过这个alpha只参考了一天的数据,需要注意。

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

2018.6.11 两个变量之间的关系,第一个变量是我在最近12天的震荡区间中的位置,越低值越小,第二个就是成交量,简单来讲就是价格和成交量正相关即可量价关系

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

2018.6.13 cap是股票市值,这个参与计算我也是醉了,绝对值,简单来讲就是市值小的,而且最近收益小的,物及必反,小市值

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

2018.6.13 放量上涨价量关系

#58    (-1*Ts_Rank(decay_linear(correlation(IndNeutralize(vwap, IndClass.sector),volume,,3.92795), 7.89291), 5.50322))

2018.6.14 含有 IndClass.sector 基本面因子,无法分析

#59    (-1Ts_Rank(decay_linear(correlation(IndNeutralize(((vwap0.728317)+(vwap*(1-0.728317))), IndClass.industry),volume,4.25197),16.2289),8.19648))

2018.6.17 含有 IndClass.sector 基本面因子,无法分析

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

2018.6.18 今天有上影线的阴线,无下影线,成交量要小,收盘价10天内越高越好,是不是表示上涨过程中的调整,然后高上影线洗盘,然后成交量不大说明洗盘很成功洗盘

#61    (rank((vwap-ts_min(vwap,16.1219))) < rank(correlation(vwap,adv180,17.9282)))

2018.6.19 价量正相关,同时最近价格要下跌 量价关系

未完待续...


Comments

comments powered by Disqus