Releases: JerBouma/FinanceToolkit
FinanceToolkit v1.2.5
I've been busy again to improve numerous docstrings, optimize code and ensure that there is better error handling. I've introduced some other features that have been requested which are the following:
An earnings calendar in which all exact earnings dates in the past and in the future are displayed including estimates. It has the option to show the quarterly statement dates or the annual dates and can be shown for any amount of companies.
The option to segregate revenue by product. This makes it possible to understand where the revenue is coming from. Note that this is a Professional and Enterprise Subscription feature. As an example, Apple.
The option to segregate revenue by geography. This makes it possible to understand from what countries, a company makes its revenue. Note that this is a Professional and Enterprise Subscription feature. As an example, Google.
As you can see, both options can be either quarterly or annually.
FinanceToolkit v1.2.4
Many many new additions!
- Introduced a TQDM progress bar for financial statements. This only activates if you have TQDM installed and can also be disabled by setting
progress_bar=False
in the Toolkit initalization. The purpose of this is to make it more clear how far the data collection is progressing. This fixes #53. - Added a sleeper in case you breach the request limit. This is mostly relevant for Premium subscriptions that reach the 300 (or 750) API Calls per minute. On average, this should be almost never an issue. This fixes #52.
- I've done some number formatting. Ratios or percentages are depicted with 4 decimals and all other values with 2. This made more sense and keeps the data concise.
- Many QOL updates and Docstring fixes.
I've extended the historical dataset with dividends, returns and cumulative returns. As an example:
I've added in the ability to collect Analyst Estimates. This gives insights in how a range of analysts thought about the past and think about the future of each company.
The Enterprise functionality is now located in models and is calculated with the available data. This makes it more in line with the rest of the Toolkit. This also shows the new progress bars.
FinanceToolkit v1.2.2
This release introduces growth metrics. This allows any financial statement, ratio or model to also be viewed as growth metrics. Next to that, with the lag parameter multiple periods can be defined. This is now also updated in the Example files. Lastly, the historical data output now also calculates returns.
For example:
from financetoolkit import Toolkit
API_KEY = "FMP_KEY"
companies = Toolkit(
["AAPL", "MSFT", "GOOGL", "AMZN"], api_key=API_KEY, start_date="2000-01-01"
)
companies.get_income_statement(growth=True)
Which returns:
And an example for ratios with multiple lags:
from financetoolkit import Toolkit
API_KEY = "FMP_KEY"
companies = Toolkit(
["AAPL", "MSFT", "GOOGL", "AMZN"], api_key=API_KEY, start_date="2000-01-01"
)
companies.ratios.collect_all_ratios(growth=True, lag=[1, 2, 3])
Which returns:
FinanceToolkit v1.2.1
I've updated much of the docstrings to now include examples. These examples and the code documentation in general is now depicted on: https://www.jeroenbouma.com/projects/financetoolkit
Furthermore, I've introduced dividends within the Historical data. This allow you to see annual and quarterly dividend values for each.
It’s good to note the following: the most recent annual and quarterly numbers might differ from what other websites report because this is based on the dividend that actually has been paid and not what is announced.
FinanceToolkit v1.2.0
This new release has numerous of improvements:
- Worked on fixing the date formatting, you will now see the correct dates for Quarters (2020Q2, 2020Q3 etc). This fixed an issue where the reporting dates of companies varied. For some the end of June could be Q3 while for others Q1. Now both will be Q2 so comparison makes more sense. See #45
- Introduced a Statistics statement that includes CIK Codes, reporting dates and financial statement links.
- It is now possible to calculate custom ratios based on the normalized financial statements. This makes it much easier to calculate ratios that are currently not included. See #47 by @sword134
- Overall improvements of the code, a big step forward in optimization and error handling. It won't happen that the functions crash but instead will show an error message and continue.
- Fix issues with values being 0 (divide by zero).
See below output of both the new date naming for quarters as well as the newly defined ratios.
2022Q3 | 2022Q4 | 2023Q1 | 2023Q2 | |
---|---|---|---|---|
Current Assets Inventory | 1.62953e+11 | 1.62125e+11 | 1.5967e+11 | 1.66557e+11 |
Net Income / Total Assets | 0.0388271 | 0.037299 | 0.0407344 | 0.0479527 |
Quick Ratio Current | 2.46977 | 2.33947 | 2.31896 | 2.14334 |
Quick Ratio Total | 1.55744 | 1.48575 | 1.4703 | 1.43704 |
WC / Net Income | 7.19842 | 7.00932 | 6.1877 | 4.95857 |
FinanceToolkit v1.1.2
Added in functionality to set a start and end date. For example:
from financetoolkit import Toolkit
companies = Toolkit(['AAPL', 'MSFT'], api_key="FMP_KEY", start_date='2017-12-31')
# an Enterprise example
enterprise = companies.get_enterprise()
# a Historical example
historical_data = companies.get_historical_data()
# a Financial Statement example
balance_sheet_statement = companies.get_balance_sheet_statement()
# a Ratios example
profitability_ratios = companies.ratios.collect_profitability_ratios()
# Show the profitability ratios for Apple
profitability_ratios.loc['AAPL']
This returns the following output for profitability_ratios.loc['AAPL]
. Omitting .loc['AAPL']
will return the result for both AAPL and MSFT.
2018 | 2019 | 2020 | 2021 | 2022 | |
---|---|---|---|---|---|
Gross Margin | 0.383437 | 0.378178 | 0.382332 | 0.417794 | 0.433096 |
Operating Margin | 0.26694 | 0.24572 | 0.241473 | 0.297824 | 0.302887 |
Net Profit Margin | 0.224142 | 0.212381 | 0.209136 | 0.258818 | 0.253096 |
Interest Burden Ratio | 1.02828 | 1.02827 | 1.01211 | 1.00237 | 0.997204 |
Income Before Tax Profit Margin | 0.274489 | 0.252666 | 0.244398 | 0.298529 | 0.30204 |
Effective Tax Rate | 0.183422 | 0.159438 | 0.144282 | 0.133023 | 0.162045 |
Return on Assets (ROA) | 0.162775 | 0.16323 | 0.177256 | 0.269742 | 0.282924 |
Return on Equity (ROE) | 0.555601 | 0.610645 | 0.878664 | 1.50071 | 1.96959 |
Return on Invested Capital (ROIC) | 0.269858 | 0.293721 | 0.344126 | 0.503852 | 0.562645 |
Return on Capital Employed (ROCE) | 0.305968 | 0.297739 | 0.320207 | 0.495972 | 0.613937 |
Return on Tangible Assets | 0.555601 | 0.610645 | 0.878664 | 1.50071 | 1.96959 |
Income Quality Ratio | 1.30073 | 1.25581 | 1.4052 | 1.09884 | 1.22392 |
Net Income per EBT | 0.816578 | 0.840562 | 0.855718 | 0.866977 | 0.837955 |
Free Cash Flow to Operating Cash Flow Ratio | 0.828073 | 0.848756 | 0.909401 | 0.893452 | 0.912338 |
EBT to EBIT Ratio | 0.957448 | 0.948408 | 0.958936 | 0.976353 | 0.975982 |
EBIT to Revenue | 0.286688 | 0.26641 | 0.254864 | 0.305759 | 0.309473 |
FinanceToolkit v1.1.0
This release features numerous enhancements and fixes:
- Overall robustness fixes to ensure errors are easier to understand. This fixes #38.
- Ensure that if a ticker has no data, that this is accurately displayed and taken out of the calculation. By default tickers are removed but there is a possibility to stop this behaviour. This fixes #42.
- Zero Division Errors due to missing data, this was often an issue when data was available for one financial statement but not for the others resulting in zeros. This fixes #39.
- Add the option to more easily combine DataFrames into the desired format for the Toolkit. Now, with
from financetoolkit.base import helpers
and thenhelpers.combine_dataframes
it is possible to feed a dictionary with tickers as keys and dataframes as values to create the desired format. This fixes #41.
Full Changelog: https://github.com/JerBouma/FinanceToolkit/commits/v1.1.0