Home

Awesome

FinanceToolkit

GitHub Sponsors Buy Me a Coffee Twitter LinkedIn Documentation Supported Python Versions PYPI Version PYPI Downloads

While browsing a variety of websites, I repeatedly observed significant fluctuations in the same financial metric among different sources. Similarly, the reported financial statements often didn't line up, and there was limited information on the methodology used to calculate each metric.

For example, Microsoft's Price-to-Earnings (PE) ratio on the 6th of May, 2023 is reported to be 28.93 (Stockopedia), 32.05 (Morningstar), 32.66 (Macrotrends), 33.09 (Finance Charts), 33.66 (Y Charts), 33.67 (Wall Street Journal), 33.80 (Yahoo Finance) and 34.4 (Companies Market Cap). All of these calculations are correct, however the method of calculation varies leading to different results. Therefore, collecting data from multiple sources can lead to wrong interpretation of the results given that one source could apply a different definition than another. And that is, if that definition is even available as often the underlying methods are hidden behind a paid subscription.

This is why I designed the FinanceToolkit, this is an open-source toolkit in which all relevant financial ratios (150+), indicators and performance measurements are written down in the most simplistic way allowing for complete transparency of the method of calculation (proof). This enables you to avoid dependence on metrics from other providers that do not provide their methods. With a large selection of financial statements in hand, it facilitates streamlined calculations, promoting the adoption of a consistent and universally understood methods and formulas.

The Finance Toolkit not only supports Equities. Even for Options, Currencies, Cryptocurrencies, ETFs, Mutual Funds, Indices, Money Markets, Commodities, Key Economic Indicators and more, the Finance Toolkit can be used to obtain historical data as well as important performance and risk measurements such as the Sharpe Ratio and Value at Risk.

The Finance Toolkit is complimented very well with the Finance Database 🌎, a database that features 300.000+ symbols containing Equities, ETFs, Funds, Indices, Currencies, Cryptocurrencies and Money Markets. By utilising both, it is possible to do a fully-fledged competitive analysis with the tickers found from the FinanceDatabase inputted into the FinanceToolkit.


Interested in seeing the Finance Toolkit in action? Find below a dashboard that can plot most of the metrics found inside the Finance Toolkit. <a href="https://www.jeroenbouma.com/projects/financetoolkit/interactive-dashboard" target="_blank">Find the dashboard here.</a>

<p align="center"> <a href="https://www.jeroenbouma.com/projects/financetoolkit/interactive-dashboard" target="_blank"> <img src="app/assets/financetoolkit-dashboard.gif" alt="Finance Toolkit Illustration" width="100%" onerror="this.style.display = 'none'"/> </a> </p>

Table of Contents

  1. Installation
  2. Basic Usage
  3. Functionality and Metrics
  4. Questions & Answers
  5. Contributing
  6. Contact

Installation

Before installation, consider starring the project on GitHub which helps others find the project as well.

<a href="https://github.com/JerBouma/FinanceToolkit" target="_blank"><img width="1415" alt="image" src="https://github.com/JerBouma/FinanceToolkit/assets/46355364/014109fe-0c68-47d4-99bd-217c69dcea8d"></a>

To install the FinanceToolkit it simply requires the following:

pip install financetoolkit -U

Then within Python use:

from financetoolkit import Toolkit

companies = Toolkit(
    tickers=['GOOGL', 'MSFT', 'AMZN'],
    api_key="FINANCIAL_MODELING_PREP_KEY",
)

To be able to get started, you need to obtain an API Key from FinancialModelingPrep. This is used to gain access to 30+ years of financial statement both annually and quarterly. Note that the Free plan is limited to 250 requests each day, 5 years of data and only features companies listed on US exchanges.


<b><div align="center">Obtain an API Key from FinancialModelingPrep <a href="https://www.jeroenbouma.com/fmp" target="_blank">here</a>.</div></b>


Through the link you are able to subscribe for the free plan and also premium plans at a 15% discount. This is an affiliate link and thus supports the project at the same time. I have chosen FinancialModelingPrep as a source as I find it to be the most transparent, reliable and at an affordable price. I have yet to find a platform offering such low prices for the amount of data offered. When you notice that the data is inaccurate or have any other issue related to the data, note that I simply provide the means to access this data and I am not responsible for the accuracy of the data itself. For this, use their contact form or provide the data yourself.

The dependencies of the package are on purpose very slim so that it will work well with any combination of packages and not result in conflicts. In case you wish to use the Finance Toolkit in combination with Yahoo Finance, you can do so by installing the optional dependency with pip install "financetoolkit[yfinance]".

Basic Usage

This section is an introduction to the Finance Toolkit. Also see this notebook for a detailed Getting Started guide as well as this notebook that includes the Finance Database 🌎 and a proper financial analysis. Next to that, find below a fully-fledged code documentation as well as Jupyter Notebooks in which you can see many examples ranging from basic examples to creating custom ratios to working with your own datasets.


<b><div align="center">Find a variety of How-To Guides including Code Documentation for the FinanceToolkit <a href="https://www.jeroenbouma.com/projects/financetoolkit">here</a>.</div></b>


A basic example of how to use the Finance Toolkit is shown below.

from financetoolkit import Toolkit

companies = Toolkit(["AAPL", "MSFT"], api_key=API_KEY, start_date="2017-12-31")

# a Historical example
historical_data = companies.get_historical_data()

# a Financial Statement example
income_statement = companies.get_income_statement()

# a Ratios example
profitability_ratios = companies.ratios.collect_profitability_ratios()

# a Models example
extended_dupont_analysis = companies.models.get_extended_dupont_analysis()

# an Options example
all_greeks = companies.options.collect_all_greeks(expiration_time_range=180)

# a Performance example
factor_asset_correlations = companies.performance.get_factor_asset_correlations(
    period="quarterly"
)

# a Risk example
value_at_risk = companies.risk.get_value_at_risk(period="weekly")

# a Technical example
ichimoku_cloud = companies.technicals.get_ichimoku_cloud()

# a Fixed Income example
corporate_bond_yields = companies.fixed_income.get_ice_bofa_effective_yield()

# an Economics example
unemployment_rates = companies.economics.get_unemployment_rate()

Generally, the functions return a DataFrame with a multi-index in which all tickers, in this case Apple and Microsoft, are presented. To keep things manageable for this README, I select just Apple but in essence the list of tickers can be endless as I've seen DataFrames with thousands of tickers. The filtering is done through .loc['AAPL'] and .xs('AAPL', level=1, axis=1) based on whether it's fundamental data or historical data respectively.

Obtaining Historical Data

Obtain historical data on a daily, weekly, monthly or yearly basis. This includes OHLC, volumes, dividends, returns, cumulative returns and volatility calculations for each corresponding period. For example, the a portion of the historical data for Apple is shown below.

dateOpenHighLowCloseAdj CloseVolumeDividendsReturnVolatilityExcess ReturnExcess VolatilityCumulative Return
2018-01-0242.5443.07542.31543.06540.781.02224e+08000.0202-0.00670.02331
2018-01-0343.132543.637542.9943.057540.771.17982e+080-0.00020.0202-0.02470.02330.9998
2018-01-0443.13543.367543.0243.257540.968.97384e+0700.00470.0202-0.01980.02331.0044
2018-01-0543.3643.842543.262543.7541.439.46401e+0700.01150.0202-0.01330.02331.0159
2018-01-0843.587543.902543.482543.587541.278.22711e+070-0.00390.0202-0.02870.02331.012

And below the cumulative returns are plotted which include the S&P 500 as benchmark:

HistoricalData

Obtaining Financial Statements

Obtain an Income Statement on an annual or quarterly basis. This can also be a balance statement (companies.get_balance_sheet_statement()) or cash flow statement (companies.get_cash_flow_statement()). For example, the first 5 rows of the Income Statement for Apple are shown below.

2017201820192020202120222023
Revenue2.29234e+112.65595e+112.60174e+112.74515e+113.65817e+113.94328e+113.83285e+11
Cost of Goods Sold1.41048e+111.63756e+111.61782e+111.69559e+112.12981e+112.23546e+112.14137e+11
Gross Profit8.8186e+101.01839e+119.8392e+101.04956e+111.52836e+111.70782e+111.69148e+11
Gross Profit Ratio0.38470.38340.37820.38230.41780.43310.4413
Research and Development Expenses1.1581e+101.4236e+101.6217e+101.8752e+102.1914e+102.6251e+102.9915e+10

And below the Earnings Before Interest, Taxes, Depreciation and Amortization (EBITDA) are plotted for both Apple and Microsoft.

FinancialStatements

Obtaining Financial Ratios

Get Profitability Ratios based on the inputted balance sheet, income and cash flow statements. This can be any of the 50+ ratios within the ratios module. The get_ functions show a single ratio whereas the collect_ functions show an aggregation of multiple ratios. For example, see some of the profitability ratios of Microsoft below.

2017201820192020202120222023
Gross Margin0.61910.65250.6590.67780.68930.6840.6892
Operating Margin0.24820.31770.34140.37030.41590.42060.4177
Net Profit Margin0.23570.15020.31180.30960.36450.36690.3415
Interest Coverage Ratio13.998216.582120.342925.378234.783547.427552.0244
Income Before Tax Profit Margin0.25740.33050.34720.37080.4230.42220.4214

And below a few of the profitability ratios are plotted for Microsoft.

FinancialRatios

Obtaining Financial Models

Get an Extended DuPont Analysis based on the inputted balance sheet, income and cash flow statements. This can also be an Enterprise Value Breakdown, Weighted Average Cost of Capital (WACC), Altman Z-Score and many more models. For example, this shows the Extended DuPont Analysis for Apple:

2017201820192020202120222023
Interest Burden Ratio0.95720.97250.97250.9880.99761.00281.005
Tax Burden Ratio0.78820.83970.86430.86610.8690.83560.8486
Operating Profit Margin0.27960.27450.25270.24440.29850.3020.2967
Asset Turnovernan0.71680.73890.82881.08411.12061.0868
Equity Multipliernan3.07243.56334.25095.2556.18626.252
Return on Equitynan0.49360.55920.73691.47441.75461.7195

And below each component of the Extended Dupont Analysis is plotted including the resulting Return on Equity (ROE).

Models

Obtaining Options and Greeks

Get the Black Scholes Model for both call and put options including the relevant Greeks, in this case Delta, Gamma, Theta and Vega. This can be any of the First, Second or Third Order Greeks as found in the the options module. The get_ functions show a single Greek whereas the collect_ functions show an aggregation of Greeks. For example, see the delta of the Call options for Apple for multiple expiration times and strike prices below (Stock Price: 185.92, Volatility: 31.59%, Dividend Yield: 0.49% and Risk Free Rate: 3.95%):

1 Month2 Months3 Months4 Months5 Months6 Months
1750.76860.71780.69670.68570.67940.6759
1800.66590.640.63180.6290.62850.6291
1850.55220.55830.56480.5710.57670.5816
1900.43710.47620.49770.5130.52490.5342
1950.32980.39710.43240.45620.4740.4875

Which can also be plotted together with Gamma, Theta and Vega as follows:

Greeks

Obtaining Performance Metrics

Get the correlations with the factors as defined by Fama-and-French. These include market, size, value, operating profitability and investment. The beauty of all functionality here is that it can be based on any period as the function accepts the period intraday, weekly, monthly, quarterly and yearly. For example, this shows the quarterly correlations for Apple:

Mkt-RFSMBHMLRMWCMA
2022Q20.9177-0.1248-0.5077-0.3202-0.2624
2022Q30.80920.1528-0.5046-0.1997-0.5231
2022Q40.89980.2309-0.5968-0.1868-0.5946
2023Q10.77370.1606-0.3775-0.228-0.5707
2023Q20.7416-0.1166-0.27220.0093-0.4745

And below the correlations with each factor are plotted over time for both Apple and Microsoft.

Performance

Obtaining Risk Metrics

Get the Value at Risk for each week. Here, the days within each week are considered for the Value at Risk. This makes it so that you can understand within each period what is the expected Value at Risk (VaR) which can again be any period but also based on distributions such as Historical, Gaussian, Student-t, Cornish-Fisher.

AAPLMSFTBenchmark
2023-09-25/2023-10-01-0.0205-0.0133-0.0122
2023-10-02/2023-10-08-0.0048-0.0206-0.0108
2023-10-09/2023-10-15-0.0089-0.0092-0.0059
2023-10-16/2023-10-22-0.0135-0.0124-0.0131
2023-10-23/2023-10-29-0.0224-0.0293-0.0139

And below the Value at Risk (VaR) for Apple, Microsoft and the benchmark (S&P 500) are plotted also demonstrating the impact of COVID-19.

Risk

Obtaining Technical Indicators

Get the Ichimoku Cloud parameters based on the historical market data. This can be any of the 30+ technical indicators within the technicals module. The get_ functions show a single indicator whereas the collect_ functions show an aggregation of multiple indicators. For example, see some of the parameters for Apple below:

DateBase LineConversion LineLeading Span ALeading Span B
2023-10-30174.005171.755176.245178.8
2023-10-31174.005171.755176.37178.8
2023-11-01174.005170.545176.775178.8
2023-11-02174.005171.725176.235178.8
2023-11-03174.005171.725175.558178.8

And below the Ichimoku Cloud parameters are plotted for Apple and Microsoft side-by-side.

Technicals

Obtaining Fixed Income Metrics

Get access to the ICE BofA Corporate Bond benchmark indices and a variety of other bond and derivative related valuations within the fixedincome module. For example, see the Effective Yield for the ICE BofA Corporate Bond Index below for each Credit Rating:

DateAAAAAABBBBBBCCC
2024-04-190.05180.05320.05610.05940.06780.08040.1385
2024-04-220.05170.05320.0560.05930.06710.07930.1377
2024-04-230.05140.05280.05560.05890.0660.07770.1364
2024-04-240.05180.05310.05590.05920.06640.07780.1361
2024-04-250.05240.05370.05640.05980.06730.0790.1368

And below a variety of Fixed Income metrics are shown all acquired from the Fixed Income module.

Fixed Income

Understanding Key Economic Indicators

Get insights for 60+ countries into key economic indicators such as the Consumer Price Index (CPI), Gross Domestic Product (GDP), Unemployment Rates and 3-month and 10-year Government Interest Rates. This is done through the economics module and can be used as a standalone module as well by using from financetoolkit import Economics. For example see a selection of the countries below:

ColombiaUnited StatesSwedenJapanGermany
20170.0930.04350.06860.02810.0357
20180.09530.0390.06480.02440.0321
20190.10370.03670.06910.02350.0298
20200.15860.08090.08480.02780.0362
20210.13810.05370.08890.02820.0358
20220.11220.03650.07480.0260.0307

And below these Unemployment Rates are plotted over time:

Economics

Core Functionality and Metrics

The Finance Toolkit has the ability to collect 30+ years of financial statements and calculate 150+ financial metrics. The following list shows all of the available functionality and metrics.

Each ratio and indicator has a corresponding function that can be called directly for example ratios.get_return_on_equity or technicals.get_relative_strength_index. However, there are also functions that collect multiple ratios or indicators at once such as ratios.collect_profitability_ratios. These functions are useful when you want to collect a large amount of ratios or indicators at once.

<p align="center"> <img src="examples/Finance Toolkit - Video Demo.gif" alt="Finance Toolkit Illustration" width="100%" onerror="this.style.display = 'none'"/> </p>

<b><div align="center">Find a variety of How-To Guides including Code Documentation for the FinanceToolkit <a href="https://www.jeroenbouma.com/projects/financetoolkit">here</a>.</div></b>


Core Functionality

These are the core functionalities of the Finance Toolkit. For any calculation, it often first collects data via these functions. For example, financial ratios require the financial statements and historical data which are obtained through the Toolkit without needing to specify this first.

<details> <summary><b>Financial Statements</b></summary>

Acquire a full history of both annual and quarterly financial statements, including balance sheets, income statements, and cash flow statements.

These financial statements are adjusted for the following reasons:

To get insights related to the reported currency, CIK ID and SEC Links, it is possible to retrieve a statististics statement as well.

As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["MSFT", "MU"], api_key="FINANCIAL_MODELING_PREP_KEY", quarterly=True, start_date='2022-05-01')

balance_sheet_statements = toolkit.get_balance_sheet_statement()

balance_sheet_statements.loc['MU']

Which returns:

