diff --git a/app/cron_dark_pool_flow.py b/app/cron_dark_pool_flow.py index 93038e1..a063300 100644 --- a/app/cron_dark_pool_flow.py +++ b/app/cron_dark_pool_flow.py @@ -90,6 +90,8 @@ def run(): for entry in filtered_data ] + print(res) + if len(res) > 0: save_json(res) @@ -99,7 +101,7 @@ def run(): future = executor.submit(run) try: # Wait for the result with a timeout of 300 seconds (5 minutes) - future.result(timeout=300) + future.result(timeout=10) except TimeoutError: print("The operation timed out.") except Exception as e: diff --git a/app/cron_share_statistics.py b/app/cron_share_statistics.py index 22af4c3..149b5cf 100644 --- a/app/cron_share_statistics.py +++ b/app/cron_share_statistics.py @@ -8,9 +8,11 @@ import time -async def save_as_json(symbol, data): +async def save_as_json(symbol, forward_pe_dict, short_dict): with open(f"json/share-statistics/{symbol}.json", 'w') as file: - ujson.dump(data, file) + ujson.dump(short_dict, file) + with open(f"json/forward-pe/{symbol}.json", 'w') as file: + ujson.dump(forward_pe_dict, file) query_template = f""" @@ -33,14 +35,15 @@ def filter_data_quarterly(data): return filtered_data -def get_short_data(ticker, outstanding_shares, float_shares): +def get_yahoo_data(ticker, outstanding_shares, float_shares): try: data_dict = yf.Ticker(ticker).info + forward_pe = round(data_dict['forwardPE'],2) short_outstanding_percent = round((data_dict['sharesShort']/outstanding_shares)*100,2) short_float_percent = round((data_dict['sharesShort']/float_shares)*100,2) - return {'sharesShort': data_dict['sharesShort'], 'shortRatio': data_dict['shortRatio'], 'sharesShortPriorMonth': data_dict['sharesShortPriorMonth'], 'shortOutStandingPercent': short_outstanding_percent, 'shortFloatPercent': short_float_percent} + return {'forwardPE': forward_pe}, {'sharesShort': data_dict['sharesShort'], 'shortRatio': data_dict['shortRatio'], 'sharesShortPriorMonth': data_dict['sharesShortPriorMonth'], 'shortOutStandingPercent': short_outstanding_percent, 'shortFloatPercent': short_float_percent} except: - return {'sharesShort': 0, 'shortRatio': 0, 'sharesShortPriorMonth': 0, 'shortOutStandingPercent': 0, 'shortFloatPercent': 0} + return {'forwardPE': 0}, {'sharesShort': 0, 'shortRatio': 0, 'sharesShortPriorMonth': 0, 'shortOutStandingPercent': 0, 'shortFloatPercent': 0} async def get_data(ticker, con): @@ -66,13 +69,14 @@ async def get_data(ticker, con): # Filter out only quarter-end dates historical_shares = filter_data_quarterly(shareholder_statistics) - short_data = get_short_data(ticker, latest_outstanding_shares, latest_float_shares) - res = {**short_data, 'latestOutstandingShares': latest_outstanding_shares, 'latestFloatShares': latest_float_shares,'historicalShares': historical_shares} + forward_pe_data, short_data = get_yahoo_data(ticker, latest_outstanding_shares, latest_float_shares) + short_data = {**short_data, 'latestOutstandingShares': latest_outstanding_shares, 'latestFloatShares': latest_float_shares,'historicalShares': historical_shares} except Exception as e: print(e) - res = {} + short_data = {} + forward_pe_data = {} - return res + return forward_pe_data, short_data async def run(): @@ -87,9 +91,9 @@ async def run(): counter = 0 for ticker in tqdm(stock_symbols): - data_dict = await get_data(ticker, con) - if data_dict.keys(): - await save_as_json(ticker, data_dict) + forward_pe_dict, short_dict = await get_data(ticker, con) + if forward_pe_dict.keys() and short_dict.keys(): + await save_as_json(ticker, forward_pe_dict, short_dict) counter += 1 if counter % 100 == 0: diff --git a/app/restart_json.py b/app/restart_json.py index 72d7069..3a978b7 100755 --- a/app/restart_json.py +++ b/app/restart_json.py @@ -177,6 +177,14 @@ async def get_stock_screener(con,symbols): except: item['fundamentalAnalysis'] = {"accuracy": None} + try: + with open(f"json/forward-pe/{symbol}.json", 'r') as file: + res = ujson.load(file) + if res['forwardPE'] != 0: + item['forwardPE'] = res['forwardPE'] + except: + item['forwardPE'] = None + return stock_screener_data