Skip to content

Finance

FinanceAgentToolSpec #

Bases: BaseToolSpec

Source code in llama_index/tools/finance/base.py
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
class FinanceAgentToolSpec(BaseToolSpec):
    spec_functions = [
        "find_similar_companies",
        "get_earnings_history",
        "get_stocks_with_upcoming_earnings",
        "get_current_gainer_stocks",
        "get_current_loser_stocks",
        "get_current_undervalued_growth_stocks",
        "get_current_technology_growth_stocks",
        "get_current_most_traded_stocks",
        "get_current_undervalued_large_cap_stocks",
        "get_current_aggressive_small_cap_stocks",
        "get_trending_finance_news",
        "get_google_trending_searches",
        "get_google_trends_for_query",
        "get_latest_news_for_stock",
        "get_current_stock_price_info",
    ]

    def __init__(
        self,
        polygon_api_key: str,
        finnhub_api_key: str,
        alpha_vantage_api_key: str,
        newsapi_api_key: str,
    ):
        self._api_key = {
            "ALPHA_VANTAGE": alpha_vantage_api_key,
            "POLYGON": polygon_api_key,
            "FINNHUB": finnhub_api_key,
            "NEWSAPI": newsapi_api_key,
        }

    def find_similar_companies(self, symbol: str) -> List[str]:
        """给定股票的股票代码,返回类似公司的列表。"""
        return comparisons.find_similar_companies(self._api_key, symbol)

    def get_earnings_history(self, symbol: str) -> pd.DataFrame:
        """给定股票的股票代码,返回一个数据框,存储过去K个季度报告中的实际和预估收益。"""
        return earnings.get_earnings_history(self._api_key, symbol)

    def get_latest_earning_estimate(self, symbol: str) -> float:
        """给定股票的股票代码,返回其未来季度报告的盈利预估。"""
        return earnings.get_latest_earning_estimate(symbol)

    def get_stocks_with_upcoming_earnings(
        self, num_days_from_now: int, only_sp500: bool
    ) -> pd.DataFrame:
        """返回一个包含即将公布财报的所有股票的pandas数据框架。

Args:
 num_days_from_now:仅返回从今天到num_days_from_now公布财报的股票。
 only_sp500:仅返回标普500指数的股票。
"""
        start_date = datetime.now().strftime("%Y-%m-%d")
        end_date = (datetime.now() + timedelta(num_days_from_now)).strftime("%Y-%m-%d")
        return earnings.get_upcoming_earnings(
            self._api_key,
            start_date=start_date,
            end_date=end_date,
            country="USD",
            only_sp500=only_sp500,
        )

    def get_current_gainer_stocks(self) -> pd.DataFrame:
        """返回根据Yahoo Finance分类为日涨幅股票的美国股票。

如果价格变化百分比> 3,价格> = 5,交易量> 15,000,则将美国股票分类为日涨幅股票。
"""
        return news.get_current_gainer_stocks()

    def get_current_loser_stocks(self) -> pd.DataFrame:
        """返回在Yahoo Finance中被分类为当日跌幅股票的美国股票。

如果价格变动百分比<-2.5,价格≥5,成交量>20,000,则美国股票被分类为当日跌幅股票。
"""
        return news.get_current_loser_stocks()

    def get_current_undervalued_growth_stocks(self) -> pd.DataFrame:
        """获取美国市场低估成长股列表,根据Yahoo Finance的数据。

股票的市盈率在0-20之间,市盈率/增长率 < 1
"""
        return news.get_current_undervalued_growth_stocks()

    def get_current_technology_growth_stocks(self) -> pd.DataFrame:
        """返回一个美国科技行业成长股的数据框。

如果一家股票的季度营收同比增长率> 25%。
"""
        return news.get_current_technology_growth_stocks()

    def get_current_most_traded_stocks(self) -> pd.DataFrame:
        """返回一个存储了当前市场上交易最多的股票的数据框。

股票按照交易活跃度降序排列,即交易量最大的股票排在最前面。
"""
        return news.get_current_most_traded_stocks()

    def get_current_undervalued_large_cap_stocks(self) -> pd.DataFrame:
        """返回一个存储美国市场大盘股票的数据框,其市盈率(P/E)小于20。"""
        return news.get_current_undervalued_large_cap_stocks()

    def get_current_aggressive_small_cap_stocks(self) -> pd.DataFrame:
        """返回一个存储美国市场小盘股票的数据框,其中包括1年内每股收益的变化率大于25%的股票。"""
        return news.get_current_aggressive_small_cap_stocks()

    def get_trending_finance_news(self) -> List[str]:
        """返回一个根据seekingalpha在金融市场中排名前10的热门新闻列表。"""
        trends = news.get_topk_trending_news()
        return [t["title"] for t in trends]

    def get_google_trending_searches(self) -> Optional[pd.DataFrame]:
        """返回美国的热门搜索,根据谷歌趋势。

如果找不到任何趋势,则返回None。
"""
        return news.get_google_trending_searches(region="united_states")

    def get_google_trends_for_query(self, query: str) -> Optional[pd.DataFrame]:
        """为给定的查询在美国找到谷歌搜索趋势。
如果无法找到任何趋势,则返回None。
"""
        return news.get_google_trends_for_query(query=query, region="united_states")

    def get_latest_news_for_stock(self, stock_id: str) -> List[str]:
        """给定一个股票代码,表示公司名称或股票代码符号,返回最近7天内与美国顶级商业文章相关的新闻发布列表。"""
        articles = news.get_latest_news_for_stock(self._api_key, stock_id=stock_id)
        return [a["title"] for a in articles]

    def get_current_stock_price_info(
        self, stock_ticker_symbol: str
    ) -> Optional[Dict[str, Any]]:
        """给定股票的股票代码,返回股票的当前价格信息。

如果提供的股票代码无效,则返回None。
"""
        price_info = news.get_current_stock_price_info(
            self._api_key, stock_ticker_symbol
        )
        if price_info is not None:
            return {
                "Current Price": price_info["c"],
                "High Price of the day": price_info["h"],
                "Low Price of the day": price_info["l"],
                "Open Price of the day": price_info["o"],
                "Percentage change": price_info["dp"],
            }
        return None