2022Q22022Q32022Q42023Q12023Q2
Cash and Cash Equivalents9.157e+098.262e+099.574e+099.798e+099.298e+09
Short Term Investments1.07e+091.069e+091.007e+091.02e+091.054e+09
Cash and Short Term Investments1.0227e+109.331e+091.0581e+101.0818e+101.0352e+10
Accounts Receivable6.229e+095.13e+093.318e+092.278e+092.429e+09
Inventory5.629e+096.663e+098.359e+098.129e+098.238e+09
Other Current Assets6.08e+086.44e+086.63e+086.73e+087.15e+08
Total Current Assets2.2708e+102.1781e+102.2921e+102.1898e+102.1734e+10
Property, Plant and Equipment3.7355e+103.9227e+104.0028e+103.9758e+103.9382e+10
Goodwill1.228e+091.228e+091.228e+091.228e+091.252e+09
Intangible Assets4.15e+084.21e+084.28e+084.1e+084.1e+08
Long Term Investments1.646e+091.647e+091.426e+091.212e+099.73e+08
Tax Assets6.82e+087.02e+086.72e+086.97e+087.08e+08
Other Fixed Assets1.262e+091.277e+091.171e+091.317e+091.221e+09
Fixed Assets4.2588e+104.4502e+104.4953e+104.4622e+104.3946e+10
Other Assets00000
Total Assets6.5296e+106.6283e+106.7874e+106.652e+106.568e+10
Accounts Payable2.019e+092.142e+091.789e+091.689e+091.64e+09
Short Term Debt1.07e+081.03e+081.71e+082.37e+082.59e+08
Tax Payables3.82e+084.2e+084.19e+082.41e+081.48e+08
Deferred Revenue0000-1.64e+09
Other Current Liabilities4.883e+095.294e+094.565e+093.329e+094.845e+09
Total Current Liabilities7.009e+097.539e+096.525e+095.255e+095.104e+09
Long Term Debt7.485e+097.413e+091.0719e+101.2647e+101.3589e+10
Deferred Revenue Non Current6.63e+085.89e+085.16e+085.29e+086.32e+08
Deferred Tax Liabilities00000
Other Non Current Liabilities8.58e+088.35e+088.08e+088.32e+089.5e+08
Total Non Current Liabilities9.006e+098.837e+091.2043e+101.4008e+101.5171e+10
Other Liabilities00000
Capital Lease Obligations6.29e+086.1e+086.25e+086.1e+086.03e+08
Total Liabilities1.6015e+101.6376e+101.8568e+101.9263e+102.0275e+10
Preferred Stock00000
Common Stock1.22e+081.23e+081.23e+081.23e+081.24e+08
Retained Earnings4.5916e+104.7274e+104.6873e+104.4426e+104.2391e+10
Accumulated Other Comprehensive Income-3.64e+08-5.6e+08-4.73e+08-3.73e+08-3.4e+08
Other Total Shareholder Equity3.607e+093.07e+092.783e+093.081e+093.23e+09
Total Shareholder Equity4.9281e+104.9907e+104.9306e+104.7257e+104.5405e+10
Total Equity4.9281e+104.9907e+104.9306e+104.7257e+104.5405e+10
Total Liabilities and Shareholder Equity6.5296e+106.6283e+106.7874e+106.652e+106.568e+10
Minority Interest00000
Total Liabilities and Equity6.5296e+106.6283e+106.7874e+106.652e+106.568e+10
Total Investments2.716e+092.716e+092.433e+092.232e+092.027e+09
Total Debt7.592e+097.516e+091.089e+101.2884e+101.3848e+10
Net Debt-1.565e+09-7.46e+081.316e+093.086e+094.55e+09
</details> <details> <summary><b>Company Overviews</b></summary>

Obtain the profile of the specified tickers. These include important metrics such as the beta, market capitalization, currency, isin, industry, and ipo date that give an overall understanding about the company.

As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["MSFT", "AAPL"], api_key="FINANCIAL_MODELING_PREP_KEY")

toolkit.get_profile()

Which returns:

MSFTAAPL
SymbolMSFTAAPL
Price316.48174.49
Beta0.9037061.286802
Average Volume2815312057348456
Market Capitalization23531838093722744500935588
Last Dividend2.71999999999999980.96
Range213.43-366.78124.17-198.23
Changes-0.40.49
Company NameMicrosoft CorporationApple Inc.
CurrencyUSDUSD
CIK789019320193
ISINUS5949181045US0378331005
CUSIP59491810437833100
ExchangeNASDAQ Global SelectNASDAQ Global Select
Exchange Short NameNASDAQNASDAQ
IndustrySoftware—InfrastructureConsumer Electronics
Websitehttps://www.microsoft.comhttps://www.apple.com
CEOMr. Satya NadellaMr. Timothy D. Cook
SectorTechnologyTechnology
CountryUSUS
Full Time Employees221000164000
Phone425 882 8080408 996 1010
AddressOne Microsoft WayOne Apple Park Way
CityRedmondCupertino
StateWACA
ZIP Code98052-639995014
DCF Difference4.565844.15176
DCF243.594150.082
IPO Date1986-03-131980-12-12

Get the quote of the specified tickers. These include important metrics such as the price, changes, day low, day high, year low, year high, market capitalization, volume, average volume, open, previous close, earnings per share (EPS), price to earnings ratio (PE), earnings announcement, shares outstanding and timestamp that give an overall understanding about the company.

As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["TSLA", "AAPL"], api_key="FINANCIAL_MODELING_PREP_KEY")

toolkit.get_quote()

Which returns:

TSLAAAPL
SymbolTSLAAAPL
NameTesla, Inc.Apple Inc.
Price215.49174.49
Changes Percentage-1.70150.2816
Change-3.730.49
Day Low212.36171.96
Day High217.58175.1
Year High313.8198.23
Year Low101.81124.17
Market Capitalization6829955343132744500935588
Price Average 50 Days258.915187.129
Price Average 200 Days196.52345161.4698
ExchangeNASDAQNASDAQ
Volume13627658461172150
Average Volume13311015857348456
Open214.12172.3
Previous Close219.22174
EPS3.085.89
PE69.9629.62
Earnings Announcement2023-10-17T20:00:00.000+00002023-10-25T10:59:00.000+0000
Shares Outstanding316949990415728700416
Timestamp2023-08-18 20:00:002023-08-18 20:00:01

Get the rating of the specified tickers. These scores and recommendations are categorized as follows:

As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AMZN", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

rating = toolkit.get_rating()

rating.loc['AMZN', 'Rating Recommendation'].tail()

Which returns:

dateRating Recommendation
2023-08-01 00:00:00Strong Buy
2023-08-02 00:00:00Strong Buy
2023-08-03 00:00:00Strong Buy
2023-08-04 00:00:00Strong Buy
2023-08-07 00:00:00Strong Buy
</details> <details> <summary><b>(Intraday) Historical Market Data</b></summary>

Obtain historical market data for the specified tickers. This contains the following columns:

If a benchmark ticker is selected, it also calculates the benchmark ticker together with the results. By default this is set to “SPY” (S&P 500 Index) but can be any ticker. This is relevant for calculations for models such as CAPM, Alpha and Beta.

Important to note is that when an api_key is included in the Toolkit initialization that the data collection defaults to FinancialModelingPrep which is a more stable source and utilises your subscription. However, if this is undesired, it can be disabled by setting historical_source to YahooFinance. If data collection fails from FinancialModelingPrep it automatically reverts back to YahooFinance.

You are able to specify the period which can be daily (default), weekly, monthly, quarterly or yearly.

As an example:

from financetoolkit import Toolkit

toolkit = Toolkit("AAPL", api_key="FINANCIAL_MODELING_PREP_KEY")

toolkit.get_historical_data(period="yearly")

Which returns:

DateOpenHighLowCloseAdj CloseVolumeDividendsReturnVolatilityExcess ReturnExcess VolatilityCumulative Return
201319.791820.045719.785720.036417.58892.23084e+080.10892900.24064100.2442481
201428.20528.282527.552527.59524.7341.65614e+080.4614290.4062250.2165740.3845250.2195361.40623
201526.752526.757526.20526.31523.98861.63649e+080.5075-0.03013730.267373-0.05282730.2698451.36385
201629.162529.328.857528.95526.98241.22345e+080.55750.1248040.2333830.1003440.2402151.53406
201742.6342.647542.30542.307540.05931.04e+080.6150.4846440.1760580.4605940.174682.27753
201839.632539.8439.1239.43537.91.40014e+080.705-0.05390190.287421-0.08076190.2899052.15477
201972.482573.4272.3873.412571.6151.00806e+080.760.8895780.2613840.8703880.2699454.0716
2020134.08134.74131.72132.69130.5599.91166e+070.80750.8230670.4664970.8138970.4707437.4228
2021178.09179.23177.26177.57175.7956.40623e+070.8650.3464820.2510190.3313620.2514299.99467
2022128.41129.95127.43129.93129.3787.70342e+070.91-0.2640420.356964-0.3028320.3772937.35566
2023187.84188.51187.68188.108188.1084.72009e+060.710.4539410.2133590.4129010.2232710.6947

It is also possible to retrieve intraday data. This has the option to get you 1 minute, 5 minute, 15 minute, 30 minute or 1 hour data. It can also be used as part of the Risk, Performance and Technicals modules when defining intraday_period as part of the Toolkit initialization.

As an example:

from financetoolkit import Toolkit

toolkit = Toolkit("MSFT", api_key="FINANCIAL_MODELING_PREP_KEY")

toolkit.get_intraday_data(period="1min")

Which returns:

dateOpenHighLowCloseVolumeReturnVolatilityCumulative Return
2024-01-19 15:45397.64397.88397.63397.88492020.00060.00051.0266
2024-01-19 15:46397.86397.93397.788397.8268913-0.00020.00051.0264
2024-01-19 15:47397.81397.97397.76397.7862605-0.00010.00051.0263
2024-01-19 15:48397.78397.85397.675397.845621460.00020.00051.0265
2024-01-19 15:49397.85397.97397.8397.94727000.00020.00051.0267
2024-01-19 15:50397.92398.27397.9398.041407540.00030.00051.027
2024-01-19 15:51398.04398.15397.96398122208-0.00010.00051.0269
2024-01-19 15:52397.99398.26397.98398.05835460.00010.00051.027
2024-01-19 15:53398.04398.12397.98398.09850980.00010.00051.0271
2024-01-19 15:54398.1398.52398.03398.451873580.00090.00051.028
2024-01-19 15:55398.45398.62398.25398.335237902-0.00030.00051.0278
2024-01-19 15:56398.33398.44398.3398.4151491570.00020.00051.028
2024-01-19 15:57398.42398.5398.29398.4318107400.00051.028
2024-01-19 15:58398.46398.47398.29398.35278802-0.00020.00051.0278
2024-01-19 15:59398.35398.66398.22398.665863440.00080.00051.0286
</details> <details> <summary><b>Treasury Rates</b></summary>

Just like the historical market data, obtain a full history for the treasury rates which also serve as risk-free rate by default allowing for calculations such as the Sharpe Ratio. This also includes normalization of the data as well as auto-adjustments for missing values. It can also be obtained from both FinancialModelingPrep and Yahoo Finance.

It returns the following columns:

By default, the Finance Toolkit uses the 10 Year Treasury Bond as risk-free rate but this can be changed by setting risk_free_rate to any of the other treasury rates.

As an example:

from financetoolkit import Toolkit

companies = Toolkit(["AAPL", "MSFT"], api_key="FINANCIAL_MODELING_PREP_KEY", start_date="2023-08-10")

companies.get_treasury_data()

Which returns:

date13 Week5 Year10 Year30 Year
2023-10-160.05330.04720.04710.0487
2023-10-170.05340.04870.04850.0495
2023-10-180.05330.04920.0490.05
2023-10-190.05310.04960.04990.051
2023-10-200.0530.04910.04960.0512
</details> <details> <summary><b>Earnings & Dividend Calendars</b></summary>

Obtain Earnings Calendars for any range of companies. You have the option to obtain the actual dates or to convert to the corresponding quarters and can obtain a rich history. This returns:

As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(
    ["AAPL", "MSFT", "GOOGL", "AMZN"], api_key="FINANCIAL_MODELING_PREP_KEY", start_date="2022-08-01", quarterly=False
)

earning_calendar = toolkit.get_earnings_calendar()

earning_calendar.loc['AMZN']

Which returns:

dateEPSEstimated EPSRevenueEstimated RevenueFiscal Date EndingTime
2022-10-270.170.221.27101e+11nan2022-09-30amc
2023-02-020.250.181.49204e+111.5515e+112022-12-31amc
2023-04-270.310.211.27358e+111.24551e+112023-03-31amc
2023-08-030.650.351.34383e+111.19573e+112023-06-30amc
2023-10-25nan0.56nan1.41407e+112023-09-30amc
2024-01-31nannannannan2023-12-30amc
2024-04-25nannannannan2024-03-30amc
2024-08-01nannannannan2024-06-30amc

Furthermore, find Dividend Calendars which includes:

As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(
    ["AAPL", "MSFT", "GOOGL", "AMZN"], api_key="FINANCIAL_MODELING_PREP_KEY", start_date="2022-08-01", quarterly=False
)

dividend_calendar = toolkit.get_dividend_calendar()

dividend_calendar.loc['AAPL']

Which returns:

dateAdj DividendDividendRecord DatePayment DateDeclaration Date
2022-08-050.230.232022-08-082022-08-112022-07-28
2022-11-040.230.232022-11-072022-11-102022-10-27
2023-02-100.230.232022-12-282023-02-162022-12-19
2023-05-120.240.242023-05-152023-05-182023-05-04
2023-08-110.240.242023-08-142023-08-172023-08-03
</details> <details> <summary><b>Analyst Estimates</b></summary>

Obtain the Analyst Estimates which include estimates for Revenue, Earnings-per-Share (EPS), EBITDA, EBIT, Net Income, and SGA Expense from the past and future from a large collection of analysts.

It includes the lower, average and upper bound for each estimate which gives insights whether analysts have reached a consensus on the prices or think wildly different. The larger the difference between the lower and upper bound, the more uncertain the analysts are.

As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(
    ["AAPL", "MSFT", "GOOGL", "AMZN"], api_key="FINANCIAL_MODELING_PREP_KEY", start_date="2021-05-01", quarterly=False
)

analyst_estimates = toolkit.get_analyst_estimates()

analyst_estimates.loc['AAPL']

Which returns:

2021202220232024
Estimated Revenue Low2.98738e+113.07919e+113.3871e+112.93633e+11
Estimated Revenue High4.48107e+114.61878e+115.08066e+114.4045e+11
Estimated Revenue Average3.73422e+113.84898e+114.23388e+113.67042e+11
Estimated EBITDA Low8.50991e+101.00742e+111.10816e+111.07415e+11
Estimated EBITDA High1.27649e+111.51113e+111.66224e+111.61122e+11
Estimated EBITDA Average1.06374e+111.25928e+111.3852e+111.34269e+11
Estimated EBIT Low7.62213e+109.05428e+109.9597e+109.81566e+10
Estimated EBIT High1.14332e+111.35814e+111.49396e+111.47235e+11
Estimated EBIT Average9.52766e+101.13178e+111.24496e+111.22696e+11
Estimated Net Income Low6.54258e+107.62265e+108.38492e+108.23371e+10
Estimated Net Income High9.81387e+101.1434e+111.25774e+111.23506e+11
Estimated Net Income Average8.17822e+109.52832e+101.04811e+111.02921e+11
Estimated SGA Expense Low1.48491e+101.85317e+102.03848e+102.04857e+10
Estimated SGA Expense High2.22737e+102.77975e+103.05772e+103.07286e+10
Estimated SGA Expense Average1.85614e+102.31646e+102.5481e+102.56072e+10
Estimated EPS Average4.265.4656.016.2612
Estimated EPS High5.126.567.217.5135
Estimated EPS Low3.44.374.815.009
Number of Analysts14161210
</details> <details> <summary><b>Revenue Segmentations</b></summary>

Retrieve the product revenue segmentation for each company. This is for example iPhone, iPad, Mac, Wearables, Services, and Other Products for Apple and helps understand the products that grow the fastest and slowest.

As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(
    ["AAPL", "MSFT", "GOOGL", "AMZN"], api_key="FINANCIAL_MODELING_PREP_KEY", start_date="2021-05-01", quarterly=False
)

product_segmentation = toolkit.get_revenue_product_segmentation()

product_segmentation.loc['MSFT']

Which returns:

2022Q22022Q32022Q42023Q12023Q2
Devices1.581e+091.448e+091.43e+091.282e+091.361e+09
Enterprise Services1.902e+091.876e+091.862e+092.007e+091.977e+09
Gaming3.455e+093.61e+094.758e+093.607e+093.491e+09
Linked In Corporation3.712e+093.663e+093.876e+093.697e+093.909e+09
Office Products And Cloud Services1.1639e+101.1548e+101.1837e+101.2438e+101.2905e+10
Other Products And Services1.403e+091.348e+091.359e+091.428e+09-3.924e+09
Search And News Advertising2.926e+092.928e+093.223e+093.045e+093.012e+09
Server Products And Cloud Services1.8839e+101.8388e+101.9594e+102.0025e+102.1963e+10
Windows6.408e+095.313e+094.808e+095.328e+096.058e+09

It is also possible to retrieve the geographic revenue segmentation which includes regions such as Americas, Europe, Greater China, Japan, and Rest of Asia Pacific and helps understand where companies retrieve their revenue from. As an example, a company like Microsoft might be based in the United States, their revenue streams are truly global.

