Exemplo n.º 1
0
def AddInfo(stock, market):
    stock['sma10'] = techindicators.sma(stock['adj_close'], 10)
    stock['sma20'] = techindicators.sma(stock['adj_close'], 20)
    if len(stock['adj_close']) > 100:
        stock['sma100'] = techindicators.sma(stock['adj_close'], 100)
    else:
        stock['sma100'] = np.zeros(len(stock['adj_close']))
    if len(stock['adj_close']) > 200:
        stock['sma200'] = techindicators.sma(stock['adj_close'], 200)
    else:
        stock['sma200'] = np.zeros(len(stock['adj_close']))
    stock['rstd10'] = techindicators.rstd(stock['adj_close'], 10)
    stock['rsi10'] = techindicators.rsi(stock['adj_close'], 10)
    stock['cmf'] = techindicators.cmf(stock['high'], stock['low'],
                                      stock['close'], stock['volume'], 10)
    stock['KeltLower'], stock['KeltCenter'], stock[
        'KeltUpper'] = techindicators.kelt(stock['high'], stock['low'],
                                           stock['close'], 20, 2.0, 20)
    stock['copp'] = techindicators.copp(stock['close'], 14, 11, 10)
    stock['daily_return'] = stock['adj_close'].pct_change(periods=1)
    stock['daily_return_stddev14'] = techindicators.rstd(
        stock['daily_return'], 14)
    stock['beta'] = techindicators.rollingBetav2(stock, 14, market)
    stock['alpha'] = techindicators.rollingAlpha(stock, 14, market)
    #stock['rsquare']=techindicators.rollingRsquare(stock,14)
    stock['rsquare'] = techindicators.rollingRsquare(stock, 14, spy)
    stock['sharpe'] = techindicators.sharpe(stock['daily_return'],
                                            30)  # generally above 1 is good
    stock['cci'] = techindicators.cci(stock['high'], stock['low'],
                                      stock['close'], 20)
    stock['stochK'], stock['stochD'] = techindicators.stoch(
        stock['high'], stock['low'], stock['close'], 14, 3, 3)
    stock['obv'] = techindicators.obv(stock['adj_close'], stock['volume'])
    stock['force'] = techindicators.force(stock['adj_close'], stock['volume'],
                                          13)
    stock['macd'], stock['macdsignal'] = techindicators.macd(
        stock['adj_close'], 12, 26, 9)
    stock['market'] = market['adj_close']
    stock['corr14'] = stock['adj_close'].rolling(14).corr(spy['market'])
    #stock['pdmd'],stock['ndmd'],stock['adx']=techindicators.adx(stock['high'],stock['low'],stock['close'],14)
    #stock['aroonUp'],stock['aroonDown'],stock['aroon']=techindicators.aroon(stock['high'],stock['low'],25)
    stock['vwap14'] = techindicators.vwap(stock['high'], stock['low'],
                                          stock['close'], stock['volume'], 14)
    stock['vwap10'] = techindicators.vwap(stock['high'], stock['low'],
                                          stock['close'], stock['volume'], 10)
    stock['vwap20'] = techindicators.vwap(stock['high'], stock['low'],
                                          stock['close'], stock['volume'], 20)
    stock['chosc'] = techindicators.chosc(stock['high'], stock['low'],
                                          stock['close'], stock['volume'], 3,
                                          10)
    stock['vwap10diff'] = (stock['adj_close'] -
                           stock['vwap10']) / stock['adj_close']
    #stock['max_drawdown'] = stock['adj_close'].rolling(250).apply(max_drawdown)
    day365 = GetTimeSlot(stock, 365)
    stock['max_drawdown'] = np.ones(len(stocks)) * zigzag.max_drawdown(
        day365['adj_close'].values)
Exemplo n.º 2
0
 def test_rise_fall_rise_drawdown(self):
     data = np.array([1.0, 1.05, 1.1, 1.0, 0.9, 1.5])
     self.assertAlmostEqual(zigzag.max_drawdown(data), 0.18181818181818188)
Exemplo n.º 3
0
 def test_strictly_decreasing(self):
     data = np.linspace(100.0, 1.0, 10)
     self.assertEquals(zigzag.max_drawdown(data), 0.99)
Exemplo n.º 4
0
 def test_rise_fall_rise_drawdown(self):
     data = np.array([1.0, 1.05, 1.1, 1.0, 0.9, 1.5])
     self.assertAlmostEqual(zigzag.max_drawdown(data), 0.18181818181818188)
Exemplo n.º 5
0
 def test_strictly_decreasing(self):
     data = np.linspace(100.0, 1.0, 10)
     self.assertEquals(zigzag.max_drawdown(data), 0.99)