def alpha_20(self): """ formula: (((-1 * rank((open - delay(high, 1)))) * rank((open - delay(close, 1)))) * rank((open -delay(low, 1)))) """ return -1 * (_utils.rank(self.open - _utils.delay(self.high, 1)) * _utils.rank(self.open - _utils.delay(self.close, 1)) * _utils.rank(self.open - _utils.delay(self.low, 1)) ).fillna(method='backfill')
def alpha_30(self): """ formula: (((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)) """ delta_close = _utils.delta(self.close, 1) # (close - delay(close, 1) inner = np.sign(delta_close) + np.sign(_utils.delay( delta_close, 1)) + np.sign(_utils.delay(delta_close, 2)) df = (1.0 - _utils.rank(inner)) * _utils.ts_sum( self.volume, 5) / _utils.ts_sum(self.volume, 20) return df.fillna(method='backfill')
def alpha_49(self): """ formula: (((((delay(close, 20) - delay(close, 10)) / 10) - ((delay(close, 10) - close) / 10)) < (-1 *0.05)) ? 1 : ((-1 * 1) * (close - delay(close, 1)))) :return: """ inner = (( (_utils.delay(self.close, 20) - _utils.delay(self.close, 10)) / 10) - ((_utils.delay(self.close, 10) - self.close) / 10)) alpha = (-1 * _utils.delta(self.close)) alpha[inner < -0.05] = 1 return alpha
def alpha_45(self): """ formula: (0.25 < (((delay(close, 20) - delay(close, 10)) / 10) - ((delay(close, 10) - close) / 10))) ? (-1 * 1) : (((((delay(close, 20) - delay(close, 10)) / 10) - ((delay(close, 10) - close) / 10)) < 0) ? 1 :((-1 * 1) * (close - delay(close, 1))))) :return dataframe, inner has lot of nan """ inner = ((_utils.delay(self.close, 20) - _utils.delay(self.close, 10)) / 10) - \ ((_utils.delay(self.close, 10) - self.close) / 10) alpha = (-1 * _utils.delta(self.close)) alpha[inner < 0] = 1 alpha[inner > 0.25] = -1 return alpha
def alpha_19(self): """ formula: ((-1 * sign(((close - delay(close, 7)) + delta(close, 7)))) * (1 + rank((1 + sum(returns,250))))) be careful with the time range, less than 250 will be nan """ return ((-1 * np.sign((self.close - _utils.delay(self.close, 7)) + _utils.delta(self.close, 7))) * (1 + _utils.rank(1 + _utils.ts_sum(self.returns, 250))))
def alpha_36(self): """ formula: (rank(correlation(delay((open - close), 1), close, 200)) + rank((open - close))) :return:dataframe, need long range """ return (_utils.rank( _utils.correlation(_utils.delay(self.open - self.close, 1), self.close, 200)) + _utils.rank(self.open - self.close)).fillna(method='backfill')
def alpha_32(self): """ formula: (scale(((sum(close, 7) / 7) - close)) + (20* scale(correlation(vwap, delay(close, 5), 230)))) long time series :return: """ return _utils.scale( ((_utils.ts_ma(self.close, 7) / 7) - self.close) ) + (20 * _utils.scale( _utils.correlation(self.vwap, _utils.delay(self.close, 5), 230)))
def alpha_8(self): """ formula: (-1*rank(((sum(open, 5)*sum(returns, 5)) - delay((sum(open, 5)*sum(returns, 5)), 10)))) """ df = -1 * _utils.rank( _utils.ts_sum(self.open, window=5) * _utils.ts_sum(self.returns, window=5) - _utils.delay(_utils.ts_sum(self.open, window=5) * _utils.ts_sum(self.returns, window=5), period=10)) return df.fillna(method='backfill')
def alpha_24(self): """ formula: ((((delta((sum(close, 100) / 100), 100) / delay(close, 100)) < 0.05) or ((delta((sum(close, 100) / 100), 100) / delay(close, 100)) == 0.05)) ? (-1* (close - ts_min(close, 100))) : (-1* delta(close, 3))) """ condition = _utils.delta(_utils.ts_ma(self.close, 100), 100) / _utils.delay(self.close, 100) <= 0.05 alpha = -1 * _utils.delta(self.close, 3) alpha[condition] = -1 * (self.close - _utils.ts_min(self.close, 100)) return alpha
def alpha_46(self): """ formula: ((((rank((1 / close)) * volume) / adv20) * ((high * rank((high - close))) / (sum(high, 5) /5))) - rank((vwap - delay(vwap, 5)))) :return: """ adv20 = _utils.ts_ma(self.volume, 20) df = ((((_utils.rank((1 / self.close)) * self.volume) / adv20) * ((self.high * _utils.rank((self.high - self.close))) / (_utils.ts_ma(self.high, 5) / 5))) - _utils.rank( (self.vwap - _utils.delay(self.vwap, 5)))) return df.fillna(method='backfill')
def alpha_44(self): """ formula: (-1 * ((rank((sum(delay(close, 5), 20) / 20)) * correlation(close, volume, 2)) *rank(correlation(sum(close, 5), sum(close, 20), 2)))) :return: dataframe, need more stock and long range """ df = _utils.correlation(self.close, self.volume, 2) df = df.replace([-np.inf, np.inf], 0).fillna(value=0) df = -1 * (_utils.rank(_utils.ts_ma(_utils.delay(self.close, 5), 20)) * df * _utils.rank( _utils.correlation(_utils.ts_sum(self.close, 5), _utils.ts_sum(self.close, 20), 2))) return df.fillna(method='backfill')
def alpha_29(self): """ formula: (min(product(rank(rank(scale(log(sum(ts_min(rank( rank((-1*rank(delta((close - 1), 5))))), 2), 1))))), 1), 5) + ts_rank(delay((-1* returns), 6), 5)) """ df = _utils.ts_min( _utils.rank( _utils.rank( _utils.scale( np.log( _utils.ts_sum( _utils.rank( _utils.rank(-1 * _utils.rank( _utils.delta(self.close - 1, 5)))), 2))))), 5) + _utils.ts_rank( _utils.delay(-1 * self.returns, 6), 5) return df.fillna(method='backfill')