As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(
    ["AAPL", "MSFT", "GOOGL", "AMZN"], api_key="FINANCIAL_MODELING_PREP_KEY", start_date="2021-05-01", quarterly=False
)

geographic_segmentation = toolkit.get_revenue_geographic_segmentation()

geographic_segmentation.loc['AAPL']

Which returns:

2020202120222023
Americas4.631e+105.1496e+104.9278e+103.5383e+10
Asia Pacific8.225e+099.81e+099.535e+095.63e+09
China2.1313e+102.5783e+102.3905e+101.5758e+10
Europe2.7306e+102.9749e+102.7681e+102.0205e+10
Japan8.285e+097.107e+096.755e+094.821e+09
</details> <details> <summary><b>ESG Scores</b></summary>

ESG scores, which stands for Environmental, Social, and Governance scores, are a crucial metric used by investors and organizations to assess a company’s sustainability and ethical practices. These scores provide valuable insights into a company’s performance in three key areas:

ESG scores provide investors with a holistic view of a company’s sustainability and ethical practices, allowing them to make more informed investment decisions. These scores are increasingly used to identify socially responsible investments and guide capital towards companies that prioritize long-term sustainability and responsible business practices. As the importance of ESG considerations continues to grow, companies are motivated to improve their ESG scores, not only for ethical reasons but also to attract investors who value sustainable and responsible business practices.

As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(
    ["MSFT", "TSLA", "AMZN"], api_key="FINANCIAL_MODELING_PREP_KEY", start_date="2022-08-01", quarterly=False
)

esg_scores = toolkit.get_esg_scores()

esg_scores.xs("MSFT", level=1, axis=1)

Which returns:

dateEnvironmental ScoreSocial ScoreGovernance ScoreESG Score
2022Q372.4258.3961.1363.98
2022Q472.2258.0561.2763.85
2023Q172.658.7461.8864.41
2023Q273.5460.7363.4465.9
</details>

Discover Instruments

The Discovery module contains lists of companies, cryptocurrencies, forex, commodities, etfs and indices including screeners, quotes, performance metrics and more to find and select tickers to use in the Finance Toolkit. Find the Notebook here and the documentation here which includes an explanation about the functionality, the parameters and an example.

<details> <summary><b>Companies</b></summary>

Screen stocks, obtain a list of companies, quotes, floating shares, sectors performance, biggest gainers, biggest losers, most active stocks and delisted companies.

Search Instruments

The search instruments function allows you to search for a company or financial instrument by name. It returns a dataframe with all the symbols that match the query. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

discovery.search_instruments(query='META')

Which returns:

SymbolNameCurrencyExchangeExchange Code
METAMeta Platforms, Inc.USDNASDAQ Global SelectNASDAQ
META.LWisdomTree Industrial Metals EnhancedUSDLondon Stock ExchangeLSE
METAUSDMetadium USDUSDCCCCRYPTO
META.MIWisdomTree Industrial Metals EnhancedEURMilanMIL
META.JKPT Nusantara Infrastructure TbkIDRJakarta Stock ExchangeJKT

Stock Screener

Screen stocks based on a set of criteria. This can be useful to find companies that match a specific criteria or your analysis. Further filtering can be done by utilising the Finance Toolkit and calculating the relevant ratios to filter by. This can be:

Note that the limit is 1000 companies. Thus if you hit the 1000, it is recommended to narrow down your search to prevent companies from being excluded simply because of this limit. Find the documentation here.

As an example:

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:

SymbolNameMarket CapSectorIndustryBetaPriceDividendVolumeExchangeExchange CodeCountry
NKENIKE, Inc.163403295604Consumer CyclicalFootwear & Accessories1.079107.361.481045865New York Stock ExchangeNYSEUS
SAF.PASafran SA66234006559IndustrialsAerospace & Defense1.339160.161.35119394ParisEURONEXTFR
ROSTRoss Stores, Inc.46724188589Consumer CyclicalApparel Retail1.026138.7851.34169879NASDAQ Global SelectNASDAQUS
HESHess Corporation44694706090EnergyOil & Gas E&P1.464145.511.75123147New York Stock ExchangeNYSEUS

Company List

The stock list function returns a complete list of all the symbols that can be used in the FinanceToolkit. These are over 60.000 symbols. Find the documentation here.

As an example:

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[38000:38010]

Which returns:

SymbolNamePriceExchangeExchange Code
LEO.VLion Copper and Gold Corp.0.09Toronto Stock Exchange VenturesTSX
LEOF.TALewinsky-Ofer Ltd.263.1Tel AvivTLV
LEONLeone Asset Management, Inc.0.066Other OTCOTC
LEON.SWLeonteq AG34.35Swiss ExchangeSIX
LER.AXLeaf Resources Limited0.014Australian Securities ExchangeASX
LERTHAI.BOLERTHAI FINANCE LIMITED265Bombay Stock ExchangeBSE
LES.WALess S.A.0.22Warsaw Stock ExchangeWSE
LESAFLe Saunda Holdings Limited0.071Other OTCPNK
LESHAIND.BOLesha Industries Limited4.68Bombay Stock ExchangeBSE
LESLLeslie's, Inc.6.91NASDAQ Global SelectNASDAQ

Company Quotes

Returns the real time stock prices for each company. This includes the bid and ask size, the volume, the bid and ask price, the last sales price and the last sales size. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

stock_quotes = discovery.get_stock_quotes()

stock_quotes.iloc[3000:3010]

Which returns:

SymbolBid SizeAsk PriceVolumeAsk SizeBid PriceLast Sale PriceLast Sale SizeLast Sale Time
EIPX00596760021.2801.7039e+12
EIRL264.675455257.761.131601.7039e+12
EIS1061.7115886256.258.190901.7039e+12
EIX175.71.41398e+06150.171.4901.70389e+12
EJAN131.42252595128.128.6701.7039e+12
EJH63.83083.823.821001.7042e+12
EJUL227.9710226223.1623.6301.7039e+12
EKG420119716.3815.935701.70388e+12
EKSO32.54052.312.311001.7042e+12
EL1143.901142.51431001.7042e+12

Floating Shares

Returns the shares float for each company. The shares float is the number of shares available for trading for each company. It also includes the number of shares outstanding and the date. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

shares_float = discovery.get_stock_shares_float()

shares_float.iloc[50000:50010]

Which returns:

SymbolDateFree FloatFloat SharesOutstanding Shares
OPY.AXNaT51.47461198535482.3284e+08
OPYGYNaT4.49504608920471.35465e+09
OQAL2024-01-01 13:12:2300226543
OQLGF2023-12-31 21:48:070.676511506071.70082e+08
OR2024-01-02 05:18:0399.32811839218691.85166e+08
OR-R.BK2024-01-01 05:29:3023.15327783600001.2e+10
OR.BK2024-01-02 03:52:3922.784727341640001.2e+10
OR.PA2024-01-02 07:57:3545.27272420844455.34725e+08
OR.SW2023-12-31 13:38:1045.27273557439607.8578e+08
OR.TO2023-12-31 17:56:3399.33171839285351.85166e+08

Sectors Performance

Returns the sectors performance for each sector. This features the sector performance over the last months. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

sectors_performance = discovery.get_sectors_performance()

sectors_performance.tail()

Which returns:

DateUtilitiesBasic MaterialsCommunication ServicesConsumer CyclicalConsumer DefensiveEnergyFinancial ServicesHealthcareIndustrialsReal EstateTechnology
2023-12-270.135110.40986-0.239630.103580.48048-0.274990.301530.757150.302340.359460.02372
2023-12-280.80513-0.45131-0.15858-0.458740.03828-0.816410.02954-0.013450.228080.59612-0.15283
2023-12-29-0.01347-0.14525-0.15072-0.588790.18141-0.42463-0.34718-0.082-0.2181-0.52222-0.57062
2024-01-01-0.01347-0.14536-0.15074-0.588770.18141-0.41917-0.34753-0.08193-0.21821-0.52216-0.5708
2024-01-02-0.01347-0.14536-0.15074-0.588770.18141-0.41917-0.34779-0.08193-0.21823-0.52281-0.57073

Biggest Gainers

Returns the biggest gainers for the day. This includes the symbol, the name, the price, the change and the change percentage. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

biggest_gainers = discovery.get_biggest_gainers()

biggest_gainers.head(10)

Which returns:

SymbolNameChangePriceChange %
AAMEAtlantic American Corporation0.30012.450113.9581
ADAPAdaptimmune Therapeutics plc0.10290.79314.9109
ADTXAditxt, Inc.1.816.6337.5519
AFMDAffimed N.V.0.08610.62515.977
AIHAesthetic Medical International Holdings Group Limited0.10160.689617.2789
ANTEAirNet Technology Inc.0.12290.829917.3833
APREAprea Therapeutics, Inc.1.044.728.4153
ASTRAstra Space, Inc.0.552.2831.7919
BHGBright Health Group, Inc.2.377.6345.057
BROGBrooge Energy Limited0.733.6824.7458

Biggest Losers

Returns the biggest losers for the day. This includes the symbol, the name, the price, the change and the change percentage. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

biggest_losers = discovery.get_biggest_losers()

biggest_losers.head(10)

Which returns:

SymbolNameChangePriceChange %
AGAEAllied Gaming & Entertainment Inc.-0.21.06-15.873
AVTXAvalo Therapeutics, Inc.-2.73399.1-23.1023
BAYARBayview Acquisition Corp Right-0.030.12-20
BBLGBone Biologics Corporation-1.484.52-24.6667
BKYIBIO-key International, Inc.-0.63-16.6667
BREABrera Holdings PLC Class B Ordinary Shares-0.20640.6112-25.2446
BTBTBit Digital, Inc.-0.864.23-16.8959
BTCSBTCS Inc.-0.691.63-29.7414
BTDRBitdeer Technologies Group-3.369.86-25.416
BYNBanyan Acquisition Corporation-2.03510.9-15.7325

Most Active

Returns the most active stocks for the day. This includes the symbol, the name, the price, the change and the change percentage. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

most_active_stocks = discovery.get_most_active_stocks()

most_active_stocks.head(10)

Which returns:

SymbolNameChangePriceChange %
AAPLApple Inc.-1.05192.53-0.5424
ADTXAditxt, Inc.1.816.6337.5519
AMDAdvanced Micro Devices, Inc.-1.35147.41-0.9075
AMZNAmazon.com, Inc.-1.44151.94-0.9388
BACBank of America Corporation-0.2133.67-0.6198
BITFBitfarms Ltd.-0.412.91-12.3494
BITOProShares Bitcoin Strategy ETF-0.3320.49-1.585
CANCanaan Inc.-0.52.31-17.7936
CLSKCleanSpark, Inc.-2.0811.03-15.8657
DISHDISH Network Corporation0.115.771.9435

Delisted Companies

The delisted stocks function returns a complete list of all delisted stocks including the IPO and delisted date. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

delisted_stocks = discovery.get_delisted_stocks()

delisted_stocks.head(10)

Which returns:

SymbolNameExchangeIPO DateDelisted Date
AAICArlington Asset Investment Corp.NYSE1997-12-232023-12-14
ABCMAbcam plcNASDAQ2010-12-032023-12-12
ADZDB Agriculture Short ETNAMEX2008-04-162023-10-27
AENZAenza S.A.A.NYSE2013-07-242023-12-08
AKUMQAkumin IncNASDAQ2018-03-082023-10-25
ALTMWKinetik Holdings Inc - Warrants (09/11/2023)NASDAQ2017-05-012023-11-07
ARCEArco Platform LimitedNASDAQ2018-09-262023-12-07
ARTEWArtemis Strategic Investment CorporationNASDAQ2021-11-222023-11-03
ASPAUAbri SPAC I, Inc.NASDAQ2021-08-102023-11-02
AVIDAvid Technology, Inc.NASDAQ1993-03-122023-11-07
</details> <details> <summary><b>Cryptocurrencies</b></summary>

Obtain cryptocurrency lists and cryptocurrency quotes that can be used in the Finance Toolkit.

Cryptocurrency List

The crypto list function returns a complete list of all crypto symbols that can be used in the FinanceToolkit. These are over 4.000 symbols. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

crypto_list = discovery.get_crypto_list()

crypto_list.head(10)

Which returns:

SymbolNameCurrencyExchange
.ALPHAUSD.Alpha USDUSDCCC
00USD00 Token USDUSDCCC
0NEUSDStone USDUSDCCC
0X0USD0x0.ai USDUSDCCC
0X1USD0x1.tools: AI Multi-tool Plaform USDUSDCCC
0XAUSD0xApe USDUSDCCC
0XBTCUSD0xBitcoin USDUSDCCC
0XENCRYPTUSDEncryption AI USDUSDCCC
0XGASUSD0xGasless USDUSDCCC
0XMRUSD0xMonero USDUSDCCC

Cryptocurrency Quotes

Returns the quotes for each crypto. This includes the symbol, the name, the price, the change, the change percentage, day low, day high, year high, year low, market cap, 50 day average, 200 day average, volume, average volume, open, previous close, EPS, PE, earnings announcement, shares outstanding and the timestamp. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

crypto_quotes = discovery.get_crypto_quotes()

crypto_quotes.head(10)

Which returns:

SymbolNamePriceChange %ChangeDay LowDay HighYear HighYear LowMarket Cap50 Day Avg200 Day AvgVolumeAvg VolumeOpenPrevious CloseEPSPEEarnings AnnouncementShares OutstandingTimestamp
.ALPHAUSD.Alpha USD21.40230021.399121.4023193.25221.4023023.777451.04973016221.402321.4023nannannannan2022-10-10 23:28:00
00USD00 Token USD0.0824840.673630.000551920.08088630.08572880.285590.06293900.08532950.08241692103962354030.08193210.0819321nannannan02024-01-02 14:05:40
0NEUSDStone USD7.39e-10-1.70872-1.3e-117.37e-107.79e-107.76e-107.52e-100001110.14nan7.52e-107.52e-10nannannan02024-01-02 14:05:12
0X0USD0x0.ai USD0.153834.31010.006356430.147480.15510.179250.0002751.33615e+080.125820.07343788052571.17131e+060.147480.14748nannannan8.68563e+082024-01-02 14:05:13
0X1USD0x1.tools: AI Multi-tool Plaform USD0.005962682.655580.0001542480.005808430.006088360.485040.00508900.005875160.044809642.99762160.005808430.00580843nannannan02024-01-02 14:06:00
0XAUSD0xApe USD9.86177e-06-99.9921-0.125199.86177e-060.125270.125279.86177e-0601.08846e-051.08846e-05197nan0.12520.1252nannannannan2023-06-24 18:30:00
0XBTCUSD0xBitcoin USD0.0974780.60030.000581670.09442550.103934.134190.032229461950.174780.39561344.45978560.09689630.0968963nannannan9.70675e+062024-01-02 14:05:24
0XENCRYPTUSDEncryption AI USD0.0213021000.02130210.021302115.40640.02032601.554383.2651522024580.02130210.0213021nannannannan2023-07-26 18:30:00
0XGASUSD0xGasless USD0.1122812.18940.01219970.100080.112280.192163.7e-0500.0385690.0143848870096280.100080.10008nannannan02024-01-02 14:06:00
0XMRUSD0xMonero USD0.0497938-38.9213-0.03173020.04966462.790130.187340.041888900.136160.11633347.276110.0815240.081524nannannannan2024-01-02 14:05:07
</details> <details> <summary><b>Forex</b></summary>

Obtain forex lists and forex quotes that can be used in the Finance Toolkit.

Forex List

The forex list function returns a complete list of all forex symbols that can be used in the FinanceToolkit. These are over 1.000 symbols. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

forex_list = discovery.get_forex_list()

forex_list.head(10)

Which returns:

SymbolNameCurrencyExchange
AEDAUDAED/AUDAUDCCY
AEDBHDAED/BHDBHDCCY
AEDCADAED/CADCADCCY
AEDCHFAED/CHFCHFCCY
AEDDKKAED/DKKDKKCCY
AEDEURAED/EUREURCCY
AEDGBPAED/GBPGBPCCY
AEDILSAED/ILSILSCCY
AEDINRAED/INRINRCCY
AEDJODAED/JODJODCCY

Forex Quotes

Returns the quotes for each forex. This includes the symbol, the name, the price, the change, the change percentage, day low, day high, year high, year low, market cap, 50 day average, 200 day average, volume, average volume, open, previous close, EPS, PE, earnings announcement, shares outstanding and the timestamp. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

forex_quotes = discovery.get_forex_quotes()

forex_quotes.head(10)

Which returns:

