def get_indicator_set(comp, indicator_list): return_set = {} obj_consolidated = r_full.get("{}_A_CONSOLIDATED".format(comp)) obj_standalone = r_full.get("{}_A_STANDALONE".format(comp)) if not obj_consolidated and not obj_standalone: print("Company {} not found in the database.".format(comp)) return return_set if obj_consolidated: df_c = pd.read_json(obj_consolidated) if obj_standalone: df_s = pd.read_json(obj_standalone) screenerFailed = False try: screener = Screener(comp) indicator_set_consolidated = {} indicator_set_standalone = {} # get PE and PBV from screener pe = screener.get_pe() pe_standalone = screener.get_pe(standalone=True) indicator_set_standalone.update({"PE": pe_standalone}) indicator_set_consolidated.update({"PE": pe}) bv = screener.get_book_value() bv_standalone = screener.get_book_value(standalone=True) current_price = screener.get_current_price() pbv = np.nan pbv_standalone = np.nan if bv: pbv = current_price / bv if bv_standalone: pbv_standalone = current_price / bv_standalone indicator_set_standalone.update({"PBV": pbv_standalone}) indicator_set_consolidated.update({"PBV": pbv}) except: print("Error while getting data from screener") traceback.print_exc(file=sys.stdout) screenerFailed = True other_indicators = indicator_list if screenerFailed: other_indicators += ["PE", "PBV"] for ind in other_indicators: try: if not df_c.empty: result_c = df_c[ind].loc[df_c[ind].last_valid_index()] else: result_c = np.nan indicator_set_consolidated.update({ind: result_c}) except: indicator_set_consolidated.update({ind: np.nan}) try: if not df_s.empty: result_s = df_s[ind].loc[df_s[ind].last_valid_index()] else: result_s = np.nan indicator_set_standalone.update({ind: result_s}) except: indicator_set_standalone.update({ind: np.nan}) return_set.update( {"company": comp, "standalone": indicator_set_standalone, "consolidated": indicator_set_consolidated} ) return return_set
def get_data(company, indicator, get_quarterly=False): print("Company : {}, Indicator : {}".format(company, indicator)) if not get_quarterly: df_standalone_full = pd.read_json(r_full.get(company + "_A_STANDALONE")) df_consolidated_full = pd.read_json(r_full.get(company + "_A_CONSOLIDATED")) else: df_standalone_full = pd.read_json(r_full.get(company + "_Q_STANDALONE")) df_consolidated_full = pd.read_json(r_full.get(company + "_Q_CONSOLIDATED")) indicatorList = [] if isinstance(indicator, str): indicatorList.append(indicator) else: indicatorList = indicator seriesStandalone = [] seriesConsolidated = [] for indicator in indicatorList: try: df_standalone = df_standalone_full[indicator].dropna() df_consolidated = df_consolidated_full[indicator].dropna() if indicator == "PE": pe_standalone = None pe_consolidated = None screener = None try: screener = Screener(company) except: print("Error while initializing screener") if screener: try: pe_standalone = screener.get_pe(standalone=True) except: print("Error while getting standalone PE from screener") try: pe_consolidated = screener.get_pe() except: print("Error while getting consolidated PE from screener") if pe_standalone: new_df_standalone = pd.Series([pe_standalone], index=[datetime.datetime.now().date()]) df_standalone = df_standalone.append(new_df_standalone) if pe_consolidated: new_df_consolidated = pd.Series([pe_consolidated], index=[datetime.datetime.now().date()]) df_consolidated = df_consolidated.append(new_df_consolidated) seriesStandalone.append( { "Metric": indicator, "Index": df_standalone.index.tolist(), "Data": df_standalone.fillna(0).tolist(), "PctChange1Y": getPercentChange(df_standalone), "PctChange5Y": getPercentChange(df_standalone, step=5), "Mean": getMean(df_standalone), "Success": "True", "Message": "", "Mean_5_YR": getMean(df_standalone, tail=5), } ) seriesConsolidated.append( { "Metric": indicator, "Index": df_consolidated.index.tolist(), "Data": df_consolidated.fillna(0).tolist(), "PctChange1Y": getPercentChange(df_consolidated), "PctChange5Y": getPercentChange(df_consolidated, step=5), "Mean": getMean(df_consolidated), "Mean_5_YR": getMean(df_consolidated, tail=5), "Success": "True", "Message": "", } ) except: seriesStandalone.append( {"Metric": indicator, "Success": "False", "Message": "Error while getting indicator : " + indicator} ) seriesConsolidated.append( {"Metric": indicator, "Success": "False", "Message": "Error while getting indicator : " + indicator} ) my_dict = {} my_dict.update({"Company": "{}".format(company)}) my_dict.update({"Standalone": seriesStandalone}) my_dict.update({"Consolidated": seriesConsolidated}) return my_dict