Spaces:
Runtime error
Runtime error
| from agency_swarm.tools import BaseTool | |
| from pydantic import Field | |
| import requests | |
| import pandas as pd | |
| import os | |
| # Define your Alpha Vantage API key as a global constant | |
| ALPHA_VANTAGE_API_KEY = os.getenv("ALPHA_VANTAGE_API_KEY") | |
| class MarketDataRetrievalTool(BaseTool): | |
| """ | |
| This tool retrieves market data for a given stock symbol using the Alpha Vantage API. | |
| It returns the data in a format suitable for analysis with pandas. | |
| """ | |
| symbol: str = Field( | |
| ..., description="The stock symbol for which to retrieve market data." | |
| ) | |
| function: str = Field( | |
| ..., description="The type of data to retrieve (e.g., TIME_SERIES_DAILY, TIME_SERIES_INTRADAY)." | |
| ) | |
| interval: str = Field( | |
| None, description="The interval between data points (e.g., 1min, 5min) for intraday data." | |
| ) | |
| def run(self): | |
| """ | |
| Retrieves market data for the specified stock symbol and function. | |
| Returns the data as a pandas DataFrame. | |
| """ | |
| # Construct the API request URL | |
| base_url = "https://www.alphavantage.co/query" | |
| params = { | |
| "function": self.function, | |
| "symbol": self.symbol, | |
| "apikey": ALPHA_VANTAGE_API_KEY | |
| } | |
| if self.function == "TIME_SERIES_INTRADAY" and self.interval: | |
| params["interval"] = self.interval | |
| # Make the API request | |
| response = requests.get(base_url, params=params) | |
| data = response.json() | |
| # Parse the JSON response into a pandas DataFrame | |
| if self.function == "TIME_SERIES_DAILY": | |
| time_series_key = "Time Series (Daily)" | |
| elif self.function == "TIME_SERIES_INTRADAY": | |
| time_series_key = f"Time Series ({self.interval})" | |
| else: | |
| return "Unsupported function type." | |
| if time_series_key not in data: | |
| return f"Error retrieving data: {data.get('Error Message', 'Unknown error')}" | |
| df = pd.DataFrame.from_dict(data[time_series_key], orient='index') | |
| df.index = pd.to_datetime(df.index) | |
| df = df.sort_index() | |
| # Return the data as a pandas DataFrame | |
| return df | |
| # Example usage: | |
| # tool = MarketDataRetrievalTool(symbol="AAPL", function="TIME_SERIES_DAILY") | |
| # result = tool.run() | |
| # print(result) |