SymbolNamePriceChange %ChangeDay LowDay HighYear HighYear Low50 Day Avg200 Day AvgVolumeAvg VolumeOpenPrevious CloseTimestamp
AEDAUDAED/AUD0.400890.408260.001630.397660.401180.433410.380410.415140.4137211nan0.399210.399262024-01-02 14:02:15
AEDBHDAED/BHD0.102620.06086376.2422e-050.102440.102660.103230.09913990.102640.102413748.0060.1025602024-01-02 13:46:14
AEDCADAED/CAD0.361770.435870.001570.359960.362950.378170.356570.37010.3671614nan0.360020.36022024-01-02 14:02:15
AEDCHFAED/CHF0.230620.87040.001990.228470.230990.256930.22780.239760.24231nannan0.228470.228632024-01-02 14:02:15
AEDDKKAED/DKK1.8402384.0230.840231.837751.840811.940681.784241.865721.870371649.53291.8387412024-01-02 09:37:59
AEDEURAED/EUR0.24860.810440.001998570.246360.248710.2650.24170.252710.2519738nan0.246680.24662024-01-02 14:02:15
AEDGBPAED/GBP0.214990.759240.001620.212980.21570.230390.20730.218020.2173214nan0.21330.213372024-01-02 14:02:15
AEDILSAED/ILS0.98746-100nan0.983850.995361.11080.978281.012411.03478923549.2640.98761nan2024-01-02 14:05:06
AEDINRAED/INR22.70250.140760.031910122.62522.7222.7220.196619.865320.196614nan22.708222.67062024-01-02 14:02:15
AEDJODAED/JOD0.19335-3.32563-0.006651260.193150.193640.194120.191850.193140.193153818.84510.193310.22024-01-02 13:51:18
</details> <details> <summary><b>Commodities</b></summary>

Obtain commodity lists and company quotes that can be used in the Finance Toolkit.

Commodity List

The commodity list function returns a complete list of all commodity symbols that can be used in the FinanceToolkit. These are over 1.000 symbols. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

commodity_list = discovery.get_commodity_list()

commodity_list.head(10)

Which returns:

SymbolNameCurrencyExchange
ALIUSDAluminum FuturesUSDCOMEX
BZUSDBrent Crude OilUSDICE
CCUSDCocoaUSDICE
CLUSDCrude OilUSDCME
CTUSXCottonUSXICE
DCUSDClass III Milk FuturesUSDCME
DXUSDUS DollarUSDICE
ESUSDE-Mini S&P 500USDCME
GCUSDGold FuturesUSDCME
GFUSXFeeder Cattle FuturesUSXCME

Commodity Quotes

Returns the quotes for each commodity. This includes the symbol, the name, the price, the change, the change percentage, day low, day high, year high, year low, market cap, 50 day average, 200 day average, volume, average volume, open, previous close, EPS, PE, earnings announcement, shares outstanding and the timestamp. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

commodity_quotes = discovery.get_commodity_quotes()

commodity_quotes.head(10)

Which returns:

SymbolNamePriceChange %ChangeDay LowDay HighYear HighYear Low50 Day Avg200 Day AvgVolumeAvg VolumeOpenPrevious CloseTimestamp
ALIUSDAluminum Futures2347-1.12691-26.7523442383.52670.752073.252200.862221.044321222370.752373.752024-01-02 13:54:40
BZUSDBrent Crude Oil78.11.375911.0677.2179.0697.6368.281.29181.937722853006077.2177.042024-01-02 14:10:12
CCUSDCocoa4249.51.2750253.5101.034274.5447825074115.523483.991859614509420941962024-01-02 14:10:12
CLUSDCrude Oil72.631.367760.9871.6373.6595.0363.6476.383677.73643772030771571.7171.652024-01-02 14:10:12
CTUSXCotton80.78-0.2716-0.223.8781.7590.7574.7779.839482.72249601591180.87812024-01-02 14:10:00
DCUSDClass III Milk Futures16.351.55280.2515.4317.1620.4913.7516.666816.72655121216.116.12024-01-02 13:36:35
DXUSDUS Dollar101.8620.824520.833101.027101.88107.0599.22103.915103.24299914880101.065101.0292024-01-02 14:10:10
ESUSDE-Mini S&P 5004783-0.76763-374777.7548284841.53808.754527.314378.91759101.63378e+06481848202024-01-02 14:00:13
GCUSDGold Futures20750.154463.22071.42094.72130.21808.12003.861960.643845635112072.72071.82024-01-02 14:00:13
GFUSXFeeder Cattle Futures223.1250.01120570.025222.725224.45257.5177.55226.9230.11443953915224.4223.12023-12-29 19:04:57
</details> <details> <summary><b>ETFs & Indices</b></summary>

Obtain ETF and Index lists and quotes that can be used in the Finance Toolkit.

ETF List

The etf list function returns a complete list of all etf symbols that can be used in the FinanceToolkit. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

etf_list = discovery.get_etf_list()

etf_list.head(10)

Which returns:

SymbolNamePriceExchangeExchange Code
01002T.TWCathay No.1 REIT17.29TaiwanTAI
020Y.LiShares IV Public Limited Company - iShares Euro Government Bond 20yr Target Duration UCITS ETF3.9522London Stock ExchangeLSE
069500.KSKODEX 20036390KSEKSC
069660.KSKOSEF 20036370KSEKSC
091160.KSKodex Semicon36840KSEKSC
091170.KSKodex Banks6695KSEKSC
091180.KSKodex Autos19450KSEKSC
091220.KSMirae Asset TIGER Banks ETF6845KSEKSC
091230.KSMirae Asset TIGER Semicon ETF38400KSEKSC
098560.KSMirae Asset TIGER Media & Telecom ETF7335KSEKSC

Index List

The index list function returns a complete list of all etf symbols that can be used in the FinanceToolkit. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

index_list = discovery.get_index_list()

index_list.head(10)

Which returns:

SymbolNameCurrencyExchange
000001.SSSSE Composite IndexCNYShanghai
399967.SZCSI NATIONAL DEFENSECNYShenzhen
512.HKCES CHINA HK MAINLAND INDEXHKDHKSE
DX-Y.NYBUS Dollar/USDX - Index - CashUSDICE Futures
FTSEMIB.MIFTSE MIB IndexEURMilan
IAR.BAMERVAL ARGENTINAUSDBuenos Aires
IDX30.JKIDX30IDRJakarta Stock Exchange
IMOEX.MEMOEX Russia IndexRUBMCX
ITLMS.MIFTSE Italia All-Share IndexEURMilan
KOSPI200.KSKOSPI 200 IndexKRWKSE

Index Quotes

Returns the quotes for each index. This includes the symbol, the name, the price, the change, the change percentage, day low, day high, year high, year low, market cap, 50 day average, 200 day average, volume, average volume, open, previous close, EPS, PE, earnings announcement, shares outstanding and the timestamp. Find the documentation here.

As an example:

from financetoolkit import Discovery

discovery = Discovery(api_key="FINANCIAL_MODELING_PREP_KEY")

index_quotes = discovery.get_index_quotes()

index_quotes.head(10)

Which returns:

SymbolNamePriceChange %ChangeDay LowDay HighYear HighYear Low50 Day Avg200 Day AvgVolumeAvg VolumeOpenPrevious CloseTimestamp
000001.SSSSE Composite Index2962.28-0.4255-12.65872962.282976.273418.952882.022999.763160.833494082282906862972.782974.931704178820
399967.SZCSI NATIONAL DEFENSE9891.220.487547.99029834.9810041.410041.49834.9800111561019709857.199843.231704184147
512.HKCES CHINA HK MAINLAND INDEX6901.25006786.456912.546912.546786.4500278524471806862.61nan1434960128
DX-Y.NYBUS Dollar/USDX - Index - Cash102.1360.79240.803101.34102.167107.3599.58104.108103.42100101.417101.3331704204265
FTSEMIB.MIFTSE MIB Index30396.80.148845.169930326.930863.630863.62411129233.628164047392336230519.530351.61704203960
IAR.BAMERVAL ARGENTINA33784.6033784.633227.633871.533871.533227.6000033227.6nan1576872141
IDX30.JKIDX30498.4240.64863.212492.621498.424498.424492.6210000493.985495.2121704186018
IMOEX.MEMOEX Russia Index2222.51-0.1859-4.13992202.522234.554292.681681.552264.413183.63002225.022226.651657295461
ITLMS.MIFTSE Italia All-Share Index325070.085927.900432434.332999.132999.123017.322902.723017.30032651.232479.11704203955
KOSPI200.KSKOSPI 200 Index360.550.71512.56355.96361.53361.53355.96001067090356.43357.991704186335
</details>

Financial Ratios

The Ratios Module contains over 50+ ratios that can be used to analyse companies. These ratios are divided into 5 categories which are efficiency, liquidity, profitability, solvency and valuation. Each ratio is calculated using the data from the Toolkit module. Find the Notebook here and the documentation here which includes an explanation about the ratio, the parameters and an example.

It is also possible to define custom ratios and calculate these automatically based on the balance sheet, income and cash flow statements. With this, it is possible to calculate any collection of custom ratios without needing to understanding the backend of the Finance Toolkit. Learn how here.

All of these ratios can be calculated based on (lagged) growth as well as trailing (e.g. TTM) metrics. This is embedded in all ratios as well as the financial statements themselves which means it is possible to calculate revenue growth and 12-month (TTM) Price-to-Earnings with the parameters growth=True and trailing=4 respectively. Note that trailing is based on periods therefore TTM can only be calculated by setting quarterly=True in the Toolkit initialization.

<details> <summary><b>Efficiency Ratios ⚙️</b></summary>

The efficiency ratios are used to assess how well a company utilizes its assets and liabilities to generate revenue. They provide insight into the company’s operational efficiency and its ability to manage its assets and liabilities.

All ratios can be called by using get_ or collect_ to get a single ratio or to obtain all ratios of the category respectively. E.g. get_asset_turnover_ratio or collect_efficiency_ratios. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Collect all Ratios
toolkit.ratios.collect_efficiency_ratios()

# Get an Individual Ratio
toolkit.ratios.get_asset_turnover_ratio()

Asset Turnover Ratio

The asset turnover ratio is calculated by dividing the company’s net sales (revenue) by its average total assets. It measures how well a company utilizes its assets to generate revenue. A higher asset turnover ratio indicates that the company is generating more revenue per unit of assets, which is generally seen as a positive sign of operational efficiency. See documentation here.

Inventory Turnover Ratio

The inventory turnover ratio is calculated by dividing the cost of goods sold (COGS) by the average inventory value. It indicates how many times a company’s inventory is sold and replaced over a period. A higher inventory turnover ratio suggests that a company is effectively managing its inventory by quickly converting it into sales. See documentation here.

Days of Inventory Outstanding

The days sales in inventory ratio (DSI) is calculated by dividing the average inventory by the cost of goods sold (COGS) and then multiplying by the number of days in the period. It represents the average number of days it takes for a company to sell its inventory. A lower DSI indicates that the company is selling its inventory more quickly. See documentation here.

Days of Sales Outstanding

The days of sales outstanding (DSO) ratio is calculated by dividing the accounts receivable by the total credit sales and then multiplying by the number of days in the period. It represents the average number of days it takes for a company to collect payment on its credit sales. A lower DSO indicates that the company is collecting payments more quickly. See documentation here.

Operating Cycle

The operating cycle represents the total time required to purchase inventory, convert it into finished goods, sell the goods to customers, and collect the accounts receivable. It is calculated by adding the days sales in inventory (DSI) and the days of sales outstanding (DSO). See documentation here.

Accounts Payables Turnover Ratio

The accounts payable turnover ratio indicates how many times, on average, a company pays off its accounts payable during a specific period. A higher turnover ratio is generally favorable, as it suggests that the company is efficiently managing its payments to suppliers. See documentation here.

Days of Accounts Payable Outstanding

The days payables outstanding (DPO) ratio is used to assess how efficiently a company manages its accounts payable. It calculates the average number of days it takes for a company to pay its suppliers after receiving an invoice. A higher DPO ratio indicates that the company is taking longer to pay its suppliers, which may have implications for its relationships with suppliers. Find the documentation here.

Cash Conversion Cycle (CCC)

The Cash Conversion Cycle (CCC) is an important measure of a company’s liquidity management and efficiency in managing its working capital. It takes into account the time it takes to sell inventory, collect payments from customers, and pay suppliers. A shorter CCC indicates that a company is able to quickly convert its investments into cash, which can be a positive sign of efficient operations. Find the documentation here.

Cash Conversion Efficiency (CCE)

The cash conversion efficiency ratio is calculated by dividing the operating cash flow by the revenue. It indicates how much of a company’s sales are converted into cash. A higher cash conversion efficiency ratio is generally favorable, as it suggests that the company is able to convert its sales into cash more efficiently. Find the documentation here.

Receivables Turnover

The receivables turnover ratio is an important measure of how well a company manages its accounts receivable. It indicates how quickly a company collects payments from its customers. A higher turnover ratio is generally favorable as it suggests that the company is collecting payments more quickly, which improves its cash flow and working capital management. Find the documentation here.

SGA to Revenue Ratio

The SG&A to revenue ratio is calculated by dividing the total SG&A expenses by the company’s revenue and then multiplying by 100 to express it as a percentage. It provides insight into the efficiency of a company’s cost management and its ability to control its overhead costs. Find the documentation here.

Fixed Asset Turnover

The Fixed Asset Turnover ratio is calculated by dividing the company’s net sales by the average fixed assets. It indicates how well a company is utilizing its fixed assets to generate revenue. A higher ratio suggests more efficient utilization of fixed assets. Find the documentation here.

Operating Ratio

The operating ratio is calculated by dividing the company’s operating expenses by its net sales and multiplying by 100 to express it as a percentage. It provides insight into how efficiently a company is managing its operations. Find the documentation here.

</details> <details> <summary><b>Liquidity Ratios 💧</b></summary>

The liquidity ratios are used to assess a company’s ability to meet its short-term obligations using its short-term assets. They provide insight into the company’s short-term financial health and its ability to cover its current obligations using its liquid assets.

All ratios can be called by using get_ or collect_ to get a single ratio or to obtain all ratios of the category respectively. E.g. get_current_ratio or collect_liquidity_ratios. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Collect all Ratios
toolkit.ratios.collect_liquidity_ratios()

# Get an Individual Ratio
toolkit.ratios.get_current_ratio()

Current Ratio

The current ratio is calculated by dividing a company’s current assets by its current liabilities. It indicates whether a company can meet its short-term obligations using its short-term assets. Find the documentation here.

Quick Ratio

The quick ratio is calculated by subtracting inventory from current assets and then dividing the result by current liabilities. It provides insight into a company’s ability to cover its short-term liabilities using its most liquid assets without relying on inventory. This ratio is also referred to as the Acid Test Ratio. Find the documentation here.

Cash Ratio

The cash ratio is calculated by dividing the sum of cash and cash equivalents by current liabilities. It provides insight into a company’s immediate ability to cover its short-term obligations using its most liquid assets. Find the documentation here.

Working Capital

The working capital is calculated by subtracting total current liabilities from total current assets. It represents the company’s short-term financial health and its ability to cover its current obligations using its liquid assets. Find the documentation here.

Operating Cash Flow Ratio

The operating cash flow ratio is calculated by dividing operating cash flow by current liabilities. It indicates whether a company’s operating cash flow is sufficient to cover its short-term obligations. Find the documentation here.

Operating Cash Flow Sales Ratio

The operating cash flow to sales ratio is calculated by dividing operating cash flow by sales revenue. It indicates the proportion of sales revenue that is converted into cash from operating activities. Find the documentation here.

Short Term Coverage Ratio

The short-term coverage ratio is calculated by dividing operating cash flow by short-term debt. It assesses the company’s ability to meet its short-term obligations using its operating cash flow. Find the documentation here.

</details> <details> <summary><b>Profitability Ratios 💰</b></summary>

The profitability ratios are used to assess a company’s ability to generate profits from its operations. They provide insight into the company’s operational efficiency and its ability to generate profits from its revenue.

All ratios can be called by using get_ or collect_ to get a single ratio or to obtain all ratios of the category respectively. E.g. get_gross_margin or collect_liquidity_ratios. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Collect all Ratios
toolkit.ratios.collect_profitability_ratios()

# Get an Individual Ratio
toolkit.ratios.get_current_ratio()

Gross Margin

The gross margin ratio is calculated by subtracting the cost of goods sold (COGS) from the total revenue and then dividing the result by the total revenue. It represents the portion of revenue that contributes to covering other expenses and generating profit. Find the documentation here.

Operating Margin

The operating margin ratio is calculated by subtracting the operating expenses from the total revenue and then dividing the result by the total revenue. It indicates how efficiently a company is managing its operating expenses in relation to its revenue. Find the documentation here.

Net Profit Margin

The net profit margin ratio is calculated by dividing the net income by the total revenue. It indicates the portion of each dollar of revenue that represents profit after all expenses have been deducted. A higher net profit margin is generally considered favorable. Find the documentation here.

Interest Burden Ratio

The Interest Burden or Interest Coverage Ratio is calculated by dividing the earnings before interest and taxes (EBIT) by the interest expenses. A higher ratio indicates that the company has more earnings to cover its interest expenses, which is generally considered favorable. Find the documentation here.

