refactor: Modify view_stock_details to show detailed query and raw results

This commit is contained in:
Bobby Abellana (aider) 2025-02-06 22:21:46 -08:00
parent bb3c5fe933
commit 99ea46f6b1
No known key found for this signature in database
GPG Key ID: 647714CC45F3647B

View File

@ -169,20 +169,80 @@ def view_stock_details(ticker: str, interval: str, start_date: datetime, end_dat
print(f"Date Range: {start_date.date()} to {end_date.date()}")
try:
# Get price data
df = get_stock_data(ticker, start_date, end_date, interval)
# Construct query
client = create_client()
today = datetime.now().date()
start_date = today - timedelta(days=60)
if df.empty:
print("No data found for this stock")
if interval == "daily":
table = "stock_prices_daily"
date_col = "date"
query = f"""
SELECT
{date_col} as date,
open,
high,
low,
close,
volume
FROM stock_db.{table}
WHERE ticker = '{ticker}'
AND {date_col} BETWEEN '{start_date}' AND '{today}'
ORDER BY date ASC
"""
else:
table = "stock_prices"
date_col = "window_start"
minutes_map = {
"5min": 5,
"15min": 15,
"30min": 30,
"1hour": 60
}
minutes = minutes_map[interval]
query = f"""
SELECT
fromUnixTimestamp(intDiv({date_col}, 300) * 300) as interval_start,
min(open) as open,
max(high) as high,
min(low) as low,
argMax(close, {date_col}) as close,
sum(volume) as volume
FROM stock_db.{table}
WHERE ticker = '{ticker}'
AND {date_col} BETWEEN toUnixTimestamp('{start_date}') AND toUnixTimestamp('{today}')
GROUP BY interval_start
ORDER BY interval_start ASC
"""
# Print the actual query being executed
print("\nExecuting Query:")
print(query)
# Execute query and get results
result = client.query(query)
if not result.result_rows:
print("\nNo data found for this stock")
return
print("\nData Sample:")
print("First 5 rows:")
print(df.head().to_string())
print("\nLast 5 rows:")
print(df.tail().to_string())
# Convert to DataFrame
df = pd.DataFrame(
result.result_rows,
columns=['date', 'open', 'high', 'low', 'close', 'volume']
)
print(f"\nTotal rows: {len(df)}")
# Print raw query results
print("\nRaw Query Results:")
print(f"Number of rows returned: {len(result.result_rows)}")
print("\nFirst 5 rows of raw data:")
for i, row in enumerate(result.result_rows[:5]):
print(f"Row {i + 1}: {row}")
print("\nLast 5 rows of raw data:")
for i, row in enumerate(result.result_rows[-5:]):
print(f"Row {len(result.result_rows) - 4 + i}: {row}")
# Calculate SunnyBands
sunny = SunnyBands()