change retail volume cron job

This commit is contained in:
MuslemRahimi 2024-06-18 20:24:35 +02:00
parent d016fc8dda
commit b7fadd7ef2
3 changed files with 18 additions and 3 deletions

View File

@ -209,6 +209,7 @@ class StockDatabase:
'price': parsed_data[0]['price'], 'price': parsed_data[0]['price'],
'changesPercentage': round(parsed_data[0]['changesPercentage'],2), 'changesPercentage': round(parsed_data[0]['changesPercentage'],2),
'marketCap': parsed_data[0]['marketCap'], 'marketCap': parsed_data[0]['marketCap'],
'volume': parsed_data[0]['volume'],
'avgVolume': parsed_data[0]['avgVolume'], 'avgVolume': parsed_data[0]['avgVolume'],
'eps': parsed_data[0]['eps'], 'eps': parsed_data[0]['eps'],
'pe': parsed_data[0]['pe'], 'pe': parsed_data[0]['pe'],

View File

@ -5,6 +5,7 @@ import sqlite3
from datetime import datetime,timedelta from datetime import datetime,timedelta
from tqdm import tqdm from tqdm import tqdm
import pandas as pd import pandas as pd
import time
from dotenv import load_dotenv from dotenv import load_dotenv
import os import os
@ -18,7 +19,7 @@ today = datetime.now()
six_months_ago = today - timedelta(days=6*30) # Rough estimate, can be refined six_months_ago = today - timedelta(days=6*30) # Rough estimate, can be refined
query_template = """ query_template = """
SELECT SELECT
name, marketCap, netIncome name, marketCap, netIncome, price, avgVolume
FROM FROM
stocks stocks
WHERE WHERE
@ -94,7 +95,20 @@ async def run():
try: try:
filtered_data = [item for item in transformed_data if symbol == item['symbol']] filtered_data = [item for item in transformed_data if symbol == item['symbol']]
res = filter_past_six_months(filtered_data) res = filter_past_six_months(filtered_data)
await save_json(symbol, res)
#Compute strength of retail investors
last_trade = res[-1]['traded']
last_sentiment = int(res[-1]['sentiment'])
last_date = res[-1]['date']
data = pd.read_sql_query(query_template, con, params=(symbol,))
price = float(data['price'].iloc[0])
retail_volume = int(last_trade/price)
total_volume = int(data['avgVolume'].iloc[0])
retailer_strength = round(((retail_volume/total_volume))*100,2)
company_data = {'lastDate': last_date, 'lastTrade': last_trade, 'lastSentiment': last_sentiment, 'retailStrength': retailer_strength, 'history': res}
await save_json(symbol, company_data)
#Add stocks for most retail volume #Add stocks for most retail volume
if symbol in stocks_symbols: if symbol in stocks_symbols:

View File

@ -2852,7 +2852,7 @@ async def get_retail_volume(data:TickerData):
with open(f"json/retail-volume/companies/{ticker}.json", 'r') as file: with open(f"json/retail-volume/companies/{ticker}.json", 'r') as file:
res = ujson.load(file) res = ujson.load(file)
except: except:
res = [] res = {}
redis_client.set(cache_key, ujson.dumps(res)) redis_client.set(cache_key, ujson.dumps(res))
redis_client.expire(cache_key, 3600*3600) # Set cache expiration time to 1 day redis_client.expire(cache_key, 3600*3600) # Set cache expiration time to 1 day