Stockker / src /ingestion /ingest.py
umer6016's picture
Upload folder using huggingface_hub
ce3d808 verified
import os
import requests
import pandas as pd
from datetime import datetime
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.getenv("ALPHA_VANTAGE_API_KEY")
BASE_URL = "https://www.alphavantage.co/query"
def fetch_daily_data(symbol: str, output_dir: str = "data/raw"):
"""
Fetches daily time series data for a given symbol from Alpha Vantage
and saves it as a CSV file.
"""
if not API_KEY:
raise ValueError("ALPHA_VANTAGE_API_KEY not found in environment variables.")
params = {
"function": "TIME_SERIES_DAILY",
"symbol": symbol,
"apikey": API_KEY,
"datatype": "csv",
"outputsize": "compact" # Get compact history (last 100 data points)
}
print(f"Fetching data for {symbol}...")
response = requests.get(BASE_URL, params=params)
if response.status_code != 200:
raise Exception(f"Failed to fetch data: {response.text}")
# Check if response contains error message
if "Error Message" in response.text:
raise Exception(f"API Error: {response.text}")
os.makedirs(output_dir, exist_ok=True)
file_path = os.path.join(output_dir, f"{symbol}_daily.csv")
with open(file_path, "w") as f:
f.write(response.text)
print(f"Data saved to {file_path}")
return file_path
if __name__ == "__main__":
# Example usage for manual execution
symbols = ["AAPL", "GOOGL", "MSFT", "AMZN", "TSLA", "NVDA"]
print(f"Manually fetching data for: {symbols}")
for symbol in symbols:
try:
fetch_daily_data(symbol)
except Exception as e:
print(f"Error fetching {symbol}: {e}")