FMP

FMP

Enter

Retrieve Company Fundamentals with Python

-

twitterlinkedinfacebook
blog post cover photo

Image credit: Benjamin Child

In this new post on Python for Finance, we are going to build an amazing Python tool to retrieve company fundamentals. It will be super simple to use.

We will pass the ticker of the company that we are interested in and Python will do its magic to show us below Pandas DataFrame converted into an Excel file.

Photo by Pixabay on Pexels

Below is just a sample for Apple. All main Apple fundamentals are basically presented to us thanks to this powerful script:

The main goal of the code is to get company financials from the last 5 years. Then, calculate some growth metrics and export to an Excel file. I would state below the main steps to achieve this:

  • Request data from the financialmodelingprep.

  • Load into a Python variable the main financial data requested from the API. That is, IS, BS, CF and main financial ratios.

  • Create an empty dictionary in order to store the values using the respective year as the key.

  • Transform the dictionary into a Pandas DataFrameCalculate a few growth measures as new columns

  • Export to Excel

And here is the code:

import pandas as pd

pd.options.display.float_format = '{:,.2f}'.format

#pass ticker of the company

company = 'AAPL'

api = 'your api key'

# Request Financial Data from API and load to variables

IS = requests.get(f'https://financialmodelingprep.com/api/v3/income-statement/{company}?apikey={api}').json()

BS = requests.get(f'https://financialmodelingprep.com/api/v3/balance-sheet-statement/{company}?apikey={api}').json()

CF = requests.get(f'https://financialmodelingprep.com/api/v3/cash-flow-statement/{company}?apikey={api}').json()

Ratios = requests.get(f'https://financialmodelingprep.com/api/v3/ratios/{company}?apikey={api}').json()

key_Metrics = requests.get(f'https://financialmodelingprep.com/api/v3/key-metrics/{company}?apikey={api}').json()

profile = requests.get(f'https://financialmodelingprep.com/api/v3/profile/{company}?apikey={api}').json()

millions = 1000000

#Create empty dictionary and add the financials to it

financials = {}

dates = [2021,2020,2019,2018,2017]

for item in range(5):

financials[dates[item]] ={}

#Key Metrics

financials[dates[item]]['Mkt Cap'] = key_Metrics[item]['marketCap'] /millions

financials[dates[item]]['Debt to Equity'] = key_Metrics[item]['debtToEquity']

financials[dates[item]]['Debt to Assets'] = key_Metrics[item]['debtToAssets']

financials[dates[item]]['Revenue per Share'] = key_Metrics[item]['revenuePerShare']

financials[dates[item]]['NI per Share'] = key_Metrics[item]['netIncomePerShare']

financials[dates[item]]['Revenue'] = IS[item]['revenue'] / millions

financials[dates[item]]['Gross Profit'] = IS[item]['grossProfit'] / millions

financials[dates[item]]['R&D Expenses'] = IS[item]['researchAndDevelopmentExpenses']/ millions

financials[dates[item]]['Op Expenses'] = IS[item]['operatingExpenses'] / millions

financials[dates[item]]['Op Income'] = IS[item]['operatingIncome'] / millions

financials[dates[item]]['Net Income'] = IS[item]['netIncome'] / millions

financials[dates[item]]['Cash'] = BS[item]['cashAndCashEquivalents'] / millions

financials[dates[item]]['Inventory'] = BS[item]['inventory'] / millions

financials[dates[item]]['Cur Assets'] = BS[item]['totalCurrentAssets'] / millions

financials[dates[item]]['LT Assets'] = BS[item]['totalNonCurrentAssets'] / millions

financials[dates[item]]['Int Assets'] = BS[item]['intangibleAssets'] / millions

financials[dates[item]]['Total Assets'] = BS[item]['totalAssets'] / millions

financials[dates[item]]['Cur Liab'] = BS[item]['totalCurrentLiabilities'] / millions

financials[dates[item]]['LT Debt'] = BS[item]['longTermDebt'] / millions

financials[dates[item]]['LT Liab'] = BS[item]['totalNonCurrentLiabilities'] / millions

financials[dates[item]]['Total Liab'] = BS[item]['totalLiabilities'] / millions

financials[dates[item]]['SH Equity'] = BS[item]['totalStockholdersEquity'] / millions

financials[dates[item]]['CF Operations'] = CF[item]['netCashProvidedByOperatingActivities'] / millions

financials[dates[item]]['CF Investing'] = CF[item]['netCashUsedForInvestingActivites'] / millions

financials[dates[item]]['CF Financing'] = CF[item]['netCashUsedProvidedByFinancingActivities'] / millions

financials[dates[item]]['CAPEX'] = CF[item]['capitalExpenditure'] / millions

