bugfixing
This commit is contained in:
parent
52420a61cf
commit
437fb98b98
@ -4,11 +4,10 @@ import aiohttp
|
|||||||
import sqlite3
|
import sqlite3
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from ml_models.prophet_model import PricePredictor
|
from ml_models.prophet_model import PricePredictor
|
||||||
import yfinance as yf
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from tqdm import tqdm
|
from tqdm import tqdm
|
||||||
import concurrent.futures
|
import concurrent.futures
|
||||||
|
import orjson
|
||||||
|
|
||||||
def convert_symbols(symbol_list):
|
def convert_symbols(symbol_list):
|
||||||
converted_symbols = []
|
converted_symbols = []
|
||||||
@ -27,22 +26,37 @@ async def save_json(symbol, data):
|
|||||||
with open(f"json/price-analysis/{symbol}.json", 'w') as file:
|
with open(f"json/price-analysis/{symbol}.json", 'w') as file:
|
||||||
ujson.dump(data, file)
|
ujson.dump(data, file)
|
||||||
|
|
||||||
async def download_data(ticker, start_date, end_date):
|
async def download_data(ticker: str, start_date: str, end_date: str):
|
||||||
try:
|
try:
|
||||||
df = yf.download(ticker, start=start_date, end=end_date, interval="1d")
|
with open(f"json/historical-price/max/{ticker}.json", "r") as file:
|
||||||
df = df.reset_index()
|
data = orjson.loads(file.read())
|
||||||
df = df[['Date', 'Adj Close']]
|
|
||||||
df = df.rename(columns={"Date": "ds", "Adj Close": "y"})
|
df = pd.DataFrame(data)
|
||||||
if len(df) > 252*2: #At least 2 years of history is necessary
|
|
||||||
q_high= df["y"].quantile(0.99)
|
# Rename columns to ensure consistency
|
||||||
|
df = df.rename(columns={"Date": "ds", "Adj Close": "y", "time": "ds", "close": "y"})
|
||||||
|
|
||||||
|
# Ensure correct data types
|
||||||
|
df["ds"] = pd.to_datetime(df["ds"])
|
||||||
|
df["y"] = df["y"].astype(float)
|
||||||
|
|
||||||
|
# Convert start_date and end_date from string to datetime
|
||||||
|
start_date = pd.to_datetime(start_date, format="%Y-%m-%d")
|
||||||
|
end_date = pd.to_datetime(end_date, format="%Y-%m-%d")
|
||||||
|
|
||||||
|
# Filter data based on start_date and end_date
|
||||||
|
df = df[(df["ds"] >= start_date) & (df["ds"] <= end_date)]
|
||||||
|
|
||||||
|
# Apply filtering logic if enough data exists
|
||||||
|
if len(df) > 252 * 2: # At least 2 years of history is necessary
|
||||||
|
q_high = df["y"].quantile(0.99)
|
||||||
q_low = df["y"].quantile(0.01)
|
q_low = df["y"].quantile(0.01)
|
||||||
df = df[(df["y"] > q_low)]
|
df = df[(df["y"] > q_low) & (df["y"] < q_high)]
|
||||||
df = df[(df["y"] < q_high)]
|
|
||||||
#df['y'] = df['y'].rolling(window=10).mean()
|
return df
|
||||||
#df = df.dropna()
|
|
||||||
return df
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(f"Error processing {ticker}: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
async def process_symbol(ticker, start_date, end_date):
|
async def process_symbol(ticker, start_date, end_date):
|
||||||
try:
|
try:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user