Income Before Tax Profit Margin

The Income Before Tax Profit Margin or Pretax Profit Margin is calculated by dividing the pre-tax profit by the revenue. It provides insight into how efficiently a company is able to generate profits from its revenue. Find the documentation here.

Effective Tax Rate

The effective tax rate is calculated by dividing the income tax expense by the pre-tax income. A financial ratio that measures the percentage of pretax income that is paid as taxes. Find the documentation here.

Return on Assets (RoA)

The return on assets is calculated by dividing the net income by the average total assets. Note that it is false to take the total assets at the end of the period given that income statements report over the period whereas a balance sheet reports on the period. Find the documentation here.

Return on Equity (RoE)

The return on equity is calculated by dividing the net income by the average shareholders’ equity. Shareholders’ equity represents the residual interest in the assets of a company after deducting liabilities. Note that it is false to take the total assets at the end of the period given that income statements report over the period whereas a balance sheet reports on the period. ROE provides insight into the company’s ability to generate profits from the investments made by its shareholders. A higher ROE indicates that the company is using its equity effectively to generate higher returns for its shareholders. Find the documentation here.

Return on Invested Capital (RoIC)

The return on invested capital is calculated by dividing the net operating profit after taxes (NOPAT) by the average invested capital. Invested capital includes both equity and debt, making this ratio a valuable measure of how efficiently a company generates returns for all of its investors. Find the documentation here.

Income Quality Ratio

The income quality ratio provides insights into the quality of a company’s reported earnings. By comparing the cash flow from operating activities to the net income, this ratio helps assess whether a company’s reported profits are backed by actual cash flow. A higher income quality ratio suggests higher earnings quality and a better ability to convert profits into cash flow. Find the documentation here.

Return on Tangible Assets (RoTA)

The return on tangible assets (ROTA) provides insights into the efficiency with which a company utilizes its tangible assets to generate profits. Tangible assets include physical assets such as buildings, machinery, and equipment. ROTA indicates how well a company can generate profits from its core operational assets. Find the documentation here.

Return on Capital Employed (RoCE)

The return on capital employed (ROCE) is a crucial financial metric that evaluates the efficiency and profitability of a company’s utilization of both equity and debt capital to generate profits. It assesses how well the company generates earnings relative to the total capital invested in the business. Find the documentation here.

Net Income per EBT

The net income per earnings before taxes (EBT) ratio helps evaluate the extent to which a company’s net income is generated from its operating activities before considering the impact of income taxes. It gives insights into how effectively a company generates profit relative to its taxable income. Find the documentation here.

Free Cash Flow Operating Cash Flow Ratio

The free cash flow to operating cash flow ratio helps assess how well a company’s operating activities translate into free cash flow, which is the cash available after all expenses and investments. A higher ratio indicates that the company is generating strong free cash flow relative to its operating cash flow, which could signify efficient capital management. Find the documentation here.

Tax Burden Ratio

The tax burden ratio measures the portion of a company’s earnings that is paid as taxes. A higher ratio indicates that a larger portion of the income is being retained by the company after taxes. This ratio provides insights into the tax efficiency of the company and its ability to manage its tax liabilities. Find the documentation here.

EBT to EBIT

The EBT to EBIT ratio measures the proportion of a company’s earnings that is generated before paying interest and taxes. It provides insights into how a company’s operating performance is impacted by interest expenses and tax obligations. A higher ratio indicates that a larger portion of the company’s earnings is generated from its core operations before considering interest payments and taxes. Find the documentation here.

EBIT to Revenue

The EBIT to Revenue ratio measures the company’s ability to generate profit from its core operations relative to its revenue. It provides insights into the operational efficiency and profitability of the company, as it excludes the impact of interest expenses and taxes on its earnings. A higher ratio indicates that a larger portion of the company’s revenue is converted into operating profit. Find the documentation here.

</details> <details> <summary><b>Solvency Ratios 🪨</b></summary>

The solvency ratios are used to assess a company’s ability to meet its long-term obligations using its long-term assets. They provide insight into the company’s long-term financial health and its ability to cover its long-term obligations using its long-term assets.

All ratios can be called by using get_ or collect_ to get a single ratio or to obtain all ratios of the category respectively. E.g. get_debt_to_assets_ratio or collect_solvency_ratios. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Collect all Ratios
toolkit.ratios.collect_solvency_ratios()

# Get an Individual Ratio
toolkit.ratios.get_debt_to_assets_ratio()

Debt to Assets Ratio

This ratio, also known as the Debt Ratio, indicates the percentage of a company’s total assets that are funded by debt. It is a measure of a company’s financial leverage and indicates the extent to which a company relies on borrowed funds to finance its operations. A higher ratio implies a higher level of debt in the company’s capital structure, which could increase financial risk. Find the documentation here.

Debt to Equity Ratio

The debt to equity ratio, for short the D/E ratio, indicates the relative contribution of debt and equity to a company’s capital structure. It helps assess the level of financial risk a company carries due to its debt obligations. A higher ratio implies a higher reliance on debt to finance the business, which could increase risk but also potentially lead to higher returns for shareholders. Find the documentation here.

Interest Coverage Ratio

The interest coverage ratio evaluates a company’s ability to meet its interest obligations from its operating income. A higher ratio indicates a company’s stronger ability to cover its interest payments using its earnings, implying lower financial risk. Conversely, a lower ratio suggests a company may have difficulty meeting its interest obligations and could be at higher risk of default. Find the documentation here.

Equity Multiplier

The equity multiplier helps assess the financial leverage of a company by indicating how much of its assets are financed by equity versus debt. A higher equity multiplier suggests that the company relies more on debt financing, which can amplify returns but also increases financial risk. Conversely, a lower equity multiplier indicates a larger portion of assets is financed by equity, potentially lowering financial risk. Find the documentation here.

Debt Service Coverage Ratio

The debt service coverage ratio provides insights into a company’s ability to meet its debt obligations from its operating income. It is especially important for companies with significant debt obligations, as a lower ratio indicates higher financial risk and potential difficulties in servicing debt payments. Find the documentation here.

Free Cash Flow Yield

The free cash flow yield ratio is a measure of how efficiently a company generates free cash flow relative to its market value. It provides insights into whether the company’s valuation is reasonable compared to the amount of cash it generates. Find the documentation here.

Net Debt to EBITDA Ratio

The net debt to EBITDA ratio is a measure of a company’s ability to manage its debt obligations in relation to its earnings and cash flow. A lower ratio indicates better financial health and a stronger ability to manage debt. Find the documentation here.

Cash Flow Coverage Ratio

The cash flow coverage ratio assesses a company’s ability to meet its debt obligations by comparing its operating cash flow to its total debt. A higher ratio indicates a stronger ability to cover its debt with cash generated from operations. Find the documentation here.

CAPEX Coverage Ratio

The capex coverage ratio evaluates a company’s ability to fund its capital expenditures, which are essential for maintaining and growing its business, using the cash generated from its operations. A higher ratio indicates a stronger ability to fund capital investments from operating cash flow. Find the documentation here.

CAPEX Dividend Coverage Ratio

The capex dividend coverage ratio assesses whether a company’s cash flow from operations is sufficient to cover both its capital expenditures (which are essential for maintaining and growing its business) and its dividend payments to shareholders. A higher ratio indicates a stronger ability to fund both capex and dividends from operating cash flow. Find the documentation here.

</details> <details> <summary><b>Valuation Ratios ⚖️</b></summary>

The valuation ratios are used to assess the relative value of a company’s stock. They provide insight into the company’s valuation and its attractiveness as an investment opportunity.

All ratios can be called by using get_ or collect_ to get a single ratio or to obtain all ratios of the category respectively. E.g. get_earnings_per_share or collect_valuation_ratios. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Collect all Ratios
toolkit.ratios.collect_valuation_ratios()

# Get an Individual Ratio
toolkit.ratios.get_earnings_per_share()

Earnings per Share (EPS)

The earnings per share (EPS) is a widely used financial metric that helps investors understand the profitability of a company on a per-share basis. It provides insight into the portion of a company’s earnings that is allocated to each outstanding share of its common stock. EPS is an important measure for investors and analysts when assessing a company’s financial performance and comparing it to other companies. Find the documentation here.

Revenue per Share (RPS)

The revenue per share is an important metric that provides insight into a company’s ability to generate revenue on a per-share basis. It can help investors understand the company’s revenue-generation efficiency and its overall financial health. Find the documentation here.

Price Earnings Ratio (PE)

The price earnings ratio is a widely used valuation metric that helps investors assess the relative value of a company’s stock. A higher P/E ratio may indicate that the market has high expectations for the company’s future growth, while a lower P/E ratio may suggest that the company is undervalued. Find the documentation here.

Price to Earnings Growth Ratio (PEG)

The price--to-earnings growth (PEG) ratio provides a more comprehensive valuation measure compared to the P/E ratio alone. It takes into account a company’s earnings growth rate, allowing investors to assess whether a stock is overvalued or undervalued relative to its growth prospects. Find the documentation here.

Book Value per Share

The book value per share is a fundamental valuation metric that reflects the net worth of a company attributed to each outstanding share of common stock. Find the documentation here.

Price to Book Ratio (PB)

The price to book ratio is a key valuation metric that helps investors assess whether a company’s stock is overvalued or undervalued relative to its underlying net asset value. Find the documentation here.

Interest Debt per Share

The interest debt per share ratio provides insight into how much interest a company pays on its debt relative to its shareholder base. It can help investors assess the financial burden of interest expenses on the company’s profitability. Find the documentation here.

CAPEX per Share

The capex per share ratio provides insight into how much capital a company invests in its operations and growth initiatives relative to its shareholder base. It can help investors assess the level of reinvestment into the business. Find the documentation here.

Dividend Yield

The dividend yield ratio is used by investors to assess the income potential of an investment in a company’s stock based on the dividends it pays out. A higher dividend yield can be attractive to income-seeking investors. Find the documentation here.

Weighted Dividend Yield

This dividend yield ratio takes into account the (diluted) weighted average shares and actual dividends paid as found in the cash flow statement. It provides a more accurate reflection of the dividends paid out per share, considering any changes in the number of shares. Find the documentation here.

Price to Cash Flow Ratio (P/CF)

The price to cash flow ratio is a key valuation metric that helps investors assess the relative value of a company’s stock. It is similar to the price to earnings ratio, but uses cash flow instead of earnings in the denominator. Find the documentation here.

Price to Free Cash Flow Ratio (P/FCF)

This price to free cash flow ratio provides insight into how the market values a company’s ability to generate free cash flow. It is a valuation ratio that compares a company’s market price to its free cash flow per share. Find the documentation here.

Market Capitalization

Market capitalization, often referred to as “market cap,” is the total value of a company’s outstanding shares of stock in the stock market. It is calculated by multiplying the current market price per share by the total number of outstanding shares. Find the documentation here.

Enterprise Value

The Enterprise Value (EV) is a measure of a company’s total value, often used as a more comprehensive alternative to market capitalization. It is calculated as the sum of a company’s market capitalization, outstanding debt, minority interest, and preferred equity, minus the cash and cash equivalents. Find the documentation here.

EV to Sales Ratio

This EV to Sales ratio compares the enterprise value (EV) to the total revenue generated by the company. It can provide insights into how efficiently a company is using its revenue to generate value for its investors. Find the documentation here.

EV to EBITDA Ratio

This EV to EBITDA ratio is a valuation ratio that measures a company’s total value (including debt and equity) relative to its EBITDA. It helps investors understand how many times the enterprise value exceeds the company’s EBITDA, providing insights into the company’s debt load and operating performance. Find the documentation here.

EV to Operating Cashflow Ratio

The EV to Operating Cashflow Ratio is a valuation ratio that measures a company’s total value (including debt and equity) relative to its operating cash flow. This ratio provides insights into how many times the enterprise value exceeds the company’s operating cash flow, indicating the company’s ability to generate cash from its operations. Find the documentation here.

EV to EBIT

Calculate the enterprise value over earnings before interest and taxes (EBIT) ratio, which is a valuation metric that compares a company’s total value (including debt and equity) relative to its earnings before interest and taxes. Find the documentation here.

Earnings Yield

The earnings yield ratio is a valuation metric that provides insights into how much a company’s earnings contribute to its stock price. It compares the earnings per share to the market price per share, helping investors understand the earnings potential of the company relative to its current market value. Find the documentation here.

Dividend Payout Ratio

The payout ratio is a financial metric that helps investors assess the portion of a company’s earnings that is being distributed to shareholders in the form of dividends. It’s a valuable indicator for dividend investors as it indicates the sustainability of dividend payments and the company’s approach to distributing profits. Find the documentation here.

Reinvestment Rate

The reinvestment rate is a financial metric that helps investors assess the portion of a company’s earnings that is being retained by the company for future growth. It’s a valuable indicator for dividend investors as it indicates the sustainability of dividend payments and the company’s approach to distributing profits. Find the documentation here.

Tangible Asset Value

The tangible asset value is a financial metric that represents the total value of a company’s assets that can be used to generate revenue. Tangible assets are those physical assets that have a finite monetary value and can be sold, used, or consumed. Find the documentation here.

Net Current Asset Value

The net current asset value is a financial metric that represents the total value of a company’s current assets minus its current liabilities. It indicates the extent to which a company’s short-term assets exceed its short-term liabilities. Find the documentation here.

</details>

Financial Models

The Models module is meant to execute well-known models such as DUPONT and the Discounted Cash Flow (DCF) model. These models are also directly related to the data retrieved from the Toolkit module. Find the Notebook here and the documentation here which includes an explanation about the model, the parameters and an example.

<details> <summary><b>Financial Models</b></summary>

The financial models are used to analyze a company’s financial performance and assess its financial health. They provide insights into the company’s profitability, efficiency, liquidity, solvency, and valuation given that they tend to combine both the financial ratios and the financial statements.

All models can be called by using get_. E.g. get_dupont_analysis or get_weighted_average_cost_of_capital. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Get Financial Model results
toolkit.ratios.get_weighted_average_cost_of_capital()

DuPont Analysis

The Dupont analysis is a method used to dissect and understand the factors that drive a company’s return on equity (ROE). It breaks down the ROE into three key components: Profit Margin, Asset Turnover, and Financial Leverage. Find the documentation here.

Extended DuPont Analysis

The Extended Dupont analysis is an advanced method used to break down the return on equity (ROE) into multiple components, providing a more detailed insight into the factors influencing a company’s profitability. It considers additional metrics such as Return on Assets (ROA), Total Asset Turnover, Financial Leverage, and more. Find the documentation here.

Enterprise Value Breakdown

The Enterprise Value (EV) breakdown provides a detailed view of its components. This include the market capitalization, the total debt, the minority interest, the preferred equity, the cash and cash equivalents, and the enterprise value. Find the documentation here.

Weighted Average Cost of Capital (WACC)

The Weighted Average Cost of Capital (WACC) is a financial metric used to estimate the cost of capital for a company. It represents the average rate of return a company must pay to its investors for using their capital. WACC takes into account the cost of both equity and debt, weighted by their respective proportions in the company’s capital structure. Find the documentation here.

Intrinsic Valuation

Intrinsic value is a fundamental concept in finance and investing that represents the true worth or value of an asset, security, or investment, independent of its current market price or prevailing market sentiment. It is a concept often associated with the value investing philosophy, made famous by legendary investors like Benjamin Graham and Warren Buffett. Understanding intrinsic value is crucial for investors looking to make informed decisions about where to allocate their capital.

This functionality uses DCF, or Discounted Cash Flow which is a widely used financial valuation method that allows investors and analysts to estimate the intrinsic value of an investment or business based on its expected future cash flows. It is a fundamental tool in finance and investment analysis, providing a systematic way to assess the present value of future cash flows while considering the time value of money. Find the documentation here.

Gordon Growth Model

The Gordon Growth Model, also known as the Dividend Discount Model (DDM) with Constant Growth, is a method used to estimate the intrinsic value of a stock based on its expected future dividends. The model assumes that dividends will grow at a constant rate indefinitely. The formula essentially discounts the future expected dividends to their present value, taking into account the required rate of return and the growth rate. The numerator represents the expected dividend in the next period and the denominator represents the required rate of return minus the growth rate. Find the documentation here.

Altman Z-Score

The Altman Z-Score is a financial metric used to predict the likelihood of a company going bankrupt. The Altman Z-Score is calculated using several financial ratios, including working capital to total assets, retained earnings to total assets, earnings before interest and taxes (EBIT) to total assets, market value of equity to book value of total liabilities, and sales to total assets. Find the documentation here.

Piotroski F-Score

The Piotroski Score is a comprehensive financial assessment tool that helps investors and analysts evaluate a company’s financial health and fundamental strength. The Piotroski Score was developed by Joseph Piotroski and is based on a set of nine fundamental financial criteria. Each criterion is assigned a score of 0 or 1, and the scores are then summed to calculate the Piotroski Score. Find the documentation here.

