def main(): logger.info("Company profile loading script started at : {}".format(datetime.now())) data_client = MongoDataHandler() tickers = data_client.get_ticker_list() for ticker in tqdm(tickers): get_company_profile(ticker, data_client) data_client.close_client()
def main(): now = datetime.now() update_from = datetime.now() - timedelta(365) logger.info("Ticker price loading script started at : {}".format( datetime.now())) logger.info("Ticker price are retrieved from : {}".format( datetime.strftime(update_from, '%Y-%m-%d'))) data_client = MongoDataHandler() tickers = data_client.get_ticker_list() ticker_chunks = divide_chunks(tickers, 1000) for chunk in ticker_chunks: ticker_chunk_string = ' '.join(chunk) ticker_results = yf.download(ticker_chunk_string) recent_ticker_results = ticker_results[ ticker_results.index > dateutil.parser.parse( datetime.strftime(update_from, '%Y-%m-%d'))] df_rearranged = recent_ticker_results.T.swaplevel(0, 1) df_rearranged.columns = df_rearranged.columns.map(str) prices_dict = df_rearranged.groupby( level=0).apply(lambda df: df.xs(df.name).to_dict()).to_dict() price_list = [] for key, value in prices_dict.items(): price_dict = {'_id': key, 'prices': value} print(price_dict) price_list.append(price_dict) data_client.save_all_ticker_prices(price_list)
def get_company_profile(ticker: str, data_client: MongoDataHandler) -> None: try: company_profile = financial_data.get_company_profiles(ticker) if company_profile: data_client.update_company_profiles(ticker, company_profile) else: logger.info("No profile found for : {}".format(ticker)) except Exception as err: logger.info("Loading profile failed for: {} Error: {}".format(ticker, err))
def get_and_load_balance_sheets(ticker: str, data_client: MongoDataHandler) -> None: try: balance_sheets = financial_data.get_balance_sheets(ticker) if balance_sheets: data_client.update_balance_sheets(ticker, balance_sheets) else: logger.info("No balance sheets found for: {}.".format(ticker)) except Exception as err: logger.info("Loading balance sheets failed for: {} Error: {}".format(ticker, err))
def get_and_load_income_statements(company: str, data_client: MongoDataHandler) -> None: try: income_statements = financial_data.get_income_statements(company) if income_statements: data_client.update_income_statements(company, income_statements) logger.info("No income statements found for: {}.".format(company)) except Exception as err: logger.info( "Loading income statements failed for: {} Error: {}".format( company, err))
def get_and_load_cash_flows(company: str, data_client: MongoDataHandler) -> None: try: cash_flows = financial_data.get_cash_flows(company) if cash_flows: data_client.update_cash_flows(company, cash_flows) else: logger.info("No cash flows found for: {}.".format(company)) except Exception as err: logger.info("Loading cash flows failed for: {}. Error: {}".format( company, err))
def main(): now = datetime.now() current_year = now.year logger.info("Company balance sheet loading script started.") data_client = MongoDataHandler() tickers = data_client.get_ticker_list() balance_filed_companies = data_client.get_balance_filed_companies(str(current_year)) balance_unfiled_companies = (set(tickers) - set(balance_filed_companies)) logger.info("{} unfiled companies to process".format(len(balance_unfiled_companies))) [get_and_load_balance_sheets(company, data_client) for company in tqdm(balance_unfiled_companies)] data_client.close_client()
def main(): try: logger.info("Loading company list started") # get all companies from fmp full_company_list = financial_data.get_companies() data_client = MongoDataHandler() data_client.save_company_list(full_company_list) logger.info("Successfully loaded {} the companies".format( len(full_company_list))) data_client.close_client() except Exception as err: logger.info("Loading company list failed: Error: {}".format(err))