FinanceToolkit v1.7.3
Happy New Year Everyone 🍾
This release includes an entirely new class which is the Discovery class. This class will help in discovering new instruments that can be inputted directly into the Finance Toolkit for further analysis. Find the documentation here.
For example, by importing the Discovery module directly, it is possible to obtain a large list of companies.
from financetoolkit import Discovery
discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")
stock_list = discovery.get_stock_list()
# The total list equals over 60.000 rows
stock_list.iloc[48000:48010]
Which returns:
Symbol | Name | Price | Exchange | Exchange Code |
---|---|---|---|---|
RBL.AX | Redbubble Limited | 0.54 | Australian Securities Exchange | ASX |
RBL.BO | Rane Brake Lining Limited | 870.05 | Bombay Stock Exchange | BSE |
RBL.NS | Rane Brake Lining Limited | 870.05 | National Stock Exchange of India | NSE |
RBLAY | Robinsons Land Corporation | 4.61 | Other OTC | PNK |
RBLBANK.BO | RBL Bank Limited | 280.9 | Bombay Stock Exchange | BSE |
RBLBANK.NS | RBL Bank Limited | 280.9 | National Stock Exchange of India | NSE |
RBLN-B.CO | Roblon A/S | 91.8 | Copenhagen | CPH |
RBLX | Roblox Corporation | 45.72 | New York Stock Exchange | NYSE |
RBMNF | Rugby Resources Ltd. | 0.065 | Other OTC | PNK |
RBMS.JK | PT Ristia Bintang Mahkotasejati Tbk | 50 | Jakarta Stock Exchange | JKT |
It also enables stock screeners:
from financetoolkit import Discovery
discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")
discovery.get_stock_screener(
market_cap_higher=1000000,
market_cap_lower=200000000000,
price_higher=100,
price_lower=200,
beta_higher=1,
beta_lower=1.5,
volume_higher=100000,
volume_lower=2000000,
dividend_higher=1,
dividend_lower=2,
is_etf=False
)
Which returns:
Symbol | Name | Market Cap | Sector | Industry | Beta | Price | Dividend | Volume | Exchange | Exchange Code | Country |
---|---|---|---|---|---|---|---|---|---|---|---|
NKE | NIKE, Inc. | 163403295604 | Consumer Cyclical | Footwear & Accessories | 1.079 | 107.36 | 1.48 | 1045865 | New York Stock Exchange | NYSE | US |
SAF.PA | Safran SA | 66234006559 | Industrials | Aerospace & Defense | 1.339 | 160.16 | 1.35 | 119394 | Paris | EURONEXT | FR |
ROST | Ross Stores, Inc. | 46724188589 | Consumer Cyclical | Apparel Retail | 1.026 | 138.785 | 1.34 | 169879 | NASDAQ Global Select | NASDAQ | US |
HES | Hess Corporation | 44694706090 | Energy | Oil & Gas E&P | 1.464 | 145.51 | 1.75 | 123147 | New York Stock Exchange | NYSE | US |
Which then can be directly inputted into the Finance Toolkit:
from financetoolkit import Toolkit
companies = Toolkit(
tickers=['NKE', 'SAF.PA', 'ROST', 'HES'],
api_key="FINANCIAL_MODELING_PREP_KEY",
)
companies.ratios.get_price_earnings_ratio()
Which returns:
2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | |
---|---|---|---|---|---|---|---|---|---|---|
HES | 8.4355 | -3.9366 | -2.8064 | -3.3368 | -39.7483 | -79.129 | -5.4733 | 25.1712 | 19.5719 | |
NKE | 29.4181 | 31.0527 | 21.9158 | 23.5325 | 60.6729 | 39.2127 | 86.2596 | 45.9014 | 30.8813 | 33.6161 |
ROST | 19.5859 | 19.8813 | 21.7047 | 21.3971 | 18.6637 | 24.4335 | 493.771 | 22.9419 | 26.2563 | |
SAF.PA | -152.997 | -57.6348 | 14.3119 | 7.1287 | 34.6723 | 24.0264 | 142.461 | 686.616 | -21.0077 |
Next to that, I've also grouped the TQDM statements when using Ratios or Models. So instead of 5 bars, it displays just 2. Furthermore, I've extended the custom ratios functionality, see here.