Present Value of Growth Opportunities (PVGO)

The Present Value of Growth Opportunities (PVGO) is a financial metric that represents the present value of a company’s future growth opportunities. It is calculated as the difference between the company’s current stock price and the discounted value of its future cash flows. Find the documentation here.

</details>

Options and Greeks

The Options module is meant to calculate theoretical values based on Black Scholes for European Options. This includes the theoretical value of the Option for each Strike Price and Expiration Date which is intelligently chosen. It also includes the First, Second and Third Order Greeks such as Delta, Gamma, Vega, Vomma and Ultima. Find the Notebook here and the documentation here which includes an explanation about the model, the parameters and an example.

<details> <summary><b>Option Pricing 📊</b></summary>

Option pricing are mathematical models that calculate the theoretical value of an option contract. It is widely used by traders and investors to determine the theoretical value of an option, and to assess the potential risks and rewards of a position.

Option Chains

Get the Option Chains which gives information about the currently available options as reported by Yahoo Finance. This returns the Contract Symbol, Strike Currency, Last Price, Absolute Change, Percent Change, Volume, Open Interest, Bid Pirce, Ask Price, Expiration, Last Trade Date, Implied Volatility and whether the option is In The Money. Find the documentation here.

Black Scholes Model

The Black Scholes Model is a mathematical model used to estimate the price of European-style options. It is widely used by traders and investors to determine the theoretical value of an option, and to assess the potential risks and rewards of a position.

Within Risk Management, defining the theoretical value of an option is important to assess the potential risk and rewards of an option position. A position that could be used to hedge a portfolio, for example, is a long put option. The theoretical value of this option can be used to determine the potential risk and rewards of this position.

The Black Scholes Model is based on several assumptions, including the following:

Find the documentation here.

Implied Volatility

The Implied Volatility (IV) is based on the Black Scholes Model and the actual option prices for any of the available expiration dates. Implied Volatility (IV) is a measure of how much the market expects the price of the underlying asset to fluctuate in the future. It is a key component of options pricing and can also be used to calculate the theoretical value of an option. It makes it possible to plot the Volatility Smile for each company and each expiration date as seen below. Find the documentation here.

<img style="background-color: white;" alt="Volatility Smile" width="400" src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/Volatility_smile.svg/1920px-Volatility_smile.svg.png">

Binomial Option Pricing Model

The Binomial Option Pricing Model is a mathematical model used to estimate the price of European and American style options. It does so by creating a binomial tree of price paths for the underlying asset, and then working backwards through the tree to determine the price of the option at each node.

The resulting output is a DataFrame containing the tickers, strike prices and movements as the index and the time to expiration as the columns. The movements index contains the number of up movements and the number of down movements. The output is the binomial tree displayed in a table. E.g. when using 10 time steps, the table for each strike price from each company will contain the actual binomial tree as also depicted in the image as seen below. Find the documentation here.

Binomial Tree

Stock Price Simulation

Simulate the Stock Price based on the Binomial Model, a mathematical model used to estimate the price of European and American style options. It does so by creating a binomial tree of price paths for the underlying asset based on the stock price, volatility, risk free rate, dividend yield and time to expiration. The stock price is then simulated based on the up and down movements.

The resulting output is a DataFrame containing the tickers and movements as the index and the time to expiration as the columns. The movements index contains the number of up movements and the number of down movements. The output is the binomial tree displayed in a table. E.g. when using 10 time steps, the table from each company will contain the actual binomial tree's stock prices as also depicted in the image as seen below. Find the documentation here.

Stock Price Simulation

</details> <details> <summary><b>First-Order Greeks</b></summary>

The first-order greeks are Delta, Dual Delta, Vega, Theta, Rho, Epsilon and Lambda. These greeks are used to assess the sensitivity of an option’s price to changes in the underlying asset’s price, volatility, time to expiration, risk-free interest rate, dividend yield, and strike price.

All greeks can be called by using get_ or collect_ to get a single greek or to obtain all greeks of the order respectively. E.g. get_delta or collect_first_order_greeks. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Collect all Greeks
toolkit.options.collect_first_order_greeks()

# Get an Individual Greek
toolkit.options.get_delta()

Delta

The delta is the rate of change of the option price with respect to the price of the underlying asset. The Delta can be interpreted as follows:

Find the documentation here.

Dual Delta

The dual delta is the actual probability of an option finishing in the money which is the first derivative of option price with respect to strike. The Dual Delta can be interpreted as the probability of an option finishing in the money. For example, if the Dual Delta is 0.5, then the probability of the option finishing in the money is 50%. Find the documentation here.

Vega

The vega is the rate of change of the option price with respect to the volatility of the underlying asset. The Vega can be interpreted as follows:

Find the documentation here.

Theta

The theta is the rate of change of the option price with respect to the passage of time. The Theta can be interpreted as follows:

Find the documentation here.

Rho

The rho is the rate of change of the option price with respect to the risk free interest rate. The Rho can be interpreted as follows:

Find the documentation here.

Epsilon

The epsilon is the rate of change of the option price with respect to the dividend yield. The Epsilon can be interpreted as follows:

Find the documentation here.

Lambda

The lambda is the rate of change of the option price with respect to the underlying price. The Lambda can be interpreted as follows:

Find the documentation here.

</details> <details> <summary><b>Second-Order Greeks</b></summary>

The second-order greeks are are Gamma, Dual Gamma, Vanna, Charm, Vomma, Vera and Veta. These greeks are used to assess the sensitivity of the first-order greeks to small changes in the underlying asset’s price, volatility, time to expiration, risk-free interest rate, dividend yield, and strike price.

All greeks can be called by using get_ or collect_ to get a single greek or to obtain all greeks of the order respectively. E.g. get_gamma or collect_second_order_greeks. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Collect all Greeks
toolkit.options.collect_second_order_greeks()

# Get an Individual Greek
toolkit.options.get_gamma()

Gamma

The gamma is the rate of change of the delta with respect to the price of the underlying asset. The Gamma can be interpreted as follows:

Find the documentation here.

Dual Gamma

Similar to Dual Delta, the Dual Gamma measures how fast dual delta changes with respect to the strike price. It therefore measures the change in the probability of an option finishing in the money with respect to the strike price. Find the documentation here.

Vanna

The vanna is the rate of change of the vega with respect to the price of the underlying asset. The Vanna can be interpreted as follows:

Find the documentation here.

Charm

The charm is the rate of change of the delta with respect to the time to expiration. The Charm can be interpreted as follows:

Find the documentation here.

Vomma

The vomma is the rate of change of the vega with respect to the volatility of the underlying asset. The vomma can be interpreted as follows:

Find the documentation here.

Vera

The vera is the rate of change of the rho with respect to volatility. The Vera can be interpreted as follows:

Find the documentation here.

Veta

The veta is the rate of change of the vega with respect to the time to expiration. The Veta can be interpreted as follows:

Find the documentation here.

Partial Derivative

The partial derivative is the rate of change of the option price with respect to the strike price. The partial derivative is used in the Breeden-Litzenberger theorem is used for risk-neutral valuation and was developed by Fischer Black and Robert Litzenberger in 1978. The theorem states that the price of any derivative security can be calculated by finding the expected value of the derivative under a risk-neutral measure. The theorem is based on the Black-Scholes model and the assumption that the underlying asset follows a lognormal distribution. Find the documentation here.

</details> <details> <summary><b>Third-Order Greeks</b></summary>

The third-order greeks are Speed, Zomma, Color and Ultima. These greeks are used to assess the sensitivity of the second-order greeks to small changes in the underlying asset’s price, volatility, time to expiration, risk-free interest rate, dividend yield, and strike price.

All greeks can be called by using get_ or collect_ to get a single greek or to obtain all greeks of the order respectively. E.g. get_ultima or collect_third_order_greeks. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Collect all Greeks
toolkit.options.collect_third_order_greeks()

# Get an Individual Greek
toolkit.options.get_ultima()

Speed

The speed is the rate of change of the gamma with respect to the price of the underlying asset. The Speed can be interpreted as follows:

Find the documentation here.

Zomma

The zomma is the rate of change of the gamma with respect to volatility. The Zomma can be interpreted as follows:

Find the documentation here.

Color

The color is the rate of change of the gamma with respect to time to expiration. The Color can be interpreted as follows:

Find the documentation here.

Ultima

The ultima is the rate of change of the vomma with respect to volatility. The Ultima can be interpreted as follows:

Find the documentation here.

</details>

Performance Metrics

The Performance module is meant to calculate important performance metrics such as Sharpe Ratio, Sortino Ratio, Treynor Ratio, Information Ratio, Jensen's Alpha, Beta, Capital Asset Pricing Model, Factor Models and more. Find the Notebook here and the documentation here which includes an explanation about the performance metrics, the parameters and an example.

<details> <summary><b>Performance Metrics</b></summary>

The performance metrics are used to assess the performance of a portfolio or investment strategy. They provide insights into the risk-adjusted returns of a portfolio or investment strategy, and can be used to compare the performance of different assets or investment strategies.

All performance metrics can be called by using get_ to get a single metric. E.g. get_alpha or get_beta. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Get Performance Metric Results
toolkit.performance.get_beta()

Beta

Beta is a financial metric used to assess the systematic risk of a stock or investment in relation to the overall market. It provides valuable insights into how a particular asset’s returns tend to move in response to fluctuations in the broader market. A stock’s Beta is calculated by analyzing its historical price movements and their correlation with the movements of a market index, typically the benchmark index like the S&P 500. Find the documentation here.

Capital Asset Pricing Model (CAPM)

CAPM, or the Capital Asset Pricing Model, is a financial model used to estimate the expected return on an investment, such as a stock or portfolio of stocks. It provides a framework for evaluating the risk and return trade-off of an asset or portfolio in relation to the overall market. CAPM is based on the following key components:

The Capital Asset Pricing Model (CAPM) is a widely used financial model that helps in determining the expected return of an asset or portfolio based on its systematic risk and the prevailing risk-free rate in the market. CAPM provides insights into how an asset or investment should be priced in order to offer an appropriate rate of return, given its level of risk compared to the overall market. Find the documentation here.

Factor Asset Correlations

Finds factor exposures for each asset. The major difference between the Fama and French Model here is that the correlation is taken as opposed to a Linear Regression in which the R-squared or Slope can be used to understand the exposure to each factor. For assessing the exposure or influence of a stock to external factors, it’s often preferable to use R-squared (R²) or Beta because it explicitly measures how well the factors explain the stock’s returns. A higher R² indicates that the stock’s returns are more closely related to the factors, and thus, the factors have a greater influence on the stock’s performance. Find the documentation here.

Factor Correlations

Calculates factor correlations between each factor. This is useful to understand how correlated each factor is to each other. This is based off the Fama and French 5 Factor model which includes:

Optionally, it is also possible to see the correlation between the risk-free rate and each factor. Find the documentation here.

Fama-French 5 Factor Model (FF)

The Fama and French 5 Factor model is a widely used financial model that helps estimate the expected return of financial assets, such as stocks or portfolios, based on five key factors:

The model can perform both a Simple Linear Regression on each factor as well as a Multi Linear Regression which includes all factors. Generally, a multi linear regression is applied but if you wish to see individual R-squared values for each factor you can select the simple linear regression method. Find the documentation here.

Alpha

Alpha, in a general sense, represents the excess return an investment generates relative to a benchmark or a risk-adjusted return. It can be positive (indicating the investment outperformed the benchmark) or negative (indicating underperformance). Find the documentation here.

Jensen's Alpha

Calculate Jensen’s Alpha, a measure of an asset’s performance relative to its expected return based on the Capital Asset Pricing Model (CAPM). Jensen’s Alpha is used to assess whether an investment has outperformed or underperformed its expected return given its systematic risk, as represented by the asset’s Beta. Find the documentation here.

Treynor Ratio

The Treynor Ratio, also known as Treynor’s Measure or the Reward-to-Variability Ratio, is a financial metric used to assess the risk-adjusted performance of an investment portfolio or asset. It measures the excess return generated by the portfolio per unit of systematic or market risk, often represented by Beta. The Treynor Ratio is a valuable tool for evaluating the performance of investments in relation to their market risk exposure. Find the documentation here.

Sharpe Ratio

The Sharpe ratio is calculated as the difference between the expected return of the asset or portfolio and the risk-free rate of return, divided by the standard deviation of the asset or portfolio’s excess return. It quantifies the amount of return generated for each unit of risk assumed, providing insights into the investment’s performance relative to the risk taken. Find the documentation here.

Sortino Ratio

The Sortino Ratio is a financial metric used to assess the risk-adjusted performance of an investment portfolio or asset by considering only the downside risk. It measures the excess return generated by the portfolio per unit of downside risk, specifically, the standard deviation of negative returns. The Sortino Ratio is particularly useful for investors who are primarily concerned with minimizing the downside risk of their investments. Find the documentation here.

Ulcer Performance Index (UPI)

Calculate the Ulcer Performance Index (UPI), alternatively called Martin ratio, a measure of risk-adjusted return that evaluates the excess return of an investment portfolio or asset per unit of risk taken. It can be used to compare volatilities in different stocks or show stocks go into Ulcer territory. Similar to the Sharpe Ratio, a higher UPI is better than a lower one (since investors prefer more return for less risk). Find the documentation here.

M2 Ratio

The M2 Ratio, also known as the Modigliani-Modigliani Measure, is a financial metric used to evaluate the risk-adjusted performance of an investment portfolio or strategy. It assesses the excess return generated by the portfolio relative to a risk-free investment, taking into account the portfolio’s volatility or risk. The M2 Ratio helps investors and portfolio managers determine whether the portfolio is delivering returns that justify its level of risk. Find the documentation here.

Tracking Error

Tracking Error is a financial metric that quantifies the volatility or dispersion of the difference between the returns of an investment portfolio or asset and the returns of a benchmark index. It measures how closely the portfolio tracks its benchmark and provides insights into the consistency of the portfolio’s performance relative to the benchmark. A higher Tracking Error indicates greater divergence from the benchmark, while a lower Tracking Error suggests that the portfolio closely follows the benchmark. Find the documentation here.

Information Ratio

The Information Ratio (IR), also known as the Information Coefficient, is a financial metric that assesses the risk-adjusted performance of a portfolio or investment strategy relative to a benchmark index. It quantifies how much excess return the portfolio generates for each unit of tracking error (volatility of tracking error). The Information Ratio is commonly used by portfolio managers, financial analysts, and investors to evaluate the skill of a portfolio manager in generating returns beyond what would be expected based on the risk taken. Find the documentation here.

Compound Annual Growth Rate (CAGR)

The Compound Annual Growth Rate is a measure that provides the mean growth rate of an investment over a specified period of time. It is a useful measure for comparing the performance of investments over different time periods or across different asset classes. The CGR is calculated by taking the ratio of the final value to the initial value, raising it to the inverse of the number of periods, and then subtracting one. Find the documentation here.

</details>

Risk Metrics

The Risk module is meant to calculate important risk metrics such as Value at Risk (VaR), Conditional Value at Risk (cVaR), Maximum Drawdown, Correlations, Beta, GARCH, EWMA and more. Find the Notebook here and the documentation here which includes an explanation about the risk metrics, the parameters and an example.

<details> <summary><b>Risk Metrics</b></summary>

The risk metrics are used to assess the risk of a portfolio or investment strategy. It helps in understanding maximum drawdowns, value at risk, conditional value at risk, volatility forecasts through GARCH and EWMA and more.

All risk metrics can be called by using get_ to get a single metric. E.g. get_value_at_risk or get_skewness. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Get Risk Metric Results
toolkit.risk.get_value_at_risk()

Value at Risk (VaR)

Value at Risk (VaR) is a risk management metric that quantifies the maximum potential loss an investment portfolio or asset may experience over a specified time horizon and confidence level. It provides insights into the downside risk associated with an investment and helps investors make informed decisions about risk tolerance. The VaR is calculated as the quantile of the return distribution, representing the loss threshold that is not expected to be exceeded with a given confidence level (e.g., 5% for alpha=0.05). Find the documentation here.

Conditional Value at Risk (cVaR)

Conditional Value at Risk (CVaR) is a risk management metric that quantifies the loss in the worst % of cases of an investment portfolio or asset may experience over a specified time horizon and confidence level. It provides insights into the downside risk associated with an investment and helps investors make informed decisions about risk tolerance. Find the documentation here.

Entropic Value at Risk (eVaR)

Entropic Value at Risk (EVaR) is a risk management metric that quantifies upper bound for the value at risk (VaR) and the conditional value at risk (CVaR) over a specified time horizon and confidence level. EVaR is obtained from the Chernoff inequality. It provides insights into the downside risk associated with an investment and helps investors make informed decisions about risk tolerance. Find the documentation here.

Maximum Drawdown (MDD)

Maximum Drawdown (MDD) is a risk management metric that quantifies the largest historical loss of n investment portfolio or asset experienced over a specified time horizon. It provides insights into the downside risk associated with an investment and helps investors make informed decisions about risk tolerance. Find the documentation here.

