fix: improve data vendor implementations and tool signatures

- Add get_global_news for Alpha Vantage
- Fix get_insider_transactions signature (remove unused curr_date param)
- Remove unnecessary default params from API calls (sort, limit, tab)
This commit is contained in:
Yijia Xiao 2026-02-02 06:06:29 +00:00
parent b75940e901
commit b06936f420
No known key found for this signature in database
8 changed files with 37 additions and 28 deletions

View File

@ -1,7 +1,7 @@
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
import time import time
import json import json
from tradingagents.agents.utils.agent_utils import get_fundamentals, get_balance_sheet, get_cashflow, get_income_statement, get_insider_sentiment, get_insider_transactions from tradingagents.agents.utils.agent_utils import get_fundamentals, get_balance_sheet, get_cashflow, get_income_statement, get_insider_transactions
from tradingagents.dataflows.config import get_config from tradingagents.dataflows.config import get_config

View File

@ -15,7 +15,6 @@ from tradingagents.agents.utils.fundamental_data_tools import (
) )
from tradingagents.agents.utils.news_data_tools import ( from tradingagents.agents.utils.news_data_tools import (
get_news, get_news,
get_insider_sentiment,
get_insider_transactions, get_insider_transactions,
get_global_news get_global_news
) )

View File

@ -38,34 +38,16 @@ def get_global_news(
""" """
return route_to_vendor("get_global_news", curr_date, look_back_days, limit) return route_to_vendor("get_global_news", curr_date, look_back_days, limit)
@tool
def get_insider_sentiment(
ticker: Annotated[str, "ticker symbol for the company"],
curr_date: Annotated[str, "current date you are trading at, yyyy-mm-dd"],
) -> str:
"""
Retrieve insider sentiment information about a company.
Uses the configured news_data vendor.
Args:
ticker (str): Ticker symbol of the company
curr_date (str): Current date you are trading at, yyyy-mm-dd
Returns:
str: A report of insider sentiment data
"""
return route_to_vendor("get_insider_sentiment", ticker, curr_date)
@tool @tool
def get_insider_transactions( def get_insider_transactions(
ticker: Annotated[str, "ticker symbol"], ticker: Annotated[str, "ticker symbol"],
curr_date: Annotated[str, "current date you are trading at, yyyy-mm-dd"],
) -> str: ) -> str:
""" """
Retrieve insider transaction information about a company. Retrieve insider transaction information about a company.
Uses the configured news_data vendor. Uses the configured news_data vendor.
Args: Args:
ticker (str): Ticker symbol of the company ticker (str): Ticker symbol of the company
curr_date (str): Current date you are trading at, yyyy-mm-dd
Returns: Returns:
str: A report of insider transaction data str: A report of insider transaction data
""" """
return route_to_vendor("get_insider_transactions", ticker, curr_date) return route_to_vendor("get_insider_transactions", ticker)

View File

@ -2,4 +2,4 @@
from .alpha_vantage_stock import get_stock from .alpha_vantage_stock import get_stock
from .alpha_vantage_indicator import get_indicator from .alpha_vantage_indicator import get_indicator
from .alpha_vantage_fundamentals import get_fundamentals, get_balance_sheet, get_cashflow, get_income_statement from .alpha_vantage_fundamentals import get_fundamentals, get_balance_sheet, get_cashflow, get_income_statement
from .alpha_vantage_news import get_news, get_insider_transactions from .alpha_vantage_news import get_news, get_global_news, get_insider_transactions

View File

@ -18,12 +18,40 @@ def get_news(ticker, start_date, end_date) -> dict[str, str] | str:
"tickers": ticker, "tickers": ticker,
"time_from": format_datetime_for_api(start_date), "time_from": format_datetime_for_api(start_date),
"time_to": format_datetime_for_api(end_date), "time_to": format_datetime_for_api(end_date),
"sort": "LATEST",
"limit": "50",
} }
return _make_api_request("NEWS_SENTIMENT", params) return _make_api_request("NEWS_SENTIMENT", params)
def get_global_news(curr_date, look_back_days: int = 7, limit: int = 50) -> dict[str, str] | str:
"""Returns global market news & sentiment data without ticker-specific filtering.
Covers broad market topics like financial markets, economy, and more.
Args:
curr_date: Current date in yyyy-mm-dd format.
look_back_days: Number of days to look back (default 7).
limit: Maximum number of articles (default 50).
Returns:
Dictionary containing global news sentiment data or JSON string.
"""
from datetime import datetime, timedelta
# Calculate start date
curr_dt = datetime.strptime(curr_date, "%Y-%m-%d")
start_dt = curr_dt - timedelta(days=look_back_days)
start_date = start_dt.strftime("%Y-%m-%d")
params = {
"topics": "financial_markets,economy_macro,economy_monetary",
"time_from": format_datetime_for_api(start_date),
"time_to": format_datetime_for_api(curr_date),
"limit": str(limit),
}
return _make_api_request("NEWS_SENTIMENT", params)
def get_insider_transactions(symbol: str) -> dict[str, str] | str: def get_insider_transactions(symbol: str) -> dict[str, str] | str:
"""Returns latest and historical insider transactions by key stakeholders. """Returns latest and historical insider transactions by key stakeholders.

View File

@ -20,6 +20,7 @@ from .alpha_vantage import (
get_income_statement as get_alpha_vantage_income_statement, get_income_statement as get_alpha_vantage_income_statement,
get_insider_transactions as get_alpha_vantage_insider_transactions, get_insider_transactions as get_alpha_vantage_insider_transactions,
get_news as get_alpha_vantage_news, get_news as get_alpha_vantage_news,
get_global_news as get_alpha_vantage_global_news,
) )
from .alpha_vantage_common import AlphaVantageRateLimitError from .alpha_vantage_common import AlphaVantageRateLimitError
@ -100,6 +101,7 @@ VENDOR_METHODS = {
}, },
"get_global_news": { "get_global_news": {
"yfinance": get_global_news_yfinance, "yfinance": get_global_news_yfinance,
"alpha_vantage": get_alpha_vantage_global_news,
}, },
"get_insider_transactions": { "get_insider_transactions": {
"alpha_vantage": get_alpha_vantage_insider_transactions, "alpha_vantage": get_alpha_vantage_insider_transactions,

View File

@ -64,7 +64,7 @@ def get_news_yfinance(
""" """
try: try:
stock = yf.Ticker(ticker) stock = yf.Ticker(ticker)
news = stock.get_news(count=20, tab="news") news = stock.get_news(count=20)
if not news: if not news:
return f"No news found for {ticker}" return f"No news found for {ticker}"

View File

@ -29,7 +29,6 @@ from tradingagents.agents.utils.agent_utils import (
get_cashflow, get_cashflow,
get_income_statement, get_income_statement,
get_news, get_news,
get_insider_sentiment,
get_insider_transactions, get_insider_transactions,
get_global_news get_global_news
) )
@ -162,7 +161,6 @@ class TradingAgentsGraph:
# News and insider information # News and insider information
get_news, get_news,
get_global_news, get_global_news,
get_insider_sentiment,
get_insider_transactions, get_insider_transactions,
] ]
), ),