def alpha_34(self): """ formula: rank(((1 - rank((stddev(returns, 2) / stddev(returns, 5)))) + (1 - rank(delta(close, 1))))) :return: """ inner = _utils.stddev(self.returns, 2) / _utils.stddev(self.returns, 5) inner = inner.replace([-np.inf, np.inf], 1).fillna(value=1) return _utils.rank(2 - _utils.rank(inner) - _utils.rank(_utils.delta(self.close, 1)))
def alpha_39(self): """ formula: ((-1 * rank(stddev(high, 10))) * correlation(high, volume, 10)) :return: """ return -1 * _utils.rank(_utils.stddev( self.high, 10)) * _utils.correlation(self.high, self.volume, 10)
def alpha_22(self): """ formula: (-1 * (delta(correlation(high, volume, 5), 5) * rank(stddev(close, 20)))) """ df = _utils.correlation(self.high, self.volume, 5) df = df.replace([-np.inf, np.inf], 0).fillna(value=0) return -1 * _utils.delta(df, 5) * _utils.rank( _utils.stddev(self.close, 20))
def alpha_18(self): """ formula: (-1 * rank(((stddev(abs((close - open)), 5) + (close - open)) + correlation(close, open,10)))) :return """ df = _utils.correlation(self.close, self.open, 10) df = df.replace([-np.inf, np.inf], 0).fillna(value=0) return -1 * _utils.rank( _utils.stddev(abs(self.close - self.open), window=5) + self.close - self.open) + df
def alpha_1(self): """ Wrapper formula for alpha1, (rank(Ts_ArgMax(SignedPower(((returns < 0) ? stddev(returns, 20) : close), 2.), 5)) - 0.5) :return: time series alpha feature """ inner = self.close # replace all the date where return<0 to std # 这里会出warning,不过没什么大事 inner[self.returns < 0] = _utils.stddev(self.returns, window=20) # calculate which day max the time series ts_argmax = _utils.ts_argmax(inner**2, 5) return _utils.rank(ts_argmax) - 0.5
def alpha_21(self): """ formula: ((((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)) or ((volume / adv20) == 1)) ? 1 : (-1* 1)))) need to reconsider """ condition_1 = _utils.ts_ma(self.close, 8) + _utils.stddev( self.close, 8) < _utils.ts_ma(self.close, 2) condition_2 = _utils.ts_ma(self.volume, 20) / self.volume < 1 alpha = pd.DataFrame(np.ones_like(self.close), index=self.close.index, columns=self.close.columns) alpha[condition_1 | condition_2] = -1 return alpha