find_similar_companies #

find_similar_companies(symbol: str) -> List[str]

给定股票的股票代码,返回类似公司的列表。

Source code in llama_index/tools/finance/base.py
42
43
44
def find_similar_companies(self, symbol: str) -> List[str]:
    """给定股票的股票代码,返回类似公司的列表。"""
    return comparisons.find_similar_companies(self._api_key, symbol)

get_earnings_history #

get_earnings_history(symbol: str) -> DataFrame

给定股票的股票代码,返回一个数据框,存储过去K个季度报告中的实际和预估收益。

Source code in llama_index/tools/finance/base.py
46
47
48
def get_earnings_history(self, symbol: str) -> pd.DataFrame:
    """给定股票的股票代码,返回一个数据框,存储过去K个季度报告中的实际和预估收益。"""
    return earnings.get_earnings_history(self._api_key, symbol)

get_latest_earning_estimate #

get_latest_earning_estimate(symbol: str) -> float

给定股票的股票代码,返回其未来季度报告的盈利预估。

Source code in llama_index/tools/finance/base.py
50
51
52
def get_latest_earning_estimate(self, symbol: str) -> float:
    """给定股票的股票代码,返回其未来季度报告的盈利预估。"""
    return earnings.get_latest_earning_estimate(symbol)

get_stocks_with_upcoming_earnings #

get_stocks_with_upcoming_earnings(
    num_days_from_now: int, only_sp500: bool
) -> DataFrame

返回一个包含即将公布财报的所有股票的pandas数据框架。

