예제 #1
0
 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')
예제 #2
0
 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)
예제 #3
0
 def alpha_2(self):
     """
     formula for alpha2: (-1*correlation(rank(delta(log(volume), 2)), rank(((close - open) / open)), 6))
     :return: time series df of all stocks
     """
     x1 = _utils.rank(_utils.delta(np.log(self.volume), period=2))
     x2 = _utils.rank((self.close - self.open) / self.open)
     return -1 * _utils.correlation(x1, x2, window=6)
예제 #4
0
 def alpha_15(self):
     """
     formula: (-1 * sum(rank(correlation(rank(high), rank(volume), 3)), 3))
     """
     df = _utils.correlation(_utils.rank(self.high),
                             _utils.rank(self.volume), 3)
     df = df.replace([-np.inf, np.inf], 0).fillna(method='backfill')
     return (-1 * _utils.ts_sum(_utils.rank(df), 3)).fillna(method='ffill')
예제 #5
0
 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))
예제 #6
0
 def alpha_43(self):
     """
     formula: (-1 * correlation(high, rank(volume), 5))
     :return:
     """
     df = _utils.correlation(self.high, _utils.rank(self.volume), 5)
     df = df.replace([-np.inf, np.inf], 0).fillna(value=0)
     return -1 * df
예제 #7
0
 def alpha_14(self):
     """
     formula:((-1 * rank(delta(returns, 3))) * correlation(open, volume, 10))
     :return: dataframe need a lot stock to prevent inf
     """
     df = _utils.correlation(self.open, self.volume, window=10)
     df = df.replace([-np.inf, np.inf], 0).fillna(method='backfill')
     return -1 * _utils.rank(_utils.delta(self.returns, period=3)) * df
예제 #8
0
 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')
예제 #9
0
 def alpha_28(self):
     """
     formula: scale(((correlation(adv20, low, 5) + ((high + low) / 2)) - close))
     :return: scaled df
     """
     adv20 = _utils.ts_ma(self.volume, 20)
     df = _utils.correlation(adv20, self.low, 5)
     df = df.replace([-np.inf, np.inf], 0).fillna(value=0)
     return _utils.scale(((df + ((self.high + self.low) / 2)) - self.close))
예제 #10
0
 def alpha_3(self):
     """
     data size should increse to see the difference
     formula for alpha3: (-1*correlation(rank(open), rank(volume), 10))
     :return:time series df of all stocks
     """
     df = -1 * _utils.correlation(
         _utils.rank(self.open), _utils.rank(self.volume), window=10)
     return df.replace([-np.inf, np.inf], 0)
예제 #11
0
 def alpha_25(self):
     """
     formula: (-1 * ts_max(correlation(ts_rank(volume, 5), ts_rank(high, 5), 5), 3))
     """
     return -1 * _utils.ts_max(_utils.correlation(
         _utils.ts_rank(self.volume, window=5),
         _utils.ts_rank(self.high, window=5),
         window=5),
                               window=3).fillna(method='backfill')
예제 #12
0
 def alpha_26(self):
     """
     formula: (-1* ts_max(correlation(ts_rank(volume, 5), ts_rank(high, 5), 5), 3))
     """
     df = _utils.correlation(_utils.ts_rank(self.volume, window=5),
                             _utils.ts_rank(self.high, window=5),
                             window=3)
     df = df.replace([-np.inf, np.inf], 0)
     df = -1 * _utils.ts_max(df.fillna(method='backfill'), window=3)
     return df.fillna(0.5)
예제 #13
0
 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
예제 #14
0
 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)))
예제 #15
0
 def alpha_48(self):
     """
     formula: (-1 * ts_max(rank(correlation(rank(volume), rank(vwap), 5)), 5))
     :return:
     """
     df = (-1 * _utils.ts_max(
         _utils.rank(
             _utils.correlation(_utils.rank(self.volume),
                                _utils.rank(self.vwap), 5)), 5))
     return df.fillna(method='bfill')
예제 #16
0
 def alpha_27(self):
     """
     formula: ((0.5 < rank((sum(correlation(rank(volume), rank(vwap), 6), 2) / 2.0))) ? (-1* 1) : 1)
     :return replaced nan to -1
     """
     alpha = _utils.rank((_utils.ts_ma(
         _utils.correlation(_utils.rank(self.volume),
                            _utils.rank(self.vwap), 6), 2)))
     alpha[alpha > 0.5] = -1
     alpha[alpha <= 0.5] = 1
     return alpha.fillna(-1)
예제 #17
0
 def alpha_31(self):
     """
     formula: ((rank(rank(rank(decay_linear((-1* rank(rank(delta(close, 10)))), 10)))) +
      rank((-1* delta(close, 3)))) + sign(scale(correlation(adv20, low, 12))))
     :return:
     """
     adv20 = _utils.ts_ma(self.volume, 20)
     df = _utils.correlation(adv20, self.low, 12).replace([-np.inf, np.inf],
                                                          0).fillna(value=0)
     p1 = _utils.rank(
         _utils.rank(
             _utils.rank(
                 _utils.decay_linear_pn((-1 * _utils.rank(
                     _utils.rank(_utils.delta(self.close, 10)))), 10))))
     p2 = _utils.rank((-1 * _utils.delta(self.close, 3)))
     p3 = np.sign(_utils.scale(df))
     return p1 + p2 + p3
예제 #18
0
 def alpha_6(self):
     """
     formula for alpha6: (-1*correlation(open, volume, 10))
     """
     df = -1 * _utils.correlation(self.open, self.volume, window=10)
     return df.replace([-np.inf, np.inf], 0)