financials[dates[item]]['FCF'] = CF[item]['freeCashFlow'] / millions

financials[dates[item]]['Dividends Paid'] = CF[item]['dividendsPaid'] / millions

#Income Statement Ratios

financials[dates[item]]['Gross Profit Margin'] = Ratios[item]['grossProfitMargin']

financials[dates[item]]['Op Margin'] = Ratios[item]['operatingProfitMargin']

financials[dates[item]]['Int Coverage'] = Ratios[item]['interestCoverage']

financials[dates[item]]['Net Profit Margin'] = Ratios[item]['netProfitMargin']

financials[dates[item]]['Dividend Yield'] = Ratios[item]['dividendYield']

#BS Ratios

financials[dates[item]]['Current Ratio'] = Ratios[item]['currentRatio']

financials[dates[item]]['Operating Cycle'] = Ratios[item]['operatingCycle']

financials[dates[item]]['Days of AP Outstanding'] = Ratios[item]['daysOfPayablesOutstanding']

financials[dates[item]]['Cash Conversion Cycle'] = Ratios[item]['cashConversionCycle']

#Return Ratios

financials[dates[item]]['ROA'] = Ratios[item]['returnOnAssets']

financials[dates[item]]['ROE'] = Ratios[item]['returnOnEquity']

financials[dates[item]]['ROCE'] = Ratios[item]['returnOnCapitalEmployed']

financials[dates[item]]['Dividend Yield'] = Ratios[item]['dividendYield']

#Price Ratios

financials[dates[item]]['PE'] = Ratios[item]['priceEarningsRatio']

financials[dates[item]]['PS'] = Ratios[item]['priceToSalesRatio']

financials[dates[item]]['PB'] = Ratios[item]['priceToBookRatio']

financials[dates[item]]['Price To FCF'] = Ratios[item]['priceToFreeCashFlowsRatio']

financials[dates[item]]['PEG'] = Ratios[item]['priceEarningsToGrowthRatio']

financials[dates[item]]['EPS'] = IS[item]['eps']

financials[dates[item]]['EPS'] = IS[item]['eps']

#Transform the dictionary into a Pandas

fundamentals = pd.DataFrame.from_dict(financials,orient='columns')

#Calculate Growth measures

fundamentals['CAGR'] = ((fundamentals[2021]/fundamentals[2017])**(1/5) - 1

fundamentals['2021 growth'] = (fundamentals[2021] - fundamentals[2020] )/ fundamentals[2020]

fundamentals['2020 growth'] = (fundamentals[2020] - fundamentals[2019] )/ fundamentals[2019]

fundamentals['2019 growth'] = (fundamentals[2019] - fundamentals[2018] )/ fundamentals[2018]

fundamentals['2018 growth'] = (fundamentals[2018] - fundamentals[2017] )/ fundamentals[2017]

#Export to Excel

fundamentals.to_excel('fundamentals.xlsx')

print(fundamentals)

Once the script runs, Python should create an Excel file including all company fundamentals.

Other Blogs

Jan 21, 2024 4:00 AM - Parth Sanghvi

Understanding Profitability Metrics: Exploring ROE, ROA, and Net Profit Margin

Introduction: In the world of financial analysis, a profound grasp of essential profitability metrics is vital. This blog delves into three pivotal metrics—ROE (Return on Equity), ROA (Return on Assets), and Net Profit Margin—offering clear insights without unnecessary complexity. Exploring RO...

blog post title

May 14, 2024 11:41 AM - Sanzhi Kobzhan

The easiest way to calculate stock’s target price and why the target price is important.

A stock's target price, also known as its fair value, is an indication of what a share can cost based on the company’s forecasted financial statements. It is important to know a stock's fair value to find undervalued stocks with great growth potential. Let's consider how investment analysts calculat...

blog post title

May 16, 2024 8:06 PM - Gordon Thompson

Deutsche Bank Upgrades AST SpaceMobile to Buy Amid Legal Challenges

On Thursday, May 16, 2024, Deutsche Bank upgraded its rating on NASDAQ:ASTS to Buy, maintaining a hold position. At the time of the announcement, ASTS was trading at $4.03. This decision was accompanied by an increase in the price target for AST SpaceMobile, raised to $22 from $19, as detailed in a ...

blog post title
FMP

FMP

Financial Modeling Prep API provides real time stock price, company financial statements, major index prices, stock historical data, forex real time rate and cryptocurrencies. Financial Modeling Prep stock price API is in real time, the company reports can be found in quarter or annual format, and goes back 30 years in history.
twitterlinkedinfacebookinstagram
2017-2024 © Financial Modeling Prep