Source code in llama_index/tools/finance/base.py
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
    def get_stocks_with_upcoming_earnings(
        self, num_days_from_now: int, only_sp500: bool
    ) -> pd.DataFrame:
        """返回一个包含即将公布财报的所有股票的pandas数据框架。

Args:
 num_days_from_now:仅返回从今天到num_days_from_now公布财报的股票。
 only_sp500:仅返回标普500指数的股票。
"""
        start_date = datetime.now().strftime("%Y-%m-%d")
        end_date = (datetime.now() + timedelta(num_days_from_now)).strftime("%Y-%m-%d")
        return earnings.get_upcoming_earnings(
            self._api_key,
            start_date=start_date,
            end_date=end_date,
            country="USD",
            only_sp500=only_sp500,
        )

get_current_gainer_stocks #

get_current_gainer_stocks() -> DataFrame

返回根据Yahoo Finance分类为日涨幅股票的美国股票。

如果价格变化百分比> 3,价格> = 5,交易量> 15,000,则将美国股票分类为日涨幅股票。

Source code in llama_index/tools/finance/base.py
73
74
75
76
77
78
    def get_current_gainer_stocks(self) -> pd.DataFrame:
        """返回根据Yahoo Finance分类为日涨幅股票的美国股票。

如果价格变化百分比> 3,价格> = 5,交易量> 15,000,则将美国股票分类为日涨幅股票。
"""
        return news.get_current_gainer_stocks()

get_current_loser_stocks #

get_current_loser_stocks() -> DataFrame

返回在Yahoo Finance中被分类为当日跌幅股票的美国股票。

如果价格变动百分比<-2.5,价格≥5,成交量>20,000,则美国股票被分类为当日跌幅股票。

Source code in llama_index/tools/finance/base.py
80
81
82
83
84
85
    def get_current_loser_stocks(self) -> pd.DataFrame:
        """返回在Yahoo Finance中被分类为当日跌幅股票的美国股票。

如果价格变动百分比<-2.5,价格≥5,成交量>20,000,则美国股票被分类为当日跌幅股票。
"""
        return news.get_current_loser_stocks()

get_current_undervalued_growth_stocks #

get_current_undervalued_growth_stocks() -> DataFrame

获取美国市场低估成长股列表,根据Yahoo Finance的数据。

股票的市盈率在0-20之间,市盈率/增长率 < 1

Source code in llama_index/tools/finance/base.py
87
88
89
90
91
92
    def get_current_undervalued_growth_stocks(self) -> pd.DataFrame:
        """获取美国市场低估成长股列表,根据Yahoo Finance的数据。

股票的市盈率在0-20之间,市盈率/增长率 < 1
"""
        return news.get_current_undervalued_growth_stocks()

get_current_technology_growth_stocks #

get_current_technology_growth_stocks() -> DataFrame

返回一个美国科技行业成长股的数据框。

如果一家股票的季度营收同比增长率> 25%。

Source code in llama_index/tools/finance/base.py
94
95
96
97
98
99
    def get_current_technology_growth_stocks(self) -> pd.DataFrame:
        """返回一个美国科技行业成长股的数据框。

如果一家股票的季度营收同比增长率> 25%。
"""
        return news.get_current_technology_growth_stocks()

get_current_most_traded_stocks #

get_current_most_traded_stocks() -> DataFrame

返回一个存储了当前市场上交易最多的股票的数据框。

股票按照交易活跃度降序排列,即交易量最大的股票排在最前面。

Source code in llama_index/tools/finance/base.py
101
102
103
104
105
106
    def get_current_most_traded_stocks(self) -> pd.DataFrame:
        """返回一个存储了当前市场上交易最多的股票的数据框。

股票按照交易活跃度降序排列,即交易量最大的股票排在最前面。
"""
        return news.get_current_most_traded_stocks()

get_current_undervalued_large_cap_stocks #

get_current_undervalued_large_cap_stocks() -> DataFrame

