def brek_new_high(): lasted = df.ix[-1:] n_period = 30 previous = df.ix[-1 * (n_period + 1):-1] max_price = previous.max() result = (lasted - max_price) / max_price * 100 result = result.values[0] maxIndexResult = np.argsort(result) nameSymbol = [ df.columns[index] for index in reversed(maxIndexResult) if result[index] > -0.5 ] print("List of break new high", nameSymbol) df_norm = utl.normalize_data(df) utg.plotStock(df_norm, nameSymbol[0:5], startDate, endDate, title='close to break new high') utg.plotStock(df_norm, nameSymbol[6:10], startDate, endDate, title='close to break new high') utg.plotStock(df_norm, nameSymbol[-6:-1], startDate, endDate, title='close to break new high')
def plot_industry_roc(startDate, endDate): dates = pd.date_range(startDate, endDate) symbolList = data.getSubIndustrySymbol() df = utl.loadPriceData(symbolList, dates) df_roc = ind.roc(df) df_roc.fillna(0, inplace=True) # fill NaN to 0 result = np.mean(df_roc) result = result.where(result > 0) result = result.where(result >= result['SET']) maxIndexResult = np.argsort(result) nameSymbol = [ df_roc.columns[index] for index in reversed(maxIndexResult) if result[index] > 0 ] print("List of Industry Group and Sector that ROC > SET (ROC)\n", nameSymbol) df_norm = utl.normalize_data(df) utg.plotStock(df_norm, nameSymbol, startDate, endDate, title='ROC: Industry Group and Sector')
def plot_example(): df_norm = utl.normalize_data(df) nameSymbol = [ 'TRUBB', 'SGP', 'JAS', 'ZMICO', 'BCP', 'VNT', 'SCG', 'DCON', 'PTTGC', 'IT', 'PTTEP' ] utg.plotStock(df_norm, nameSymbol, startDate, endDate, title='I am interested')
def prepareDataSet(symbols, dates, csv_dir=DIR_SEC_CSV,output_dir=output_dataset): clearDir(output_dir) column_names = ['<CLOSE>', '<VOL>'] column_date = '<DTYYYYMMDD>' count = 0 for sym in symbols: df_X = createDataFrame(sym, dates, column_names, csvdir) #df_X.to_csv(join(output_dir, "{}_test_check.csv".format(sym))) df_norm = util.normalize_data(df_X) #df_norm.to_csv(join(output_dir, "{}_test_check_norm.csv".format(sym))) #ไม่มี index ในไฟล์ writeDataSetX(df_norm, join(output_dir, "{}_X.csv".format(sym))) if(count%20 == 0): print("Writing total files : {} ....".format(count)) count+=1; df_Y = util.loadPriceData(symbols, dates) writeDataSetY(df_Y, symbols)
def max_sharpe_ratio(periods=5): df_sr = ind.create_dataframe_SR(df, symbolList, window=periods) df_sr.fillna(0, inplace=True) # fill NaN to 0 df_sr = df_sr.shift(-(periods - 1)) df_sr.dropna(0, inplace=True) # drop NaN at tail result = np.mean(df_sr) # Returns the indices that would sort an array # max values at last element maxIndexResult = np.argsort(result) nameSymbol = [ df_sr.columns[index] for index in reversed(maxIndexResult) if result[index] > 0 ] # save to dump file pickle.dump(nameSymbol, open("symbol_list.p", "wb")) print("List max sharpe ratio\n", nameSymbol) df_norm = utl.normalize_data(df) utg.plotStock(df_norm, nameSymbol[0:5], startDate, endDate, 'High sharpe ratio')
def max_change(startDate, endDate): dates = pd.date_range(startDate, endDate) symbolList = data.getAllSymbol() df = utl.loadPriceData(symbolList, dates) day4 = df.ix[-4:] # select last dast in 4 days day4 = day4.iloc[::-1] # reverse rows day4 = day4.pct_change() # calcuate percent change of prices day4 = day4[1:4] # remove NaN in first rows day3 = day4.fillna(0) result = day3.mean() print(day3) maxIndexResult = np.argsort(result) nameSymbol = [ day3.columns[index] for index in reversed(maxIndexResult) if result[index] > 3 ] print("List of high percent change\n", nameSymbol) df_norm = utl.normalize_data(df) utg.plotStock(df_norm, nameSymbol[0:5], startDate, endDate, title='High percent change')