def test_get_data_interval(self): # daily interval data pan = web.get_data_morningstar(symbols='XOM', start='2013-01-01', end='2013-12-31', interval='d') assert len(pan) == 261 # weekly interval data pan = web.get_data_morningstar(symbols='XOM', start='2013-01-01', end='2013-12-31', interval='w') assert len(pan) == 54 # monthly interval data pan = web.get_data_morningstar(symbols='XOM', start='2013-01-01', end='2013-12-31', interval='m') assert len(pan) == 13 # test fail on invalid interval with pytest.raises(ValueError): web.get_data_morningstar('XOM', interval='NOT VALID')
def incl_dividend_column_multi(self): df = web.get_data_morningstar(symbols=['XOM', 'MSFT'], start='2013-01-01', end='2013-03-04', incl_dividends=True) assert ("isDividend" in df)
def test_get_data_multiple_symbols_two_dates(self): df = web.get_data_morningstar(symbols=['XOM', 'MSFT'], start='2013-01-01', end='2013-03-04') assert len(df.index.levels[0]) == 2 assert 'XOM' in df.index.levels[0] assert 'MSFT' in df.index.levels[0] # sanity checking assert df.dtypes['Close'] == np.float64 assert df.dtypes['Open'] == np.float64 assert df.dtypes['Low'] == np.float64 assert df.dtypes['High'] == np.float64 assert df.dtypes['Volume'] == np.int64
import pickle import time style.use('ggplot') #Makes graph look nice start_day = datetime.date(2013, 1, 1) end_day = datetime.date(2018, 4, 10) delta_days = end_day - start_day days_inbetween = [start_day] for i in range(delta_days.days + 1): days_inbetween.append(start_day + datetime.timedelta(days=i)) df = web.get_data_morningstar('AAPL', start_day, end_day) # df = quandl.get("EOD/HD", authtoken="jMntsFGxviSof9LiXbG2") df = df[['Open', 'High', 'Low', 'Close', 'Volume']] #Grab important datasets only old_days_inbetween = list(df.index) #Get all dates in same format dictionary_days = dict(zip(old_days_inbetween, days_inbetween)) df.rename(index=dictionary_days, inplace=True) df.reset_index(inplace=True) df.drop("Symbol", axis=1, inplace=True) df.set_index('Date', inplace=True) #Replaces index of Symbol with Date df['HL_PCT'] = 100 * ( (df['High'] - df['Low']) / df['High']) #How volitile the market is df['PCT_Change'] = 100 * ((df['Close'] - df['Open']) / df['Open']
def test_get_data_multiple_symbols(self): # just test that we succeed sl = ['AAPL', 'AMZN', 'GOOG'] web.get_data_morningstar(sl, '2012')
def test_get_data_single_symbol(self): # single symbol # just test that we succeed web.get_data_morningstar('GOOG')
def excl_volume_column_multi(self): df = web.get_data_morningstar(symbols=["XOM", "MSFT"], start='2013-01-01', end='2013-03-04', incl_volume=False) assert ("Volume" not in df.keys())
#print(filehandle) pickle.dump(df, filehandle) else: print('Already have KR for {}'.format(ticker)) pass def create_price_history_table(tickers): PH = pd.DataFrame() for i in range(0,len(tickers)): print tickers[i] return PH start = dt.datetime(2017,2,1) end = dt.datetime.now() df = web.get_data_morningstar('XJSE:FSR', start, end, incl_dividends = True, incl_volume = True, incl_splits = True) df['100ma'] = df['Close'].rolling(window=100, min_periods=0).mean() print(df.head(1000)) def main(): """main entry poin t for script""" create_directories() ignore = np.array(['ANDV', 'BKNG', 'BHF', 'CBRE', 'DWDP', 'DXC','TPR','UAA','WELL']) #get_price_history(ignoreset = ignore) #get_key_ratios(ignoreset=ignore) pass if __name__ == '__main__': sys.exit(main())