跳转到内容

金融

金融智能体工具规范 #

基类:EventBaseToolSpec

workflows/handler.py 中的源代码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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
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]:
        """Given a stock's ticker symbol, returns a list of similar companies."""
        return comparisons.find_similar_companies(self._api_key, symbol)

    def get_earnings_history(self, symbol: str) -> pd.DataFrame:
        """Given a stock's ticker symbol, returns a dataframe storing actual and estimated earnings over past K quarterly reports."""
        return earnings.get_earnings_history(self._api_key, symbol)

    def get_latest_earning_estimate(self, symbol: str) -> float:
        """Given a stock's ticker symbol, returns it's earnings estimate for the upcoming quarterly report."""
        return earnings.get_latest_earning_estimate(symbol)

    def get_stocks_with_upcoming_earnings(
        self, num_days_from_now: int, only_sp500: bool
    ) -> pd.DataFrame:
        """
        Returns a pandas dataframe containing all stocks which are announcing earnings in upcoming days.

        Arguments:
         num_days_from_now: only returns stocks which announcing earnings from today's date to num_days_from_now.
         only_sp500: only returns sp500 stocks.

        """
        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:
        """
        Return US stocks which are classified as day gainers as per Yahoo Finance.

        A US stock is classified as day gainer if %change in price > 3, price >=5, volume > 15_000

        """
        return news.get_current_gainer_stocks()

    def get_current_loser_stocks(self) -> pd.DataFrame:
        """
        Returns US stocks which are classified as day losers as per Yahoo Finance.

        A US stock is classified as day loser if %change in price < -2.5, price >=5, volume > 20_000

        """
        return news.get_current_loser_stocks()

    def get_current_undervalued_growth_stocks(self) -> pd.DataFrame:
        """
        Get list of undervalued growth stocks in US market as per Yahoo Finance.

        A stock with Price to Earnings ratio between 0-20, Price / Earnings to Growth < 1

        """
        return news.get_current_undervalued_growth_stocks()

    def get_current_technology_growth_stocks(self) -> pd.DataFrame:
        """
        Returns a data frame of growth stocks in technology sector in US market.

        If a stocks's quarterly revenue growth YoY% > 25%.

        """
        return news.get_current_technology_growth_stocks()

    def get_current_most_traded_stocks(self) -> pd.DataFrame:
        """
        Returns a dataframe storing stocks which were traded the most in current market.

        Stocks are ordered in decreasing order of activity i.e stock traded the most on top.

        """
        return news.get_current_most_traded_stocks()

    def get_current_undervalued_large_cap_stocks(self) -> pd.DataFrame:
        """Returns a dataframe storing US market large cap stocks with P/E < 20."""
        return news.get_current_undervalued_large_cap_stocks()

    def get_current_aggressive_small_cap_stocks(self) -> pd.DataFrame:
        """Returns a dataframe storing US market small cap stocks with 1 yr % change in earnings per share > 25."""
        return news.get_current_aggressive_small_cap_stocks()

    def get_trending_finance_news(self) -> List[str]:
        """Returns a list of top 10 trending news in financial market as per seekingalpha."""
        trends = news.get_topk_trending_news()
        return [t["title"] for t in trends]

    def get_google_trending_searches(self) -> Optional[pd.DataFrame]:
        """
        Returns trending searches in US as per google trends.

        If unable to find any trends, returns None.

        """
        return news.get_google_trending_searches(region="united_states")

    def get_google_trends_for_query(self, query: str) -> Optional[pd.DataFrame]:
        """
        Finds google search trends for a given query in United States.

        Returns None if unable to find any trends.

        """
        return news.get_google_trends_for_query(query=query, region="united_states")

    def get_latest_news_for_stock(self, stock_id: str) -> List[str]:
        """Given a stock_id representing the name of a company or the stock ticker symbol, Returns a list of news published related to top business articles in US in last 7 days from now."""
        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]]:
        """
        Given a stock's ticker symbol, returns current price information of the stock.

        Returns None if the provided stock ticker symbol is invalid.
        """
        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]

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

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
42
43
44
def find_similar_companies(self, symbol: str) -> List[str]:
    """Given a stock's ticker symbol, returns a list of similar companies."""
    return comparisons.find_similar_companies(self._api_key, symbol)

get_earnings_history #

get_earnings_history(symbol: str) -> DataFrame

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

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
46
47
48
def get_earnings_history(self, symbol: str) -> pd.DataFrame:
    """Given a stock's ticker symbol, returns a dataframe storing actual and estimated earnings over past K quarterly reports."""
    return earnings.get_earnings_history(self._api_key, symbol)

get_latest_earning_estimate #

get_latest_earning_estimate(symbol: str) -> float

给定股票的代码符号,返回其即将发布的季度财报的盈利预测。

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
50
51
52
def get_latest_earning_estimate(self, symbol: str) -> float:
    """Given a stock's ticker symbol, returns it's earnings estimate for the upcoming quarterly report."""
    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数据框。

参数:

名称 类型 描述 默认
num_days_from_now int

仅返回从今日起至未来指定天数内公布财报的股票。

required
only_sp500 bool

仅返回标普500股票。

required
workflows/handler.py 中的源代码llama_index/tools/finance/base.py
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
def get_stocks_with_upcoming_earnings(
    self, num_days_from_now: int, only_sp500: bool
) -> pd.DataFrame:
    """
    Returns a pandas dataframe containing all stocks which are announcing earnings in upcoming days.

    Arguments:
     num_days_from_now: only returns stocks which announcing earnings from today's date to num_days_from_now.
     only_sp500: only returns sp500 stocks.

    """
    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