Ulcer Index (UI)

The Ulcer Index is a financial metric used to assess the risk and volatility of an investment portfolio or asset. Developed by Peter Martin in the 1980s, the Ulcer Index is particularly useful for evaluating the downside risk and drawdowns associated with investments. The Ulcer Index differs from traditional volatility measures like standard deviation or variance because it focuses on the depth and duration of drawdowns rather than the dispersion of returns. Find the documentation here.

GARCH (Generalized Autoregressive Conditional Heteroskedasticity) and Forecasts

GARCH (Generalized autoregressive conditional heteroskedasticity) is stochastic model for time series, which is for instance used to model volatility clusters, stock return and inflation. It is a generalisation of the ARCH models. It is also able to calculate the Sigma2 Forecasts. Find the documentation here.

Skewness

Skewness is a statistical measure used in finance to assess the asymmetry in the distribution of returns for an investment portfolio or asset over a defined period. It offers valuable insights into the shape of the return distribution, indicating whether returns are skewed towards the positive or negative side of the mean. Skewness is a crucial tool for investors and analysts seeking to understand the potential risk and return characteristics of an investment, aiding in the assessment of the distribution’s tails and potential outliers. It provides a means to gauge the level of skew in returns, enabling more informed investment decisions and risk management strategies. Find the documentation here.

Kurtosis

Kurtosis is a statistical measure used in finance to evaluate the shape of the probability distribution of returns for an investment portfolio or asset over a defined time period. It assesses the “tailedness” of the return distribution, indicating whether returns have fatter or thinner tails compared to a normal distribution. Kurtosis plays a critical role in risk assessment by revealing the potential presence of extreme outliers or the likelihood of heavy tails in the return data. This information aids investors and analysts in understanding the degree of risk associated with an investment and assists in making more informed decisions regarding risk tolerance. In essence, kurtosis serves as a valuable tool for comprehending the distribution characteristics of returns, offering insights into the potential for rare but significant events in the financial markets. Find the documentation here.

</details>

Technical Indicators

The Technicals Module contains 30+ Technical Indicators that can be used to analyse companies. These ratios are divided into 4 categories which are breadth, momentum, overlap and volatility. Each indicator is calculated using the data from the Toolkit module. Find the Notebook here and the documentation here which includes an explanation about the indicator, the parameters and an example.

<details> <summary><b>Breadth Indicators 💨</b></summary>

Breadth indicators are mathematical formulas that measure the number of advancing and declining stocks, and/or their volume, to calculate the participation in a stock index's price movements.

All technical indicators can be called by using get_ or collect_ to get a single indicator or to obtain all indicators of the category respectively. E.g. get_mcclellan_oscillator or collect_breadth_indicators. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Collect all Technical Indicators
toolkit.ratios.collect_breadth_indicators()

# Get an Individual Indicator
toolkit.ratios.get_mcclellan_oscillator()

McClellan Oscillator

The McClellan Oscillator is a breadth indicator that measures the difference between the exponential moving average of advancing stocks and the exponential moving average of declining stocks. Find the documentation here.

Advancers/Decliners Ratio

The Advancers/Decliners ratio is a breadth indicator that measures the number of advancing stocks (stocks with positive price changes) versus the number of declining stocks (stocks with negative price changes). Find the documentation here.

On-Balance Volume (OBV)

The On-Balance Volume (OBV) is a technical indicator that uses volume flow to predict changes in stock price. It accumulates the volume on up days and subtracts the volume on down days. The resulting OBV line provides insights into the buying and selling pressure behind price movements. Find the documentation here.

Accumulation/Distribution Line (ADL)

The Accumulation/Distribution Line is a technical indicator that evaluates the flow of money into or out of an asset. It takes into account both price and volume information to identify whether an asset is being accumulated (bought) or distributed (sold) by investors. Find the documentation here.

Chaikin Oscillator

The Chaikin Oscillator is a momentum-based indicator that combines price and volume to help identify potential trends and reversals in the market. It is calculated as the difference between the 3-day and 10-day Accumulation/Distribution Line. Find the documentation here.

</details> <details> <summary><b>Momentum Indicators ⏱️</b></summary>

Momentrum indicators are technical analysis tools used to determine the strength or weakness of a stock's price. Momentum measures the rate of the rise or fall of stock prices. Common momentum indicators include the relative strength index (RSI) and moving average convergence divergence (MACD).

All technical indicators can be called by using get_ or collect_ to get a single indicator or to obtain all indicators of the category respectively. E.g. get_williams_percent_r or collect_momentum_indicators. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Collect all Technical Indicators
toolkit.ratios.collect_momentum_indicators()

# Get an Individual Indicator
toolkit.ratios.get_williams_percent_r()

Money Flow Index

The Money Flow Index is a momentum indicator that measures the strength and direction of money flowing in and out of a security by considering both price and volume. Find the documentation here.

Williams %R

The Williams %R is a momentum indicator that measures the level of the close price relative to the high-low range over a certain number of periods. Find the documentation here.

Aroon Indicator

The Aroon Indicator is an oscillator that measures the strength of a trend and the likelihood of its continuation or reversal. Find the documentation here.

Commodity Channel Index

The Commodity Channel Index is an oscillator that measures the current price level relative to an average price level over a specified period. Find the documentation here.

Relative Vigor Index

The Relative Vigor Index is an oscillator that measures the conviction of a current price trend using the relationship between closing and opening prices. Find the documentation here.

Force Index

The Force Index is an indicator that measures the strength behind price movements. Find the documentation here.

Ultimate Oscillator

The Ultimate Oscillator is a momentum oscillator that combines short-, mid-term, and long-term price momentum into a single value. Find the documentation here.

Percentage Price Oscillator

The Percentage Price Oscillator (PPO) is a momentum oscillator that measures the difference between two moving averages as a percentage of the longer moving average. Find the documentation here.

Detrended Price Oscillator

The Detrended Price Oscillator (DPO) is an indicator that helps identify short-term cycles by removing longer-term trends from prices. Find the documentation here.

Average Directional Index (ADX)

The Average Directional Index (ADX) is an indicator that measures the strength of a trend, whether it’s an uptrend or a downtrend. Find the documentation here.

Chande Momentum Oscillator (CMO)

The Chande Momentum Oscillator is an indicator that measures the momentum of a price series and identifies overbought and oversold conditions. Find the documentation here.

Ichimoku Cloud

The Ichimoku Cloud, also known as the Ichimoku Kinko Hyo, is a versatile indicator that defines support and resistance, identifies trend direction, gauges momentum, and provides trading signals. Find the documentation here.

Stochastic Oscillator

The Stochastic Oscillator is a momentum indicator that shows the location of the close relative to the high-low range over a set number of periods. It consists of the %K line (fast) and the %D line (slow). Find the documentation here.

Moving Average Convergence Divergence (MACD)

The Moving Average Convergence Divergence (MACD) is a trend-following momentum indicator that shows the relationship between two moving averages of a security’s price. It consists of the MACD line, signal line, and MACD histogram. Find the documentation here.

Relative Strength Index (RSI)

The Relative Strength Index (RSI) is a momentum oscillator that measures the speed and change of price movements. It ranges from 0 to 100 and is used to identify overbought or oversold conditions in an asset’s price. Find the documentation here.

Balance of Power (BOP)

The Balance of Power (BOP) indicator measures the strength of buyers versus sellers in the market. It relates the price change to the change in the asset’s trading range. Find the documentation here.

</details> <details> <summary><b>Overlap Indicators 🌈</b></summary>

Overlap indicators are technical analysis tools that use the same scale as prices on a chart. They are plotted directly on top of the price chart and provide insights into the price action of an asset.

All technical indicators can be called by using get_ or collect_ to get a single indicator or to obtain all indicators of the category respectively. E.g. get_trix or collect_overlap_indicators. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Collect all Technical Indicators
toolkit.ratios.collect_overlap_indicators()

# Get an Individual Indicator
toolkit.ratios.get_trix()

Simple Moving Average (SMA)

The Moving Average (MA) is a commonly used technical indicator that smooths out price data by calculating the average price over a specified number of periods. Find the documentation here.

Exponential Moving Average (EMA)

EMA is a technical indicator that gives more weight to recent price data, providing a smoothed moving average that reacts faster to price changes. Find the documentation here.

Double Exponential Moving Average (DEMA)

DEMA is a technical indicator that attempts to reduce the lag from traditional moving averages by using a combination of two exponential moving averages. Find the documentation here.

Triple Exponential Moving Average (TRIX)

Trix is a momentum oscillator that calculates the percentage rate of change of a triple exponentially smoothed moving average. It helps identify overbought and oversold conditions in a market. Find the documentation here.

Triangular Moving Average (TMA)

The Triangular Moving Average (TMA) is a smoothed version of the Simple Moving Average (SMA) that uses multiple SMAs to reduce noise and provide a smoother trendline. Find the documentation here.

</details> <details> <summary><b>Volatility Indicators ⚠️</b></summary>

Volatility indicators are technical analysis tools that measure the volatility of an asset’s price movements. They are used to identify potential breakouts and reversals in the market.

All technical indicators can be called by using get_ or collect_ to get a single indicator or to obtain all indicators of the category respectively. E.g. get_true_range or collect_volatility_indicators. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Collect all Technical Indicators
toolkit.ratios.collect_volatility_indicators()

# Get an Individual Indicator
toolkit.ratios.get_true_range()

True Range (TR)

The True Range (TR) is a measure of market volatility that considers the differences between the high and low prices and the previous closing price. It provides insights into the price movement of an asset. Find the documentation here.

Average True Range (ATR)

The Average True Range (ATR) is a technical indicator that measures the volatility of an asset’s price movements over a specified number of periods. It provides insights into the potential price range of an asset, which can help traders and investors make more informed decisions. Find the documentation here.

Keltners Channels

The Keltner Channels are a technical indicator that uses volatility to identify potential breakouts and reversals in the market. They consist of an upper band, lower band, and middle line. Find the documentation here.

Bollinger Bands

Bollinger Bands are a volatility indicator that consists of three lines: an upper band, a middle band (simple moving average), and a lower band. The upper and lower bands are calculated as the moving average plus and minus a specified number of standard deviations, respectively. Find the documentation here.

</details>

Fixed Income

The Fixed Income module contains a wide variety of fixed income related calculations such as the Effective Yield, the Macaulay Duration, the Modified Duration Convexity, the Yield to Maturity and models such as Black and Bachelier to valuate derivative instruments such as Swaptions. This module can be called directly via the Toolkit but also separately if desired through from financetoolkit import FixedIncome. Find the Notebook here and the documentation here which includes an explanation about each indicator, the parameters and an example.

<details> <summary><b>Bond Valuations</b></summary> The Bond Valuations section contains a variety of metrics to evaluate the performance of bonds. These metrics include Present Value calculations, the Effective Yield, the Macaulay and Modified Duration and convexity.

All bond valuations can be called by using get_ to get a single valuation. E.g. get_present_value or get_duration. As an example:

from financetoolkit import FixedIncome

fixedincome = FixedIncome()

fixedincome.get_present_value()

Bond Statistics

The bond statistics contains a variety of different metrics to evaluate a bond. These include:

It gives a complete overview of the bond's performance. Find the documentation here and an example below which shows the bond statistics for six different bonds using this functionality.

Bond 1Bond 2Bond 3Bond 4Bond 5Bond 6
Par Value10025050100085320
Coupon Rate0.050.020.07500.150.015
Years to Maturity51021031
Yield to Maturity0.080.0210.0300.160.04
Frequency1141212
Present Value88.0219247.76654.3518100083.0353312.171
Current Yield0.05680.02020.06900.15350.0154
Effective Yield0.050.020.077100.15560.0151
Macaulay's Duration4.51169.15761.8849102.56670.9932
Modified Duration4.17748.96931.8709102.37660.9899
Effective Duration4.06778.51811.84779.47132.29520.9844
Dollar Duration3.67722.22281.01681001.97343.0902
DV010.00040.002200.010.00010
Convexity22.401793.75094.08491107.09231.0662

Present Value

The bond price is the present value of the bond's future cash flows. It is calculated by discounting the bond's coupon payments and principal repayment to the present value using the bond's yield to maturity. The present value is depicted over a variety of coupon rates and years of maturities. Find the documentation here.

Duration

The bond duration is a measure of the bond's sensitivity to changes in interest rates. It is the weighted average of the bond's cash flows, where the weights are the present value of each cash flow divided by the bond's price. It is possible to calculate the following durations:

The duration values are depicted over a variety of coupon rates and years of maturities. Find the documentation here.

Yield to Maturity

The Yield to Maturity (YTM) is the total return anticipated on a bond if it is held until it matures. It is the internal rate of return of an investment in a bond if the investor holds the bond until maturity and receives all payments as scheduled. The yield to maturity is depicted over a variety of coupon rates and years of maturities. Find the documentation here.

</details> <details> <summary><b>Derivative Valuations</b></summary> The Derivative Valuations section contains a variety of models that can be used to value derivative instruments such as Swaptions. These models include the Black Model and the Bachelier Model.

All derivative valuations can be called by using get_ to get a single valuation. E.g. get_derivative_price. As an example:

from financetoolkit import FixedIncome

fixedincome = FixedIncome()

fixedincome.get_derivative_price(model_type="black")

Black Model

The Black Model is a mathematical model used to calculate the price of European-style options. It is based on the Black-Scholes model but is used for interest rate options. The Black Model is used to value interest rate options, such as caps, floors, and swaptions. Find the documentation here.

Bachelier Model

The Bachelier Model is a mathematical model used to calculate the price of European-style options. It is based on the normal distribution and is used for interest rate options as opposed to the Black model which uses a log-normal distribution. The Bachelier Model is used to value interest rate options, such as caps, floors, and swaptions. Find the documentation here.

</details> <details> <summary><b>Central Banks</b></summary>

The central bank metrics revolve around the interest rates of the European Central Bank (ECB) and the Federal Reserve (FED). This includes the main refinancing operations, marginal lending facility, deposit facility, effective federal funds rate, overnight bank funding rate, tri-party general collateral rate, broad general collateral rate and secured overnight financing rate.

All central bank metrics can be called by using get_ to get a single metric. E.g. get_european_central_bank_rates or get_federal_reserve_rates. As an example:

from financetoolkit import FixedIncome

fixedincome = FixedIncome()

fixedincome.get_european_central_bank_rates()

Main Refinancing Operations

The main refinancing operations (MRO) rate is the interest rate banks pay when they borrow money from the ECB for one week. When they do this, they have to provide collateral to guarantee that the money will be paid back. Find the documentation here.

Marginal Lending Facility

The marginal lending facility rate is the interest rate banks pay when they borrow from the ECB overnight. When they do this, they have to provide collateral, for example securities, to guarantee that the money will be paid back. Find the documentation here.

Deposit Facility

The deposit facility rate is one of the three interest rates the ECB sets every six weeks as part of its monetary policy. The rate defines the interest banks receive for depositing money with the central bank overnight. Find the documentation here.

Euribor Rates

The Euro Interbank Offered Rate (Euribor) is a daily reference rate based on the averaged interest rates at which Eurozone banks offer to lend unsecured funds to other banks in the euro wholesale money market. It is widely used as the base rate for a variety of financial products, including mortgages, savings accounts, and derivatives. Find the documentation here.

Effective Federal Funds Rate

The effective federal funds rate (EFFR) is calculated as a volume-weighted median of overnight federal funds transactions reported in the FR 2420 Report of Selected Money Market Rates. Find the documentation here.

Overnight Bank Funding Rate

The overnight bank funding rate (OBFR) is calculated as a volume-weighted median of overnight federal funds transactions, Eurodollar transactions, and the domestic deposits reported as “Selected Deposits” in the FR 2420 Report. Find the documentation here.

Tri-Party General Collateral Rate

The TGCR is calculated as a volume-weighted median of transaction-level tri-party repo data collected from the Bank of New York Mellon. Find the documentation here.

Broad General Collateral Rate

The BGCR is calculated as a volume-weighted median of transaction-level tri-party repo data collected from the Bank of New York Mellon as well as GCF Repo transaction data obtained from the U.S. Department of the Treasury’s Office of Financial Research (OFR). Find the documentation here.

Secured Overnight Financing Rate (SOFR)

The SOFR is calculated as a volume-weighted median of transaction-level tri-party repo data collected from the Bank of New York Mellon as well as GCF Repo transaction data and data on bilateral Treasury repo transactions cleared through FICC’s DVP service, which are obtained from the U.S. Department of the Treasury’s Office of Financial Research (OFR). Find the documentation here.

</details> <details> <summary><b>Government Bonds</b></summary>

It is possible to view both short-term (3-month) and long-term (10-year) interest rates for each of the available countries. These rates relate to the interest rates at which countries issue government bonds and are used as a benchmark for other interest rates in the economy. For example, the German government bond yield is an overall indicator of the European economy.

