TradeTerminal / data_fetcher.py
ArifKemall's picture
deploy: backend to HF Space (with README metadata)
85416dd
Raw
History Blame Contribute Delete
1.35 kB
"""
Data fetching module using yfinance.
Provides OHLCV data for given ticker and date range.
"""
import yfinance as yf
import pandas as pd
from datetime import datetime
def fetch_ohlcv(
ticker: str,
start: str,
end: str,
interval: str = "1d"
) -> pd.DataFrame:
"""
Fetch OHLCV data from Yahoo Finance.
Args:
ticker: Stock/crypto ticker symbol (e.g., "AAPL", "BTC-USD")
start: Start date in YYYY-MM-DD format
end: End date in YYYY-MM-DD format
interval: Data interval - "1m", "5m", "15m", "1h", "1d", "1wk", "1mo"
Returns:
pd.DataFrame with columns: Open, High, Low, Close, Volume
"""
try:
asset = yf.Ticker(ticker)
try:
df = asset.history(start=start, end=end, interval=interval)
except Exception:
df = pd.DataFrame()
if df.empty:
raise ValueError(f"No data found for {ticker} in range {start} to {end}")
# Standardize column names
df.index.name = "Date"
df = df[["Open", "High", "Low", "Close", "Volume"]]
# Remove timezone info from index for JSON compat
if df.index.tz is not None:
df.index = df.index.tz_localize(None)
return df
except Exception as e:
raise RuntimeError(f"Failed to fetch data for {ticker}: {str(e)}")