This is page 3 of 3. Use http://codebase.md/calvernaz/alphavantage?page={x} to view the full context.
# Directory Structure
```
├── .bumpversion.cfg
├── .github
│ ├── FUNDING.yml
│ └── workflows
│ └── publish.yml
├── .gitignore
├── .python-version
├── CONTRIBUTING.md
├── deploy
│ └── aws-stateless-mcp-lambda
│ ├── .aws-sam
│ │ └── build.toml
│ ├── deploy.sh
│ ├── lambda_function.py
│ ├── README.md
│ ├── requirements.txt
│ └── template.yaml
├── DEVELOPMENT.md
├── Dockerfile
├── LICENSE
├── pyproject.toml
├── pytest.ini
├── README.md
├── scripts
│ └── publish.py
├── smithery.yaml
├── src
│ ├── alphavantage_mcp_client
│ │ └── client.py
│ └── alphavantage_mcp_server
│ ├── __init__.py
│ ├── __main__.py
│ ├── api.py
│ ├── oauth.py
│ ├── prompts.py
│ ├── response_utils.py
│ ├── server.py
│ ├── telemetry_bootstrap.py
│ ├── telemetry_instrument.py
│ └── tools.py
├── tests
│ ├── test_api.py
│ ├── test_http_mcp_client.py
│ ├── test_http_transport.py
│ ├── test_integration.py
│ ├── test_stdio_transport.py
│ └── test_telemetry.py
└── uv.lock
```
# Files
--------------------------------------------------------------------------------
/src/alphavantage_mcp_server/api.py:
--------------------------------------------------------------------------------
```python
import os
import httpx
from dotenv import load_dotenv
from .telemetry_instrument import instrument_tool
load_dotenv()
API_KEY = os.getenv("ALPHAVANTAGE_API_KEY")
if not API_KEY:
raise ValueError("ALPHAVANTAGE_API_KEY environment variable required")
API_BASE_URL = "https://www.alphavantage.co/query"
async def _make_api_request(
https_params: dict[str, str], datatype: str
) -> dict[str, str] | str:
async with httpx.AsyncClient() as client:
response = await client.get(API_BASE_URL, params=https_params)
response.raise_for_status()
return response.text if datatype == "csv" else response.json()
#####
# Core Stock APIs
#####
@instrument_tool("time_series_intraday")
async def fetch_intraday(
symbol: str,
interval: str = "60min",
datatype: str = "json",
adjusted: bool = True,
extended_hours: bool = True,
outputsize: str = "compact",
month: str = None,
) -> dict[str, str] | str:
"""
Fetch intraday stock data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data (default: "5min").
:argument: datatype (str): The response data type (default: "json").
:argument: adjusted (bool): The adjusted data flag (default: True).
:argument: extended_hours (bool): The extended hours flag (default: True).
:argument: outputsize (str): The output size for the data (default: "compact").
:argument: month (str): The month of the data (default: None).
:returns: The intraday stock data.
"""
https_params = {
"function": "TIME_SERIES_INTRADAY",
"symbol": symbol,
"interval": interval,
"datatype": datatype,
"adjusted": adjusted,
"outputsize": outputsize,
"extended_hours": extended_hours,
"month": month,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("time_series_daily")
async def fetch_time_series_daily(
symbol: str, datatype: str = "json", outputsize: str = "compact"
) -> dict[str, str] | str:
"""
Fetch daily stock data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: datatype (str): The response data type (default: "json").
:returns: The daily stock data.
"""
https_params = {
"function": "TIME_SERIES_DAILY",
"symbol": symbol,
"datatype": datatype,
"outputsize": outputsize,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("time_series_daily_adjusted")
async def fetch_time_series_daily_adjusted(
symbol: str, datatype: str = "json", outputsize: str = "compact"
) -> dict[str, str] | str:
"""
Fetch daily adjusted stock data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: datatype (str): The response data type (default: "json").
:returns: The daily adjusted stock data.
"""
https_params = {
"function": "TIME_SERIES_DAILY_ADJUSTED",
"symbol": symbol,
"datatype": datatype,
"outputsize": outputsize,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("time_series_weekly")
async def fetch_time_series_weekly(
symbol: str, datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch weekly stock data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: datatype (str): The response data type (default: "json").
:returns: The weekly stock data.
"""
https_params = {
"function": "TIME_SERIES_WEEKLY",
"symbol": symbol,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("time_series_weekly_adjusted")
async def fetch_time_series_weekly_adjusted(
symbol: str, datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch weekly adjusted stock data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: datatype (str): The response data type (default: "json").
:returns: The weekly adjusted stock data.
"""
https_params = {
"function": "TIME_SERIES_WEEKLY_ADJUSTED",
"symbol": symbol,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("time_series_monthly")
async def fetch_time_series_monthly(
symbol: str, datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch monthly stock data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: datatype (str): The response data type (default: "json").
:returns: The monthly stock data.
"""
https_params = {
"function": "TIME_SERIES_MONTHLY",
"symbol": symbol,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("time_series_monthly_adjusted")
async def fetch_time_series_monthly_adjusted(
symbol: str, datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch monthly adjusted stock data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: datatype (str): The response data type (default: "json").
:returns: The monthly adjusted stock data.
"""
https_params = {
"function": "TIME_SERIES_MONTHLY_ADJUSTED",
"symbol": symbol,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("stock_quote")
async def fetch_quote(symbol: str, datatype: str = "json") -> dict[str, str] | str:
"""
Fetch a stock quote from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: datatype (str): The response data type (default: "json").
:returns: The stock quote data.
"""
https_params = {
"function": "GLOBAL_QUOTE",
"symbol": symbol,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("realtime_bulk_quotes")
async def fetch_realtime_bulk_quotes(
symbols: list[str], datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch real-time bulk stock quotes from the Alpha Vantage API.
:argument: symbols (list[str]): The stock symbols to fetch.
:argument: datatype (str): The response data type (default: "json").
:returns: The real-time bulk stock quotes.
"""
https_params = {
"function": "REALTIME_BULK_QUOTES",
"symbols": ",".join(symbols[:100]),
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("symbol_search")
async def search_endpoint(
keywords: str, datatype: str = "json"
) -> dict[str, str] | str:
"""
Search for endpoints from the Alpha Vantage API.
:argument: keywords (str): The search keywords.
:argument: datatype (str): The response data type (default: "json").
:returns: The search results.
"""
https_params = {
"function": "SYMBOL_SEARCH",
"keywords": keywords,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("market_status")
async def fetch_market_status() -> dict[str, str] | str:
"""
Fetch the market status from the Alpha Vantage API.
:returns: The market status.
"""
https_params = {"function": "MARKET_STATUS", "apikey": API_KEY}
return await _make_api_request(https_params, "json")
#####
# Options data APIs
#####
@instrument_tool("realtime_options")
async def fetch_realtime_options(
symbol: str, datatype: str = "json", contract: str = None
) -> dict[str, str] | str:
"""
Fetch real-time options data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: datatype (str): The response data type (default: "json").
:argument: contract (str): The contract ID (default: None)
:returns: The real-time options' data.
"""
https_params = {
"function": "REALTIME_OPTIONS",
"symbol": symbol,
"datatype": datatype,
"contract": contract,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("historical_options")
async def fetch_historical_options(
symbol: str, datatype: str = "json", date: str = None
) -> dict[str, str] | str:
"""
Fetch historical options data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: datatype (str): The response data type (default: "json").
:argument: date (str): The date of the historical options (default: None)
"""
https_params = {
"function": "HISTORICAL_OPTIONS",
"symbol": symbol,
"datatype": datatype,
"date": date,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
#####
# Alpha Intelligence APIs
#####
@instrument_tool("news_sentiment")
async def fetch_news_sentiment(
tickers: list[str],
datatype: str = "json",
topics: list[str] = None,
time_from: str = None,
time_to: str = None,
sort: str = "LATEST",
limit: int = 50,
) -> dict[str, str] | str:
"""
Fetch news sentiment data from the Alpha Vantage API.
:argument: tickers (list[str]): The stock tickers to fetch.
:argument: datatype (str): The response data type (default: "json").
:argument: topics (list[str]): The news topics (default: None).
:argument: time_from (str): The start time (default: None).
:argument: time_to (str): The end time (default: None).
:argument: sort (str): The sort order (default: "LATEST").
:argument: limit (int): The number of news articles to fetch (default: 50).
:returns: The news sentiment data.
"""
https_params = {
"function": "NEWS_SENTIMENT",
"tickers": ",".join(tickers),
"datatype": datatype,
"topics": ",".join(topics) if topics else None,
"time_from": time_from,
"time_to": time_to,
"sort": sort,
"limit": limit,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("top_gainers_losers")
async def fetch_top_gainer_losers() -> dict[str, str]:
"""
Fetch the top gainers or losers from the Alpha Vantage API.
:returns: The top gainers or losers data.
"""
https_params = {
"function": "TOP_GAINERS_LOSERS",
"apikey": API_KEY,
}
return await _make_api_request(https_params, "json")
@instrument_tool("insider_transactions")
async def fetch_insider_transactions(symbol: str) -> dict[str, str]:
"""
Fetch insider transactions from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:returns: insider transactions' data.
"""
https_params = {
"function": "INSIDER_TRANSACTIONS",
"symbol": symbol,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "json")
@instrument_tool("analytics_fixed_window")
async def fetch_analytics_fixed_window(
symbols: list[str],
interval: str,
series_range: str = "full",
ohlc: str = "close",
calculations: list[str] = None,
) -> dict[str, str]:
"""
Fetch analytics data from the Alpha Vantage API.
:argument: symbol (list[str]): The stock symbols to fetch.
:argument: range (str): The range of the data (default: "full").
:argument: interval (str): The time interval for the data.
:argument: ohlc (str): The OHLC data type (default: "close").
:argument: calculations (list[str]): The analytics calculations (default: None).
:returns: The analytics data.
"""
https_params = {
"function": "ANALYTICS_FIXED_WINDOW",
"symbol": ",".join(symbols),
"range": series_range,
"interval": interval,
"ohlc": ohlc,
"calculations": ",".join(calculations) if calculations else None,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "json")
@instrument_tool("analytics_sliding_window")
async def fetch_analytics_sliding_window(
symbols: list[str],
series_range: str = "full",
ohlc: str = "close",
interval: str = None,
window_size: int = 10,
calculations: list[str] = None,
) -> dict[str, str]:
"""
Fetch analytics data from the Alpha Vantage API.
:argument: symbol (list[str]): The stock symbols to fetch.
:returns: The analytics data.
"""
https_params = {
"function": "ANALYTICS_SLIDING_WINDOW",
"symbols": ",".join(symbols),
"range": series_range,
"ohlc": ohlc,
"interval": interval,
"window_size": window_size,
"calculations": ",".join(calculations) if calculations else None,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "json")
#####
# Fundamental data APIs
#####
@instrument_tool("company_overview")
async def fetch_company_overview(symbol: str) -> dict[str, str]:
"""
Fetch company overview data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:returns: The company overview data.
"""
https_params = {
"function": "OVERVIEW",
"symbol": symbol,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "json")
@instrument_tool("etf_profile")
async def fetch_etf_profile(symbol: str) -> dict[str, str]:
"""
Fetch ETC profile from Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:returns: The company overview data.
"""
https_params = {
"function": "ETF_PROFILE",
"symbol": symbol,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "json")
@instrument_tool("company_dividends")
async def company_dividends(symbol: str) -> dict[str, str]:
"""
Fetch company dividends data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:returns: The company dividends data.
"""
https_params = {
"function": "DIVIDENDS",
"symbol": symbol,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "json")
@instrument_tool("company_splits")
async def fetch_company_splits(symbol: str) -> dict[str, str]:
"""
Fetch company splits data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:returns: The company splits data.
"""
https_params = {
"function": "SPLITS",
"symbol": symbol,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "json")
@instrument_tool("income_statement")
async def fetch_income_statement(symbol: str) -> dict[str, str]:
"""
Fetch company income statement data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:returns: The company income statement data.
"""
https_params = {
"function": "INCOME_STATEMENT",
"symbol": symbol,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "json")
@instrument_tool("balance_sheet")
async def fetch_balance_sheet(symbol: str) -> dict[str, str]:
"""
Fetch company balance sheet data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:returns: The company balance sheet data.
"""
https_params = {
"function": "BALANCE_SHEET",
"symbol": symbol,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "json")
@instrument_tool("cash_flow")
async def fetch_cash_flow(symbol: str) -> dict[str, str]:
"""
Fetch company cash flow data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:returns: The company cash flow data.
"""
https_params = {
"function": "CASH_FLOW",
"symbol": symbol,
"apikey": API_KEY,
}
async with httpx.AsyncClient() as client:
response = await client.get(API_BASE_URL, params=https_params)
response.raise_for_status()
return response.json()
@instrument_tool("company_earnings")
async def fetch_earnings(symbol: str) -> dict[str, str]:
"""
Fetch company earnings data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:returns: The company earnings data.
"""
https_params = {
"function": "EARNINGS",
"symbol": symbol,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "json")
@instrument_tool("earnings_call_transcript")
async def fetch_earnings_call_transcript(symbol: str, quarter: str) -> dict[str, str]:
"""
This API returns the earnings call transcript for a given company in a specific quarter, covering over 15 years
of history and enriched with LLM-based sentiment signals.
:param symbol: The stock symbol to fetch.
:param quarter: The quarter for which to fetch the earnings call transcript in the format YYYYQM.
:return: The earnings call transcript data.
"""
https_params = {
"function": "EARNINGS_CALL_TRANSCRIPT",
"symbol": symbol,
"quarter": quarter,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "json")
@instrument_tool("listing_status")
async def fetch_listing_status(
date: str = None, state: str = "active"
) -> dict[str, str]:
"""
Fetch company listing status data from the Alpha Vantage API.
:argument: date (str): The date of the listing status (default: None).
:argument: state (str): The listing status state (default: "active").
:returns: The company listing status data.
"""
https_params = {
"function": "LISTING_STATUS",
"date": date,
"state": state,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "json")
@instrument_tool("earnings_calendar")
async def fetch_earnings_calendar(symbol: str, horizon: str = "3month") -> str:
"""
Fetch companies earnings calendar data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: horizon (str): The earning calendar horizon (default: "3month").
:returns: The company earning calendar data using CSV format
"""
https_params = {
"function": "EARNINGS_CALENDAR",
"horizon": horizon,
"apikey": API_KEY,
}
if symbol:
https_params["symbol"] = symbol
return await _make_api_request(https_params, "csv")
@instrument_tool("ipo_calendar")
async def fetch_ipo_calendar() -> str:
"""
Fetch IPO calendar data from the Alpha Vantage API.
:returns: The IPO calendar data.
"""
https_params = {
"function": "IPO_CALENDAR",
"apikey": API_KEY,
}
return await _make_api_request(https_params, "csv")
#####
# Forex data APIs
#####
@instrument_tool("exchange_rate")
async def fetch_exchange_rate(
from_currency: str, to_currency: str
) -> dict[str, str] | str:
"""
Fetch exchange rate data from the Alpha Vantage API.
:argument: from_currency (str): The source currency.
:argument: to_currency (str): The destination currency.
:returns: The exchange rate data.
"""
https_params = {
"function": "CURRENCY_EXCHANGE_RATE",
"from_currency": from_currency,
"to_currency": to_currency,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "json")
@instrument_tool("fx_intraday")
async def fetch_fx_intraday(
from_symbol: str,
to_symbol: str,
interval: str = None,
outputsize: str = "compact",
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch intraday forex data from the Alpha Vantage API.
:argument: from_symbol (str): The source currency.
:argument: to_symbol (str): The destination currency.
:argument: interval (str): The time interval for the data (default: None).
:argument: outputsize (str): The output size for the data (default: "compact").
:argument: datatype (str): The response data type (default: "json").
:returns: The intraday forex data.
"""
https_params = {
"function": "FX_INTRADAY",
"from_symbol": from_symbol,
"to_symbol": to_symbol,
"interval": interval,
"datatype": datatype,
"outputsize": outputsize,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("fx_daily")
async def fetch_fx_daily(
from_symbol: str,
to_symbol: str,
datatype: str = "json",
outputsize: str = "compact",
) -> dict[str, str] | str:
"""
Fetch daily forex data from the Alpha Vantage API.
:argument: from_symbol (str): The source currency.
:argument: to_symbol (str): The destination currency.
:argument: datatype (str): The response data type (default: "json").
:argument: outputsize (str): The output size for the data (default: "compact").
:returns: The daily forex data.
"""
https_params = {
"function": "FX_DAILY",
"from_symbol": from_symbol,
"to_symbol": to_symbol,
"datatype": datatype,
"outputsize": outputsize,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("fx_weekly")
async def fetch_fx_weekly(
from_symbol: str, to_symbol: str, datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch weekly forex data from the Alpha Vantage API.
:argument: from_symbol (str): The source currency.
:argument: to_symbol (str): The destination currency.
:argument: datatype (str): The response data type (default: "json").
:returns: The weekly forex data.
"""
https_params = {
"function": "FX_WEEKLY",
"from_symbol": from_symbol,
"to_symbol": to_symbol,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("fx_monthly")
async def fetch_fx_monthly(
from_symbol: str, to_symbol: str, datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch monthly forex data from the Alpha Vantage API.
:argument: from_symbol (str): The source currency.
:argument: to_symbol (str): The destination currency.
:argument: datatype (str): The response data type (default: "json").
:returns: The monthly forex data.
"""
https_params = {
"function": "FX_MONTHLY",
"from_symbol": from_symbol,
"to_symbol": to_symbol,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
#####
# Crypto data APIs
#####
@instrument_tool("crypto_intraday")
async def fetch_digital_currency_intraday(
symbol: str,
market: str,
interval: str = None,
datatype: str = "json",
outputsize: str = "compact",
) -> dict[str, str] | str:
"""
Fetch intraday digital currency data from the Alpha Vantage API.
:argument: symbol (str): The digital currency symbol to fetch.
:argument: market (str): The market symbol to fetch.
:argument: interval (str): The time interval for the data (default: "5min").
:argument: datatype (str): The response data type (default: "json").
:returns: The intraday digital currency data.
"""
https_params = {
"function": "CRYPTO_INTRADAY",
"symbol": symbol,
"market": market,
"interval": interval,
"datatype": datatype,
"outputsize": outputsize,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("digital_currency_daily")
async def fetch_digital_currency_daily(symbol: str, market: str) -> str:
"""
Fetch daily digital currency data from the Alpha Vantage API.
:argument: symbol (str): The digital currency symbol to fetch.
:argument: market (str): The market symbol to fetch.
:argument: datatype (str): The response data type (default: "json").
:returns: The daily digital currency data.
"""
https_params = {
"function": "DIGITAL_CURRENCY_DAILY",
"symbol": symbol,
"market": market,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "csv")
@instrument_tool("digital_currency_weekly")
async def fetch_digital_currency_weekly(symbol: str, market: str) -> str:
"""
Fetch weekly digital currency data from the Alpha Vantage API.
:argument: symbol (str): The digital currency symbol to fetch.
:argument: market (str): The market symbol to fetch.
:argument: datatype (str): The response data type (default: "json").
:returns: The weekly digital currency data.
"""
https_params = {
"function": "DIGITAL_CURRENCY_WEEKLY",
"symbol": symbol,
"market": market,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "csv")
@instrument_tool("digital_currency_monthly")
async def fetch_digital_currency_monthly(symbol: str, market: str) -> str:
"""
Fetch monthly digital currency data from the Alpha Vantage API.
:argument: symbol (str): The digital currency symbol to fetch.
:argument: market (str): The market symbol to fetch.
:argument: datatype (str): The response data type (default: "json").
:returns: The monthly digital currency data.
"""
https_params = {
"function": "DIGITAL_CURRENCY_MONTHLY",
"symbol": symbol,
"market": market,
"apikey": API_KEY,
}
return await _make_api_request(https_params, "csv")
#####
# Commodities data APIs
#####
@instrument_tool("wti_crude_oil")
async def fetch_wti_crude(
interval: str = "monthly", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch crude oil (WTI) data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The intraday crude oil (WTI) data.
"""
https_params = {
"function": "WTI",
"interval": interval,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("brent_crude_oil")
async def fetch_brent_crude(
interval: str = "monthly", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch Brent crude oil data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The intraday Brent crude oil data.
"""
https_params = {
"function": "BRENT",
"interval": interval,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("natural_gas")
async def fetch_natural_gas(
interval: str = "monthly", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch Henry Hub natural gas data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The intraday natural gas data.
"""
https_params = {
"function": "NATURAL_GAS",
"interval": interval,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("copper")
async def fetch_copper(
interval: str = "monthly", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch global copper data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The intraday copper data.
"""
https_params = {
"function": "COPPER",
"interval": interval,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("aluminum")
async def fetch_aluminum(
interval: str = "monthly", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch global aluminum data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The intraday aluminum data.
"""
https_params = {
"function": "ALUMINUM",
"interval": interval,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("wheat")
async def fetch_wheat(
interval: str = "monthly", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch global wheat data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The intraday wheat data.
"""
https_params = {
"function": "WHEAT",
"interval": interval,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("corn")
async def fetch_corn(
interval: str = "monthly", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch global corn data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The intraday corn data.
"""
https_params = {
"function": "CORN",
"interval": interval,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("cotton")
async def fetch_cotton(
interval: str = "monthly", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch global cotton data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The intraday cotton data.
"""
https_params = {
"function": "COTTON",
"interval": interval,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("sugar")
async def fetch_sugar(
interval: str = "monthly", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch global sugar data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The intraday sugar data.
"""
https_params = {
"function": "SUGAR",
"interval": interval,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("coffee")
async def fetch_coffee(
interval: str = "monthly", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch global coffee data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The intraday coffee data.
"""
https_params = {
"function": "COFFEE",
"interval": interval,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("all_commodities")
async def fetch_all_commodities(
interval: str = "monthly", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch global commodities data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: Global commodities data.
"""
https_params = {
"function": "ALL_COMMODITIES",
"interval": interval,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
#####
# Economic data APIs
#####
@instrument_tool("real_gdp")
async def fetch_real_gdp(
interval: str = "monthly", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch real GDP data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The real GDP data.
"""
https_params = {
"function": "REAL_GDP",
"interval": interval,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("real_gdp_per_capita")
async def fetch_real_gdp_per_capita(datatype: str = "json") -> dict[str, str] | str:
"""
Fetch real GDP per capita data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The real GDP per capita data.
"""
https_params = {
"function": "REAL_GDP_PER_CAPITA",
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("treasury_yield")
async def fetch_treasury_yield(
interval: str = "monthly", maturity: str = "10year", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch treasure yield data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: maturity (str): The maturity period for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The treasure yield data.
"""
https_params = {
"function": "TREASURY_YIELD",
"interval": interval,
"maturity": maturity,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("federal_funds_rate")
async def fetch_federal_funds_rate(
interval: str = "monthly", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch federal funds rate data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The federal funds rate data.
"""
https_params = {
"function": "FEDERAL_FUNDS_RATE",
"interval": interval,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("cpi")
async def fetch_cpi(
interval: str = "monthly", datatype: str = "json"
) -> dict[str, str] | str:
"""
Fetch consumer price index (CPI) data from the Alpha Vantage API.
:argument: interval (str): The time interval for the data (default: "monthly").
:argument: datatype (str): The response data type (default: "json").
:returns: The consumer price index (CPI) data.
"""
https_params = {
"function": "CPI",
"interval": interval,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("inflation")
async def fetch_inflation(datatype: str = "json") -> dict[str, str] | str:
"""
Fetch inflation data from the Alpha Vantage API.
:argument: datatype (str): The response data type (default: "json").
:returns: The inflation data.
"""
https_params = {
"function": "INFLATION",
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("retail_sales")
async def fetch_retail_sales(datatype: str = "json") -> dict[str, str] | str:
"""
Fetch retail sales data from the Alpha Vantage API.
:argument: datatype (str): The response data type (default: "json").
:returns: The retail sales data.
"""
https_params = {
"function": "RETAIL_SALES",
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("durables")
async def fetch_durables(datatype: str = "json") -> dict[str, str] | str:
"""
Fetch durable goods data from the Alpha Vantage API.
:argument: datatype (str): The response data type (default: "json").
:returns: The durable goods data.
"""
https_params = {
"function": "DURABLES",
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("unemployment")
async def fetch_unemployment(datatype: str = "json") -> dict[str, str] | str:
"""
Fetch unemployment data from the Alpha Vantage API.
:argument: datatype (str): The response data type (default: "json").
:returns: The unemployment data.
"""
https_params = {
"function": "UNEMPLOYMENT",
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("nonfarm_payroll")
async def fetch_nonfarm_payrolls(datatype: str = "json") -> dict[str, str] | str:
"""
Fetch nonfarm payrolls data from the Alpha Vantage API.
:argument: datatype (str): The response data type (default: "json").
:returns: The nonfarm payrolls' data.
"""
https_params = {
"function": "NONFARM_PAYROLL",
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
#####
# Technical indicators APIs
#####
@instrument_tool("sma")
async def fetch_sma(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = None,
series_type: str = None,
datatype: str = "json",
max_data_points: int = 100,
) -> dict[str, str] | str:
"""
Fetch simple moving average (SMA) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:argument: max_data_points (int): Maximum number of data points to return (default: 100).
:returns: The simple moving average (SMA) data.
"""
https_params = {
"function": "SMA",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
async with httpx.AsyncClient() as client:
response = await client.get(API_BASE_URL, params=https_params)
response.raise_for_status()
if datatype == "csv":
return response.text
# For JSON responses, apply response limiting to prevent token issues
full_response = response.json()
# Import response limiting utilities
from .response_utils import limit_time_series_response, should_limit_response
# Check if response should be limited
if should_limit_response(full_response):
return limit_time_series_response(full_response, max_data_points)
return full_response
@instrument_tool("ema")
async def fetch_ema(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = None,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch exponential moving average (EMA) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The exponential moving average (EMA) data.
"""
https_params = {
"function": "EMA",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("wma")
async def fetch_wma(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = None,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch weighted moving average (WMA) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The weighted moving average (WMA) data.
"""
https_params = {
"function": "WMA",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("dema")
async def fetch_dema(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = None,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch double exponential moving average (DEMA) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The double exponential moving average (DEMA) data.
"""
https_params = {
"function": "DEMA",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("tema")
async def fetch_tema(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = None,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch triple exponential moving average (TEMA) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The triple exponential moving average (TEMA) data.
"""
https_params = {
"function": "TEMA",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("trima")
async def fetch_trima(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = None,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch triangular moving average (TRIMA) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The triangular moving average (TRIMA) data.
"""
https_params = {
"function": "TRIMA",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("kama")
async def fetch_kama(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = None,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch Kaufman adaptive moving average (KAMA) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The Kaufman adaptive moving average (KAMA) data.
"""
https_params = {
"function": "KAMA",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("mama")
async def fetch_mama(
symbol: str,
interval: str = None,
month: str = None,
series_type: str = None,
fastlimit: float = 0.01,
slowlimit: float = 0.01,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch MESA adaptive moving average (MAMA) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: series_type (str): The series type for the data.
:argument: fastlimit (float): The fast limit for the data.
:argument: slowlimit (float): The slow limit for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The MESA adaptive moving average (MAMA) data.
"""
https_params = {
"function": "MAMA",
"symbol": symbol,
"interval": interval,
"month": month,
"series_type": series_type,
"fastlimit": fastlimit,
"slowlimit": slowlimit,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("vwap")
async def fetch_vwap(
symbol: str,
interval: str = None,
month: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch volume weighted average price (VWAP) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The volume weighted average price (VWAP) data.
"""
https_params = {
"function": "VWAP",
"symbol": symbol,
"interval": interval,
"month": month,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("t3")
async def fetch_t3(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = None,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch triple exponential moving average (T3) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The triple exponential moving average (T3) data.
"""
https_params = {
"function": "T3",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("macd")
async def fetch_macd(
symbol: str,
interval: str = None,
month: str = None,
series_type: str = None,
fastperiod: int = 12,
slowperiod: int = 26,
signalperiod: int = 9,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch moving average convergence divergence (MACD) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: series_type (str): The series type for the data.
:argument: fastperiod (int): The fast period for the data.
:argument: slowperiod (int): The slow period for the data.
:argument: signalperiod (int): The signal period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The moving average convergence divergence (MACD) data.
"""
https_params = {
"function": "MACD",
"symbol": symbol,
"interval": interval,
"month": month,
"series_type": series_type,
"fastperiod": fastperiod,
"slowperiod": slowperiod,
"signalperiod": signalperiod,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("macdext")
async def fetch_macdext(
symbol: str,
interval: str = None,
month: str = None,
series_type: str = None,
fastperiod: int = 12,
slowperiod: int = 26,
signalperiod: int = 9,
fastmatype: int = 0,
slowmatype: int = 0,
signalmatype: int = 0,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch moving average convergence divergence with controllable moving average type (MACDEXT) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: series_type (str): The series type for the data.
:argument: fastperiod (int): The fast period for the data.
:argument: slowperiod (int): The slow period for the data.
:argument: signalperiod (int): The signal period for the data.
:argument: fastmatype (int): The fast moving average type for the data.
:argument: slowmatype (int): The slow moving average type for the data.
:argument: signalmatype (int): The signal moving average type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The moving average convergence divergence with controllable moving average type (MACDEXT) data.
"""
https_params = {
"function": "MACDEXT",
"symbol": symbol,
"interval": interval,
"month": month,
"series_type": series_type,
"fastperiod": fastperiod,
"slowperiod": slowperiod,
"signalperiod": signalperiod,
"fastmatype": fastmatype,
"slowmatype": slowmatype,
"signalmatype": signalmatype,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("stoch")
async def fetch_stoch(
symbol: str,
interval: str = None,
month: str = None,
fastkperiod: int = 5,
slowkperiod: int = 3,
slowdperiod: int = 3,
slowkmatype: int = 0,
slowdmatype: int = 0,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch stochastic oscillator (STOCH) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: fastkperiod (int): The fast K period for the data.
:argument: slowkperiod (int): The slow K period for the data.
:argument: slowdperiod (int): The slow D period for the data.
:argument: slowkmatype (int): The slow K moving average type for the data.
:argument: slowdmatype (int): The slow D moving average type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The stochastic oscillator (STOCH) data.
"""
https_params = {
"function": "STOCH",
"symbol": symbol,
"interval": interval,
"month": month,
"fastkperiod": fastkperiod,
"slowkperiod": slowkperiod,
"slowdperiod": slowdperiod,
"slowkmatype": slowkmatype,
"slowdmatype": slowdmatype,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("stochf")
async def fetch_stochf(
symbol: str,
interval: str = None,
month: str = None,
fastkperiod: int = 5,
fastdperiod: int = 3,
fastdmatype: int = 0,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch stochastic oscillator fast (STOCHF) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: fastkperiod (int): The fast K period for the data.
:argument: fastdperiod (int): The fast D period for the data.
:argument: fastdmatype (int): The fast D moving average type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The stochastic oscillator fast (STOCHF) data.
"""
https_params = {
"function": "STOCHF",
"symbol": symbol,
"interval": interval,
"month": month,
"fastkperiod": fastkperiod,
"fastdperiod": fastdperiod,
"fastdmatype": fastdmatype,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("rsi")
async def fetch_rsi(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch relative strength index (RSI) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The relative strength index (RSI) data.
"""
https_params = {
"function": "RSI",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("stochrsi")
async def fetch_stochrsi(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
series_type: str = None,
fastkperiod: int = 5,
fastdperiod: int = 3,
fastdmatype: int = 0,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch stochastic relative strength index (STOCHRSI) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: fastkperiod (int): The fast K period for the data.
:argument: fastdperiod (int): The fast D period for the data.
:argument: fastdmatype (int): The fast D moving average type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: The stochastic relative strength index (STOCHRSI) data.
"""
https_params = {
"function": "STOCHRSI",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"fastkperiod": fastkperiod,
"fastdperiod": fastdperiod,
"fastdmatype": fastdmatype,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("willr")
async def fetch_willr(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch Williams' %R (WILLR) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Williams' %R (WILLR) data.
"""
https_params = {
"function": "WILLR",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("adx")
async def fetch_adx(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch average directional movement index (ADX) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Average directional movement index (ADX) data.
"""
https_params = {
"function": "ADX",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("adxr")
async def fetch_adxr(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch average directional movement index rating (ADXR) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Average directional movement index rating (ADXR) data.
"""
https_params = {
"function": "ADXR",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("apo")
async def fetch_apo(
symbol: str,
interval: str = None,
month: str = None,
series_type: str = None,
fastperiod: int = 12,
slowperiod: int = 26,
matype: int = 0,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch absolute price oscillator (APO) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: series_type (str): The series type for the data.
:argument: fastperiod (int): The fast period for the data.
:argument: slowperiod (int): The slow period for the data.
:argument: matype (int): The moving average type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Absolute price oscillator (APO) data.
"""
https_params = {
"function": "APO",
"symbol": symbol,
"interval": interval,
"month": month,
"series_type": series_type,
"fastperiod": fastperiod,
"slowperiod": slowperiod,
"matype": matype,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("ppo")
async def fetch_ppo(
symbol: str,
interval: str = None,
month: str = None,
series_type: str = None,
fastperiod: int = 12,
slowperiod: int = 26,
matype: int = 0,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch percentage price oscillator (PPO) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: series_type (str): The series type for the data.
:argument: fastperiod (int): The fast period for the data.
:argument: slowperiod (int): The slow period for the data.
:argument: matype (int): The moving average type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Percentage price oscillator (PPO) data.
"""
https_params = {
"function": "PPO",
"symbol": symbol,
"interval": interval,
"month": month,
"series_type": series_type,
"fastperiod": fastperiod,
"slowperiod": slowperiod,
"matype": matype,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("mom")
async def fetch_mom(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 10,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch momentum (MOM) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Momentum (MOM) data.
"""
https_params = {
"function": "MOM",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("bop")
async def fetch_bop(
symbol: str,
interval: str = None,
month: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch balance of power (BOP) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Balance of power (BOP) data.
"""
https_params = {
"function": "BOP",
"symbol": symbol,
"interval": interval,
"month": month,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("cci")
async def fetch_cci(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 20,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch commodity channel index (CCI) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Commodity channel index (CCI) data.
"""
https_params = {
"function": "CCI",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("cmo")
async def fetch_cmo(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch Chande momentum oscillator (CMO) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Chande momentum oscillator (CMO) data.
"""
https_params = {
"function": "CMO",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("roc")
async def fetch_roc(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 10,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch rate of change (ROC) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Rate of change (ROC) data.
"""
https_params = {
"function": "ROC",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("rocr")
async def fetch_rocr(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 10,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch rate of change ratio (ROCR) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Rate of change ratio (ROCR) data.
"""
https_params = {
"function": "ROCR",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("aroon")
async def fetch_aroon(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch aroon (AROON) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Aroon (AROON) data.
"""
https_params = {
"function": "AROON",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("aroonosc")
async def fetch_aroonosc(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch aroon oscillator (AROONOSC) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Aroon oscillator (AROONOSC) data.
"""
https_params = {
"function": "AROONOSC",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("mfi")
async def fetch_mfi(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch money flow index (MFI) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Money flow index (MFI) data.
"""
https_params = {
"function": "MFI",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("trix")
async def fetch_trix(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 30,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch triple exponential average (TRIX) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Triple exponential average (TRIX) data.
"""
https_params = {
"function": "TRIX",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("ultosc")
async def fetch_ultosc(
symbol: str,
interval: str = None,
month: str = None,
timeperiod1: int = 7,
timeperiod2: int = 14,
timeperiod3: int = 28,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch ultimate oscillator (ULTOSC) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: timeperiod1 (int): The time period for the first calculation.
:argument: timeperiod2 (int): The time period for the second calculation.
:argument: timeperiod3 (int): The time period for the third calculation.
:argument: datatype (str): The response data type (default: "json").
:returns: Ultimate oscillator (ULTOSC) data.
"""
https_params = {
"function": "ULTOSC",
"symbol": symbol,
"interval": interval,
"month": month,
"timeperiod1": timeperiod1,
"timeperiod2": timeperiod2,
"timeperiod3": timeperiod3,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("dx")
async def fetch_dx(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch directional movement index (DX) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Directional movement index (DX) data.
"""
https_params = {
"function": "DX",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("minus_di")
async def fetch_minus_di(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch minus directional indicator (MINUS_DI) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Minus directional indicator (MINUS_DI) data.
"""
https_params = {
"function": "MINUS_DI",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("plus_di")
async def fetch_plus_di(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch plus directional indicator (PLUS_DI) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Plus directional indicator (PLUS_DI) data.
"""
https_params = {
"function": "PLUS_DI",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("minus_dm")
async def fetch_minus_dm(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch minus directional movement (MINUS_DM) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Minus directional movement (MINUS_DM) data.
"""
https_params = {
"function": "MINUS_DM",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("plus_dm")
async def fetch_plus_dm(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch plus directional movement (PLUS_DM) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Plus directional movement (PLUS_DM) data.
"""
https_params = {
"function": "PLUS_DM",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("bbands")
async def fetch_bbands(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 5,
series_type: str = "close",
nbdevup: int = 2,
nbdevdn: int = 2,
matype: int = 0,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch bollinger bands (BBANDS) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: nbdevup (int): The standard deviation multiplier for the upper band.
:argument: nbdevdn (int): The standard deviation multiplier for the lower band.
:argument: matype (int): The moving average type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Bollinger bands (BBANDS) data.
"""
https_params = {
"function": "BBANDS",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"nbdevup": nbdevup,
"nbdevdn": nbdevdn,
"matype": matype,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("midpoint")
async def fetch_midpoint(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
series_type: str = "close",
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch midpoint (MIDPOINT) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Midpoint (MIDPOINT) data.
"""
https_params = {
"function": "MIDPOINT",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("midprice")
async def fetch_midprice(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch midprice (MIDPRICE) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Midprice (MIDPRICE) data.
"""
https_params = {
"function": "MIDPRICE",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("sar")
async def fetch_sar(
symbol: str,
interval: str = None,
month: str = None,
acceleration: float = 0.02,
maximum: float = 0.2,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch parabolic SAR (SAR) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: acceleration (float): The acceleration factor for the data.
:argument: maximum (float): The maximum factor for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Parabolic SAR (SAR) data.
"""
https_params = {
"function": "SAR",
"symbol": symbol,
"interval": interval,
"month": month,
"acceleration": acceleration,
"maximum": maximum,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("trange")
async def fetch_trange(
symbol: str,
interval: str = None,
month: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch true range (TRANGE) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: True range (TRANGE) data.
"""
https_params = {
"function": "TRANGE",
"symbol": symbol,
"interval": interval,
"month": month,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("atr")
async def fetch_atr(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch average true range (ATR) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Average true range (ATR) data.
"""
https_params = {
"function": "ATR",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("natr")
async def fetch_natr(
symbol: str,
interval: str = None,
month: str = None,
time_period: int = 14,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch normalized average true range (NATR) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: time_period (int): The time period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Normalized average true range (NATR) data.
"""
https_params = {
"function": "NATR",
"symbol": symbol,
"interval": interval,
"month": month,
"time_period": time_period,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("ad")
async def fetch_ad(
symbol: str,
interval: str = None,
month: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch accumulation/distribution (AD) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Accumulation/distribution (AD) data.
"""
https_params = {
"function": "AD",
"symbol": symbol,
"interval": interval,
"month": month,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("adosc")
async def fetch_adosc(
symbol: str,
interval: str = None,
month: str = None,
fastperiod: int = 3,
slowperiod: int = 10,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch accumulation/distribution oscillator (ADOSC) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: fastperiod (int): The fast period for the data.
:argument: slowperiod (int): The slow period for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Accumulation/distribution oscillator (ADOSC) data.
"""
https_params = {
"function": "ADOSC",
"symbol": symbol,
"interval": interval,
"month": month,
"fastperiod": fastperiod,
"slowperiod": slowperiod,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("obv")
async def fetch_obv(
symbol: str,
interval: str = None,
month: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch on balance volume (OBV) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: On balance volume (OBV) data.
"""
https_params = {
"function": "OBV",
"symbol": symbol,
"interval": interval,
"month": month,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("ht_trendline")
async def fetch_ht_trendline(
symbol: str,
interval: str = None,
month: str = None,
series_type: str = "close",
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch Hilbert transform - instantaneous trendline (HT_TRENDLINE) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Hilbert transform - instantaneous trendline (HT_TRENDLINE) data.
"""
https_params = {
"function": "HT_TRENDLINE",
"symbol": symbol,
"interval": interval,
"month": month,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("ht_sine")
async def fetch_ht_sine(
symbol: str,
interval: str = None,
month: str = None,
series_type: str = "close",
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch Hilbert transform - sine wave (HT_SINE) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Hilbert transform - sine wave (HT_SINE) data.
"""
https_params = {
"function": "HT_SINE",
"symbol": symbol,
"interval": interval,
"month": month,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("ht_trendmode")
async def fetch_ht_trendmode(
symbol: str,
interval: str = None,
month: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch Hilbert transform - trend vs cycle mode (HT_TRENDMODE) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Hilbert transform - trend vs cycle mode (HT_TRENDMODE) data.
"""
https_params = {
"function": "HT_TRENDMODE",
"symbol": symbol,
"interval": interval,
"month": month,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("ht_dcperiod")
async def fetch_ht_dcperiod(
symbol: str,
interval: str = None,
month: str = None,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch Hil bert transform - dominant cycle period (HT_DCPERIOD) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Hilbert transform - dominant cycle period (HT_DCPERIOD) data.
"""
https_params = {
"function": "HT_DCPERIOD",
"symbol": symbol,
"interval": interval,
"month": month,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("ht_dcphase")
async def fetch_ht_dcphase(
symbol: str,
interval: str = None,
month: str = None,
series_type: str = None,
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch Hilbert transform - dominant cycle phase (HT_DCPHASE) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Hilbert transform - dominant cycle phase (HT_DCPHASE) data.
"""
https_params = {
"function": "HT_DCPHASE",
"symbol": symbol,
"interval": interval,
"month": month,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
@instrument_tool("ht_phasor")
async def fetch_ht_phasor(
symbol: str,
interval: str = None,
month: str = None,
series_type: str = "close",
datatype: str = "json",
) -> dict[str, str] | str:
"""
Fetch Hilbert transform - phasor components (HT_PHASOR) data from the Alpha Vantage API.
:argument: symbol (str): The stock symbol to fetch.
:argument: interval (str): The time interval for the data.
:argument: month (str): The month for the data.
:argument: series_type (str): The series type for the data.
:argument: datatype (str): The response data type (default: "json").
:returns: Hilbert transform - phasor components (HT_PHASOR) data.
"""
https_params = {
"function": "HT_PHASOR",
"symbol": symbol,
"interval": interval,
"month": month,
"series_type": series_type,
"datatype": datatype,
"apikey": API_KEY,
}
return await _make_api_request(https_params, datatype)
```