返回一个存储美国市场大盘股票的数据框,其市盈率(P/E)小于20。

Source code in llama_index/tools/finance/base.py
108
109
110
def get_current_undervalued_large_cap_stocks(self) -> pd.DataFrame:
    """返回一个存储美国市场大盘股票的数据框,其市盈率(P/E)小于20。"""
    return news.get_current_undervalued_large_cap_stocks()

get_current_aggressive_small_cap_stocks #

get_current_aggressive_small_cap_stocks() -> DataFrame

返回一个存储美国市场小盘股票的数据框,其中包括1年内每股收益的变化率大于25%的股票。

Source code in llama_index/tools/finance/base.py
112
113
114
def get_current_aggressive_small_cap_stocks(self) -> pd.DataFrame:
    """返回一个存储美国市场小盘股票的数据框,其中包括1年内每股收益的变化率大于25%的股票。"""
    return news.get_current_aggressive_small_cap_stocks()
get_trending_finance_news() -> List[str]

返回一个根据seekingalpha在金融市场中排名前10的热门新闻列表。

Source code in llama_index/tools/finance/base.py
116
117
118
119
def get_trending_finance_news(self) -> List[str]:
    """返回一个根据seekingalpha在金融市场中排名前10的热门新闻列表。"""
    trends = news.get_topk_trending_news()
    return [t["title"] for t in trends]
get_google_trending_searches() -> Optional[DataFrame]

返回美国的热门搜索,根据谷歌趋势。

如果找不到任何趋势,则返回None。

Source code in llama_index/tools/finance/base.py
121
122
123
124
125
126
    def get_google_trending_searches(self) -> Optional[pd.DataFrame]:
        """返回美国的热门搜索,根据谷歌趋势。

如果找不到任何趋势,则返回None。
"""
        return news.get_google_trending_searches(region="united_states")
get_google_trends_for_query(
    query: str,
) -> Optional[DataFrame]

为给定的查询在美国找到谷歌搜索趋势。 如果无法找到任何趋势,则返回None。

Source code in llama_index/tools/finance/base.py
128
129
130
131
132
    def get_google_trends_for_query(self, query: str) -> Optional[pd.DataFrame]:
        """为给定的查询在美国找到谷歌搜索趋势。
如果无法找到任何趋势,则返回None。
"""
        return news.get_google_trends_for_query(query=query, region="united_states")

get_latest_news_for_stock #

get_latest_news_for_stock(stock_id: str) -> List[str]

给定一个股票代码,表示公司名称或股票代码符号,返回最近7天内与美国顶级商业文章相关的新闻发布列表。

Source code in llama_index/tools/finance/base.py
134
135
136
137
def get_latest_news_for_stock(self, stock_id: str) -> List[str]:
    """给定一个股票代码,表示公司名称或股票代码符号,返回最近7天内与美国顶级商业文章相关的新闻发布列表。"""
    articles = news.get_latest_news_for_stock(self._api_key, stock_id=stock_id)
    return [a["title"] for a in articles]

get_current_stock_price_info #

get_current_stock_price_info(
    stock_ticker_symbol: str,
) -> Optional[Dict[str, Any]]

给定股票的股票代码,返回股票的当前价格信息。

如果提供的股票代码无效,则返回None。

Source code in llama_index/tools/finance/base.py
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
    def get_current_stock_price_info(
        self, stock_ticker_symbol: str
    ) -> Optional[Dict[str, Any]]:
        """给定股票的股票代码,返回股票的当前价格信息。

如果提供的股票代码无效,则返回None。
"""
        price_info = news.get_current_stock_price_info(
            self._api_key, stock_ticker_symbol
        )
        if price_info is not None:
            return {
                "Current Price": price_info["c"],
                "High Price of the day": price_info["h"],
                "Low Price of the day": price_info["l"],
                "Open Price of the day": price_info["o"],
                "Percentage change": price_info["dp"],
            }
        return None