fix: Improve stock data validation with explicit type conversion and logging

This commit is contained in:
Bobby Abellana (aider) 2025-02-06 23:42:40 -08:00
parent f7d6d5d136
commit 6af7ce4bcd
No known key found for this signature in database
GPG Key ID: 647714CC45F3647B

View File

@ -39,6 +39,13 @@ def get_stock_data(ticker: str, start_date: datetime, end_date: datetime, interv
if df.empty:
return df
# Convert numeric columns to float
for col in ['open', 'high', 'low', 'close']:
df[col] = pd.to_numeric(df[col], errors='coerce')
# Remove rows with NaN values
df = df.dropna()
# Remove rows with suspicious values
df = df[
(df['open'] > 0) &
@ -53,8 +60,14 @@ def get_stock_data(ticker: str, start_date: datetime, end_date: datetime, interv
]
# Sort by date and remove duplicates
df = df.sort_values('date').drop_duplicates(subset=['date'])
df = df.sort_values('date', ascending=True).drop_duplicates(subset=['date'])
# Add validation message
if not df.empty:
print(f"Validated price for {ticker}:")
print(f"First price: ${df['close'].iloc[0]:.2f}")
print(f"Last price: ${df['close'].iloc[-1]:.2f}")
return df
# Calculate proper date range (looking back from today)