def parse_sw_history2(begin_date='2014-03-12', end_date=None, code='801150'): if end_date is None: now = arrow.now() end_date = str(now.date()) condition = 'swindexcode=\'{}\' and BargainDate>=\'{}\' and BargainDate<=\'{}\' and type=\'Day\'' where = condition.format(code, begin_date, end_date) all_data = [] for index in range(1, 1000): payload = {'tablename':'V_Report', 'key': 'id', 'p': index, 'where': where, 'orderby': 'swindexcode asc,BargainDate_1', 'fieldlist': 'SwIndexCode,SwIndexName,BargainDate,CloseIndex,BargainAmount,Markup,' 'TurnoverRate,PE,PB,MeanPrice,BargainSumRate,DP', 'pagecount': 1, 'timed': 1456667319778 } url = 'http://www.swsindex.com/handler.aspx' res = requests.post(url, data=payload) data = res.text.replace('\'', '\"') print data result = json.loads(data) data_list = result.get('root') print 'url****'+url print len(data_list) if len(data_list) == 0: break else: all_data.extend(data_list) df = DataFrame(all_data) print df print df.info() print df.describe() # print df['PE'] # print df[df['BargainDate'] == '2015-10-16 0:00:00'] # clean data with empty PE or PB df = df[df['PE'] != ''] df = df[df['PB'] != ''] print df df[['PE', 'PB']] = df[['PE', 'PB']].astype(float) print '*'*20 print len(df) df_sort_pe = df.sort(columns='PE', ascending=True) print df_sort_pe df_sort_pb = df.sort(columns='PB', ascending=True) print df_sort_pb print 'PE mean:{}'.format(df['PE'].mean()) print 'PB mean:{}'.format(df['PB'].mean()) print 'PB<1:{}'.format(df[df.PB < 1]) return df
def parse_sw_history(begin_date='2014-03-12', end_date=None, codes=None): if end_date is None: now = arrow.now() end_date = str(now.date()) if codes is None: codes = ('801010', '801020', '801030', '801040', '801050', '801060', '801070', '801080', '801090', '801100', '801110', '801120', '801130', '801140', '801150', '801160', '801170', '801180', '801190', '801200', '801210', '801220', '801230', '801710', '801720', '801730', '801740', '801750', '801760', '801770', '801780', '801790', '801880', '801890') condition = 'swindexcode in {} and BargainDate>=\'{}\' and BargainDate<=\'{}\'' where = condition.format(codes, begin_date, end_date) print where all_data = [] for index in range(1, 1000): payload = {'tablename':'swindexhistory', 'key': 'id', 'p': index, 'where': where, 'orderby': 'swindexcode asc,BargainDate_1', 'fieldlist': 'SwIndexCode,SwIndexName,BargainDate,CloseIndex,BargainAmount,Markup,' 'TurnoverRate,PE,PB,MeanPrice,BargainSumRate,DP', 'pagecount': 28, 'timed': 1453385628267 } url = 'http://www.swsindex.com/handler.aspx' res = requests.post(url, data=payload) data = res.text.replace('\'', '\"') result = json.loads(data) data_list = result.get('root') print 'url****'+url print len(data_list) if len(data_list) == 0: break else: all_data.extend(data_list) df = DataFrame(all_data) df[['PE', 'PB']] = df[['PE', 'PB']].astype(float) # df['PE'] = df['PE'].astype(float) # df['PB'] = df['PB'].astype(float) print '*'*20 print len(df) print df df = df.sort(columns='PE', ascending=True) print df df = df.sort(columns='PB', ascending=True) print df print 'PE mean:{}'.format(df['PE'].mean()) print 'PB mean:{}'.format(df['PB'].mean()) print 'PB<1:{}'.format(df[df.PB < 1]) return df
def parse_sw_history(begin_date='2014-03-12', end_date=None, codes=None): if end_date is None: now = arrow.now() end_date = str(now.date()) if codes is None: codes = ('801010', '801020', '801030', '801040', '801050', '801060', '801070', '801080', '801090', '801100', '801110', '801120', '801130', '801140', '801150', '801160', '801170', '801180', '801190', '801200', '801210', '801220', '801230', '801710', '801720', '801730', '801740', '801750', '801760', '801770', '801780', '801790', '801880', '801890') condition = 'swindexcode in {} and BargainDate>=\'{}\' and BargainDate<=\'{}\'' where = condition.format(codes, begin_date, end_date) # print where all_data = [] for index in range(1, 1000): payload = {'tablename':'swindexhistory', 'key': 'id', 'p': index, 'where': where, 'orderby': 'swindexcode asc,BargainDate_1', 'fieldlist': 'SwIndexCode,SwIndexName,BargainDate,CloseIndex,BargainAmount,Markup,' 'TurnoverRate,PE,PB,MeanPrice,BargainSumRate,DP', 'pagecount': 28, 'timed': 1453385628267 } url = 'http://www.swsindex.com/handler.aspx' res = requests.post(url, data=payload) data = res.text.replace('\'', '\"') result = json.loads(data) data_list = result.get('root') # print 'url****'+url # print len(data_list) if len(data_list) == 0: break else: all_data.extend(data_list) df = DataFrame(all_data) df[['PE', 'PB']] = df[['PE', 'PB']].astype(float) # df['PE'] = df['PE'].astype(float) # df['PB'] = df['PB'].astype(float) # print '*'*20 # print len(df) # print df df = df.sort(columns='PE', ascending=True) # print df df = df.sort(columns='PB', ascending=True) # print df # print 'PE mean:{}'.format(df['PE'].mean()) # print 'PB mean:{}'.format(df['PB'].mean()) # print 'PB<1:{}'.format(df[df.PB < 1]) return df
def ah_premium_index(samples=[('600036', '03968'), ('600196', '02196'), ('601111', '00753')]): samples = [('600585', '00914'), ('601318', '02318'), ('000002', '02202'), ('600036', '03968'), ('600600', '00168'), ('600196', '02196'), ('600030', '06030'), ('600028', '00386'), ('601601', '02601'), ('601628', '02628'), ('000063', '00763'), ('601398', '01398'), ('601939', '00939'), ('601288', '01288'), ('600837', '06837'), ('601607', '02607'), ('600011', '00902'), ('002202', '02208'), ('601988', '03988'), ('601818', '06818'), ('601336', '01336'), ('600027', '01071'), ('601088', '01088'), ('601328', '03328'), ('600016', '01988'), ('601998', '00998'), ('601186', '01186'), ('600332', '00874'), ('601766', '01766'), ('002594', '01211'), ('601857', '00857'), ('000039', '02039'), ('600362', '00358'), ('600012', '00995'), ('601633', '02333'), ('601800', '01800'), ('601333', '00525'), ('601111', '00753'), ('600875', '01072'), ('601390', '00390'), ('601898', '01898'), ('601899', '02899'), ('000898', '00347'), ('000157', '01157'), ('600685', '00317'), ('601992', '02009'), ('601600', '02600'), ('601991', '00991'), ('600115', '00670'), ('601808', '02883'), ('600871', '01033'), ('601727', '02727'), ('600188', '01171'), ('601238', '02238'), ('601919', '01919'), ('601866', '02866'), ('601618', '01618'), ('600026', '01138'), ('601880', '02880'), ('600874', '01065'), ('600660', '03606'), ('600377', '00177'), ('000776', '01776'), ('601688', '06886'), ('000338', '02338'), ('600029', '01055'), ('603993', '03993'), ('601005', '01053'), ('600688', '00338'), ('600548', '00548'), ('002672', '00895'), ('000513', '01513'), ('000488', '01812'), ('601107', '00107'), ('601588', '00588'), ('600808', '00323'), ('000921', '00921'), ('600775', '00553'), ('600860', '00187'), ('000756', '00719'), ('601038', '00038'), ('600806', '00300'), ('002490', '00568'), ('002703', '01057'), ('600876', '01108'), ('601717', '00564'), ('000585', '00042')] a_list = [] h_list = [] price_a_list = [] price_h_list = [] ratio_list = [] hk_to_rmb = float(rmb_exchange_rate()[0])/100 for sample in samples: ratio = ah_ratio(hk_to_rmb, sample) if ratio: a_list.append(sample[0]) h_list.append(sample[1]) price_a_list.append(ratio.get('price_a')) price_h_list.append(ratio.get('price_h')) ratio_list.append(ratio.get('ratio')) df_dict = {'A': a_list, 'Price_A': price_a_list, 'H': h_list, 'Price_H': price_h_list, 'ratio': ratio_list} print df_dict df = DataFrame(df_dict) # print df df = df.sort(columns='ratio', ascending=True) print df # ah_index = np.mean(ratio_list) ah_index = df['ratio'].mean() print 'ah_index:{}'.format(ah_index) print 'discount stock:{}'.format(df[df.ratio < 1]) return AhIndex(ah_index)
def ah_premium_index(samples=[('600036', '03968'), ('600196', '02196'), ('601111', '00753')]): samples = [('600585', '00914'), ('601318', '02318'), ('000002', '02202'), ('600036', '03968'), ('600600', '00168'), ('600196', '02196'), ('600030', '06030'), ('600028', '00386'), ('601601', '02601'), ('601628', '02628'), ('000063', '00763'), ('601398', '01398'), ('601939', '00939'), ('601288', '01288'), ('600837', '06837'), ('601607', '02607'), ('600011', '00902'), ('002202', '02208'), ('601988', '03988'), ('601818', '06818'), ('601336', '01336'), ('600027', '01071'), ('601088', '01088'), ('601328', '03328'), ('600016', '01988'), ('601998', '00998'), ('601186', '01186'), ('600332', '00874'), ('601766', '01766'), ('002594', '01211'), ('601857', '00857'), ('000039', '02039'), ('600362', '00358'), ('600012', '00995'), ('601633', '02333'), ('601800', '01800'), ('601333', '00525'), ('601111', '00753'), ('600875', '01072'), ('601390', '00390'), ('601898', '01898'), ('601899', '02899'), ('000898', '00347'), ('000157', '01157'), ('600685', '00317'), ('601992', '02009'), ('601600', '02600'), ('601991', '00991'), ('600115', '00670'), ('601808', '02883'), ('600871', '01033'), ('601727', '02727'), ('600188', '01171'), ('601238', '02238'), ('601919', '01919'), ('601866', '02866'), ('601618', '01618'), ('600026', '01138'), ('601880', '02880'), ('600874', '01065'), ('600660', '03606'), ('600377', '00177'), ('000776', '01776'), ('601688', '06886'), ('000338', '02338'), ('600029', '01055'), ('603993', '03993'), ('601005', '01053'), ('600688', '00338'), ('600548', '00548'), ('002672', '00895'), ('000513', '01513'), ('000488', '01812'), ('601107', '00107'), ('601588', '00588'), ('600808', '00323'), ('000921', '00921'), ('600775', '00553'), ('600860', '00187'), ('000756', '00719'), ('601038', '00038'), ('600806', '00300'), ('002490', '00568'), ('002703', '01057'), ('600876', '01108'), ('601717', '00564'), ('000585', '00042')] a_list = [] h_list = [] price_a_list = [] price_h_list = [] ratio_list = [] hk_to_rmb = float(rmb_exchange_rate()[0])/100 for sample in samples: ratio = ah_ratio(hk_to_rmb, sample) if ratio: a_list.append(sample[0]) h_list.append(sample[1]) price_a_list.append(ratio.get('price_a')) price_h_list.append(ratio.get('price_h')) ratio_list.append(ratio.get('ratio')) df_dict = {'A': a_list, 'Price_A': price_a_list, 'H': h_list, 'Price_H': price_h_list, 'ratio': ratio_list} # print df_dict df = DataFrame(df_dict) # print df df = df.sort(columns='ratio', ascending=True) # print df # ah_index = np.mean(ratio_list) ah_index = df['ratio'].mean() # print 'ah_index:{}'.format(ah_index) # print 'discount stock:{}'.format(df[df.ratio < 1]) return AhIndex(ah_index)
def parse_sw_history2(begin_date='2014-03-12', end_date=None, code='801150'): if end_date is None: now = arrow.now() end_date = str(now.date()) condition = 'swindexcode=\'{}\' and BargainDate>=\'{}\' and BargainDate<=\'{}\' and type=\'Day\'' where = condition.format(code, begin_date, end_date) all_data = [] for index in range(1, 1000): payload = { 'tablename': 'V_Report', 'key': 'id', 'p': index, 'where': where, 'orderby': 'swindexcode asc,BargainDate_1', 'fieldlist': 'SwIndexCode,SwIndexName,BargainDate,CloseIndex,BargainAmount,Markup,' 'TurnoverRate,PE,PB,MeanPrice,BargainSumRate,DP', 'pagecount': 1, 'timed': 1456667319778 } url = 'http://www.swsindex.com/handler.aspx' res = requests.post(url, data=payload) data = res.text.replace('\'', '\"') # print data result = json.loads(data) data_list = result.get('root') # print 'url****'+url # print len(data_list) if len(data_list) == 0: break else: all_data.extend(data_list) df = DataFrame(all_data) # print df # print df.info() # print df.describe() # print df['PE'] # print df[df['BargainDate'] == '2015-10-16 0:00:00'] # clean data with empty PE or PB df = df[df['PE'] != ''] df = df[df['PB'] != ''] # convert string to datetime(timestamp) df['BargainDate'] = pd.to_datetime(df['BargainDate']) # convert string to float df[['PE', 'PB']] = df[['PE', 'PB']].astype(float) df_sort_pe = df.sort(columns='PE', ascending=True) # print df_sort_pe df_sort_pb = df.sort(columns='PB', ascending=True) # print df_sort_pb # print 'PE mean:{}'.format(df['PE'].mean()) # print 'PB mean:{}'.format(df['PB'].mean()) # print 'PB<1:{}'.format(df[df.PB < 1]) return df