These interest rates can be obtained with get_government_bond_yield. As an example:

from financetoolkit import FixedIncome

fixedincome = FixedIncome()

fixedincome.get_government_bond_yield()

Long Term Interest Rates (10 year)

Long-term interest rates refer to government bonds maturing in ten years. Rates are mainly determined by the price charged by the lender, the risk from the borrower and the fall in the capital value. Long-term interest rates are generally averages of daily rates, measured as a percentage. These interest rates are implied by the prices at which the government bonds are traded on financial markets, not the interest rates at which the loans were issued.

In all cases, they refer to bonds whose capital repayment is guaranteed by governments. Long-term interest rates are one of the determinants of business investment. Low long term interest rates encourage investment in new equipment and high interest rates discourage it. Investment is, in turn, a major source of economic growth. Find the documentation here.

Short Term Interest Rates (3 month)

Short-term interest rates are the rates at which short-term borrowings are effected between financial institutions or the rate at which short-term government paper is issued or traded in the market. Short-term interest rates are generally averages of daily rates, measured as a percentage.

Short-term interest rates are based on three-month money market rates where available. Typical standardised names are “money market rate” and “treasury bill rate”. Find the documentation here.

</details> <details> <summary><b>Corporate Bonds</b></summary>

The Corporate Bonds section features the widely used ICE BofA benchmarks which include option-adjusted spreads, effective yields and the total returns. It is possible to view both the indices of the ratings (AAA, AA, A, BBB, BB, B and CCC) and the maturities (1-3 years, 3-5 years, 5-7 years, 7-10 years, 10-15 years, 15-30 years and 30+ years).

All corporate bond metrics can be called by using get_ to get a single metric. E.g. get_ice_bofa_option_adjusted_spread or get_ice_bofa_yield_to_worst. As an example:

from financetoolkit import FixedIncome

fixedincome = FixedIncome()

fixedincome.get_ice_bofa_option_adjusted_spread()

Option-Adjusted Spread (OAS)

The Option-Adjusted Spread (OAS) is the spread relative to a risk-free interest rate, usually measured in basis points (bp), that equates the theoretical present value of a series of uncertain cash flows to the market price of a fixed-income investment. The spread is added to the risk-free rate to compensate for the uncertainty of the cash flows. Find the documentation here.

Effective Yield

The Effective Yield is the yield of a bond, calculated by dividing the bond's coupon payments by its market price. The effective yield is not the same as the stated yield, which is the yield on the bond's coupon payments divided by the bond's principal value. The effective yield is a more accurate measure of a bond's return, as it takes into account the fact that the investor will not hold the bond to maturity and will likely sell it before it matures. Find the documentation here.

Total Return

The total return is the actual rate of return of an investment or a pool of investments over a given evaluation period. Total return includes interest, capital gains, dividends and distributions realized over a given period of time. Find the documentation here.

Yield to Worst

Yield to worst is the lowest potential yield that a bond can generate without the issuer defaulting. The standard US convention for this series is to use semi-annual coupon payments, whereas the standard in the foreign markets is to use coupon payments with frequencies of annual, semi-annual, quarterly, and monthly. Find the documentation here.

</details>

Key Economic Indicators

The Economics Module contains a variety of Key Economic Indicators that help in understanding the health and performance of more than 60 different countries. This module can be called directly via the Toolkit but also separately if desired through from financetoolkit import Economics. Find the Notebook here and the documentation here which includes an explanation about each indicator, the parameters and an example.

<details> <summary><b>Economy 💵</b></summary>

The economy section contains key economic indicators that help in understanding the health and performance of more than 60 different countries. This includes the Gross Domestic Product (GDP), Consumer Confidence Index (CCI), Business Confidence Index (BCI), Composite Leading Indicator (CLI), Consumer Price Index (CPI), Producer Price Index (PPI), House and Rent Prices, Share Prices and more.

All economy metrics can be called by using get_ to get a single metric. E.g. get_gross_domestic_product or get_consumer_price_index. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Get Economy Results
toolkit.economics.get_consumer_confidence_index()

Gross Domestic Product (GDP)

The Gross Domestic Product is the total value of goods produced and services provided in a country during one year. The data is available in two forms: compared to the previous year’s value or compared to the previous period. The year on year data is the GDP compared to the same quarter in the previous year. The quarter on quarter data is the GDP compared to the previous quarter. Find the documentation here.

It is possible to view the growth rate on a quarterly or annual basis, the default is dependent on the quarterly parameter. The growth rate is the percentage change in the GDP compared to the previous period. Find the documentation here.

Lastly, it is possible to view the growth rate on a quarterly or annual basis, the default is dependent on the quarterly parameter. The growth rate is the percentage change in the GDP compared to the previous period. Find the documentation here.

Consumer Confidence Index (CCI)

This consumer confidence indicator provides an indication of future developments of households consumption and saving, based upon answers regarding their expected financial situation, their sentiment about the general economic situation, unemployment and capability of savings.

An indicator above 100 signals a boost in the consumers’ confidence towards the future economic situation, as a consequence of which they are less prone to save, and more inclined to spend money on major purchases in the next 12 months. Values below 100 indicate a pessimistic attitude towards future developments in the economy, possibly resulting in a tendency to save more and consume less. Find the documentation here.

Business Confidence Index (BCI)

This business confidence indicator provides information on future developments, based upon opinion surveys on developments in production, orders and stocks of finished goods in the industry sector. It can be used to monitor output growth and to anticipate turning points in economic activity.

Numbers above 100 suggest an increased confidence in near future business performance, and numbers below 100 indicate pessimism towards future performance. Find the documentation here.

Composite Leading Indicator (CLI)

The composite leading indicator (CLI) is designed to provide early signals of turning points in business cycles showing fluctuation of the economic activity around its long term potential level. CLIs show short-term economic movements in qualitative rather than quantitative terms. Find the documentation here.

House Prices

In most cases, the nominal house price index covers the sales of newly-built and existing dwellings, following the recommendations from the RPPI (Residential Property Prices Indices) manual.

The real house price index is given by the ratio of the nominal house price index to the consumers’ expenditure deflator in each country from the OECD national accounts database. Both indices are seasonally adjusted. Find the documentation here.

Rent Prices

The price to rent ratio is the nominal house price index divided by the housing rent price index and can be considered as a measure of the profitability of house ownership. Find the documentation here.

Share Prices

Share price indices are calculated from the prices of common shares of companies traded on national or foreign stock exchanges. They are usually determined by the stock exchange, using the closing daily values for the monthly data, and normally expressed as simple arithmetic averages of the daily data.

A share price index measures how the value of the stocks in the index is changing, a share return index tells the investor what their “return” is, meaning how much money they would make as a result of investing in that basket of shares.

A price index measures changes in the market capitalisation of the basket of shares in the index whereas a return index adds on to the price index the value of dividend payments, assuming they are re-invested in the same stocks. Occasionally agencies such as central banks will compile share indices. Find the documentation here.

</details> <details> <summary><b>Finance 💹</b></summary>

The finance metrics are used to assess the financial health of a country. This includes the long term interest rates, short term interest rates, narrow money, broad money, purchasing power parity and exchange rates.

All finance metrics can be called by using get_ to get a single metric. E.g. get_long_term_interest_rate or get_narrow_and_broad_money. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Get Finance Results
toolkit.economics.get_long_term_interest_rate()

Long Term Interest Rates (10 year)

Long-term interest rates refer to government bonds maturing in ten years. Rates are mainly determined by the price charged by the lender, the risk from the borrower and the fall in the capital value. Long-term interest rates are generally averages of daily rates, measured as a percentage. These interest rates are implied by the prices at which the government bonds are traded on financial markets, not the interest rates at which the loans were issued.

In all cases, they refer to bonds whose capital repayment is guaranteed by governments. Long-term interest rates are one of the determinants of business investment. Low long term interest rates encourage investment in new equipment and high interest rates discourage it. Investment is, in turn, a major source of economic growth. Find the documentation here.

Short Term Interest Rates (3 month)

Short-term interest rates are the rates at which short-term borrowings are effected between financial institutions or the rate at which short-term government paper is issued or traded in the market. Short-term interest rates are generally averages of daily rates, measured as a percentage.

Short-term interest rates are based on three-month money market rates where available. Typical standardised names are “money market rate” and “treasury bill rate”. Find the documentation here.

Exchange Rates

Exchange rates are defined as the price of one country’s’ currency in relation to another country’s currency. This indicator is measured in terms of national currency per US dollar. Find the documentation here.

Trust in Government

Trust in government refers to the share of people who report having confidence in the national government. The data shown reflect the share of respondents answering “yes” (the other response categories being “no”, and “dont know”) to the survey question: “In this country, do you have confidence in… national government? The sample is ex ante designed to be nationally representative of the population aged 15 and over. This indicator is measured as a percentage of all survey respondents. Find the documentation here.

</details> <details> <summary><b>Environment 💚</b></summary>

The environment metrics revolve around renewable energy, environmental tax, greenhouse gas emissions, crude oil production and crude oil prices of countries. This includes the renewable energy as a percentage of total energy, environmental tax as a percentage of GDP, greenhouse gas emissions, crude oil production and crude oil prices.

All environment metrics can be called by using get_ to get a single metric. E.g. get_renewable_energy or get_crude_oil_prices. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Get Environment Results
toolkit.economics.get_crude_oil_prices()

Renewable Energy as % of Total Energy

Renewable energy is defined as the contribution of renewables to total primary energy supply (TPES). Renewables include the primary energy equivalent of hydro (excluding pumped storage), geothermal, solar, wind, tide and wave sources.

Energy derived from solid biofuels, biogasoline, biodiesels, other liquid biofuels, biogases and the renewable fraction of municipal waste are also included. Biofuels are defined as fuels derived directly or indirectly from biomass (material obtained from living or recently living organisms).

This includes wood, vegetal waste (including wood waste and crops used for energy production), ethanol, animal materials/wastes and sulphite lyes. Municipal waste comprises wastes produced by the residential, commercial and public service sectors that are collected by local authorities for disposal in a central location for the production of heat and/or power. Find the documentation here.

Carbon Footprint

The carbon footprint is a measure of the total amount of greenhouse gases produced to directly and indirectly support human activities, usually expressed in equivalent tons of carbon dioxide (CO2).

The carbon footprint is a subset of the ecological footprint and of the more comprehensive Life Cycle Assessment (LCA). An individual, nation, or organization's carbon footprint can be measured by undertaking a GHG emissions assessment or other calculative activities denoted as carbon accounting.

The data have been cross-validated and complemented with Revenue statistics from the OECD Tax statistics database and official national sources. Find the documentation here.

</details> <details> <summary><b>Jobs & Society 🗂️</b></summary>

The jobs metrics revolve around the unemployment rates, labour productivity and income inequality of countries. Society metrics include the population and poverty rates of countries.

All job and society metrics can be called by using get_ to get a single metric. E.g. get_unemployment_rate or get_income_inequality. As an example:

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# Get Jobs Results
toolkit.economics.get_income_inequality()

Unemployment Rate

The unemployed are people of working age who are without work, are available for work, and have taken specific steps to find work. The uniform application of this definition results in estimates of unemployment rates that are more internationally comparable than estimates based on national definitions of unemployment.

This indicator is measured in numbers of unemployed people as a percentage of the labour force and it is seasonally adjusted. The labour force is defined as the total number of unemployed people plus those in employment. Data are based on labour force surveys (LFS).

For European Union countries where monthly LFS information is not available, the monthly unemployed figures are estimated by Eurostat. Find the documentation here.

Labour Productivity

GDP per hour worked is a measure of labour productivity. It measures how efficiently labour input is combined with other factors of production and used in the production process. Labour input is defined as total hours worked of all persons engaged in production. Labour productivity only partially reflects the productivity of labour in terms of the personal capacities of workers or the intensity of their effort.

The ratio between the output measure and the labour input depends to a large degree on the presence and/or use of other inputs (e.g. capital, intermediate inputs, technical, organisational and efficiency change, economies of scale). Find the documentation here.

Income Inequality

Income is defined as household disposable income in a particular year. It consists of earnings, self-employment and capital income and public cash transfers; income taxes and social security contributions paid by households are deducted. The income of the household is attributed to each of its members, with an adjustment to reflect differences in needs for households of different sizes. Income inequality among individuals is measured here by five indicators. Find the documentation here.

Population

Population is defined as all nationals present in, or temporarily absent from a country, and aliens permanently settled in a country. This indicator shows the number of people that usually live in an area. Growth rates are the annual changes in population resulting from births, deaths and net migration during the year. Find the documentation here.

Poverty Rate

The poverty rate is the ratio of the number of people (in a given age group) whose income falls below the poverty line; taken as half the median household income of the total population.

However, two countries with the same poverty rates may differ in terms of the relative income-level of the poor. Find the documentation here.

</details>

Questions & Answers

This section includes frequently asked questions and is meant to clear up confusion about certain results and/or deviations from other sources. If you have any questions that are not answered here, feel free to reach out to me via the contact details below.

How do you deal with companies that have different fiscal years?

For any financial statement, I make sure to line it up with the corresponding calendar period. For example, Apple's Q4 2023 relates to July to September of 2023. This corresponds to the calendar period Q3 which is why I normalize Apple's numbers to Q3 2023 instead. This is done to allow for comparison between companies that have different fiscal years.

Why do the numbers in the financial statements sometimes deviate from the data from FinancialModelingPrep?

When looking at a company such as Hyundai Motor Company (ticker: 005380.KS), you will notice that the financial statements are reported in KRW (South Korean won). As this specific ticker is listed on the Korean Exchange, the historical market data will also be reported in KRW. However, if you use the ticker HYMTF, which is listed on the American OTC market, the historical market data will be reported in USD. To deal with this discrepancy, the end of year or end of quarter exchange rate is retrieved which is used to convert the financial statements to USD. This is done to prevent ratio calculations such as the Free Cash Flow Yield (which is based on the market capitalization) or Price Earnings Ratio (which is based on the stock price) from being incorrect. This can be disabled by setting convert_currency=False in the Toolkit initialization. It is recommended to always use the ticker that is listed on the exchange where the company is based.

How can I get TTM (Trailing Twelve Months) and Growth metrics?

Most functions will have the option to define the trailing parameter. This lets you define the number of periods that you want to use to calculate the trailing metrics. For example, if you want to calculate the trailing 12-month (TTM) Price-to-Earnings Ratio, you can set trailing=4 when you have set quarterly=True in the Toolkit initialization. The same goes for growth metrics which can be calculated by setting growth=True. This will calculate the growth for each period based on the previous period. This also includes a lag parameter in which you can define lagged growth. Furthermore, you can also combine the trailing and growth parameters to get trailing growth. For example, set trailing=4 and growth=True for the Price-to-Earnings Ratio which will then calculate the TTM growth.

How can I save the data periodically so that I don't have to retrieve it every single time again?

The Toolkit initialization has the ability to add custom datasets which can serve as input for external datasets from different providers but also to prevent downloading all of the same data again. Have a look at this comment that explains this further.

What is the "Benchmark" that is automatically obtained when acquiring historical data?

This is related to the benchmark_ticker parameter which is set to "SPY" (S&P 500) by default. This is important when calculating performance metrics such as the Sharpe Ratio or Treynor Ratio that require a market return. This can be disabled by setting benchmark_ticker=None in the Toolkit initialization.

Data collection seems to be slow, what could be the issue?

Generally, it should take less than 15 seconds to retrieve the historical data of 100 tickers. If it takes much longer, this could be due to reaching the API limit (the Starter plan has 250 requests per minute), due to a slow internet connection or due to unoptimized code. As the Finance Toolkit makes use of threading, initializing the Toolkit with a single ticker will result in a slow process. This is because the Toolkit will have to wait for the previous request to finish before it can start the next one. Therefore, it is recommended to initialize the Toolkit with all tickers you want to analyze. If it is taking 10+ minutes consider having a look at this issue that managed to resolve the problem.

Are you part of FinancialModelingPrep?

No, I am not. I've merely picked them as the primary data provider given that they have a generous free tier and fair pricing compared to other providers. Therefore, any questions related to the data should go through their contact form. When it comes to any type of ratios, performance metrics, risk metrics, technical indicators or economic indicators, feel free to reach out to me as this is my own work.

Contributing

First off all, thank you for taking the time to contribute (or at least read the Contributing Guidelines)! 🚀


<b><div align="center">Find the Contributing Guidelines <a href="/CONTRIBUTING.md">here</a>.</div></b>


The goal of the Finance Toolkit is to make any type of financial calculation as transparent and efficient as possible. I want to make these type of calculations as accessible to anyone as possible and seeing how many websites exists that do the same thing (but instead you have to pay) gave me plenty of reasons to work on this.

Contact

If you have any questions about the FinanceToolkit or would like to share with me what you have been working on, feel free to reach out to me via:

If you'd like to support my efforts, either help me out by contributing to the package or Sponsor Me.

Star History Chart