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](https://www.jeroenbouma.com/projects/financetoolkit/docs/discovery).**
For example, by importing the Discovery module directly, it is possible to obtain a large list of companies.
python
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:
python
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:
python
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 | |