返回根据雅虎财经分类为当日涨幅股的美国股票。

如果价格变动百分比大于3,价格大于等于5,成交量大于15,000,则一只美股被归类为当日涨幅股

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
75
76
77
78
79
80
81
82
def get_current_gainer_stocks(self) -> pd.DataFrame:
    """
    Return US stocks which are classified as day gainers as per Yahoo Finance.

    A US stock is classified as day gainer if %change in price > 3, price >=5, volume > 15_000

    """
    return news.get_current_gainer_stocks()

get_current_loser_stocks #

get_current_loser_stocks() -> DataFrame

返回根据雅虎财经分类为当日下跌股的美国股票。

如果价格百分比变动小于-2.5,价格大于等于5美元,成交量大于2万,则该美股被归类为当日下跌股

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
84
85
86
87
88
89
90
91
def get_current_loser_stocks(self) -> pd.DataFrame:
    """
    Returns US stocks which are classified as day losers as per Yahoo Finance.

    A US stock is classified as day loser if %change in price < -2.5, price >=5, volume > 20_000

    """
    return news.get_current_loser_stocks()

get_current_undervalued_growth_stocks #

get_current_undervalued_growth_stocks() -> DataFrame

根据雅虎财经获取美国市场中估值偏低的成长股列表。

一只市盈率在0-20之间、市盈增长比率小于1的股票

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
 93
 94
 95
 96
 97
 98
 99
100
def get_current_undervalued_growth_stocks(self) -> pd.DataFrame:
    """
    Get list of undervalued growth stocks in US market as per Yahoo Finance.

    A stock with Price to Earnings ratio between 0-20, Price / Earnings to Growth < 1

    """
    return news.get_current_undervalued_growth_stocks()

get_current_technology_growth_stocks #

get_current_technology_growth_stocks() -> DataFrame

返回美国市场科技板块成长股的数据框。

如果一只股票的季度营收同比增长率%大于25%。

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
102
103
104
105
106
107
108
109
def get_current_technology_growth_stocks(self) -> pd.DataFrame:
    """
    Returns a data frame of growth stocks in technology sector in US market.

    If a stocks's quarterly revenue growth YoY% > 25%.

    """
    return news.get_current_technology_growth_stocks()

get_current_most_traded_stocks #

get_current_most_traded_stocks() -> DataFrame

返回一个存储当前市场中交易最活跃股票的数据框。

股票按活动量降序排列,即交易量最大的股票位于顶部。

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
111
112
113
114
115
116
117
118
def get_current_most_traded_stocks(self) -> pd.DataFrame:
    """
    Returns a dataframe storing stocks which were traded the most in current market.

    Stocks are ordered in decreasing order of activity i.e stock traded the most on top.

    """
    return news.get_current_most_traded_stocks()

get_current_undervalued_large_cap_stocks #

get_current_undervalued_large_cap_stocks() -> DataFrame

返回一个存储市盈率小于20的美国大盘股的数据框。

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
120
121
122
def get_current_undervalued_large_cap_stocks(self) -> pd.DataFrame:
    """Returns a dataframe storing US market large cap stocks with 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。

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
124
125
126
def get_current_aggressive_small_cap_stocks(self) -> pd.DataFrame:
    """Returns a dataframe storing US market small cap stocks with 1 yr % change in earnings per share > 25."""
    return news.get_current_aggressive_small_cap_stocks()
get_trending_finance_news() -> List[str]

根据seekingalpha返回金融市场前10大热门新闻列表。

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
128
129
130
131
def get_trending_finance_news(self) -> List[str]:
    """Returns a list of top 10 trending news in financial market as per seekingalpha."""
    trends = news.get_topk_trending_news()
    return [t["title"] for t in trends]
get_google_trending_searches() -> Optional[DataFrame]

根据谷歌趋势返回美国的流行搜索。

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

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
133
134
135
136
137
138
139
140
def get_google_trending_searches(self) -> Optional[pd.DataFrame]:
    """
    Returns trending searches in US as per google trends.

    If unable to find any trends, returns None.

    """
    return news.get_google_trending_searches(region="united_states")
get_google_trends_for_query(query: str) -> Optional[DataFrame]

查找指定查询在美国的谷歌搜索趋势。

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

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
142
143
144
145
146
147
148
149
def get_google_trends_for_query(self, query: str) -> Optional[pd.DataFrame]:
    """
    Finds google search trends for a given query in United States.

    Returns None if unable to find any trends.

    """
    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]

给定一个代表公司名称或股票代码的 stock_id,返回从现在起过去7天内发布的与美国顶级商业文章相关的新闻列表。

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
151
152
153
154
def get_latest_news_for_stock(self, stock_id: str) -> List[str]:
    """Given a stock_id representing the name of a company or the stock ticker symbol, Returns a list of news published related to top business articles in US in last 7 days from now."""
    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。

workflows/handler.py 中的源代码llama_index/tools/finance/base.py
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
def get_current_stock_price_info(
    self, stock_ticker_symbol: str
) -> Optional[Dict[str, Any]]:
    """
    Given a stock's ticker symbol, returns current price information of the stock.

    Returns None if the provided stock ticker symbol is invalid.
    """
    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

选项: 成员:- FinanceAgentToolSpec